diff --git a/.other_libs/build_fcns/configure.ac_FormCHK b/.other_libs/build_fcns/configure.ac_FormCHK index 5b9fc0e7..4d84c9ee 100644 --- a/.other_libs/build_fcns/configure.ac_FormCHK +++ b/.other_libs/build_fcns/configure.ac_FormCHK @@ -1,4 +1,4 @@ -AC_INIT([MQC_Pack], [25.11.0], [hhratchian@ucmerced.edu]) +AC_INIT([MQC_Pack], [25.11.1], [hhratchian@ucmerced.edu]) AM_INIT_AUTOMAKE([foreign]) AC_CONFIG_SRCDIR([src/mqc_general.F03]) AC_PROG_CPP diff --git a/.other_libs/build_fcns/configure.ac_MatrixFile b/.other_libs/build_fcns/configure.ac_MatrixFile index 734a8acb..6890e5ff 100644 --- a/.other_libs/build_fcns/configure.ac_MatrixFile +++ b/.other_libs/build_fcns/configure.ac_MatrixFile @@ -1,4 +1,4 @@ -AC_INIT([MQC_Pack], [25.11.0], [hhratchian@ucmerced.edu]) +AC_INIT([MQC_Pack], [25.11.1], [hhratchian@ucmerced.edu]) AM_INIT_AUTOMAKE([foreign]) AC_CONFIG_SRCDIR([src/mqc_general.F03]) AC_LANG([Fortran]) diff --git a/README.md b/README.md index 1e5f71ef..83be9214 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,8 @@ ** ** ** The Merced Quantum Chemistry Package ** ** (MQCPack) ** - ** Version 25.9.0 ** - ** September 10, 2025 ** + ** Version 25.11.1 ** + ** November 10, 2025 ** ** ** ** ** ** Written By: ** diff --git a/releaseNotes.txt b/releaseNotes.txt index 678f6399..7be16d6c 100644 --- a/releaseNotes.txt +++ b/releaseNotes.txt @@ -8,6 +8,11 @@ number updates will be documented here. Note that the minor version number will often be updated near the start of the month and the revision number in that case will be set to 0. +November 10, 2025 +* MQCPack version set to 25.11.1. +* Added a wrapper in MQC_General_LAPack for DGESV, which is used for linear + equation solving. + November 8, 2025 * MQCPack version set to 25.11.0. * Added Contraction function for intrinsic real matrices. diff --git a/src/mqc_FullWavefunction.F03 b/src/mqc_FullWavefunction.F03 index 6aca1f1f..49a6c82c 100644 --- a/src/mqc_FullWavefunction.F03 +++ b/src/mqc_FullWavefunction.F03 @@ -11,8 +11,8 @@ module MQC_FullWavefunction ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** diff --git a/src/mqc_algebra.F03 b/src/mqc_algebra.F03 index 1ba42e58..64a7891f 100644 --- a/src/mqc_algebra.F03 +++ b/src/mqc_algebra.F03 @@ -43,8 +43,8 @@ Module MQC_Algebra ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** diff --git a/src/mqc_algebra2.F03 b/src/mqc_algebra2.F03 index 35f00a66..68f97f64 100644 --- a/src/mqc_algebra2.F03 +++ b/src/mqc_algebra2.F03 @@ -12,8 +12,8 @@ Module MQC_Algebra2 ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** diff --git a/src/mqc_binary.F03 b/src/mqc_binary.F03 index 8e208e6e..8cdd0016 100644 --- a/src/mqc_binary.F03 +++ b/src/mqc_binary.F03 @@ -10,8 +10,8 @@ module MQC_Binary ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** diff --git a/src/mqc_datastructures.F03 b/src/mqc_datastructures.F03 index bb8c14e3..d9599243 100644 --- a/src/mqc_datastructures.F03 +++ b/src/mqc_datastructures.F03 @@ -10,8 +10,8 @@ Module MQC_DataStructures ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** diff --git a/src/mqc_est.F03 b/src/mqc_est.F03 index 4547217e..04303cc1 100644 --- a/src/mqc_est.F03 +++ b/src/mqc_est.F03 @@ -38,8 +38,8 @@ Module MQC_EST ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** diff --git a/src/mqc_files.F03 b/src/mqc_files.F03 index 78ace702..d6e0cf39 100644 --- a/src/mqc_files.F03 +++ b/src/mqc_files.F03 @@ -10,8 +10,8 @@ Module MQC_Files ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** diff --git a/src/mqc_gaussian.F03 b/src/mqc_gaussian.F03 index 6824ec78..a26e0e8a 100644 --- a/src/mqc_gaussian.F03 +++ b/src/mqc_gaussian.F03 @@ -10,8 +10,8 @@ Module MQC_Gaussian ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** diff --git a/src/mqc_general.F03 b/src/mqc_general.F03 index c1c949ad..8a18f79c 100644 --- a/src/mqc_general.F03 +++ b/src/mqc_general.F03 @@ -10,8 +10,8 @@ Module MQC_General ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** @@ -157,6 +157,13 @@ Module MQC_General module procedure mqc_contraction_full_real end interface ! +! Interfaces for procedures in MQC_General_LAPack +! + interface mqc_dgesv + module procedure mqc_dgesv_mat + module procedure mqc_dgesv_vec + end interface mqc_dgesv +! ! ! Subroutines/Functions... ! @@ -185,8 +192,8 @@ subroutine mqc_version(major,minor,revision,versionString) ! if(PRESENT(major)) major = 25 if(PRESENT(minor)) minor = 11 - if(PRESENT(revision)) revision = 0 - if(PRESENT(versionString)) versionString = '25.11.0' + if(PRESENT(revision)) revision = 1 + if(PRESENT(versionString)) versionString = '25.11.1' ! return end subroutine mqc_version diff --git a/src/mqc_general_lapack.F03 b/src/mqc_general_lapack.F03 index a3986db5..c645b06f 100644 --- a/src/mqc_general_lapack.F03 +++ b/src/mqc_general_lapack.F03 @@ -9,8 +9,8 @@ ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** @@ -421,3 +421,142 @@ subroutine mqc_dgesvd_svd_Full(matrix,singularValues, & ! return end subroutine mqc_dgesvd_svd_Full + + + +!PROCEDURE mqc_dgesv_mat + subroutine mqc_dgesv_mat(A,B,X,infoOut) +! +! This routine is a wrapper for the LAPack routine DGESV for cases where the +! right hand side of the linear system of equations is a matrix (or multiple +! vectors). +! +! +! H. P. Hratchian, 2025. +! +! + implicit none + real(kind=real64),intent(in)::A(:,:) + real(kind=real64),intent(in)::B(:,:) + real(kind=real64),allocatable,intent(out)::X(:,:) + integer,intent(out),optional::infoOut +! + integer::N,NRHS,LDA,LDB,INFO + integer,dimension(:),allocatable::IPIV + real(kind=real64),dimension(:,:),allocatable::Acopy,Bcopy +! +! Carry out shape checks. +! + if(SIZE(A,1).ne.SIZE(A,2)) call mqc_error('mqc_dgesv: A must be square.') + N = SIZE(A,1) + if (SIZE(B,1).ne.N) call mqc_error('mqc_dgesv: B has incompatible row dimension.') + NRHS = SIZE(B,2) + if (NRHS < 1) call mqc_error('mqc_dgesv: NRHS must be >= 1.') +! +! Allocate and then fill working copies of A and B. +! + allocate(Acopy(N,N),Bcopy(N,NRHS)) + Acopy = A + Bcopy = B +! +! Allocate output space. +! + if(allocated(X)) then + if(SIZE(X,1).ne.N .or. SIZE(X,2).ne.NRHS) then + deallocate(X) + allocate(X(N,NRHS)) + endIf + else + allocate(X(N,NRHS)) + endIf +! +! Call DGESV... +! + LDA = N + LDB = N + allocate(IPIV(N)) + INFO = 0 + call dgesv(N, NRHS, Acopy, LDA, IPIV, Bcopy, LDB, INFO) +! +! Check for errors in the LAPack run. +! + if(present(infoOut)) infoOut = INFO + if(INFO.ne.0) & + call mqc_error('mqc_dgesv: DGESV failed (INFO /= 0).') +! +! Move Bcopy into the output argument X. Then, DeAllocate the temporary +! memory space this routine has allocated. +! + X = Bcopy + deallocate(Acopy, Bcopy, IPIV) +! + return + end subroutine mqc_dgesv_mat + + +!PROCEDURE mqc_dgesv_vec + subroutine mqc_dgesv_vec(A, b, x, infoOut) +! +! This routine is a wrapper for the LAPack routine DGESV for cases where the +! right hand side of the linear system of equations is a vector. +! +! +! H. P. Hratchian, 2025. +! +! + implicit none + real(kind=real64),intent(in)::A(:,:) + real(kind=real64),intent(in)::b(:) + real(kind=real64),allocatable,intent(out)::x(:) + integer(kind=int64),intent(out),optional::infoOut +! + integer(kind=int64)::N,NRHS,LDA,LDB,INFO + integer(kind=int64),allocatable::IPIV(:) + real(kind=real64),allocatable::Acopy(:,:),Bcopy(:,:) +! +! Carry out shape checks. +! + if(SIZE(A,1).ne.SIZE(A,2)) call mqc_error('mqc_dgesv: A must be square.') + N = SIZE(A,1) + if(SIZE(b).ne.N) call mqc_error('mqc_dgesv: b has incompatible length.') +! +! Allocate and then fill working copies of A and B. +! + NRHS = 1 + allocate(Acopy(N,N),Bcopy(N,NRHS)) + Acopy = A + Bcopy(:,1) = b +! +! Allocate output space. +! + if(allocated(x)) then + if(SIZE(x).ne.N) then + deallocate(x) + allocate(x(N)) + endIf + else + allocate(x(N)) + endIf +! +! Call DGESV... +! + LDA = N + LDB = N + allocate(IPIV(N)) + INFO = 0 + call dgesv(N, NRHS, Acopy, LDA, IPIV, Bcopy, LDB, INFO) +! +! Check for errors in the LAPack run. +! + if(present(infoOut)) infoOut = INFO + if(INFO.ne.0) & + call mqc_error('mqc_dgesv: DGESV failed (INFO /= 0).') +! +! Move Bcopy into the output argument X. Then, DeAllocate the temporary +! memory space this routine has allocated. +! + x = Bcopy(:,1) + deallocate(Acopy, Bcopy, IPIV) +! + return + end subroutine mqc_dgesv_vec diff --git a/src/mqc_integrals.F03 b/src/mqc_integrals.F03 index ee26e35d..1211c7cd 100644 --- a/src/mqc_integrals.F03 +++ b/src/mqc_integrals.F03 @@ -10,8 +10,8 @@ module MQC_Integrals ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** diff --git a/src/mqc_interface.F03 b/src/mqc_interface.F03 index 7301f3e3..c2f60449 100644 --- a/src/mqc_interface.F03 +++ b/src/mqc_interface.F03 @@ -9,8 +9,8 @@ ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** diff --git a/src/mqc_matwrapper.F03 b/src/mqc_matwrapper.F03 index b7792498..a90273f8 100644 --- a/src/mqc_matwrapper.F03 +++ b/src/mqc_matwrapper.F03 @@ -11,8 +11,8 @@ Module MQC_MatWrapper ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: ** diff --git a/src/mqc_molecule.F03 b/src/mqc_molecule.F03 index 3735b3a2..e71ddc93 100644 --- a/src/mqc_molecule.F03 +++ b/src/mqc_molecule.F03 @@ -31,8 +31,8 @@ Module MQC_Molecule ! ** Lee M. Thompson, Xianghai Sheng, Andrew D. Mahler, Dave ** ! ** Mullally, and Hrant P. Hratchian ** ! ** ** -! ** Version 25.11.0 ** -! ** November 8, 2025 ** +! ** Version 25.11.1 ** +! ** November 10, 2025 ** ! ** ** ! ** ** ! ** Modules beloning to MQCPack: **