10
1
mirror of https://github.com/pfloos/quack synced 2024-12-22 20:34:46 +01:00

modify lin vs qp solutions

This commit is contained in:
Pierre-Francois Loos 2023-09-07 14:01:58 +02:00
parent 69f9eaac94
commit c8c95ff439
5 changed files with 26 additions and 18 deletions

View File

@ -1,5 +1,5 @@
# RHF UHF ROHF RMOM UMOM KS # RHF UHF ROHF RMOM UMOM KS
F F T F F F T F F F F F
# MP2* MP3 # MP2* MP3
F F F F
# CCD pCCD DCD CCSD CCSD(T) # CCD pCCD DCD CCSD CCSD(T)
@ -13,7 +13,7 @@
# G0F2* evGF2* qsGF2* G0F3 evGF3 # G0F2* evGF2* qsGF2* G0F3 evGF3
F F F F F F F F F F
# G0W0* evGW* qsGW* SRG-qsGW ufG0W0 ufGW # 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 # G0T0pp* evGTpp* qsGTpp* G0T0eh evGTeh qsGTeh
F F F F F F T F F T F F
# * unrestricted version available # * unrestricted version available

View File

@ -9,9 +9,9 @@
# GF: maxSCF thresh DIIS n_diis lin eta renorm reg # GF: maxSCF thresh DIIS n_diis lin eta renorm reg
256 0.00001 T 5 F 0.0 0 F 256 0.00001 T 5 F 0.0 0 F
# GW: maxSCF thresh DIIS n_diis lin eta TDA_W reg # 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 # 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 # ACFDT: AC Kx XBS
F F T F F T
# BSE: phBSE phBSE2 ppBSE dBSE dTDA # BSE: phBSE phBSE2 ppBSE dBSE dTDA

View File

@ -58,6 +58,7 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,TDA,dBSE,
double precision,allocatable :: rhoL(:,:,:) double precision,allocatable :: rhoL(:,:,:)
double precision,allocatable :: rhoR(:,:,:) double precision,allocatable :: rhoR(:,:,:)
double precision,allocatable :: eGTlin(:)
double precision,allocatable :: eGT(:) double precision,allocatable :: eGT(:)
double precision,allocatable :: KA_sta(:,:) double precision,allocatable :: KA_sta(:,:)
@ -98,7 +99,7 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,TDA,dBSE,
! Memory allocation ! Memory allocation
allocate(Aph(nS,nS),Bph(nS,nS),Sig(nBas),Z(nBas),Om(nS),XpY(nS,nS),XmY(nS,nS), & 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 ! Compute (triplet) RPA screening
@ -133,23 +134,25 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,TDA,dBSE,
! Linearized or graphical solution? ! Linearized or graphical solution?
eGTlin(:) = eHF(:) + Z(:)*Sig(:)
if(linearize) then if(linearize) then
write(*,*) ' *** Quasiparticle energies obtained by linearization *** ' write(*,*) ' *** Quasiparticle energies obtained by linearization *** '
write(*,*) write(*,*)
eGT(:) = eHF(:) + Z(:)*Sig(:) eGT(:) = eGTlin(:)
else else
write(*,*) ' *** Quasiparticle energies obtained by root search (experimental) *** ' write(*,*) ' *** Quasiparticle energies obtained by root search (experimental) *** '
write(*,*) 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 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 ! Compute the RPA correlation energy based on the G0T0eh quasiparticle energies

View File

@ -180,12 +180,14 @@ subroutine G0T0pp(doACFDT,exchange_kernel,doXBS,dophBSE,TDA_T,TDA,dBSE,dTDA,dopp
! Solve the quasi-particle equation ! Solve the quasi-particle equation
!---------------------------------------------- !----------------------------------------------
eGTlin(:) = eHF(:) + Z(:)*Sig(:)
if(linearize) then if(linearize) then
write(*,*) ' *** Quasiparticle energies obtained by linearization *** ' write(*,*) ' *** Quasiparticle energies obtained by linearization *** '
write(*,*) write(*,*)
eGT(:) = eHF(:) + Z(:)*Sig(:) eGT(:) = eGTlin(:)
else else
@ -193,12 +195,12 @@ subroutine G0T0pp(doACFDT,exchange_kernel,doXBS,dophBSE,TDA_T,TDA,dBSE,dTDA,dopp
write(*,*) write(*,*)
call GTpp_QP_graph(eta,nBas,nC,nO,nV,nR,nOOs,nVVs,nOOt,nVVt,eHF,Om1s,rho1s,Om2s,rho2s, & 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 end if
! call GTpp_plot_self_energy(eta,nBas,nC,nO,nV,nR,nOOs,nVVs,nOOt,nVVt,eHF,eGT,Om1s,rho1s,Om2s,rho2s, & 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) Om1t,rho1t,Om2t,rho2t)
!---------------------------------------------- !----------------------------------------------
! Dump results ! Dump results

View File

@ -54,6 +54,7 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_W,TDA,dBSE,dT
double precision,allocatable :: XmY(:,:) double precision,allocatable :: XmY(:,:)
double precision,allocatable :: rho(:,:,:) double precision,allocatable :: rho(:,:,:)
double precision,allocatable :: eGWlin(:)
double precision,allocatable :: eGW(:) double precision,allocatable :: eGW(:)
! Output variables ! Output variables
@ -91,7 +92,8 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_W,TDA,dBSE,dT
! Memory allocation ! 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 ! ! Compute screening !
@ -124,23 +126,25 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_W,TDA,dBSE,dT
! Linearized or graphical solution? ! Linearized or graphical solution?
eGWlin(:) = eHF(:) + Z(:)*SigC(:)
if(linearize) then if(linearize) then
write(*,*) ' *** Quasiparticle energies obtained by linearization *** ' write(*,*) ' *** Quasiparticle energies obtained by linearization *** '
write(*,*) write(*,*)
eGW(:) = eHF(:) + Z(:)*SigC(:) eGW(:) = eGWlin(:)
else else
write(*,*) ' *** Quasiparticle energies obtained by root search (experimental) *** ' write(*,*) ' *** Quasiparticle energies obtained by root search (experimental) *** '
write(*,*) 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 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 ! 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) 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 if(exchange_kernel) then
EcBSE(1) = 0.5d0*EcBSE(1) EcBSE(1) = 0.5d0*EcBSE(1)