diff --git a/input/methods b/input/methods index 4a9d502..a299867 100644 --- a/input/methods +++ b/input/methods @@ -1,5 +1,5 @@ # RHF UHF ROHF RMOM UMOM KS - F F T F F F + T F F F F F # MP2* MP3 F F # CCD pCCD DCD CCSD CCSD(T) @@ -13,7 +13,7 @@ # G0F2* evGF2* qsGF2* G0F3 evGF3 F F F F F # G0W0* evGW* qsGW* SRG-qsGW ufG0W0 ufGW - F F F F F F + T F F F F F # G0T0pp* evGTpp* qsGTpp* G0T0eh evGTeh qsGTeh - F F F F F F + T F F T F F # * unrestricted version available diff --git a/input/options b/input/options index 61db18c..ca462a8 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 F 0.0 0 F # GW: maxSCF thresh DIIS n_diis lin eta TDA_W reg - 256 0.00001 T 5 F 0.001 F F + 256 0.00001 T 5 F 0.1 F F # GT: maxSCF thresh DIIS n_diis lin eta TDA_T reg - 256 0.00001 T 5 F 0.001 F F + 256 0.00001 T 5 F 0.1 F F # ACFDT: AC Kx XBS F F T # BSE: phBSE phBSE2 ppBSE dBSE dTDA diff --git a/src/GT/G0T0eh.f90 b/src/GT/G0T0eh.f90 index 483b39c..6253a23 100644 --- a/src/GT/G0T0eh.f90 +++ b/src/GT/G0T0eh.f90 @@ -58,6 +58,7 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,TDA,dBSE, double precision,allocatable :: rhoL(:,:,:) double precision,allocatable :: rhoR(:,:,:) + double precision,allocatable :: eGTlin(:) double precision,allocatable :: eGT(:) double precision,allocatable :: KA_sta(:,:) @@ -98,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),rhoR(nBas,nBas,nS),eGT(nBas)) + rhoL(nBas,nBas,nS),rhoR(nBas,nBas,nS),eGT(nBas),eGTlin(nBas)) !--------------------------------- ! Compute (triplet) RPA screening @@ -133,23 +134,25 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,TDA,dBSE, ! Linearized or graphical solution? + eGTlin(:) = eHF(:) + Z(:)*Sig(:) + if(linearize) then write(*,*) ' *** Quasiparticle energies obtained by linearization *** ' write(*,*) - eGT(:) = eHF(:) + Z(:)*Sig(:) + eGT(:) = eGTlin(:) else write(*,*) ' *** Quasiparticle energies obtained by root search (experimental) *** ' write(*,*) - call GTeh_QP_graph(eta,nBas,nC,nO,nV,nR,nS,eHF,Om,rhoL,rhoR,eHF,eGT,Z) + call GTeh_QP_graph(eta,nBas,nC,nO,nV,nR,nS,eHF,Om,rhoL,rhoR,eGTlin,eGT,Z) end if -! call GTeh_plot_self_energy(eta,nBas,nC,nO,nV,nR,nS,eHF,eHF,Om,rhoL,rhoR) + call GTeh_plot_self_energy(eta,nBas,nC,nO,nV,nR,nS,eHF,eHF,Om,rhoL,rhoR) ! Compute the RPA correlation energy based on the G0T0eh quasiparticle energies diff --git a/src/GT/G0T0pp.f90 b/src/GT/G0T0pp.f90 index 56a7a40..40a8bc0 100644 --- a/src/GT/G0T0pp.f90 +++ b/src/GT/G0T0pp.f90 @@ -180,12 +180,14 @@ subroutine G0T0pp(doACFDT,exchange_kernel,doXBS,dophBSE,TDA_T,TDA,dBSE,dTDA,dopp ! Solve the quasi-particle equation !---------------------------------------------- + eGTlin(:) = eHF(:) + Z(:)*Sig(:) + if(linearize) then write(*,*) ' *** Quasiparticle energies obtained by linearization *** ' write(*,*) - eGT(:) = eHF(:) + Z(:)*Sig(:) + eGT(:) = eGTlin(:) else @@ -193,12 +195,12 @@ subroutine G0T0pp(doACFDT,exchange_kernel,doXBS,dophBSE,TDA_T,TDA,dBSE,dTDA,dopp write(*,*) call GTpp_QP_graph(eta,nBas,nC,nO,nV,nR,nOOs,nVVs,nOOt,nVVt,eHF,Om1s,rho1s,Om2s,rho2s, & - Om1t,rho1t,Om2t,rho2t,eHF,eGT,Z) + Om1t,rho1t,Om2t,rho2t,eGTlin,eGT,Z) end if -! call GTpp_plot_self_energy(eta,nBas,nC,nO,nV,nR,nOOs,nVVs,nOOt,nVVt,eHF,eGT,Om1s,rho1s,Om2s,rho2s, & -! Om1t,rho1t,Om2t,rho2t) + call GTpp_plot_self_energy(eta,nBas,nC,nO,nV,nR,nOOs,nVVs,nOOt,nVVt,eHF,eGT,Om1s,rho1s,Om2s,rho2s, & + Om1t,rho1t,Om2t,rho2t) !---------------------------------------------- ! Dump results diff --git a/src/GW/G0W0.f90 b/src/GW/G0W0.f90 index 3b2ad07..6604662 100644 --- a/src/GW/G0W0.f90 +++ b/src/GW/G0W0.f90 @@ -54,6 +54,7 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_W,TDA,dBSE,dT double precision,allocatable :: XmY(:,:) double precision,allocatable :: rho(:,:,:) + double precision,allocatable :: eGWlin(:) double precision,allocatable :: eGW(:) ! Output variables @@ -91,7 +92,8 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_W,TDA,dBSE,dT ! Memory allocation - allocate(Aph(nS,nS),Bph(nS,nS),SigC(nBas),Z(nBas),Om(nS),XpY(nS,nS),XmY(nS,nS),rho(nBas,nBas,nS),eGW(nBas)) + allocate(Aph(nS,nS),Bph(nS,nS),SigC(nBas),Z(nBas),Om(nS),XpY(nS,nS),XmY(nS,nS),rho(nBas,nBas,nS), & + eGW(nBas),eGWlin(nBas)) !-------------------! ! Compute screening ! @@ -124,23 +126,25 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_W,TDA,dBSE,dT ! Linearized or graphical solution? + eGWlin(:) = eHF(:) + Z(:)*SigC(:) + if(linearize) then write(*,*) ' *** Quasiparticle energies obtained by linearization *** ' write(*,*) - eGW(:) = eHF(:) + Z(:)*SigC(:) + eGW(:) = eGWlin(:) else write(*,*) ' *** Quasiparticle energies obtained by root search (experimental) *** ' write(*,*) - call GW_QP_graph(eta,nBas,nC,nO,nV,nR,nS,eHF,Om,rho,eHF,eGW,Z) + call GW_QP_graph(eta,nBas,nC,nO,nV,nR,nS,eHF,Om,rho,eGWlin,eGW,Z) end if -! call GW_plot_self_energy(eta,nBas,nC,nO,nV,nR,nS,eHF,eHF,Om,rho) + call GW_plot_self_energy(eta,nBas,nC,nO,nV,nR,nS,eHF,eHF,Om,rho) ! Compute the RPA correlation energy @@ -165,7 +169,6 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_W,TDA,dBSE,dT call GW_phBSE(dophBSE2,TDA_W,TDA,dBSE,dTDA,singlet,triplet,eta,nBas,nC,nO,nV,nR,nS,ERI,dipole_int,eHF,eGW,EcBSE) - if(exchange_kernel) then EcBSE(1) = 0.5d0*EcBSE(1)