mirror of
https://github.com/pfloos/quack
synced 2024-11-03 20:53:53 +01:00
introduce SRG regularizer in GF, GW, and GT and add option for reg MP2
This commit is contained in:
parent
597c4a9885
commit
196e4c917a
@ -1,7 +1,7 @@
|
|||||||
# RHF UHF KS MOM
|
# RHF UHF KS MOM
|
||||||
T F F F
|
T F F F
|
||||||
# MP2* MP3 MP2-F12
|
# MP2* MP3 MP2-F12
|
||||||
F F F
|
T F F
|
||||||
# CCD pCCD DCD CCSD CCSD(T)
|
# CCD pCCD DCD CCSD CCSD(T)
|
||||||
F F F F F
|
F F F F F
|
||||||
# drCCD rCCD crCCD lCCD
|
# drCCD rCCD crCCD lCCD
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# HF: maxSCF thresh DIIS n_diis guess_type ortho_type mix_guess level_shift stability
|
# HF: maxSCF thresh DIIS n_diis guess_type ortho_type mix_guess level_shift stability
|
||||||
512 0.0000001 T 5 1 1 F 0.0 F
|
512 0.0000001 T 5 1 1 F 0.0 F
|
||||||
# MP:
|
# MP: reg
|
||||||
|
F
|
||||||
# CC: maxSCF thresh DIIS n_diis
|
# CC: maxSCF thresh DIIS n_diis
|
||||||
64 0.0000001 T 5
|
64 0.0000001 T 5
|
||||||
# spin: TDA singlet triplet spin_conserved spin_flip
|
# spin: TDA singlet triplet spin_conserved spin_flip
|
||||||
|
@ -37,7 +37,7 @@ subroutine regularized_self_energy_GF2(eta,nBas,nC,nO,nV,nR,nS,eHF,eGF2,ERI,SigC
|
|||||||
! Parameters for regularized calculations !
|
! Parameters for regularized calculations !
|
||||||
!-----------------------------------------!
|
!-----------------------------------------!
|
||||||
|
|
||||||
kappa = 1.1d0
|
kappa = 1d0
|
||||||
|
|
||||||
!----------------------------------------------------!
|
!----------------------------------------------------!
|
||||||
! Compute GF2 self-energy and renormalization factor !
|
! Compute GF2 self-energy and renormalization factor !
|
||||||
@ -52,9 +52,8 @@ subroutine regularized_self_energy_GF2(eta,nBas,nC,nO,nV,nR,nS,eHF,eGF2,ERI,SigC
|
|||||||
eps = eGF2(p) + eHF(a) - eHF(i) - eHF(j)
|
eps = eGF2(p) + eHF(a) - eHF(i) - eHF(j)
|
||||||
num = (2d0*ERI(p,a,i,j) - ERI(p,a,j,i))*ERI(q,a,i,j)
|
num = (2d0*ERI(p,a,i,j) - ERI(p,a,j,i))*ERI(q,a,i,j)
|
||||||
|
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
dfk = - fk/eps + 4d0*kappa**2*exp(-2d0*eps**2/kappa**2)
|
||||||
dfk = dfk*fk
|
|
||||||
|
|
||||||
SigC(p,q) = SigC(p,q) + num*fk
|
SigC(p,q) = SigC(p,q) + num*fk
|
||||||
if(p == q) Z(p) = Z(p) - num*dfk
|
if(p == q) Z(p) = Z(p) - num*dfk
|
||||||
@ -74,9 +73,8 @@ subroutine regularized_self_energy_GF2(eta,nBas,nC,nO,nV,nR,nS,eHF,eGF2,ERI,SigC
|
|||||||
eps = eGF2(p) + eHF(i) - eHF(a) - eHF(b)
|
eps = eGF2(p) + eHF(i) - eHF(a) - eHF(b)
|
||||||
num = (2d0*ERI(p,i,a,b) - ERI(p,i,b,a))*ERI(q,i,a,b)
|
num = (2d0*ERI(p,i,a,b) - ERI(p,i,b,a))*ERI(q,i,a,b)
|
||||||
|
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
dfk = - fk/eps + 4d0*kappa**2*exp(-2d0*eps**2/kappa**2)
|
||||||
dfk = dfk*fk
|
|
||||||
|
|
||||||
SigC(p,q) = SigC(p,q) + num*fk
|
SigC(p,q) = SigC(p,q) + num*fk
|
||||||
if(p == q) Z(p) = Z(p) - num*dfk
|
if(p == q) Z(p) = Z(p) - num*dfk
|
||||||
|
@ -37,7 +37,7 @@ subroutine regularized_self_energy_GF2_diag(eta,nBas,nC,nO,nV,nR,nS,eHF,eGF2,ERI
|
|||||||
! Parameters for regularized calculations !
|
! Parameters for regularized calculations !
|
||||||
!-----------------------------------------!
|
!-----------------------------------------!
|
||||||
|
|
||||||
kappa = 1.1d0
|
kappa = 1d0
|
||||||
|
|
||||||
!----------------------------------------------------!
|
!----------------------------------------------------!
|
||||||
! Compute GF2 self-energy and renormalization factor !
|
! Compute GF2 self-energy and renormalization factor !
|
||||||
@ -51,9 +51,8 @@ subroutine regularized_self_energy_GF2_diag(eta,nBas,nC,nO,nV,nR,nS,eHF,eGF2,ERI
|
|||||||
eps = eGF2(p) + eHF(a) - eHF(i) - eHF(j)
|
eps = eGF2(p) + eHF(a) - eHF(i) - eHF(j)
|
||||||
num = (2d0*ERI(p,a,i,j) - ERI(p,a,j,i))*ERI(p,a,i,j)
|
num = (2d0*ERI(p,a,i,j) - ERI(p,a,j,i))*ERI(p,a,i,j)
|
||||||
|
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
dfk = - fk/eps + 4d0*kappa**2*exp(-2d0*eps**2/kappa**2)
|
||||||
dfk = dfk*fk
|
|
||||||
|
|
||||||
SigC(p) = SigC(p) + num*fk
|
SigC(p) = SigC(p) + num*fk
|
||||||
Z(p) = Z(p) - num*dfk
|
Z(p) = Z(p) - num*dfk
|
||||||
@ -71,9 +70,8 @@ subroutine regularized_self_energy_GF2_diag(eta,nBas,nC,nO,nV,nR,nS,eHF,eGF2,ERI
|
|||||||
eps = eGF2(p) + eHF(i) - eHF(a) - eHF(b)
|
eps = eGF2(p) + eHF(i) - eHF(a) - eHF(b)
|
||||||
num = (2d0*ERI(p,i,a,b) - ERI(p,i,b,a))*ERI(p,i,a,b)
|
num = (2d0*ERI(p,i,a,b) - ERI(p,i,b,a))*ERI(p,i,a,b)
|
||||||
|
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
dfk = - fk/eps + 4d0*kappa**2*exp(-2d0*eps**2/kappa**2)
|
||||||
dfk = dfk*fk
|
|
||||||
|
|
||||||
SigC(p) = SigC(p) + num*fk
|
SigC(p) = SigC(p) + num*fk
|
||||||
Z(p) = Z(p) - num*dfk
|
Z(p) = Z(p) - num*dfk
|
||||||
|
@ -33,7 +33,7 @@ subroutine regularized_renormalization_factor_Tmatrix(eta,nBas,nC,nO,nV,nR,nOO,n
|
|||||||
! Parameters for regularized calculations !
|
! Parameters for regularized calculations !
|
||||||
!-----------------------------------------!
|
!-----------------------------------------!
|
||||||
|
|
||||||
kappa = 1.1d0
|
kappa = 1d0
|
||||||
|
|
||||||
! Occupied part of the T-matrix self-energy
|
! Occupied part of the T-matrix self-energy
|
||||||
|
|
||||||
@ -43,10 +43,8 @@ subroutine regularized_renormalization_factor_Tmatrix(eta,nBas,nC,nO,nV,nR,nOO,n
|
|||||||
|
|
||||||
eps = e(p) + e(i) - Omega1(cd)
|
eps = e(p) + e(i) - Omega1(cd)
|
||||||
|
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
dfk = - fk/eps + 4d0*kappa**2*exp(-2d0*eps**2/kappa**2)
|
||||||
dfk = dfk*fk
|
|
||||||
|
|
||||||
Z(p) = Z(p) - rho1(p,i,cd)**2*dfk
|
Z(p) = Z(p) - rho1(p,i,cd)**2*dfk
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
@ -61,9 +59,8 @@ subroutine regularized_renormalization_factor_Tmatrix(eta,nBas,nC,nO,nV,nR,nOO,n
|
|||||||
|
|
||||||
eps = e(p) + e(nO+a) - Omega2(kl)
|
eps = e(p) + e(nO+a) - Omega2(kl)
|
||||||
|
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
dfk = - fk/eps + 4d0*kappa**2*exp(-2d0*eps**2/kappa**2)
|
||||||
dfk = dfk*fk
|
|
||||||
|
|
||||||
Z(p) = Z(p) - rho2(p,nO+a,kl)**2*dfk
|
Z(p) = Z(p) - rho2(p,nO+a,kl)**2*dfk
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ subroutine regularized_self_energy_Tmatrix(eta,nBas,nC,nO,nV,nR,nOO,nVV,e,Omega1
|
|||||||
! Parameters for regularized calculations !
|
! Parameters for regularized calculations !
|
||||||
!-----------------------------------------!
|
!-----------------------------------------!
|
||||||
|
|
||||||
kappa = 1.1d0
|
kappa = 1d0
|
||||||
|
|
||||||
!----------------------------------------------
|
!----------------------------------------------
|
||||||
! Occupied part of the T-matrix self-energy
|
! Occupied part of the T-matrix self-energy
|
||||||
@ -49,9 +49,9 @@ subroutine regularized_self_energy_Tmatrix(eta,nBas,nC,nO,nV,nR,nOO,nVV,e,Omega1
|
|||||||
do cd=1,nVV
|
do cd=1,nVV
|
||||||
|
|
||||||
eps = e(p) + e(i) - Omega1(cd)
|
eps = e(p) + e(i) - Omega1(cd)
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
|
|
||||||
SigT(p,q) = SigT(p,q) + rho1(p,i,cd)*rho1(q,i,cd)*eps/(eps**2 + eta**2)
|
SigT(p,q) = SigT(p,q) + rho1(p,i,cd)*rho1(q,i,cd)*fk
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
@ -68,9 +68,9 @@ subroutine regularized_self_energy_Tmatrix(eta,nBas,nC,nO,nV,nR,nOO,nVV,e,Omega1
|
|||||||
do kl=1,nOO
|
do kl=1,nOO
|
||||||
|
|
||||||
eps = e(p) + e(a) - Omega2(kl)
|
eps = e(p) + e(a) - Omega2(kl)
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
|
|
||||||
SigT(p,q) = SigT(p,q) + rho2(p,a,kl)*rho2(q,a,kl)*eps/(eps**2 + eta**2)
|
SigT(p,q) = SigT(p,q) + rho2(p,a,kl)*rho2(q,a,kl)*fk
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
@ -37,7 +37,7 @@ subroutine regularized_self_energy_Tmatrix_diag(eta,nBas,nC,nO,nV,nR,nOO,nVV,e,O
|
|||||||
! Parameters for regularized calculations !
|
! Parameters for regularized calculations !
|
||||||
!-----------------------------------------!
|
!-----------------------------------------!
|
||||||
|
|
||||||
kappa = 1.1d0
|
kappa = 1d0
|
||||||
|
|
||||||
!----------------------------------------------
|
!----------------------------------------------
|
||||||
! Occupied part of the T-matrix self-energy
|
! Occupied part of the T-matrix self-energy
|
||||||
@ -48,7 +48,7 @@ subroutine regularized_self_energy_Tmatrix_diag(eta,nBas,nC,nO,nV,nR,nOO,nVV,e,O
|
|||||||
do cd=1,nVV
|
do cd=1,nVV
|
||||||
|
|
||||||
eps = e(p) + e(i) - Omega1(cd)
|
eps = e(p) + e(i) - Omega1(cd)
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
|
|
||||||
SigT(p) = SigT(p) + rho1(p,i,cd)**2*fk
|
SigT(p) = SigT(p) + rho1(p,i,cd)**2*fk
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ subroutine regularized_self_energy_Tmatrix_diag(eta,nBas,nC,nO,nV,nR,nOO,nVV,e,O
|
|||||||
do kl=1,nOO
|
do kl=1,nOO
|
||||||
|
|
||||||
eps = e(p) + e(a) - Omega2(kl)
|
eps = e(p) + e(a) - Omega2(kl)
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
|
|
||||||
SigT(p) = SigT(p) + rho2(p,a,kl)**2*fk
|
SigT(p) = SigT(p) + rho2(p,a,kl)**2*fk
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ subroutine regularized_renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,e,O
|
|||||||
! Parameters for regularized calculations !
|
! Parameters for regularized calculations !
|
||||||
!-----------------------------------------!
|
!-----------------------------------------!
|
||||||
|
|
||||||
kappa = 1.1d0
|
kappa = 1d0
|
||||||
|
|
||||||
! static COHSEX approximation
|
! static COHSEX approximation
|
||||||
|
|
||||||
@ -56,9 +56,8 @@ subroutine regularized_renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,e,O
|
|||||||
do i=nC+1,nO
|
do i=nC+1,nO
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(p) - e(i) + Omega(jb)
|
eps = e(p) - e(i) + Omega(jb)
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
dfk = - fk/eps + 4d0*kappa**2*exp(-2d0*eps**2/kappa**2)
|
||||||
dfk = dfk*fk
|
|
||||||
Z(p) = Z(p) - 2d0*rho(p,i,jb)**2*dfk
|
Z(p) = Z(p) - 2d0*rho(p,i,jb)**2*dfk
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
@ -70,9 +69,8 @@ subroutine regularized_renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,e,O
|
|||||||
do a=nO+1,nBas-nR
|
do a=nO+1,nBas-nR
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(p) - e(a) - Omega(jb)
|
eps = e(p) - e(a) - Omega(jb)
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
dfk = - fk/eps + 4d0*kappa**2*exp(-2d0*eps**2/kappa**2)
|
||||||
dfk = dfk*fk
|
|
||||||
Z(p) = Z(p) - 2d0*rho(p,a,jb)**2*dfk
|
Z(p) = Z(p) - 2d0*rho(p,a,jb)**2*dfk
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
|
@ -42,7 +42,7 @@ subroutine regularized_self_energy_correlation(COHSEX,eta,nBas,nC,nO,nV,nR,nS,e,
|
|||||||
! Parameters for regularized MP2 calculations !
|
! Parameters for regularized MP2 calculations !
|
||||||
!---------------------------------------------!
|
!---------------------------------------------!
|
||||||
|
|
||||||
kappa = 1.1d0
|
kappa = 1d0
|
||||||
|
|
||||||
!-----------------------------!
|
!-----------------------------!
|
||||||
! COHSEX static approximation !
|
! COHSEX static approximation !
|
||||||
@ -92,7 +92,7 @@ subroutine regularized_self_energy_correlation(COHSEX,eta,nBas,nC,nO,nV,nR,nS,e,
|
|||||||
do i=nC+1,nO
|
do i=nC+1,nO
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(p) - e(i) + Omega(jb)
|
eps = e(p) - e(i) + Omega(jb)
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
SigC(p,q) = SigC(p,q) + 2d0*rho(p,i,jb)*rho(q,i,jb)*fk
|
SigC(p,q) = SigC(p,q) + 2d0*rho(p,i,jb)*rho(q,i,jb)*fk
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
@ -106,7 +106,7 @@ subroutine regularized_self_energy_correlation(COHSEX,eta,nBas,nC,nO,nV,nR,nS,e,
|
|||||||
do a=nO+1,nBas-nR
|
do a=nO+1,nBas-nR
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(p) - e(a) - Omega(jb)
|
eps = e(p) - e(a) - Omega(jb)
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
SigC(p,q) = SigC(p,q) + 2d0*rho(p,a,jb)*rho(q,a,jb)*fk
|
SigC(p,q) = SigC(p,q) + 2d0*rho(p,a,jb)*rho(q,a,jb)*fk
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
@ -120,7 +120,7 @@ subroutine regularized_self_energy_correlation(COHSEX,eta,nBas,nC,nO,nV,nR,nS,e,
|
|||||||
do a=nO+1,nBas-nR
|
do a=nO+1,nBas-nR
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(a) - e(i) + Omega(jb)
|
eps = e(a) - e(i) + Omega(jb)
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
EcGM = EcGM - 4d0*rho(a,i,jb)**2*fk
|
EcGM = EcGM - 4d0*rho(a,i,jb)**2*fk
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
|
@ -40,7 +40,7 @@ subroutine regularized_self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,
|
|||||||
! Parameters for regularized calculations !
|
! Parameters for regularized calculations !
|
||||||
!-----------------------------------------!
|
!-----------------------------------------!
|
||||||
|
|
||||||
kappa = 1.1d0
|
kappa = 1d0
|
||||||
|
|
||||||
!-----------------------------
|
!-----------------------------
|
||||||
! COHSEX static self-energy
|
! COHSEX static self-energy
|
||||||
@ -87,7 +87,7 @@ subroutine regularized_self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,
|
|||||||
do i=nC+1,nO
|
do i=nC+1,nO
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(p) - e(i) + Omega(jb)
|
eps = e(p) - e(i) + Omega(jb)
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
SigC(p) = SigC(p) + 2d0*rho(p,i,jb)**2*fk
|
SigC(p) = SigC(p) + 2d0*rho(p,i,jb)**2*fk
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
@ -99,7 +99,7 @@ subroutine regularized_self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,
|
|||||||
do a=nO+1,nBas-nR
|
do a=nO+1,nBas-nR
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(p) - e(a) - Omega(jb)
|
eps = e(p) - e(a) - Omega(jb)
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
SigC(p) = SigC(p) + 2d0*rho(p,a,jb)**2*fk
|
SigC(p) = SigC(p) + 2d0*rho(p,a,jb)**2*fk
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
@ -112,7 +112,7 @@ subroutine regularized_self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,
|
|||||||
do a=nO+1,nBas-nR
|
do a=nO+1,nBas-nR
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(a) - e(i) + Omega(jb)
|
eps = e(a) - e(i) + Omega(jb)
|
||||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||||
EcGM = EcGM - 4d0*rho(a,i,jb)**2*fk
|
EcGM = EcGM - 4d0*rho(a,i,jb)**2*fk
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine MP2(nBas,nC,nO,nV,nR,ERI,ENuc,EHF,e,EcMP2)
|
subroutine MP2(regularize,nBas,nC,nO,nV,nR,ERI,ENuc,EHF,e,EcMP2)
|
||||||
|
|
||||||
! Perform second-order Moller-Plesset calculation with and without regularizers
|
! Perform second-order Moller-Plesset calculation with and without regularizers
|
||||||
|
|
||||||
@ -6,6 +6,7 @@ subroutine MP2(nBas,nC,nO,nV,nR,ERI,ENuc,EHF,e,EcMP2)
|
|||||||
|
|
||||||
! Input variables
|
! Input variables
|
||||||
|
|
||||||
|
logical,intent(in) :: regularize
|
||||||
integer,intent(in) :: nBas
|
integer,intent(in) :: nBas
|
||||||
integer,intent(in) :: nC
|
integer,intent(in) :: nC
|
||||||
integer,intent(in) :: nO
|
integer,intent(in) :: nO
|
||||||
@ -115,55 +116,59 @@ subroutine MP2(nBas,nC,nO,nV,nR,ERI,ENuc,EHF,e,EcMP2)
|
|||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
|
if(regularize) then
|
||||||
|
|
||||||
!-------------------!
|
!-------------------!
|
||||||
! sigma1-MP2 energy !
|
! sigma1-MP2 energy !
|
||||||
!-------------------!
|
!-------------------!
|
||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,'(A32)') ' sigma-MP2 calculation '
|
write(*,'(A32)') ' sigma-MP2 calculation '
|
||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,'(A32,1X,F16.10)') ' MP2 correlation energy = ',EcsMP2
|
write(*,'(A32,1X,F16.10)') ' MP2 correlation energy = ',EcsMP2
|
||||||
write(*,'(A32,1X,F16.10)') ' Direct part = ',2d0*E2ds
|
write(*,'(A32,1X,F16.10)') ' Direct part = ',2d0*E2ds
|
||||||
write(*,'(A32,1X,F16.10)') ' Exchange part = ',-E2xs
|
write(*,'(A32,1X,F16.10)') ' Exchange part = ',-E2xs
|
||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,'(A32,1X,F16.10)') ' MP2 electronic energy = ',EHF + EcsMP2
|
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 total energy = ',ENuc + EHF + EcsMP2
|
||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
!--------------------!
|
!--------------------!
|
||||||
! sigma^2-MP2 energy !
|
! sigma^2-MP2 energy !
|
||||||
!--------------------!
|
!--------------------!
|
||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,'(A32)') ' sigma^2-MP2 calculation '
|
write(*,'(A32)') ' sigma^2-MP2 calculation '
|
||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,'(A32,1X,F16.10)') ' MP2 correlation energy = ',Ecs2MP2
|
write(*,'(A32,1X,F16.10)') ' MP2 correlation energy = ',Ecs2MP2
|
||||||
write(*,'(A32,1X,F16.10)') ' Direct part = ',2d0*E2ds2
|
write(*,'(A32,1X,F16.10)') ' Direct part = ',2d0*E2ds2
|
||||||
write(*,'(A32,1X,F16.10)') ' Exchange part = ',-E2xs2
|
write(*,'(A32,1X,F16.10)') ' Exchange part = ',-E2xs2
|
||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,'(A32,1X,F16.10)') ' MP2 electronic energy = ',EHF + Ecs2MP2
|
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 total energy = ',ENuc + EHF + Ecs2MP2
|
||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
!------------------!
|
!------------------!
|
||||||
! kappa-MP2 energy !
|
! kappa-MP2 energy !
|
||||||
!------------------!
|
!------------------!
|
||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,'(A32)') ' kappa-MP2 calculation '
|
write(*,'(A32)') ' kappa-MP2 calculation '
|
||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,'(A32,1X,F16.10)') ' MP2 correlation energy = ',EckMP2
|
write(*,'(A32,1X,F16.10)') ' MP2 correlation energy = ',EckMP2
|
||||||
write(*,'(A32,1X,F16.10)') ' Direct part = ',2d0*E2dk
|
write(*,'(A32,1X,F16.10)') ' Direct part = ',2d0*E2dk
|
||||||
write(*,'(A32,1X,F16.10)') ' Exchange part = ',-E2xk
|
write(*,'(A32,1X,F16.10)') ' Exchange part = ',-E2xk
|
||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,'(A32,1X,F16.10)') ' MP2 electronic energy = ',EHF + EckMP2
|
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 total energy = ',ENuc + EHF + EckMP2
|
||||||
write(*,'(A32)') '--------------------------'
|
write(*,'(A32)') '--------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
|
end if
|
||||||
|
|
||||||
end subroutine MP2
|
end subroutine MP2
|
||||||
|
@ -108,6 +108,8 @@ program QuAcK
|
|||||||
double precision :: thresh_HF,level_shift
|
double precision :: thresh_HF,level_shift
|
||||||
logical :: DIIS_HF,guess_type,ortho_type,mix
|
logical :: DIIS_HF,guess_type,ortho_type,mix
|
||||||
|
|
||||||
|
logical :: regMP
|
||||||
|
|
||||||
integer :: maxSCF_CC,n_diis_CC
|
integer :: maxSCF_CC,n_diis_CC
|
||||||
double precision :: thresh_CC
|
double precision :: thresh_CC
|
||||||
logical :: DIIS_CC
|
logical :: DIIS_CC
|
||||||
@ -174,6 +176,7 @@ program QuAcK
|
|||||||
! Read options for methods
|
! Read options for methods
|
||||||
|
|
||||||
call read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type,mix,level_shift,dostab, &
|
call read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type,mix,level_shift,dostab, &
|
||||||
|
regMP, &
|
||||||
maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, &
|
maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, &
|
||||||
TDA,singlet,triplet,spin_conserved,spin_flip, &
|
TDA,singlet,triplet,spin_conserved,spin_flip, &
|
||||||
maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,linGF,eta_GF,renormGF,regGF, &
|
maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,linGF,eta_GF,renormGF,regGF, &
|
||||||
@ -479,7 +482,7 @@ program QuAcK
|
|||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
call MP2(nBas,nC,nO,nV,nR,ERI_MO,ENuc,ERHF,eHF,EcMP2)
|
call MP2(regMP,nBas,nC,nO,nV,nR,ERI_MO,ENuc,ERHF,eHF,EcMP2)
|
||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type,mix,level_shift,dostab, &
|
subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type,mix,level_shift,dostab, &
|
||||||
|
regMP, &
|
||||||
maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, &
|
maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, &
|
||||||
TDA,singlet,triplet,spin_conserved,spin_flip, &
|
TDA,singlet,triplet,spin_conserved,spin_flip, &
|
||||||
maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,linGF,eta_GF,renormGF,regGF, &
|
maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,linGF,eta_GF,renormGF,regGF, &
|
||||||
@ -24,6 +25,8 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_t
|
|||||||
double precision,intent(out) :: level_shift
|
double precision,intent(out) :: level_shift
|
||||||
logical,intent(out) :: dostab
|
logical,intent(out) :: dostab
|
||||||
|
|
||||||
|
logical,intent(out) :: regMP
|
||||||
|
|
||||||
integer,intent(out) :: maxSCF_CC
|
integer,intent(out) :: maxSCF_CC
|
||||||
double precision,intent(out) :: thresh_CC
|
double precision,intent(out) :: thresh_CC
|
||||||
logical,intent(out) :: DIIS_CC
|
logical,intent(out) :: DIIS_CC
|
||||||
@ -106,8 +109,11 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_t
|
|||||||
|
|
||||||
! Read MPn options
|
! Read MPn options
|
||||||
|
|
||||||
read(1,*)
|
regMP = .false.
|
||||||
read(1,*)
|
read(1,*)
|
||||||
|
read(1,*) answer1
|
||||||
|
|
||||||
|
if(answer1 == 'T') regMP = .true.
|
||||||
|
|
||||||
! Read CC options
|
! Read CC options
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user