diff --git a/input/methods b/input/methods index 9fbdc3c..73b5c29 100644 --- a/input/methods +++ b/input/methods @@ -1,7 +1,7 @@ # RHF UHF GHF ROHF T T T T # MP2 MP3 - F F + T F # CCD pCCD DCD CCSD CCSD(T) F F F F F # drCCD rCCD crCCD lCCD @@ -17,4 +17,4 @@ # G0T0pp evGTpp qsGTpp G0T0eh evGTeh qsGTeh F F F F F F # Rtest Utest Gtest - T T T + F F F diff --git a/src/GF/G0F2.f90 b/src/GF/G0F2.f90 index 317fc86..daa307a 100644 --- a/src/GF/G0F2.f90 +++ b/src/GF/G0F2.f90 @@ -82,7 +82,7 @@ subroutine G0F2(dophBSE,doppBSE,TDA,dBSE,dTDA,singlet,triplet,linearize,eta,regu ! Print results - call MP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,ERHF,eGF,Ec) + call RMP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,ERHF,eGF,Ec) call print_G0F2(nBas,nO,eHF,SigC,eGF,Z,ENuc,ERHF,Ec) ! Perform BSE2 calculation diff --git a/src/GF/evGF2.f90 b/src/GF/evGF2.f90 index 89c4163..ebc85da 100644 --- a/src/GF/evGF2.f90 +++ b/src/GF/evGF2.f90 @@ -107,7 +107,7 @@ subroutine evGF2(dophBSE,doppBSE,TDA,dBSE,dTDA,maxSCF,thresh,max_diis,singlet,tr ! Print results - call MP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,ERHF,eGF,Ec) + call RMP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,ERHF,eGF,Ec) call print_evGF2(nBas,nO,nSCF,Conv,eHF,SigC,Z,eGF,ENuc,ERHF,Ec) ! DIIS extrapolation diff --git a/src/GF/qsGF2.f90 b/src/GF/qsGF2.f90 index 508958c..25eb2f1 100644 --- a/src/GF/qsGF2.f90 +++ b/src/GF/qsGF2.f90 @@ -216,7 +216,7 @@ subroutine qsGF2(maxSCF,thresh,max_diis,dophBSE,doppBSE,TDA,dBSE,dTDA,singlet,tr ! Correlation energy - call MP2(regularize,nBas,nC,nO,nV,nR,ERI_MO,ENuc,EqsGF2,eGF,Ec) + call RMP2(regularize,nBas,nC,nO,nV,nR,ERI_MO,ENuc,EqsGF2,eGF,Ec) ! Total energy diff --git a/src/MP/RMP.f90 b/src/MP/RMP.f90 index e048efd..d3c8a06 100644 --- a/src/MP/RMP.f90 +++ b/src/MP/RMP.f90 @@ -1,4 +1,4 @@ -subroutine RMP(doMP2,doMP3,regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,epsHF) +subroutine RMP(doMP2,doMP3,regularize,nBas,nC,nO,nV,nR,ERI,ENuc,ERHF,eHF) ! Moller-Plesset module @@ -17,8 +17,8 @@ subroutine RMP(doMP2,doMP3,regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,epsHF) integer,intent(in) :: nV(nspin) integer,intent(in) :: nR(nspin) double precision,intent(in) :: ENuc - double precision,intent(in) :: EHF - double precision,intent(in) :: epsHF(nBas) + double precision,intent(in) :: ERHF + double precision,intent(in) :: eHF(nBas) double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas) ! Local variables @@ -35,7 +35,7 @@ subroutine RMP(doMP2,doMP3,regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,epsHF) if(doMP2) then call wall_time(start_MP) - call MP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,epsHF,Ec) + call RMP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,ERHF,eHF,Ec) call wall_time(end_MP) t_MP = end_MP - start_MP @@ -51,7 +51,7 @@ subroutine RMP(doMP2,doMP3,regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,epsHF) if(doMP3) then call wall_time(start_MP) - write(*,*) 'MP3 NYI for UHF reference' + call RMP3(nBas,nC,nO,nV,nR,ERI,ENuc,ERHF,eHF) call wall_time(end_MP) t_MP = end_MP - start_MP diff --git a/src/MP/MP2.f90 b/src/MP/RMP2.f90 similarity index 90% rename from src/MP/MP2.f90 rename to src/MP/RMP2.f90 index baf714c..c6a10d5 100644 --- a/src/MP/MP2.f90 +++ b/src/MP/RMP2.f90 @@ -1,4 +1,4 @@ -subroutine MP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,e,EcMP2) +subroutine RMP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,ERHF,eHF,EcMP2) ! Perform second-order Moller-Plesset calculation with and without regularizers @@ -13,8 +13,8 @@ subroutine MP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,e,EcMP2) integer,intent(in) :: nV integer,intent(in) :: nR double precision,intent(in) :: ENuc - double precision,intent(in) :: EHF - double precision,intent(in) :: e(nBas) + double precision,intent(in) :: ERHF + double precision,intent(in) :: eHF(nBas) double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas) ! Local variables @@ -69,7 +69,7 @@ subroutine MP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,e,EcMP2) do a=nO+1,nBas-nR do b=nO+1,nBas-nR - Dijab = e(a) + e(b) - e(i) - e(j) + Dijab = eHF(a) + eHF(b) - eHF(i) - eHF(j) ! Second-order ring diagram @@ -111,8 +111,8 @@ subroutine MP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,e,EcMP2) write(*,'(A32,1X,F16.10)') ' Direct part = ',2d0*E2d write(*,'(A32,1X,F16.10)') ' Exchange part = ',-E2x write(*,'(A32)') '--------------------------' - write(*,'(A32,1X,F16.10)') ' MP2 electronic energy = ',EHF + EcMP2 - write(*,'(A32,1X,F16.10)') ' MP2 total energy = ',ENuc + EHF + EcMP2 + write(*,'(A32,1X,F16.10)') ' MP2 electronic energy = ',ERHF + EcMP2 + write(*,'(A32,1X,F16.10)') ' MP2 total energy = ',ENuc + ERHF + EcMP2 write(*,'(A32)') '--------------------------' write(*,*) @@ -130,8 +130,8 @@ subroutine MP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,e,EcMP2) write(*,'(A32,1X,F16.10)') ' Direct part = ',2d0*E2ds write(*,'(A32,1X,F16.10)') ' Exchange part = ',-E2xs write(*,'(A32)') '--------------------------' - write(*,'(A32,1X,F16.10)') ' MP2 electronic energy = ',EHF + EcsMP2 - write(*,'(A32,1X,F16.10)') ' MP2 total energy = ',ENuc + EHF + EcsMP2 + write(*,'(A32,1X,F16.10)') ' MP2 electronic energy = ',ERHF + EcsMP2 + write(*,'(A32,1X,F16.10)') ' MP2 total energy = ',ENuc + ERHF + EcsMP2 write(*,'(A32)') '--------------------------' write(*,*) @@ -147,8 +147,8 @@ subroutine MP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,e,EcMP2) write(*,'(A32,1X,F16.10)') ' Direct part = ',2d0*E2ds2 write(*,'(A32,1X,F16.10)') ' Exchange part = ',-E2xs2 write(*,'(A32)') '--------------------------' - write(*,'(A32,1X,F16.10)') ' MP2 electronic energy = ',EHF + Ecs2MP2 - write(*,'(A32,1X,F16.10)') ' MP2 total energy = ',ENuc + EHF + Ecs2MP2 + write(*,'(A32,1X,F16.10)') ' MP2 electronic energy = ',ERHF + Ecs2MP2 + write(*,'(A32,1X,F16.10)') ' MP2 total energy = ',ENuc + ERHF + Ecs2MP2 write(*,'(A32)') '--------------------------' write(*,*) @@ -164,8 +164,8 @@ subroutine MP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,e,EcMP2) write(*,'(A32,1X,F16.10)') ' Direct part = ',2d0*E2dk write(*,'(A32,1X,F16.10)') ' Exchange part = ',-E2xk write(*,'(A32)') '--------------------------' - write(*,'(A32,1X,F16.10)') ' MP2 electronic energy = ',EHF + EckMP2 - write(*,'(A32,1X,F16.10)') ' MP2 total energy = ',ENuc + EHF + EckMP2 + write(*,'(A32,1X,F16.10)') ' MP2 electronic energy = ',ERHF + EckMP2 + write(*,'(A32,1X,F16.10)') ' MP2 total energy = ',ENuc + ERHF + EckMP2 write(*,'(A32)') '--------------------------' write(*,*) diff --git a/src/MP/MP3.f90 b/src/MP/RMP3.f90 similarity index 98% rename from src/MP/MP3.f90 rename to src/MP/RMP3.f90 index da09377..c5a8b72 100644 --- a/src/MP/MP3.f90 +++ b/src/MP/RMP3.f90 @@ -1,4 +1,4 @@ -subroutine MP3(nBasin,nCin,nOin,nVin,nRin,ERI,ENuc,EHF,e) +subroutine RMP3(nBasin,nCin,nOin,nVin,nRin,ERI,ENuc,EHF,e) ! Perform third-order Moller-Plesset calculation