From 9e65d4a0905945560d9e11ad021d9a24abb18df4 Mon Sep 17 00:00:00 2001 From: Pierre-Francois Loos Date: Tue, 1 Aug 2023 21:32:57 +0200 Subject: [PATCH] cleaning prints and fix bug in regularization --- input/methods | 4 +- input/options | 4 +- src/GF/GF2_reg_self_energy.f90 | 4 +- src/GF/GF2_reg_self_energy_diag.f90 | 4 +- src/GF/UGF2_reg_self_energy.f90 | 16 ++--- src/GF/UGF2_reg_self_energy_diag.f90 | 16 ++--- src/GF/print_G0F2.f90 | 36 +++++------ src/GF/print_evGF2.f90 | 39 ++++++------ src/GF/print_qsGF2.f90 | 34 +++++------ src/GT/G0T0eh.f90 | 8 +-- src/GT/G0T0pp.f90 | 4 +- src/GT/GTeh_QP_graph.f90 | 4 +- src/GT/GTeh_SigC.f90 | 8 +-- src/GT/GTeh_dSigC.f90 | 8 +-- src/GT/GTeh_excitation_density.f90 | 18 +++--- src/GT/GTeh_regularization.f90 | 7 ++- src/GT/GTeh_self_energy_diag.f90 | 8 +-- src/GT/GTpp_regularization.f90 | 3 +- src/GT/evGTeh.f90 | 2 +- src/GT/print_G0T0eh.f90 | 16 ++--- src/GT/print_G0T0pp.f90 | 22 +++---- src/GT/print_evGTeh.f90 | 16 ++--- src/GT/print_evGTpp.f90 | 30 +++++----- src/GT/print_qsGTeh.f90 | 22 +++---- src/GT/print_qsGTpp.f90 | 38 ++++++------ src/GT/qsGTeh.f90 | 2 +- src/GW/G0W0.f90 | 2 +- src/GW/GW_regularization.f90 | 7 ++- src/GW/evGW.f90 | 2 +- src/GW/print_G0W0.f90 | 16 ++--- src/GW/print_UG0W0.f90 | 14 ++--- src/GW/print_evGW.f90 | 16 ++--- src/GW/print_qsGW.f90 | 28 ++++----- src/GW/qsGW.f90 | 2 +- src/QuAcK/QuAcK.f90 | 32 +++++----- src/QuAcK/read_options.f90 | 90 ++++++++++++++-------------- 36 files changed, 292 insertions(+), 290 deletions(-) diff --git a/input/methods b/input/methods index 6c28410..4c47c7d 100644 --- a/input/methods +++ b/input/methods @@ -11,9 +11,9 @@ # phRPA* phRPAx* crRPA ppRPA F F F F # G0F2* evGF2* qsGF2* G0F3 evGF3 - F F F F F + F F T F F # G0W0* evGW* qsGW* SRG-qsGW ufG0W0 ufGW F F F F F F # G0T0pp* evGTpp* qsGTpp* G0T0eh evGTeh qsGTeh - F F F F F T + F F F F F F # * unrestricted version available diff --git a/input/options b/input/options index 316358c..85b0e2b 100644 --- a/input/options +++ b/input/options @@ -9,9 +9,9 @@ # GF: maxSCF thresh DIIS n_diis lin eta renorm reg 256 0.00001 T 5 T 0.0 0 F # GW: maxSCF thresh DIIS n_diis lin eta TDA_W reg - 256 0.00001 T 5 T 0.0 F F + 256 0.00001 T 5 F 0.0 F T # GT: maxSCF thresh DIIS n_diis lin eta TDA_T reg - 256 0.00001 T 5 T 0.1 T F + 256 0.00001 T 5 T 0.0 F F # ACFDT: AC Kx XBS F F T # BSE: phBSE phBSE2 ppBSE dBSE dTDA diff --git a/src/GF/GF2_reg_self_energy.f90 b/src/GF/GF2_reg_self_energy.f90 index c69b042..3ad4922 100644 --- a/src/GF/GF2_reg_self_energy.f90 +++ b/src/GF/GF2_reg_self_energy.f90 @@ -54,7 +54,7 @@ subroutine GF2_reg_self_energy(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z) do a=nO+1,nBas-nR eps = eGF2(p) + eHF(a) - eHF(i) - eHF(j) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*(2d0*ERI(p,a,i,j) - ERI(p,a,j,i))*ERI(q,a,i,j) SigC(p,q) = SigC(p,q) + num*eps/(eps**2 + eta**2) @@ -73,7 +73,7 @@ subroutine GF2_reg_self_energy(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z) do b=nO+1,nBas-nR eps = eGF2(p) + eHF(i) - eHF(a) - eHF(b) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*(2d0*ERI(p,i,a,b) - ERI(p,i,b,a))*ERI(q,i,a,b) SigC(p,q) = SigC(p,q) + num*eps/(eps**2 + eta**2) diff --git a/src/GF/GF2_reg_self_energy_diag.f90 b/src/GF/GF2_reg_self_energy_diag.f90 index 97e9595..0c3efdc 100644 --- a/src/GF/GF2_reg_self_energy_diag.f90 +++ b/src/GF/GF2_reg_self_energy_diag.f90 @@ -53,7 +53,7 @@ subroutine GF2_reg_self_energy_diag(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z) do a=nO+1,nBas-nR eps = eGF2(p) + eHF(a) - eHF(i) - eHF(j) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*(2d0*ERI(p,a,i,j) - ERI(p,a,j,i))*ERI(p,a,i,j) SigC(p) = SigC(p) + num*eps/(eps**2 + eta**2) @@ -70,7 +70,7 @@ subroutine GF2_reg_self_energy_diag(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z) do b=nO+1,nBas-nR eps = eGF2(p) + eHF(i) - eHF(a) - eHF(b) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*(2d0*ERI(p,i,a,b) - ERI(p,i,b,a))*ERI(p,i,a,b) SigC(p) = SigC(p) + num*eps/(eps**2 + eta**2) diff --git a/src/GF/UGF2_reg_self_energy.f90 b/src/GF/UGF2_reg_self_energy.f90 index 0d419d8..d9374f9 100644 --- a/src/GF/UGF2_reg_self_energy.f90 +++ b/src/GF/UGF2_reg_self_energy.f90 @@ -63,7 +63,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG eps = eGF2(p,1) + eHF(i,1) - eHF(a,1) - eHF(b,1) num = ERI_aa(i,q,a,b)*ERI_aa(a,b,i,p) & - ERI_aa(i,q,a,b)*ERI_aa(a,b,p,i) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,q,1) = SigC(p,q,1) + num*eps/(eps**2 + eta**2) @@ -81,7 +81,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG eps = eGF2(p,1) + eHF(i,2) - eHF(a,2) - eHF(b,1) num = ERI_ab(q,i,b,a)*ERI_ab(b,a,p,i) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,q,1) = SigC(p,q,1) + num*eps/(eps**2 + eta**2) @@ -100,7 +100,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG eps = eGF2(p,1) + eHF(a,1) - eHF(i,1) - eHF(j,1) num = ERI_aa(a,q,i,j)*ERI_aa(i,j,a,p) & - ERI_aa(a,q,i,j)*ERI_aa(i,j,p,a) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,q,1) = SigC(p,q,1) + num*eps/(eps**2 + eta**2) @@ -118,7 +118,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG eps = eGF2(p,1) + eHF(a,2) - eHF(i,2) - eHF(j,1) num = ERI_ab(q,a,j,i)*ERI_ab(j,i,p,a) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,q,1) = SigC(p,q,1) + num*eps/(eps**2 + eta**2) @@ -147,7 +147,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG eps = eGF2(p,2) + eHF(i,2) - eHF(a,2) - eHF(b,2) num = ERI_bb(i,q,a,b)*ERI_bb(a,b,i,p) & - ERI_bb(i,q,a,b)*ERI_bb(a,b,p,i) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,q,2) = SigC(p,q,2) + num*eps/(eps**2 + eta**2) @@ -165,7 +165,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG eps = eGF2(p,2) + eHF(i,1) - eHF(a,1) - eHF(b,2) num = ERI_ab(i,q,a,b)*ERI_ab(a,b,i,p) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,q,2) = SigC(p,q,2) + num*eps/(eps**2 + eta**2) @@ -184,7 +184,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG eps = eGF2(p,2) + eHF(a,2) - eHF(i,2) - eHF(j,2) num = ERI_bb(a,q,i,j)*ERI_bb(i,j,a,p) & - ERI_bb(a,q,i,j)*ERI_bb(i,j,p,a) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,q,2) = SigC(p,q,2) + num*eps/(eps**2 + eta**2) @@ -202,7 +202,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG eps = eGF2(p,2) + eHF(a,1) - eHF(i,1) - eHF(j,2) num = ERI_ab(a,q,i,j)*ERI_ab(i,j,a,p) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,q,2) = SigC(p,q,2) + num*eps/(eps**2 + eta**2) diff --git a/src/GF/UGF2_reg_self_energy_diag.f90 b/src/GF/UGF2_reg_self_energy_diag.f90 index d1adf74..0cc0497 100644 --- a/src/GF/UGF2_reg_self_energy_diag.f90 +++ b/src/GF/UGF2_reg_self_energy_diag.f90 @@ -61,7 +61,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e eps = eGF2(p,1) + eHF(i,1) - eHF(a,1) - eHF(b,1) num = ERI_aa(i,p,a,b)*ERI_aa(a,b,i,p) & - ERI_aa(i,p,a,b)*ERI_aa(a,b,p,i) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,1) = SigC(p,1) + num*eps/(eps**2 + eta**2) @@ -79,7 +79,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e eps = eGF2(p,1) + eHF(i,2) - eHF(a,2) - eHF(b,1) num = ERI_ab(p,i,b,a)*ERI_ab(b,a,p,i) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,1) = SigC(p,1) + num*eps/(eps**2 + eta**2) @@ -98,7 +98,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e eps = eGF2(p,1) + eHF(a,1) - eHF(i,1) - eHF(j,1) num = ERI_aa(a,p,i,j)*ERI_aa(i,j,a,p) & - ERI_aa(a,p,i,j)*ERI_aa(i,j,p,a) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,1) = SigC(p,1) + num*eps/(eps**2 + eta**2) @@ -116,7 +116,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e eps = eGF2(p,1) + eHF(a,2) - eHF(i,2) - eHF(j,1) num = ERI_ab(p,a,j,i)*ERI_ab(j,i,p,a) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,1) = SigC(p,1) + num*eps/(eps**2 + eta**2) @@ -143,7 +143,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e eps = eGF2(p,2) + eHF(i,2) - eHF(a,2) - eHF(b,2) num = ERI_bb(i,p,a,b)*ERI_bb(a,b,i,p) & - ERI_bb(i,p,a,b)*ERI_bb(a,b,p,i) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,2) = SigC(p,2) + num*eps/(eps**2 + eta**2) @@ -161,7 +161,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e eps = eGF2(p,2) + eHF(i,1) - eHF(a,1) - eHF(b,2) num = ERI_ab(i,p,a,b)*ERI_ab(a,b,i,p) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,2) = SigC(p,2) + num*eps/(eps**2 + eta**2) @@ -180,7 +180,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e eps = eGF2(p,2) + eHF(a,2) - eHF(i,2) - eHF(j,2) num = ERI_bb(a,p,i,j)*ERI_bb(i,j,a,p) & - ERI_bb(a,p,i,j)*ERI_bb(i,j,p,a) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,2) = SigC(p,2) + num*eps/(eps**2 + eta**2) @@ -198,7 +198,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e eps = eGF2(p,2) + eHF(a,1) - eHF(i,1) - eHF(j,2) num = ERI_ab(a,p,i,j)*ERI_ab(i,j,a,p) - kappa = exp(-2d0*eps**2*s) + kappa = 1d0 - exp(-2d0*eps**2*s) num = kappa*num SigC(p,2) = SigC(p,2) + num*eps/(eps**2 + eta**2) diff --git a/src/GF/print_G0F2.f90 b/src/GF/print_G0F2.f90 index beb688a..c521761 100644 --- a/src/GF/print_G0F2.f90 +++ b/src/GF/print_G0F2.f90 @@ -1,4 +1,4 @@ -subroutine print_G0F2(nBas,nO,eHF,Sig,eGF2,Z,ENuc,ERHF,Ec) +subroutine print_G0F2(nBas,nO,eHF,Sig,eGF,Z,ENuc,ERHF,Ec) ! Print one-electron energies and other stuff for G0F2 @@ -9,7 +9,7 @@ subroutine print_G0F2(nBas,nO,eHF,Sig,eGF2,Z,ENuc,ERHF,Ec) integer,intent(in) :: nO double precision,intent(in) :: eHF(nBas) double precision,intent(in) :: Sig(nBas) - double precision,intent(in) :: eGF2(nBas) + double precision,intent(in) :: eGF(nBas) double precision,intent(in) :: Z(nBas) double precision,intent(in) :: ENuc double precision,intent(in) :: ERHF @@ -24,29 +24,29 @@ subroutine print_G0F2(nBas,nO,eHF,Sig,eGF2,Z,ENuc,ERHF,Ec) HOMO = nO LUMO = HOMO + 1 - Gap = eGF2(LUMO) - eGF2(HOMO) + Gap = eGF(LUMO) - eGF(HOMO) ! Dump results - write(*,*)'--------------------------------------------------------------------------' - write(*,*)' Frequency-dependent G0F2 calculation' - write(*,*)'--------------------------------------------------------------------------' - write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A10,1X,A1,1X)') & - '|','#','|','e_HF (eV)','|','Sigma (eV)','|','e_G0F2 (eV)','|','Z','|' - write(*,*)'--------------------------------------------------------------------------' + write(*,*)'-------------------------------------------------------------------------------' + write(*,*)' One-shot G0F2 calculation' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') & + '|','#','|','e_HF (eV)','|','Sig_GF2 (eV)','|','Z','|','e_GF2 (eV)','|' + write(*,*)'-------------------------------------------------------------------------------' do p=1,nBas - write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F10.6,1X,A1,1X)') & - '|',p,'|',eHF(p)*HaToeV,'|',Sig(p)*HaToeV,'|',eGF2(p)*HaToeV,'|',Z(p),'|' + write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') & + '|',p,'|',eHF(p)*HaToeV,'|',Sig(p)*HaToeV,'|',Z(p),'|',eGF(p)*HaToeV,'|' enddo - write(*,*)'--------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6)') 'G0F2 HOMO energy (eV):',eGF2(HOMO)*HaToeV - write(*,'(2X,A30,F15.6)') 'G0F2 LUMO energy (eV):',eGF2(LUMO)*HaToeV - write(*,'(2X,A30,F15.6)') 'G0F2 HOMO-LUMO gap (eV):',Gap*HaToeV - write(*,*)'--------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'G0F2 total energy :',ENuc + ERHF + Ec,' au' - write(*,'(2X,A30,F15.6,A3)') 'G0F2 correlation energy:',Ec,' au' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') 'G0F2 HOMO energy =',eGF(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'G0F2 LUMO energy =',eGF(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'G0F2 HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') 'G0F2 total energy =',ENuc + ERHF + Ec,' au' + write(*,'(2X,A60,F15.6,A3)') 'G0F2 correlation energy =',Ec,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) diff --git a/src/GF/print_evGF2.f90 b/src/GF/print_evGF2.f90 index cbb0059..1e4bdf7 100644 --- a/src/GF/print_evGF2.f90 +++ b/src/GF/print_evGF2.f90 @@ -1,4 +1,4 @@ -subroutine print_evGF2(nBas,nO,nSCF,Conv,eHF,Sig,Z,eGF2,ENuc,ERHF,Ec) +subroutine print_evGF2(nBas,nO,nSCF,Conv,eHF,Sig,Z,eGF,ENuc,ERHF,Ec) ! Print one-electron energies and other stuff for G0F2 @@ -11,7 +11,7 @@ subroutine print_evGF2(nBas,nO,nSCF,Conv,eHF,Sig,Z,eGF2,ENuc,ERHF,Ec) double precision,intent(in) :: Conv double precision,intent(in) :: eHF(nBas) double precision,intent(in) :: Sig(nBas) - double precision,intent(in) :: eGF2(nBas) + double precision,intent(in) :: eGF(nBas) double precision,intent(in) :: Z(nBas) double precision,intent(in) :: ENuc double precision,intent(in) :: ERHF @@ -26,34 +26,35 @@ subroutine print_evGF2(nBas,nO,nSCF,Conv,eHF,Sig,Z,eGF2,ENuc,ERHF,Ec) HOMO = nO LUMO = HOMO + 1 - Gap = eGF2(LUMO) - eGF2(HOMO) + Gap = eGF(LUMO) - eGF(HOMO) ! Dump results - write(*,*)'--------------------------------------------------------------------------' - write(*,*)' Frequency-dependent evGF2 calculation' - write(*,*)'--------------------------------------------------------------------------' - write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A10,1X,A1,1X)') & - '|','#','|','e_HF (eV)','|','Sigma (eV)','|','e_evGF2 (eV)','|','Z','|' - write(*,*)'--------------------------------------------------------------------------' + write(*,*)'-------------------------------------------------------------------------------' + write(*,*)' Self-consistent evGF2 calculation' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') & + '|','#','|','e_HF (eV)','|','Sig_GF2 (eV)','|','Z','|','e_GF2 (eV)','|' + write(*,*)'-------------------------------------------------------------------------------' do p=1,nBas - write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F10.6,1X,A1,1X)') & - '|',p,'|',eHF(p)*HaToeV,'|',Sig(p)*HaToeV,'|',eGF2(p)*HaToeV,'|',Z(p),'|' + write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') & + '|',p,'|',eHF(p)*HaToeV,'|',Sig(p)*HaToeV,'|',Z(p),'|',eGF(p)*HaToeV,'|' enddo - write(*,*)'-------------------------------------------------------------' + write(*,*)'-------------------------------------------------------------------------------' write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv - write(*,*)'--------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6)') 'evGF2 HOMO energy (eV):',eGF2(HOMO)*HaToeV - write(*,'(2X,A30,F15.6)') 'evGF2 LUMO energy (eV):',eGF2(LUMO)*HaToeV - write(*,'(2X,A30,F15.6)') 'evGF2 HOMO-LUMO gap (eV):',Gap*HaToeV - write(*,*)'--------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'evGF2 total energy :',ENuc + ERHF + Ec,' au' - write(*,'(2X,A30,F15.6,A3)') 'evGF2 correlation energy:',Ec,' au' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') 'evGF2 HOMO energy =',eGF(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evGF2 LUMO energy =',eGF(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evGF2 HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') 'evGF2 total energy =',ENuc + ERHF + Ec,' au' + write(*,'(2X,A60,F15.6,A3)') 'evGF2 correlation energy =',Ec,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) + end subroutine diff --git a/src/GF/print_qsGF2.f90 b/src/GF/print_qsGF2.f90 index 9f19941..38f41bd 100644 --- a/src/GF/print_qsGF2.f90 +++ b/src/GF/print_qsGF2.f90 @@ -1,4 +1,4 @@ -subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ,Ex,Ec,EqsGF2,dipole) +subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF,c,SigC,Z,ENuc,ET,EV,EJ,Ex,Ec,EqsGF,dipole) ! Print one-electron energies and other stuff for qsGF2 @@ -14,7 +14,7 @@ subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ, double precision,intent(in) :: Conv double precision,intent(in) :: thresh double precision,intent(in) :: eHF(nBas) - double precision,intent(in) :: eGF2(nBas) + double precision,intent(in) :: eGF(nBas) double precision,intent(in) :: c(nBas) double precision,intent(in) :: SigC(nBas,nBas) double precision,intent(in) :: Z(nBas) @@ -23,7 +23,7 @@ subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ, double precision,intent(in) :: EJ double precision,intent(in) :: Ex double precision,intent(in) :: Ec - double precision,intent(in) :: EqsGF2 + double precision,intent(in) :: EqsGF double precision,intent(in) :: dipole(ncart) ! Local variables @@ -38,7 +38,7 @@ subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ, HOMO = nO LUMO = HOMO + 1 - Gap = eGF2(LUMO)-eGF2(HOMO) + Gap = eGF(LUMO)-eGF(HOMO) ! Dump results @@ -55,21 +55,21 @@ subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ, do q=1,nBas write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') & - '|',q,'|',eHF(q)*HaToeV,'|',SigC(q,q)*HaToeV,'|',Z(q),'|',eGF2(q)*HaToeV,'|' + '|',q,'|',eHF(q)*HaToeV,'|',SigC(q,q)*HaToeV,'|',Z(q),'|',eGF(q)*HaToeV,'|' enddo write(*,*)'-------------------------------------------------------------------------------' write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv - write(*,*)'-------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'qsGF2 HOMO energy:',eGF2(HOMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'qsGF2 LUMO energy:',eGF2(LUMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'qsGF2 HOMO-LUMO gap :',Gap*HaToeV,' eV' - write(*,*)'-------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') ' qsGF2 total energy:',ENuc + EqsGF2,' au' - write(*,'(2X,A30,F15.6,A3)') ' qsGF2 exchange energy:',Ex,' au' - write(*,'(2X,A30,F15.6,A3)') ' qsGF2 correlation energy:',Ec,' au' - write(*,*)'-------------------------------------------' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') 'qsGF2 HOMO energy =',eGF(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsGF2 LUMO energy =',eGF(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsGF2 HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') ' qsGF2 total energy =',ENuc + EqsGF,' au' + write(*,'(2X,A60,F15.6,A3)') ' qsGF2 exchange energy =',Ex,' au' + write(*,'(2X,A60,F15.6,A3)') ' qsGF2 correlation energy =',Ec,' au' + write(*,*)'-------------------------------------------------------------------------------' write(*,*) ! Dump results for final iteration @@ -89,9 +89,9 @@ subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ, write(*,'(A32,1X,F16.10,A3)') ' Exchange energy: ',Ex,' au' write(*,'(A32,1X,F16.10,A3)') ' Correlation energy: ',Ec,' au' write(*,'(A50)') '---------------------------------------' - write(*,'(A32,1X,F16.10,A3)') ' Electronic energy: ',EqsGF2,' au' + write(*,'(A32,1X,F16.10,A3)') ' Electronic energy: ',EqsGF,' au' write(*,'(A32,1X,F16.10,A3)') ' Nuclear repulsion: ',ENuc,' au' - write(*,'(A32,1X,F16.10,A3)') ' qsGF2 energy: ',ENuc + EqsGF2,' au' + write(*,'(A32,1X,F16.10,A3)') ' qsGF2 energy: ',ENuc + EqsGF,' au' write(*,'(A50)') '---------------------------------------' write(*,'(A35)') ' Dipole moment (Debye) ' write(*,'(10X,4A10)') 'X','Y','Z','Tot.' @@ -107,7 +107,7 @@ subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ, write(*,'(A50)') '---------------------------------------' write(*,'(A32)') ' qsGF2 MO energies' write(*,'(A50)') '---------------------------------------' - call matout(nBas,1,eGF2) + call matout(nBas,1,eGF) write(*,*) endif diff --git a/src/GT/G0T0eh.f90 b/src/GT/G0T0eh.f90 index 25b0168..3594fc6 100644 --- a/src/GT/G0T0eh.f90 +++ b/src/GT/G0T0eh.f90 @@ -56,8 +56,8 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,TDA,dBSE, double precision,allocatable :: Om(:) double precision,allocatable :: XpY(:,:) double precision,allocatable :: XmY(:,:) - double precision,allocatable :: rhoL(:,:,:,:) - double precision,allocatable :: rhoR(:,:,:,:) + double precision,allocatable :: rhoL(:,:,:) + double precision,allocatable :: rhoR(:,:,:) double precision,allocatable :: eGT(:) @@ -99,7 +99,7 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,TDA,dBSE, ! Memory allocation allocate(Aph(nS,nS),Bph(nS,nS),Sig(nBas),Z(nBas),Om(nS),XpY(nS,nS),XmY(nS,nS), & - rhoL(nBas,nBas,nS,2),rhoR(nBas,nBas,nS,2),eGT(nBas)) + rhoL(nBas,nBas,nS),rhoR(nBas,nBas,nS),eGT(nBas)) !--------------------------------- ! Compute (triplet) RPA screening @@ -124,7 +124,7 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,TDA,dBSE, ! Compute GW self-energy ! !------------------------! - if(regularize) call GTeh_regularization(eta,nBas,nC,nO,nV,nR,nS,eHF,Om,rhoL,rhoR) + if(regularize) call GTeh_regularization(nBas,nC,nO,nV,nR,nS,eHF,Om,rhoL,rhoR) call GTeh_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,eHF,Om,rhoL,rhoR,EcGM,Sig,Z) diff --git a/src/GT/G0T0pp.f90 b/src/GT/G0T0pp.f90 index 6813471..b16f823 100644 --- a/src/GT/G0T0pp.f90 +++ b/src/GT/G0T0pp.f90 @@ -154,8 +154,8 @@ subroutine G0T0pp(doACFDT,exchange_kernel,doXBS,dophBSE,TDA_T,TDA,dBSE,dTDA,dopp !---------------------------------------------- if(regularize) then - call GTpp_regularization(eta,nBas,nC,nO,nV,nR,nOOs,nVVs,eHF,Om1s,rho1s,Om2s,rho2s) - call GTpp_regularization(eta,nBas,nC,nO,nV,nR,nOOt,nVVt,eHF,Om1t,rho1t,Om2t,rho2t) + call GTpp_regularization(nBas,nC,nO,nV,nR,nOOs,nVVs,eHF,Om1s,rho1s,Om2s,rho2s) + call GTpp_regularization(nBas,nC,nO,nV,nR,nOOt,nVVt,eHF,Om1t,rho1t,Om2t,rho2t) end if call GTpp_self_energy_diag(eta,nBas,nC,nO,nV,nR,nOOs,nVVs,nOOt,nVVt,eHF,Om1s,rho1s,Om2s,rho2s, & diff --git a/src/GT/GTeh_QP_graph.f90 b/src/GT/GTeh_QP_graph.f90 index 86338af..bd5dc6e 100644 --- a/src/GT/GTeh_QP_graph.f90 +++ b/src/GT/GTeh_QP_graph.f90 @@ -14,8 +14,8 @@ subroutine GTeh_QP_graph(eta,nBas,nC,nO,nV,nR,nS,eHF,Om,rhoL,rhoR,eGTlin,eGT,Z) double precision,intent(in) :: eta double precision,intent(in) :: eHF(nBas) double precision,intent(in) :: Om(nS) - double precision,intent(in) :: rhoL(nBas,nBas,nS,2) - double precision,intent(in) :: rhoR(nBas,nBas,nS,2) + double precision,intent(in) :: rhoL(nBas,nBas,nS) + double precision,intent(in) :: rhoR(nBas,nBas,nS) double precision,intent(in) :: eGTlin(nBas) diff --git a/src/GT/GTeh_SigC.f90 b/src/GT/GTeh_SigC.f90 index cf50115..0cac37a 100644 --- a/src/GT/GTeh_SigC.f90 +++ b/src/GT/GTeh_SigC.f90 @@ -18,8 +18,8 @@ double precision function GTeh_SigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR) integer,intent(in) :: nS double precision,intent(in) :: e(nBas) double precision,intent(in) :: Om(nS) - double precision,intent(in) :: rhoL(nBas,nBas,nS,2) - double precision,intent(in) :: rhoR(nBas,nBas,nS,2) + double precision,intent(in) :: rhoL(nBas,nBas,nS) + double precision,intent(in) :: rhoR(nBas,nBas,nS) ! Local variables @@ -35,7 +35,7 @@ double precision function GTeh_SigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR) do i=nC+1,nO do m=1,nS eps = w - e(i) + Om(m) - num = rhoL(i,p,m,1)*rhoR(i,p,m,1) + num = rhoL(i,p,m)*rhoR(i,p,m) GTeh_SigC = GTeh_SigC + num*eps/(eps**2 + eta**2) enddo enddo @@ -45,7 +45,7 @@ double precision function GTeh_SigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR) do a=nO+1,nBas-nR do m=1,nS eps = w - e(a) - Om(m) - num = rhoL(p,a,m,1)*rhoR(p,a,m,1) + num = rhoL(p,a,m)*rhoR(p,a,m) GTeh_SigC = GTeh_SigC + num*eps/(eps**2 + eta**2) enddo enddo diff --git a/src/GT/GTeh_dSigC.f90 b/src/GT/GTeh_dSigC.f90 index 01412d5..513c23e 100644 --- a/src/GT/GTeh_dSigC.f90 +++ b/src/GT/GTeh_dSigC.f90 @@ -18,8 +18,8 @@ double precision function GTeh_dSigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR) integer,intent(in) :: nS double precision,intent(in) :: e(nBas) double precision,intent(in) :: Om(nS) - double precision,intent(in) :: rhoL(nBas,nBas,nS,2) - double precision,intent(in) :: rhoR(nBas,nBas,nS,2) + double precision,intent(in) :: rhoL(nBas,nBas,nS) + double precision,intent(in) :: rhoR(nBas,nBas,nS) ! Local variables @@ -35,7 +35,7 @@ double precision function GTeh_dSigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR) do i=nC+1,nO do m=1,nS eps = w - e(i) + Om(m) - num = rhoL(i,p,m,1)*rhoR(i,p,m,1) + num = rhoL(i,p,m)*rhoR(i,p,m) GTeh_dSigC = GTeh_dSigC - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2 enddo enddo @@ -45,7 +45,7 @@ double precision function GTeh_dSigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR) do a=nO+1,nBas-nR do m=1,nS eps = w - e(a) - Om(m) - num = rhoL(p,a,m,1)*rhoR(p,a,m,1) + num = rhoL(p,a,m)*rhoR(p,a,m) GTeh_dSigC = GTeh_dSigC - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2 enddo enddo diff --git a/src/GT/GTeh_excitation_density.f90 b/src/GT/GTeh_excitation_density.f90 index 9735355..3792e91 100644 --- a/src/GT/GTeh_excitation_density.f90 +++ b/src/GT/GTeh_excitation_density.f90 @@ -18,13 +18,13 @@ subroutine GTeh_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY,XmY,rhoL,rhoR) ! Output variables - double precision,intent(out) :: rhoL(nBas,nBas,nS,2) - double precision,intent(out) :: rhoR(nBas,nBas,nS,2) + double precision,intent(out) :: rhoL(nBas,nBas,nS) + double precision,intent(out) :: rhoR(nBas,nBas,nS) ! Initialization - rhoL(:,:,:,:) = 0d0 - rhoR(:,:,:,:) = 0d0 + rhoL(:,:,:) = 0d0 + rhoR(:,:,:) = 0d0 allocate(X(nS,nS),Y(nS,nS)) @@ -50,13 +50,13 @@ subroutine GTeh_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY,XmY,rhoL,rhoR) jb = jb + 1 do m=1,nS - rhoL(p,q,m,1) = rhoL(p,q,m,1) + ERI(p,j,b,q)*X(jb,m) + ERI(p,b,j,q)*Y(jb,m) - rhoL(p,q,m,2) = rhoL(p,q,m,2) + ERI(p,j,b,q)*Y(jb,m) + ERI(p,b,j,q)*X(jb,m) + rhoL(p,q,m) = rhoL(p,q,m) + ERI(p,j,b,q)*X(jb,m) + ERI(p,b,j,q)*Y(jb,m) +! rhoL(p,q,m,2) = rhoL(p,q,m,2) + ERI(p,j,b,q)*Y(jb,m) + ERI(p,b,j,q)*X(jb,m) - rhoR(p,q,m,1) = rhoR(p,q,m,1) & + rhoR(p,q,m) = rhoR(p,q,m) & + (2d0*ERI(p,j,b,q) - ERI(p,j,q,b))*X(jb,m) + (2d0*ERI(p,b,j,q) - ERI(p,b,q,j))*Y(jb,m) - rhoR(p,q,m,2) = rhoR(p,q,m,2) & - + (2d0*ERI(p,j,b,q) - ERI(p,j,q,b))*Y(jb,m) + (2d0*ERI(p,b,j,q) - ERI(p,b,q,j))*X(jb,m) +! rhoR(p,q,m,2) = rhoR(p,q,m,2) & +! + (2d0*ERI(p,j,b,q) - ERI(p,j,q,b))*Y(jb,m) + (2d0*ERI(p,b,j,q) - ERI(p,b,q,j))*X(jb,m) enddo enddo diff --git a/src/GT/GTeh_regularization.f90 b/src/GT/GTeh_regularization.f90 index b651609..5e3f7e3 100644 --- a/src/GT/GTeh_regularization.f90 +++ b/src/GT/GTeh_regularization.f90 @@ -1,4 +1,4 @@ -subroutine GTeh_regularization(nBas,nC,nO,nR,nS,e,Om,rhoL,rhoR) +subroutine GTeh_regularization(nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR) ! Regularize GTeh excitation densities via SRG @@ -9,6 +9,7 @@ subroutine GTeh_regularization(nBas,nC,nO,nR,nS,e,Om,rhoL,rhoR) integer,intent(in) :: nBas integer,intent(in) :: nC integer,intent(in) :: nO + integer,intent(in) :: nV integer,intent(in) :: nR integer,intent(in) :: nS integer,intent(in) :: e(nBas) @@ -37,14 +38,14 @@ subroutine GTeh_regularization(nBas,nC,nO,nR,nS,e,Om,rhoL,rhoR) do i=nC+1,nO Dpim = e(p) - e(i) + Om(m) - kappa = exp(-Dpim*Dpim*s) + kappa = 1d0 - exp(-Dpim*Dpim*s) rhoL(i,p,m) = kappa*rhoL(i,p,m) rhoR(i,p,m) = kappa*rhoR(i,p,m) enddo do a=nO+1,nBas-nR Dpam = e(p) - e(a) - Om(m) - kappa = exp(-Dpam*Dpam*s) + kappa = 1d0 - exp(-Dpam*Dpam*s) rhoL(p,a,m) = kappa*rhoL(p,a,m) rhoR(p,a,m) = kappa*rhoR(p,a,m) enddo diff --git a/src/GT/GTeh_self_energy_diag.f90 b/src/GT/GTeh_self_energy_diag.f90 index 6f3b913..1fcb612 100644 --- a/src/GT/GTeh_self_energy_diag.f90 +++ b/src/GT/GTeh_self_energy_diag.f90 @@ -16,8 +16,8 @@ subroutine GTeh_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR,EcGM,Sig integer,intent(in) :: nS double precision,intent(in) :: e(nBas) double precision,intent(in) :: Om(nS) - double precision,intent(in) :: rhoL(nBas,nBas,nS,2) - double precision,intent(in) :: rhoR(nBas,nBas,nS,2) + double precision,intent(in) :: rhoL(nBas,nBas,nS) + double precision,intent(in) :: rhoR(nBas,nBas,nS) ! Local variables @@ -46,7 +46,7 @@ subroutine GTeh_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR,EcGM,Sig do m=1,nS eps = e(p) - e(i) + Om(m) - num = rhoL(i,p,m,1)*rhoR(i,p,m,1) + num = rhoL(i,p,m)*rhoR(i,p,m) Sig(p) = Sig(p) + num*eps/(eps**2 + eta**2) Z(p) = Z(p) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2 @@ -61,7 +61,7 @@ subroutine GTeh_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR,EcGM,Sig do m=1,nS eps = e(p) - e(a) - Om(m) - num = rhoL(p,a,m,1)*rhoR(p,a,m,1) + num = rhoL(p,a,m)*rhoR(p,a,m) Sig(p) = Sig(p) + num*eps/(eps**2 + eta**2) Z(p) = Z(p) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2 diff --git a/src/GT/GTpp_regularization.f90 b/src/GT/GTpp_regularization.f90 index c4ab89b..15fefd2 100644 --- a/src/GT/GTpp_regularization.f90 +++ b/src/GT/GTpp_regularization.f90 @@ -1,4 +1,4 @@ -subroutine GTpp_regularization(nBas,nC,nO,nR,nOO,nVV,e,Om1,rho1,Om2,rho2) +subroutine GTpp_regularization(nBas,nC,nO,nV,nR,nOO,nVV,e,Om1,rho1,Om2,rho2) ! Regularize GTpp excitation densities via SRG @@ -9,6 +9,7 @@ subroutine GTpp_regularization(nBas,nC,nO,nR,nOO,nVV,e,Om1,rho1,Om2,rho2) integer,intent(in) :: nBas integer,intent(in) :: nC integer,intent(in) :: nO + integer,intent(in) :: nV integer,intent(in) :: nR integer,intent(in) :: nOO integer,intent(in) :: nVV diff --git a/src/GT/evGTeh.f90 b/src/GT/evGTeh.f90 index 4e5e582..c35cf62 100644 --- a/src/GT/evGTeh.f90 +++ b/src/GT/evGTeh.f90 @@ -130,7 +130,7 @@ subroutine evGTeh(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,dophBSE,d ! Compute correlation part of the self-energy - if(regularize) call GTeh_regularization(eta,nBas,nC,nO,nV,nR,nS,eGT,Om,rhoL,rhoR) + if(regularize) call GTeh_regularization(nBas,nC,nO,nV,nR,nS,eGT,Om,rhoL,rhoR) call GTeh_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,eGT,Om,rhoL,rhoR,EcGM,Sig,Z) diff --git a/src/GT/print_G0T0eh.f90 b/src/GT/print_G0T0eh.f90 index 238cd41..7424f34 100644 --- a/src/GT/print_G0T0eh.f90 +++ b/src/GT/print_G0T0eh.f90 @@ -30,7 +30,7 @@ subroutine print_G0T0eh(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM) write(*,*)' One-shot G0T0eh calculation' write(*,*)'-------------------------------------------------------------------------------' write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') & - '|','#','|','e_HF (eV)','|','Sig_c (eV)','|','Z','|','e_QP (eV)','|' + '|','#','|','e_HF (eV)','|','Sig_GTeh (eV)','|','Z','|','e_GTeh (eV)','|' write(*,*)'-------------------------------------------------------------------------------' do p=1,nBas @@ -39,14 +39,14 @@ subroutine print_G0T0eh(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM) enddo write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'G0T0eh HOMO energy:',eGT(HOMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'G0T0eh LUMO energy:',eGT(LUMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'G0T0eh HOMO-LUMO gap :',Gap*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'G0T0eh HOMO energy:',eGT(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'G0T0eh LUMO energy:',eGT(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'G0T0eh HOMO-LUMO gap :',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'RPA@G0T0eh total energy :',ENuc + ERHF + EcRPA,' au' - write(*,'(2X,A30,F15.6,A3)') 'RPA@G0T0eh correlation energy:',EcRPA,' au' - write(*,'(2X,A30,F15.6,A3)') 'GM@G0T0eh total energy :',ENuc + ERHF + EcGM,' au' - write(*,'(2X,A30,F15.6,A3)') 'GM@G0T0eh correlation energy:',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0T0eh total energy :',ENuc + ERHF + EcRPA,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0T0eh correlation energy:',EcRPA,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0eh total energy :',ENuc + ERHF + EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0eh correlation energy:',EcGM,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) diff --git a/src/GT/print_G0T0pp.f90 b/src/GT/print_G0T0pp.f90 index eb625a5..2cc1ec2 100644 --- a/src/GT/print_G0T0pp.f90 +++ b/src/GT/print_G0T0pp.f90 @@ -36,10 +36,10 @@ subroutine print_G0T0pp(nBas,nO,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA) ! Dump results write(*,*)'-------------------------------------------------------------------------------' - write(*,*)' One-shot G0T0 calculation (T-matrix self-energy) ' + write(*,*)' One-shot G0T0pp calculation ' write(*,*)'-------------------------------------------------------------------------------' write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') & - '|','#','|','e_HF (eV)','|','Sigma_T (eV)','|','Z','|','e_QP (eV)','|' + '|','#','|','e_HF (eV)','|','Sig_GTpp (eV)','|','Z','|','e_GTpp (eV)','|' write(*,*)'-------------------------------------------------------------------------------' do p=1,nBas @@ -48,16 +48,16 @@ subroutine print_G0T0pp(nBas,nO,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA) enddo write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A50,F15.6,A3)') 'G0T0 HOMO energy (eV) =',eGT(HOMO)*HaToeV,' eV' - write(*,'(2X,A50,F15.6,A3)') 'G0T0 LUMO energy (eV) =',eGT(LUMO)*HaToeV,' eV' - write(*,'(2X,A50,F15.6,A3)') 'G0T0 HOMO-LUMO gap (eV) =',Gap*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'G0T0pp HOMO energy (eV) =',eGT(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'G0T0pp LUMO energy (eV) =',eGT(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'G0T0pp HOMO-LUMO gap (eV) =',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 correlation energy (singlet) =',EcRPA(1),' au' - write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 correlation energy (triplet) =',EcRPA(2),' au' - write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 correlation energy =',EcRPA(1) + EcRPA(2),' au' - write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2),' au' - write(*,'(2X,A50,F20.10,A3)') ' GM@G0T0 correlation energy =',EcGM,' au' - write(*,'(2X,A50,F20.10,A3)') ' GM@G0T0 total energy =',ENuc + ERHF + EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp correlation energy (singlet) =',EcRPA(1),' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp correlation energy (triplet) =',EcRPA(2),' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp correlation energy =',EcRPA(1) + EcRPA(2),' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2),' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0pp correlation energy =',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0pp total energy =',ENuc + ERHF + EcGM,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) diff --git a/src/GT/print_evGTeh.f90 b/src/GT/print_evGTeh.f90 index 0107962..77c1655 100644 --- a/src/GT/print_evGTeh.f90 +++ b/src/GT/print_evGTeh.f90 @@ -35,7 +35,7 @@ subroutine print_evGTeh(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM) endif write(*,*)'-------------------------------------------------------------------------------' write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') & - '|','#','|','e_HF (eV)','|','Sigma_c (eV)','|','Z','|','e_QP (eV)','|' + '|','#','|','e_HF (eV)','|','Sig_GTeh (eV)','|','Z','|','e_GTeh (eV)','|' write(*,*)'-------------------------------------------------------------------------------' do p=1,nBas @@ -47,14 +47,14 @@ subroutine print_evGTeh(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM) write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'evGTeh HOMO energy:',eGT(HOMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'evGTeh LUMO energy:',eGT(LUMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'evGTeh HOMO-LUMO gap :',Gap*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evGTeh HOMO energy =',eGT(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evGTeh LUMO energy =',eGT(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evGTeh HOMO-LUMO gap =',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'RPA@evGTeh total energy :',ENuc + ERHF + EcRPA,' au' - write(*,'(2X,A30,F15.6,A3)') 'RPA@evGTeh correlation energy:',EcRPA,' au' - write(*,'(2X,A30,F15.6,A3)') 'GM@evGTeh total energy :',ENuc + ERHF + EcGM,' au' - write(*,'(2X,A30,F15.6,A3)') 'GM@evGTeh correlation energy:',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGTeh total energy =',ENuc + ERHF + EcRPA,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGTeh correlation energy =',EcRPA,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@evGTeh total energy =',ENuc + ERHF + EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@evGTeh correlation energy =',EcGM,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) diff --git a/src/GT/print_evGTpp.f90 b/src/GT/print_evGTpp.f90 index 579ed89..c026beb 100644 --- a/src/GT/print_evGTpp.f90 +++ b/src/GT/print_evGTpp.f90 @@ -18,7 +18,7 @@ subroutine print_evGTpp(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA) double precision,intent(in) :: Z(nBas) double precision,intent(in) :: eGT(nBas) - integer :: x,HOMO,LUMO + integer :: p,HOMO,LUMO double precision :: Gap ! HOMO and LUMO @@ -31,34 +31,34 @@ subroutine print_evGTpp(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA) write(*,*)'-------------------------------------------------------------------------------' if(nSCF < 10) then - write(*,'(1X,A21,I1,A1,I1,A12)')' Self-consistent evG',nSCF,'T',nSCF,' calculation' + write(*,'(1X,A21,I1,A3,I1,A12)')' Self-consistent evG',nSCF,'Tpp',nSCF,' calculation' else - write(*,'(1X,A21,I2,A1,I2,A12)')' Self-consistent evG',nSCF,'T',nSCF,' calculation' + write(*,'(1X,A21,I2,A3,I2,A12)')' Self-consistent evG',nSCF,'Tpp',nSCF,' calculation' endif write(*,*)'-------------------------------------------------------------------------------' write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') & - '|','#','|','e_HF (eV)','|','Sigma_T (eV)','|','Z','|','e_QP (eV)','|' + '|','#','|','e_HF (eV)','|','Sig_GTpp (eV)','|','Z','|','e_GTpp (eV)','|' write(*,*)'-------------------------------------------------------------------------------' - do x=1,nBas + do p=1,nBas write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') & - '|',x,'|',eHF(x)*HaToeV,'|',SigT(x)*HaToeV,'|',Z(x),'|',eGT(x)*HaToeV,'|' + '|',p,'|',eHF(p)*HaToeV,'|',SigT(p)*HaToeV,'|',Z(p),'|',eGT(p)*HaToeV,'|' enddo write(*,*)'-------------------------------------------------------------------------------' write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6)') 'evGT HOMO energy (eV):',eGT(HOMO)*HaToeV - write(*,'(2X,A30,F15.6)') 'evGT LUMO energy (eV):',eGT(LUMO)*HaToeV - write(*,'(2X,A30,F15.6)') 'evGT HOMO-LUMO gap (eV):',Gap*HaToeV + write(*,'(2X,A60,F15.6,A3)') 'evGTpp HOMO energy =',eGT(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evGTpp LUMO energy =',eGT(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evGTpp HOMO-LUMO gap =',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 correlation energy (singlet) =',EcRPA(1),' au' - write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 correlation energy (triplet) =',EcRPA(2),' au' - write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 correlation energy =',EcRPA(1) + EcRPA(2),' au' - write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2),' au' - write(*,'(2X,A50,F20.10,A3)') ' GM@G0T0 correlation energy =',EcGM,' au' - write(*,'(2X,A50,F20.10,A3)') ' GM@G0T0 total energy =',ENuc + ERHF + EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp correlation energy (singlet) =',EcRPA(1),' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp correlation energy (triplet) =',EcRPA(2),' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp correlation energy =',EcRPA(1) + EcRPA(2),' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2),' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@evGTpp correlation energy =',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@evGTpp total energy =',ENuc + ERHF + EcGM,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) diff --git a/src/GT/print_qsGTeh.f90 b/src/GT/print_qsGTeh.f90 index 1bdf0b7..c94dde7 100644 --- a/src/GT/print_qsGTeh.f90 +++ b/src/GT/print_qsGTeh.f90 @@ -54,7 +54,7 @@ subroutine print_qsGTeh(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, endif write(*,*)'-------------------------------------------------------------------------------' write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') & - '|','#','|','e_HF (eV)','|','Sig_T (eV)','|','Z','|','e_QP (eV)','|' + '|','#','|','e_HF (eV)','|','Sig_GTeh (eV)','|','Z','|','e_GTeh (eV)','|' write(*,*)'-------------------------------------------------------------------------------' do p=1,nBas @@ -65,16 +65,16 @@ subroutine print_qsGTeh(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, write(*,*)'-------------------------------------------------------------------------------' write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv - write(*,*)'-------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'qsGTeh HOMO energy:',eGT(HOMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'qsGTeh LUMO energy:',eGT(LUMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'qsGTeh HOMO-LUMO gap :',Gap*HaToeV,' eV' - write(*,*)'-------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') ' qsGTeh total energy:',ENuc + EqsGT,' au' - write(*,'(2X,A30,F15.6,A3)') ' qsGTeh exchange energy:',Ex,' au' - write(*,'(2X,A30,F15.6,A3)') ' GM@qsGTeh correlation energy:',EcGM,' au' - write(*,'(2X,A30,F15.6,A3)') 'ppRPA@qsGTeh correlation energy:',sum(EcRPA(:)),' au' - write(*,*)'-------------------------------------------' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') 'qsGTeh HOMO energy =',eGT(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsGTeh LUMO energy =',eGT(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsGTeh HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') ' qsGTeh total energy =',ENuc + EqsGT,' au' + write(*,'(2X,A60,F15.6,A3)') ' qsGTeh exchange energy =',Ex,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@qsGTeh correlation energy =',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@qsGTeh correlation energy =',sum(EcRPA(:)),' au' + write(*,*)'-------------------------------------------------------------------------------' write(*,*) ! Dump results for final iteration diff --git a/src/GT/print_qsGTpp.f90 b/src/GT/print_qsGTpp.f90 index 949f009..91d58ef 100644 --- a/src/GT/print_qsGTpp.f90 +++ b/src/GT/print_qsGTpp.f90 @@ -28,7 +28,7 @@ subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, ! Local variables - integer :: x,ixyz,HOMO,LUMO + integer :: p,ixyz,HOMO,LUMO double precision :: Gap double precision,external :: trace_matrix @@ -48,33 +48,33 @@ subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, write(*,*)'-------------------------------------------------------------------------------' if(nSCF < 10) then - write(*,'(1X,A21,I1,A1,I1,A12)')' Self-consistent qsG',nSCF,'T',nSCF,' calculation' + write(*,'(1X,A21,I1,A3,I1,A12)')' Self-consistent qsG',nSCF,'Tpp',nSCF,' calculation' else - write(*,'(1X,A21,I2,A1,I2,A12)')' Self-consistent qsG',nSCF,'T',nSCF,' calculation' + write(*,'(1X,A21,I2,A3,I2,A12)')' Self-consistent qsG',nSCF,'Tpp',nSCF,' calculation' endif write(*,*)'-------------------------------------------------------------------------------' write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') & - '|','#','|','e_HF (eV)','|','Sig_T (eV)','|','Z','|','e_QP (eV)','|' + '|','#','|','e_HF (eV)','|','Sig_GTpp (eV)','|','Z','|','e_GTpp (eV)','|' write(*,*)'-------------------------------------------------------------------------------' - do x=1,nBas + do p=1,nBas write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') & - '|',x,'|',eHF(x)*HaToeV,'|',SigC(x,x)*HaToeV,'|',Z(x),'|',eGT(x)*HaToeV,'|' + '|',p,'|',eHF(p)*HaToeV,'|',SigC(p,p)*HaToeV,'|',Z(p),'|',eGT(p)*HaToeV,'|' enddo write(*,*)'-------------------------------------------------------------------------------' write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv - write(*,*)'-------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'qsGT HOMO energy:',eGT(HOMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'qsGT LUMO energy:',eGT(LUMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'qsGT HOMO-LUMO gap :',Gap*HaToeV,' eV' - write(*,*)'-------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') ' qsGT total energy:',ENuc + EqsGT,' au' - write(*,'(2X,A30,F15.6,A3)') ' qsGT exchange energy:',Ex,' au' - write(*,'(2X,A30,F15.6,A3)') ' GM@qsGT correlation energy:',EcGM,' au' - write(*,'(2X,A30,F15.6,A3)') 'ppRPA@qsGT correlation energy:',sum(EcRPA(:)),' au' - write(*,*)'-------------------------------------------' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') 'qsGTpp HOMO energy =',eGT(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsGTpp LUMO energy =',eGT(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsGTpp HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') ' qsGTpp total energy =',ENuc + EqsGT,' au' + write(*,'(2X,A60,F15.6,A3)') ' qsGTpp exchange energy =',Ex,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@qsGTpp correlation energy =',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@qsGTpp correlation energy =',sum(EcRPA(:)),' au' + write(*,*)'-------------------------------------------------------------------------------' write(*,*) ! Dump results for final iteration @@ -96,7 +96,7 @@ subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, write(*,'(A50)') '---------------------------------------' write(*,'(A32,1X,F16.10,A3)') ' Electronic energy: ',EqsGT,' au' write(*,'(A32,1X,F16.10,A3)') ' Nuclear repulsion: ',ENuc,' au' - write(*,'(A32,1X,F16.10,A3)') ' qsGT energy: ',ENuc + EqsGT,' au' + write(*,'(A32,1X,F16.10,A3)') ' qsGTpp energy: ',ENuc + EqsGT,' au' write(*,'(A50)') '---------------------------------------' write(*,'(A35)') ' Dipole moment (Debye) ' write(*,'(10X,4A10)') 'X','Y','Z','Tot.' @@ -105,12 +105,12 @@ subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, write(*,*) write(*,'(A50)') '---------------------------------------' - write(*,'(A32)') ' qsGT MO coefficients' + write(*,'(A32)') ' qsGTpp MO coefficients' write(*,'(A50)') '---------------------------------------' call matout(nBas,nBas,c) write(*,*) write(*,'(A50)') '---------------------------------------' - write(*,'(A32)') ' qsGT MO energies' + write(*,'(A32)') ' qsGTpp MO energies' write(*,'(A50)') '---------------------------------------' call matout(nBas,1,eGT) write(*,*) diff --git a/src/GT/qsGTeh.f90 b/src/GT/qsGTeh.f90 index d299884..30b9d6d 100644 --- a/src/GT/qsGTeh.f90 +++ b/src/GT/qsGTeh.f90 @@ -183,7 +183,7 @@ subroutine qsGTeh(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,BSE,BSE2, call GTeh_excitation_density(nBas,nC,nO,nR,nS,ERI_MO,XpY,XmY,rhoL,rhoR) - if(regularize) call GTeh_regularization(eta,nBas,nC,nO,nV,nR,nS,eGT,Om,rhoL,rhoR) + if(regularize) call GTeh_regularization(nBas,nC,nO,nV,nR,nS,eGT,Om,rhoL,rhoR) call GTeh_self_energy(eta,nBas,nC,nO,nV,nR,nS,eGT,Om,rhoL,rhoR,EcGM,Sig,Z) diff --git a/src/GW/G0W0.f90 b/src/GW/G0W0.f90 index 8d29306..cb5917f 100644 --- a/src/GW/G0W0.f90 +++ b/src/GW/G0W0.f90 @@ -114,7 +114,7 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_W,TDA,dBSE,dT ! Compute GW self-energy ! !------------------------! - if(regularize) call GW_regularization(nBas,nC,nO,nR,nS,eHF,Om,rho) + if(regularize) call GW_regularization(nBas,nC,nO,nV,nR,nS,eHF,Om,rho) call GW_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,eHF,Om,rho,EcGM,SigC,Z) diff --git a/src/GW/GW_regularization.f90 b/src/GW/GW_regularization.f90 index cff3ad9..6e33c60 100644 --- a/src/GW/GW_regularization.f90 +++ b/src/GW/GW_regularization.f90 @@ -1,4 +1,4 @@ -subroutine GW_regularization(nBas,nC,nO,nR,nS,e,Om,rho) +subroutine GW_regularization(nBas,nC,nO,nV,nR,nS,e,Om,rho) ! Regularize GW excitation densities via SRG @@ -9,6 +9,7 @@ subroutine GW_regularization(nBas,nC,nO,nR,nS,e,Om,rho) integer,intent(in) :: nBas integer,intent(in) :: nC integer,intent(in) :: nO + integer,intent(in) :: nV integer,intent(in) :: nR integer,intent(in) :: nS integer,intent(in) :: e(nBas) @@ -36,13 +37,13 @@ subroutine GW_regularization(nBas,nC,nO,nR,nS,e,Om,rho) do i=nC+1,nO Dpim = e(p) - e(i) + Om(m) - kappa = exp(-Dpim*Dpim*s) + kappa = 1d0 - exp(-Dpim*Dpim*s) rho(p,i,m) = kappa*rho(p,i,m) enddo do a=nO+1,nBas-nR Dpam = e(p) - e(a) - Om(m) - kappa = exp(-Dpam*Dpam*s) + kappa = 1d0 - exp(-Dpam*Dpam*s) rho(p,a,m) = kappa*rho(p,a,m) enddo diff --git a/src/GW/evGW.f90 b/src/GW/evGW.f90 index b409ec8..641680d 100644 --- a/src/GW/evGW.f90 +++ b/src/GW/evGW.f90 @@ -129,7 +129,7 @@ subroutine evGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,dophBSE,dop ! Compute correlation part of the self-energy - if(regularize) call GW_regularization(nBas,nC,nO,nR,nS,eGW,Om,rho) + if(regularize) call GW_regularization(nBas,nC,nO,nV,nR,nS,eGW,Om,rho) call GW_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,eGW,Om,rho,EcGM,SigC,Z) diff --git a/src/GW/print_G0W0.f90 b/src/GW/print_G0W0.f90 index 9b73a46..7be7551 100644 --- a/src/GW/print_G0W0.f90 +++ b/src/GW/print_G0W0.f90 @@ -30,7 +30,7 @@ subroutine print_G0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM) write(*,*)' One-shot G0W0 calculation' write(*,*)'-------------------------------------------------------------------------------' write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') & - '|','#','|','e_HF (eV)','|','Sig_c (eV)','|','Z','|','e_QP (eV)','|' + '|','#','|','e_HF (eV)','|','Sig_GW (eV)','|','Z','|','e_GW (eV)','|' write(*,*)'-------------------------------------------------------------------------------' do p=1,nBas @@ -39,14 +39,14 @@ subroutine print_G0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM) enddo write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'G0W0 HOMO energy:',eGW(HOMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'G0W0 LUMO energy:',eGW(LUMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'G0W0 HOMO-LUMO gap :',Gap*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'G0W0 HOMO energy =',eGW(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'G0W0 LUMO energy =',eGW(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'G0W0 HOMO-LUMO gap =',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'RPA@G0W0 total energy :',ENuc + ERHF + EcRPA,' au' - write(*,'(2X,A30,F15.6,A3)') 'RPA@G0W0 correlation energy:',EcRPA,' au' - write(*,'(2X,A30,F15.6,A3)') 'GM@G0W0 total energy :',ENuc + ERHF + EcGM,' au' - write(*,'(2X,A30,F15.6,A3)') 'GM@G0W0 correlation energy:',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0W0 total energy =',ENuc + ERHF + EcRPA,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0W0 correlation energy =',EcRPA,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@G0W0 total energy =',ENuc + ERHF + EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@G0W0 correlation energy =',EcGM,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) diff --git a/src/GW/print_UG0W0.f90 b/src/GW/print_UG0W0.f90 index 9a3aa52..abcb592 100644 --- a/src/GW/print_UG0W0.f90 +++ b/src/GW/print_UG0W0.f90 @@ -58,15 +58,15 @@ subroutine print_UG0W0(nBas,nO,eHF,ENuc,EUHF,SigC,Z,eGW,EcRPA,EcGM) write(*,*)'-------------------------------------------------------------------------------& -------------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'UG0W0 HOMO energy:',maxval(HOMO(:))*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'UG0W0 LUMO energy:',minval(LUMO(:))*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'UG0W0 HOMO-LUMO gap :',(minval(LUMO(:))-maxval(HOMO(:)))*HaToeV,' eV' + write(*,'(2X,A50,F15.6,A3)') 'UG0W0 HOMO energy:',maxval(HOMO(:))*HaToeV,' eV' + write(*,'(2X,A50,F15.6,A3)') 'UG0W0 LUMO energy:',minval(LUMO(:))*HaToeV,' eV' + write(*,'(2X,A50,F15.6,A3)') 'UG0W0 HOMO-LUMO gap :',(minval(LUMO(:))-maxval(HOMO(:)))*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------& -------------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'RPA@UG0W0 total energy :',ENuc + EUHF + EcRPA,' au' - write(*,'(2X,A30,F15.6,A3)') 'RPA@UG0W0 correlation energy:',EcRPA,' au' - write(*,'(2X,A30,F15.6,A3)') ' GM@UG0W0 total energy :',ENuc + EUHF + sum(EcGM(:)),' au' - write(*,'(2X,A30,F15.6,A3)') ' GM@UG0W0 correlation energy:',sum(EcGM(:)),' au' + write(*,'(2X,A50,F15.6,A3)') 'phRPA@UG0W0 total energy :',ENuc + EUHF + EcRPA,' au' + write(*,'(2X,A50,F15.6,A3)') 'phRPA@UG0W0 correlation energy:',EcRPA,' au' + write(*,'(2X,A50,F15.6,A3)') ' GM@UG0W0 total energy :',ENuc + EUHF + sum(EcGM(:)),' au' + write(*,'(2X,A50,F15.6,A3)') ' GM@UG0W0 correlation energy:',sum(EcGM(:)),' au' write(*,*)'-------------------------------------------------------------------------------& -------------------------------------------------' write(*,*) diff --git a/src/GW/print_evGW.f90 b/src/GW/print_evGW.f90 index 7b59667..1b178a2 100644 --- a/src/GW/print_evGW.f90 +++ b/src/GW/print_evGW.f90 @@ -35,7 +35,7 @@ subroutine print_evGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM) endif write(*,*)'-------------------------------------------------------------------------------' write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') & - '|','#','|','e_HF (eV)','|','Sigma_c (eV)','|','Z','|','e_QP (eV)','|' + '|','#','|','e_HF (eV)','|','Sig_GW (eV)','|','Z','|','e_GW (eV)','|' write(*,*)'-------------------------------------------------------------------------------' do p=1,nBas @@ -47,14 +47,14 @@ subroutine print_evGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM) write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'evGW HOMO energy:',eGW(HOMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'evGW LUMO energy:',eGW(LUMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'evGW HOMO-LUMO gap :',Gap*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evGW HOMO energy =',eGW(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evGW LUMO energy =',eGW(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evGW HOMO-LUMO gap =',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'RPA@evGW total energy :',ENuc + ERHF + EcRPA,' au' - write(*,'(2X,A30,F15.6,A3)') 'RPA@evGW correlation energy:',EcRPA,' au' - write(*,'(2X,A30,F15.6,A3)') 'GM@evGW total energy :',ENuc + ERHF + EcGM,' au' - write(*,'(2X,A30,F15.6,A3)') 'GM@evGW correlation energy:',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGW total energy =',ENuc + ERHF + EcRPA,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGW correlation energy =',EcRPA,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@evGW total energy =',ENuc + ERHF + EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@evGW correlation energy =',EcGM,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) diff --git a/src/GW/print_qsGW.f90 b/src/GW/print_qsGW.f90 index 9baedef..d9d32a5 100644 --- a/src/GW/print_qsGW.f90 +++ b/src/GW/print_qsGW.f90 @@ -28,7 +28,7 @@ subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,Ex ! Local variables - integer :: x,ixyz,HOMO,LUMO + integer :: p,ixyz,HOMO,LUMO double precision :: Gap double precision,external :: trace_matrix @@ -54,27 +54,27 @@ subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,Ex endif write(*,*)'-------------------------------------------------------------------------------' write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') & - '|','#','|','e_HF (eV)','|','Sig_c (eV)','|','Z','|','e_QP (eV)','|' + '|','#','|','e_HF (eV)','|','Sig_GW (eV)','|','Z','|','e_GW (eV)','|' write(*,*)'-------------------------------------------------------------------------------' - do x=1,nBas + do p=1,nBas write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') & - '|',x,'|',eHF(x)*HaToeV,'|',SigC(x,x)*HaToeV,'|',Z(x),'|',eGW(x)*HaToeV,'|' + '|',p,'|',eHF(p)*HaToeV,'|',SigC(p,p)*HaToeV,'|',Z(p),'|',eGW(p)*HaToeV,'|' enddo write(*,*)'-------------------------------------------------------------------------------' write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv - write(*,*)'-------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') 'qsGW HOMO energy:',eGW(HOMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'qsGW LUMO energy:',eGW(LUMO)*HaToeV,' eV' - write(*,'(2X,A30,F15.6,A3)') 'qsGW HOMO-LUMO gap :',Gap*HaToeV,' eV' - write(*,*)'-------------------------------------------' - write(*,'(2X,A30,F15.6,A3)') ' qsGW total energy:',ENuc + EqsGW,' au' - write(*,'(2X,A30,F15.6,A3)') ' qsGW exchange energy:',Ex,' au' - write(*,'(2X,A30,F15.6,A3)') ' GM@qsGW correlation energy:',EcGM,' au' - write(*,'(2X,A30,F15.6,A3)') 'RPA@qsGW correlation energy:',EcRPA,' au' - write(*,*)'-------------------------------------------' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') 'qsGW HOMO energy =',eGW(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsGW LUMO energy =',eGW(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsGW HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') ' qsGW total energy =',ENuc + EqsGW,' au' + write(*,'(2X,A60,F15.6,A3)') ' qsGW exchange energy =',Ex,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@qsGW correlation energy =',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@qsGW correlation energy =',EcRPA,' au' + write(*,*)'-------------------------------------------------------------------------------' write(*,*) ! Dump results for final iteration diff --git a/src/GW/qsGW.f90 b/src/GW/qsGW.f90 index 9729bb7..37c60d8 100644 --- a/src/GW/qsGW.f90 +++ b/src/GW/qsGW.f90 @@ -182,7 +182,7 @@ subroutine qsGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,dophBSE,dop call GW_excitation_density(nBas,nC,nO,nR,nS,ERI_MO,XpY,rho) - if(regularize) call GW_regularization(nBas,nC,nO,nR,nS,eGW,Om,rho) + if(regularize) call GW_regularization(nBas,nC,nO,nV,nR,nS,eGW,Om,rho) call GW_self_energy(eta,nBas,nC,nO,nV,nR,nS,eGW,Om,rho,EcGM,SigC,Z) diff --git a/src/QuAcK/QuAcK.f90 b/src/QuAcK/QuAcK.f90 index 9015145..097010a 100644 --- a/src/QuAcK/QuAcK.f90 +++ b/src/QuAcK/QuAcK.f90 @@ -69,7 +69,7 @@ program QuAcK double precision :: thresh_HF,level_shift logical :: DIIS_HF,guess_type,ortho_type,mix - logical :: regMP + logical :: reg_MP integer :: maxSCF_CC,max_diis_CC double precision :: thresh_CC @@ -81,19 +81,19 @@ program QuAcK logical :: spin_flip logical :: TDA - integer :: maxSCF_GF,max_diis_GF,renormGF + integer :: maxSCF_GF,max_diis_GF,renorm_GF double precision :: thresh_GF - logical :: DIIS_GF,linGF,regGF + logical :: DIIS_GF,lin_GF,reg_GF double precision :: eta_GF integer :: maxSCF_GW,max_diis_GW double precision :: thresh_GW - logical :: DIIS_GW,TDA_W,linGW,regGW + logical :: DIIS_GW,TDA_W,lin_GW,reg_GW double precision :: eta_GW integer :: maxSCF_GT,max_diis_GT double precision :: thresh_GT - logical :: DIIS_GT,TDA_T,linGT,regGT + logical :: DIIS_GT,TDA_T,lin_GT,reg_GT double precision :: eta_GT logical :: dophBSE,dophBSE2,doppBSE,dBSE,dTDA @@ -141,13 +141,13 @@ program QuAcK !--------------------------! call read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho_type,mix,level_shift,dostab, & - regMP, & + reg_MP, & maxSCF_CC,thresh_CC,DIIS_CC,max_diis_CC, & - TDA,singlet,triplet,spin_conserved,spin_flip, & - maxSCF_GF,thresh_GF,DIIS_GF,max_diis_GF,linGF,eta_GF,renormGF,regGF, & - maxSCF_GW,thresh_GW,DIIS_GW,max_diis_GW,linGW,eta_GW,regGW,TDA_W, & - maxSCF_GT,thresh_GT,DIIS_GT,max_diis_GT,linGT,eta_GT,regGT,TDA_T, & - doACFDT,exchange_kernel,doXBS, & + TDA,singlet,triplet,spin_conserved,spin_flip, & + maxSCF_GF,thresh_GF,DIIS_GF,max_diis_GF,lin_GF,eta_GF,renorm_GF,reg_GF, & + maxSCF_GW,thresh_GW,DIIS_GW,max_diis_GW,lin_GW,eta_GW,reg_GW,TDA_W, & + maxSCF_GT,thresh_GT,DIIS_GT,max_diis_GT,lin_GT,eta_GT,reg_GT,TDA_T, & + doACFDT,exchange_kernel,doXBS, & dophBSE,dophBSE2,doppBSE,dBSE,dTDA) !------------------------------------------------! @@ -344,7 +344,7 @@ program QuAcK if(doMP) then call wall_time(start_MP) - call MP(doMP2,doMP3,unrestricted,regMP,nBas,nC,nO,nV,nR,ERI_MO,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,ENuc,EHF,epsHF) + call MP(doMP2,doMP3,unrestricted,reg_MP,nBas,nC,nO,nV,nR,ERI_MO,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,ENuc,EHF,epsHF) call wall_time(end_MP) t_MP = end_MP - start_MP @@ -423,8 +423,8 @@ program QuAcK if(doGF) then call wall_time(start_GF) - call GF(doG0F2,doevGF2,doqsGF2,doG0F3,doevGF3,unrestricted,renormGF,maxSCF_GF,thresh_GF,max_diis_GF, & - dophBSE,doppBSE,TDA,dBSE,dTDA,singlet,triplet,spin_conserved,spin_flip,linGF,eta_GF,regGF, & + call GF(doG0F2,doevGF2,doqsGF2,doG0F3,doevGF3,unrestricted,renorm_GF,maxSCF_GF,thresh_GF,max_diis_GF, & + dophBSE,doppBSE,TDA,dBSE,dTDA,singlet,triplet,spin_conserved,spin_flip,lin_GF,eta_GF,reg_GF, & nNuc,ZNuc,rNuc,ENuc,nBas,nC,nO,nV,nR,nS,EHF,S,X,T,V,Hc,ERI_AO,ERI_MO,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb, & dipole_int_AO,dipole_int_MO,dipole_int_aa,dipole_int_bb,PHF,cHF,epsHF) call wall_time(end_GF) @@ -446,7 +446,7 @@ program QuAcK call wall_time(start_GW) call GW(doG0W0,doevGW,doqsGW,doufG0W0,doufGW,doSRGqsGW,unrestricted,maxSCF_GW,thresh_GW,max_diis_GW,doACFDT, & exchange_kernel,doXBS,dophBSE,dophBSE2,doppBSE,TDA_W,TDA,dBSE,dTDA,singlet,triplet,spin_conserved,spin_flip, & - linGW,eta_GW,regGW,nNuc,ZNuc,rNuc,ENuc,nBas,nC,nO,nV,nR,nS,EHF,S,X,T,V,Hc, & + lin_GW,eta_GW,reg_GW,nNuc,ZNuc,rNuc,ENuc,nBas,nC,nO,nV,nR,nS,EHF,S,X,T,V,Hc, & ERI_AO,ERI_MO,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,dipole_int_AO,dipole_int_MO,dipole_int_aa,dipole_int_bb, & PHF,cHF,epsHF) call wall_time(end_GW) @@ -468,7 +468,7 @@ program QuAcK call wall_time(start_GT) call GT(doG0T0pp,doevGTpp,doqsGTpp,doG0T0eh,doevGTeh,doqsGTeh,unrestricted,maxSCF_GT,thresh_GT,max_diis_GT,doACFDT, & exchange_kernel,doXBS,dophBSE,dophBSE2,doppBSE,TDA_T,TDA,dBSE,dTDA,singlet,triplet,spin_conserved,spin_flip, & - linGT,eta_GT,regGT,nNuc,ZNuc,rNuc,ENuc,nBas,nC,nO,nV,nR,nS,EHF,S,X,T,V,Hc, & + lin_GT,eta_GT,reg_GT,nNuc,ZNuc,rNuc,ENuc,nBas,nC,nO,nV,nR,nS,EHF,S,X,T,V,Hc, & ERI_AO,ERI_MO,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,dipole_int_AO,dipole_int_MO,dipole_int_aa,dipole_int_bb, & PHF,cHF,epsHF) call wall_time(end_GT) diff --git a/src/QuAcK/read_options.f90 b/src/QuAcK/read_options.f90 index 54e4133..6eed93f 100644 --- a/src/QuAcK/read_options.f90 +++ b/src/QuAcK/read_options.f90 @@ -1,10 +1,10 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho_type,mix,level_shift,dostab, & - regMP, & + reg_MP, & maxSCF_CC,thresh_CC,DIIS_CC,max_diis_CC, & TDA,singlet,triplet,spin_conserved,spin_flip, & - maxSCF_GF,thresh_GF,DIIS_GF,max_diis_GF,linGF,eta_GF,renormGF,regGF, & - maxSCF_GW,thresh_GW,DIIS_GW,max_diis_GW,linGW,eta_GW,regGW,TDA_W, & - maxSCF_GT,thresh_GT,DIIS_GT,max_diis_GT,linGT,eta_GT,regGT,TDA_T, & + maxSCF_GF,thresh_GF,DIIS_GF,max_diis_GF,lin_GF,eta_GF,renorm_GF,reg_GF, & + maxSCF_GW,thresh_GW,DIIS_GW,max_diis_GW,lin_GW,eta_GW,reg_GW,TDA_W, & + maxSCF_GT,thresh_GT,DIIS_GT,max_diis_GT,lin_GT,eta_GT,reg_GT,TDA_T, & doACFDT,exchange_kernel,doXBS, & dophBSE,dophBSE2,doppBSE,dBSE,dTDA) @@ -24,7 +24,7 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho double precision,intent(out) :: level_shift logical,intent(out) :: dostab - logical,intent(out) :: regMP + logical,intent(out) :: reg_MP integer,intent(out) :: maxSCF_CC double precision,intent(out) :: thresh_CC @@ -41,28 +41,28 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho double precision,intent(out) :: thresh_GF logical,intent(out) :: DIIS_GF integer,intent(out) :: max_diis_GF - logical,intent(out) :: linGF - integer,intent(out) :: renormGF + logical,intent(out) :: lin_GF + integer,intent(out) :: renorm_GF double precision,intent(out) :: eta_GF - logical,intent(out) :: regGF + logical,intent(out) :: reg_GF integer,intent(out) :: maxSCF_GW double precision,intent(out) :: thresh_GW logical,intent(out) :: DIIS_GW integer,intent(out) :: max_diis_GW logical,intent(out) :: TDA_W - logical,intent(out) :: linGW + logical,intent(out) :: lin_GW double precision,intent(out) :: eta_GW - logical,intent(out) :: regGW + logical,intent(out) :: reg_GW integer,intent(out) :: maxSCF_GT double precision,intent(out) :: thresh_GT logical,intent(out) :: DIIS_GT integer,intent(out) :: max_diis_GT logical,intent(out) :: TDA_T - logical,intent(out) :: linGT + logical,intent(out) :: lin_GT double precision,intent(out) :: eta_GT - logical,intent(out) :: regGT + logical,intent(out) :: reg_GT logical,intent(out) :: doACFDT logical,intent(out) :: exchange_kernel @@ -105,11 +105,11 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho ! Read MPn options - regMP = .false. + reg_MP = .false. read(1,*) read(1,*) ans1 - if(ans1 == 'T') regMP = .true. + if(ans1 == 'T') reg_MP = .true. ! Read CC options @@ -144,63 +144,61 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho ! Read GF options - maxSCF_GF = 64 - thresh_GF = 1d-5 - DIIS_GF = .false. + maxSCF_GF = 64 + thresh_GF = 1d-5 + DIIS_GF = .false. max_diis_GF = 5 - linGF = .false. - eta_GF = 0d0 - renormGF = 0 - regGF = .false. + lin_GF = .false. + eta_GF = 0d0 + renorm_GF = 0 + reg_GF = .false. read(1,*) - read(1,*) maxSCF_GF,thresh_GF,ans1,max_diis_GF,ans2,eta_GF,renormGF,ans3 + read(1,*) maxSCF_GF,thresh_GF,ans1,max_diis_GF,ans2,eta_GF,renorm_GF,ans3 if(ans1 == 'T') DIIS_GF = .true. - if(ans2 == 'T') linGF = .true. - if(ans3 == 'T') regGF = .true. + if(ans2 == 'T') lin_GF = .true. + if(ans3 == 'T') reg_GF = .true. if(.not.DIIS_GF) max_diis_GF = 1 ! Read GW options - maxSCF_GW = 64 - thresh_GW = 1d-5 - DIIS_GW = .false. + maxSCF_GW = 64 + thresh_GW = 1d-5 + DIIS_GW = .false. max_diis_GW = 5 - linGW = .false. - eta_GW = 0d0 - regGW = .false. - TDA_W = .false. + lin_GW = .false. + eta_GW = 0d0 + reg_GW = .false. + TDA_W = .false. read(1,*) - read(1,*) maxSCF_GW,thresh_GW,ans1,max_diis_GW,ans2,eta_GW, & - ans3,ans4 + read(1,*) maxSCF_GW,thresh_GW,ans1,max_diis_GW,ans2,eta_GW,ans3,ans4 if(ans1 == 'T') DIIS_GW = .true. - if(ans2 == 'T') linGW = .true. + if(ans2 == 'T') lin_GW = .true. if(ans3 == 'T') TDA_W = .true. - if(ans4 == 'T') regGW = .true. + if(ans4 == 'T') reg_GW = .true. if(.not.DIIS_GW) max_diis_GW = 1 ! Read GT options - maxSCF_GT = 64 - thresh_GT = 1d-5 - DIIS_GT = .false. + maxSCF_GT = 64 + thresh_GT = 1d-5 + DIIS_GT = .false. max_diis_GT = 5 - linGT = .false. - eta_GT = 0d0 - regGT = .false. - TDA_T = .false. + lin_GT = .false. + eta_GT = 0d0 + reg_GT = .false. + TDA_T = .false. read(1,*) - read(1,*) maxSCF_GT,thresh_GT,ans1,max_diis_GT,ans2,eta_GT, & - ans3,ans4 + read(1,*) maxSCF_GT,thresh_GT,ans1,max_diis_GT,ans2,eta_GT,ans3,ans4 if(ans1 == 'T') DIIS_GT = .true. - if(ans2 == 'T') linGT = .true. + if(ans2 == 'T') lin_GT = .true. if(ans3 == 'T') TDA_T = .true. - if(ans4 == 'T') regGT = .true. + if(ans4 == 'T') reg_GT = .true. if(.not.DIIS_GT) max_diis_GT = 1 ! Options for adiabatic connection