4
1
mirror of https://github.com/pfloos/quack synced 2024-08-29 07:42:02 +02:00

eta parameter

This commit is contained in:
Pierre-Francois Loos 2019-09-22 21:15:53 +02:00
parent 153fe069aa
commit 8dbd12ecac
18 changed files with 209 additions and 178 deletions

View File

@ -1,10 +1,10 @@
{ {
"Scan": { "Scan": {
"Start":0.8, "Start":1.8,
"Stop":1.2, "Stop":1.9,
"Step":0.01 "Step":0.1
}, },
"Basis":"6-31G", "Basis":"VDZ",
"Outputs": { "Outputs": {
"DataOutput": { "DataOutput": {
"Enabled":true, "Enabled":true,

View File

@ -1,10 +1,10 @@
{ {
"Scan": { "Scan": {
"Start":0.8, "Start":1.8,
"Stop":1.2, "Stop":1.9,
"Step":0.01 "Step":0.1
}, },
"Basis":"6-31G", "Basis":"VDZ",
"Outputs": { "Outputs": {
"DataOutput": { "DataOutput": {
"Enabled":true, "Enabled":true,

View File

@ -1,5 +1,5 @@
# nAt nEla nElb nCore nRyd # nAt nEla nElb nCore nRyd
2 7 7 0 0 2 7 7 4 0
# Znuc x y z # Znuc x y z
N 0. 0. 0. N 0. 0. 0.
N 0. 0. 2.7 N 0. 0. 2.2

View File

@ -1,38 +1,58 @@
1 6 1 6
S 8 1.00 S 8 1.00
1469.0000000 0.0007660 9046.0000000 0.0007000
220.5000000 0.0058920 1357.0000000 0.0053890
50.2600000 0.0296710 309.3000000 0.0274060
14.2400000 0.1091800 87.7300000 0.1032070
4.5810000 0.2827890 28.5600000 0.2787230
1.5800000 0.4531230 10.2100000 0.4485400
0.5640000 0.2747740 3.8380000 0.2782380
0.0734500 0.0097510 0.7466000 0.0154400
S 8 1.00 S 8 1.00
1469.0000000 -0.0001200 9046.0000000 -0.0001530
220.5000000 -0.0009230 1357.0000000 -0.0012080
50.2600000 -0.0046890 309.3000000 -0.0059920
14.2400000 -0.0176820 87.7300000 -0.0245440
4.5810000 -0.0489020 28.5600000 -0.0674590
1.5800000 -0.0960090 10.2100000 -0.1580780
0.5640000 -0.1363800 3.8380000 -0.1218310
0.0734500 0.5751020 0.7466000 0.5490030
S 1 1.00 S 1 1.00
0.0280500 1.0000000 0.2248000 1.0000000
P 3 1.00 P 3 1.00
1.5340000 0.0227840 13.5500000 0.0399190
0.2749000 0.1391070 2.9170000 0.2171690
0.0736200 0.5003750 0.7973000 0.5103190
P 1 1.00 P 1 1.00
0.0240300 1.0000000 0.2185000 1.0000000
D 1 1.00 D 1 1.00
0.1239000 1.0000000 0.8170000 1.0000000
2 3 2 6
S 3 1.00 S 8 1.00
13.0100000 0.0196850 9046.0000000 0.0007000
1.9620000 0.1379770 1357.0000000 0.0053890
0.4446000 0.4781480 309.3000000 0.0274060
87.7300000 0.1032070
28.5600000 0.2787230
10.2100000 0.4485400
3.8380000 0.2782380
0.7466000 0.0154400
S 8 1.00
9046.0000000 -0.0001530
1357.0000000 -0.0012080
309.3000000 -0.0059920
87.7300000 -0.0245440
28.5600000 -0.0674590
10.2100000 -0.1580780
3.8380000 -0.1218310
0.7466000 0.5490030
S 1 1.00 S 1 1.00
0.1220000 1.0000000 0.2248000 1.0000000
P 3 1.00
13.5500000 0.0399190
2.9170000 0.2171690
0.7973000 0.5103190
P 1 1.00 P 1 1.00
0.7270000 1.0000000 0.2185000 1.0000000
D 1 1.00
0.8170000 1.0000000

View File

@ -9,6 +9,6 @@
# GF2 GF3 # GF2 GF3
F F F F
# G0W0 evGW qsGW # G0W0 evGW qsGW
T F T T T F
# MCMP2 # MCMP2
F F

View File

@ -1,5 +1,5 @@
# nAt nEla nElb nCore nRyd # nAt nEla nElb nCore nRyd
2 2 2 0 0 2 7 7 4 0
# Znuc x y z # Znuc x y z
Li 0. 0. 0.000 N 0. 0. 0.
H 0. 0. 3.015 N 0. 0. 2.2

View File

@ -1,5 +1,5 @@
# RHF: maxSCF thresh DIIS n_diis guess_type ortho_type # RHF: maxSCF thresh DIIS n_diis guess_type ortho_type
64 0.0000001 T 2 1 1 64 0.0000001 T 5 2 1
# MP: # MP:
# CC: maxSCF thresh DIIS n_diis # CC: maxSCF thresh DIIS n_diis
@ -8,7 +8,7 @@
T T T T
# GF: maxSCF thresh DIIS n_diis renormalization # GF: maxSCF thresh DIIS n_diis renormalization
64 0.00001 T 10 3 64 0.00001 T 10 3
# GW: maxSCF thresh DIIS n_diis COHSEX SOSEX BSE TDA G0W GW0 linearize # GW: maxSCF thresh DIIS n_diis COHSEX SOSEX BSE TDA G0W GW0 linearize eta
128 0.00001 T 3 F F T F F F F 256 0.00001 T 5 F F T F F F F 0.1
# MCMP2: nMC nEq nWalk dt nPrint iSeed doDrift # MCMP2: nMC nEq nWalk dt nPrint iSeed doDrift
1000000 100000 10 0.3 10000 1234 T 1000000 100000 10 0.3 10000 1234 T

View File

@ -1,38 +1,58 @@
1 6 1 6
S 8 1.00 S 8 1.00
1469.0000000 0.0007660 9046.0000000 0.0007000
220.5000000 0.0058920 1357.0000000 0.0053890
50.2600000 0.0296710 309.3000000 0.0274060
14.2400000 0.1091800 87.7300000 0.1032070
4.5810000 0.2827890 28.5600000 0.2787230
1.5800000 0.4531230 10.2100000 0.4485400
0.5640000 0.2747740 3.8380000 0.2782380
0.0734500 0.0097510 0.7466000 0.0154400
S 8 1.00 S 8 1.00
1469.0000000 -0.0001200 9046.0000000 -0.0001530
220.5000000 -0.0009230 1357.0000000 -0.0012080
50.2600000 -0.0046890 309.3000000 -0.0059920
14.2400000 -0.0176820 87.7300000 -0.0245440
4.5810000 -0.0489020 28.5600000 -0.0674590
1.5800000 -0.0960090 10.2100000 -0.1580780
0.5640000 -0.1363800 3.8380000 -0.1218310
0.0734500 0.5751020 0.7466000 0.5490030
S 1 1.00 S 1 1.00
0.0280500 1.0000000 0.2248000 1.0000000
P 3 1.00 P 3 1.00
1.5340000 0.0227840 13.5500000 0.0399190
0.2749000 0.1391070 2.9170000 0.2171690
0.0736200 0.5003750 0.7973000 0.5103190
P 1 1.00 P 1 1.00
0.0240300 1.0000000 0.2185000 1.0000000
D 1 1.00 D 1 1.00
0.1239000 1.0000000 0.8170000 1.0000000
2 3 2 6
S 3 1.00 S 8 1.00
13.0100000 0.0196850 9046.0000000 0.0007000
1.9620000 0.1379770 1357.0000000 0.0053890
0.4446000 0.4781480 309.3000000 0.0274060
87.7300000 0.1032070
28.5600000 0.2787230
10.2100000 0.4485400
3.8380000 0.2782380
0.7466000 0.0154400
S 8 1.00
9046.0000000 -0.0001530
1357.0000000 -0.0012080
309.3000000 -0.0059920
87.7300000 -0.0245440
28.5600000 -0.0674590
10.2100000 -0.1580780
3.8380000 -0.1218310
0.7466000 0.5490030
S 1 1.00 S 1 1.00
0.1220000 1.0000000 0.2248000 1.0000000
P 3 1.00
13.5500000 0.0399190
2.9170000 0.2171690
0.7973000 0.5103190
P 1 1.00 P 1 1.00
0.7270000 1.0000000 0.2185000 1.0000000
D 1 1.00
0.8170000 1.0000000

View File

@ -1,4 +1,4 @@
subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, & subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold,eta, &
nBas,nC,nO,nV,nR,nS,ENuc,ERHF,Hc,H,ERI,PHF,cHF,eHF,eG0W0) nBas,nC,nO,nV,nR,nS,ENuc,ERHF,Hc,H,ERI,PHF,cHF,eHF,eG0W0)
! Perform G0W0 calculation ! Perform G0W0 calculation
@ -14,6 +14,8 @@ subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, &
logical,intent(in) :: TDA logical,intent(in) :: TDA
logical,intent(in) :: singlet_manifold logical,intent(in) :: singlet_manifold
logical,intent(in) :: triplet_manifold logical,intent(in) :: triplet_manifold
double precision,intent(in) :: eta
integer,intent(in) :: nBas,nC,nO,nV,nR,nS integer,intent(in) :: nBas,nC,nO,nV,nR,nS
double precision,intent(in) :: ENuc double precision,intent(in) :: ENuc
double precision,intent(in) :: ERHF double precision,intent(in) :: ERHF
@ -44,6 +46,8 @@ subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, &
! Hello world ! Hello world
print*,eta
write(*,*) write(*,*)
write(*,*)'************************************************' write(*,*)'************************************************'
write(*,*)'| One-shot G0W0 calculation |' write(*,*)'| One-shot G0W0 calculation |'
@ -84,7 +88,7 @@ subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, &
if(SOSEX) call excitation_density_SOSEX(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rhox(:,:,:,ispin)) if(SOSEX) call excitation_density_SOSEX(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rhox(:,:,:,ispin))
call self_energy_correlation_diag(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,eHF, & call self_energy_correlation_diag(COHSEX,SOSEX,eta,nBas,nC,nO,nV,nR,nS,eHF, &
Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),EcGM,SigC) Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),EcGM,SigC)
! COHSEX static approximation ! COHSEX static approximation
@ -95,7 +99,8 @@ subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, &
else else
call renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,eHF,Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),Z) call renormalization_factor(SOSEX,eta,nBas,nC,nO,nV,nR,nS,eHF, &
Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),Z(:))
endif endif

View File

@ -65,7 +65,8 @@ program QuAcK
double precision :: thresh_CC double precision :: thresh_CC
logical :: DIIS_CC logical :: DIIS_CC
logical :: singlet_manifold,triplet_manifold logical :: singlet_manifold
logical :: triplet_manifold
integer :: maxSCF_GF,n_diis_GF,renormalization integer :: maxSCF_GF,n_diis_GF,renormalization
double precision :: thresh_GF double precision :: thresh_GF
@ -74,6 +75,7 @@ program QuAcK
integer :: maxSCF_GW,n_diis_GW integer :: maxSCF_GW,n_diis_GW
double precision :: thresh_GW double precision :: thresh_GW
logical :: DIIS_GW,COHSEX,SOSEX,BSE,TDA,G0W,GW0,linearize logical :: DIIS_GW,COHSEX,SOSEX,BSE,TDA,G0W,GW0,linearize
double precision :: eta
integer :: nMC,nEq,nWalk,nPrint,iSeed integer :: nMC,nEq,nWalk,nPrint,iSeed
double precision :: dt double precision :: dt
@ -109,11 +111,11 @@ 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, & call read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type, &
maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, & maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, &
singlet_manifold,triplet_manifold, & singlet_manifold,triplet_manifold, &
maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,renormalization, & maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,renormalization, &
maxSCF_GW,thresh_GW,DIIS_GW,n_diis_GW,COHSEX,SOSEX,BSE,TDA,G0W,GW0,linearize, & maxSCF_GW,thresh_GW,DIIS_GW,n_diis_GW,COHSEX,SOSEX,BSE,TDA,G0W,GW0,linearize,eta, &
nMC,nEq,nWalk,dt,nPrint,iSeed,doDrift) nMC,nEq,nWalk,dt,nPrint,iSeed,doDrift)
! Weird stuff ! Weird stuff
@ -150,7 +152,7 @@ program QuAcK
!------------------------------------------------------------------------ !------------------------------------------------------------------------
call read_basis(nNuc,rNuc,nBas,nO,nV,nShell,TotAngMomShell,CenterShell,KShell,DShell,ExpShell) call read_basis(nNuc,rNuc,nBas,nO,nV,nShell,TotAngMomShell,CenterShell,KShell,DShell,ExpShell)
nS(:) = nO(:)*nV(:) nS(:) = (nO(:) - nC(:))*nV(:)
!------------------------------------------------------------------------ !------------------------------------------------------------------------
! Read auxiliary basis set information ! Read auxiliary basis set information
@ -455,7 +457,7 @@ program QuAcK
if(doG0W0) then if(doG0W0) then
call cpu_time(start_G0W0) call cpu_time(start_G0W0)
call G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, & call G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold,eta, &
nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,Hc,H,ERI_MO_basis,PHF,cHF,eHF,eG0W0) nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,Hc,H,ERI_MO_basis,PHF,cHF,eHF,eG0W0)
call cpu_time(end_G0W0) call cpu_time(end_G0W0)
@ -472,7 +474,7 @@ program QuAcK
if(doevGW) then if(doevGW) then
call cpu_time(start_evGW) call cpu_time(start_evGW)
call evGW(maxSCF_GW,thresh_GW,n_diis_GW,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold,linearize, & call evGW(maxSCF_GW,thresh_GW,n_diis_GW,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold,linearize,eta, &
nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,Hc,H,ERI_MO_basis,PHF,cHF,eHF,eG0W0) nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,Hc,H,ERI_MO_basis,PHF,cHF,eHF,eG0W0)
call cpu_time(end_evGW) call cpu_time(end_evGW)
@ -490,7 +492,7 @@ program QuAcK
call cpu_time(start_qsGW) call cpu_time(start_qsGW)
call qsGW(maxSCF_GW,thresh_GW,n_diis_GW, & call qsGW(maxSCF_GW,thresh_GW,n_diis_GW, &
COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold, & COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold,eta, &
nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,S,X,T,V,Hc,ERI_AO_basis,PHF,cHF,eHF) nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,S,X,T,V,Hc,ERI_AO_basis,PHF,cHF,eHF)
call cpu_time(end_qsGW) call cpu_time(end_qsGW)

View File

@ -61,22 +61,7 @@ subroutine RHF(maxSCF,thresh,max_diis,guess_type,nBas,nO,S,T,V,Hc,ERI,X,ENuc,ERH
! Guess coefficients and eigenvalues ! Guess coefficients and eigenvalues
call mo_guess(nBas,Fp) call mo_guess(nBas,nO,guess_type,S,Hc,ERI,J,K,X,cp,Fp,e,c,P)
if(guess_type == 1) then
Fp = matmul(transpose(X),matmul(Hc,X))
cp(:,:) = Fp(:,:)
call diagonalize_matrix(nBas,cp,e)
c = matmul(X,cp)
elseif(guess_type == 2) then
call random_number(c)
endif
P(:,:) = 2d0*matmul(c(:,1:nO),transpose(c(:,1:nO)))
! ON(:) = 0d0 ! ON(:) = 0d0
! do i=1,nO ! do i=1,nO

View File

@ -1,4 +1,4 @@
subroutine evGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold,linearize, & subroutine evGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold,linearize,eta, &
nBas,nC,nO,nV,nR,nS,ENuc,ERHF,Hc,H,ERI_MO_basis,PHF,cHF,eHF,eG0W0) nBas,nC,nO,nV,nR,nS,ENuc,ERHF,Hc,H,ERI_MO_basis,PHF,cHF,eHF,eG0W0)
! Perform self-consistent eigenvalue-only GW calculation ! Perform self-consistent eigenvalue-only GW calculation
@ -22,6 +22,7 @@ subroutine evGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
logical,intent(in) :: singlet_manifold logical,intent(in) :: singlet_manifold
logical,intent(in) :: triplet_manifold logical,intent(in) :: triplet_manifold
logical,intent(in) :: linearize logical,intent(in) :: linearize
double precision,intent(in) :: eta
integer,intent(in) :: nBas,nC,nO,nV,nR,nS integer,intent(in) :: nBas,nC,nO,nV,nR,nS
double precision,intent(in) :: eHF(nBas) double precision,intent(in) :: eHF(nBas)
double precision,intent(in) :: cHF(nBas,nBas) double precision,intent(in) :: cHF(nBas,nBas)
@ -125,15 +126,15 @@ subroutine evGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
if(G0W) then if(G0W) then
call self_energy_correlation_diag(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,eHF, & call self_energy_correlation_diag(COHSEX,SOSEX,eta,nBas,nC,nO,nV,nR,nS,eHF, &
Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),EcGM,SigC) Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),EcGM,SigC)
call renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,eHF,Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),Z) call renormalization_factor(SOSEX,eta,nBas,nC,nO,nV,nR,nS,eHF,Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),Z(:))
else else
call self_energy_correlation_diag(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,eGW, & call self_energy_correlation_diag(COHSEX,SOSEX,eta,nBas,nC,nO,nV,nR,nS,eGW, &
Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),EcGM,SigC) Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),EcGM,SigC)
call renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,eGW,Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),Z) call renormalization_factor(SOSEX,eta,nBas,nC,nO,nV,nR,nS,eGW,Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),Z(:))
endif endif

View File

@ -47,7 +47,7 @@ subroutine print_RHF(nBas,nO,eHF,cHF,ENuc,ET,EV,EJ,EK,ERHF)
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A32)') 'MO coefficients' write(*,'(A32)') 'MO coefficients'
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
! call matout(nBas,nBas,cHF) call matout(nBas,nBas,cHF)
write(*,*) write(*,*)
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A32)') 'MO energies' write(*,'(A32)') 'MO energies'

View File

@ -1,4 +1,4 @@
subroutine qsGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold, & subroutine qsGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold,eta, &
nBas,nC,nO,nV,nR,nS,ENuc,ERHF,S,X,T,V,Hc,ERI_AO_basis,PHF,cHF,eHF) nBas,nC,nO,nV,nR,nS,ENuc,ERHF,S,X,T,V,Hc,ERI_AO_basis,PHF,cHF,eHF)
! Compute linear response ! Compute linear response
@ -19,6 +19,7 @@ subroutine qsGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
logical,intent(in) :: GW0 logical,intent(in) :: GW0
logical,intent(in) :: singlet_manifold logical,intent(in) :: singlet_manifold
logical,intent(in) :: triplet_manifold logical,intent(in) :: triplet_manifold
double precision,intent(in) :: eta
integer,intent(in) :: nBas,nC,nO,nV,nR,nS integer,intent(in) :: nBas,nC,nO,nV,nR,nS
double precision,intent(in) :: ENuc double precision,intent(in) :: ENuc
double precision,intent(in) :: ERHF double precision,intent(in) :: ERHF
@ -142,19 +143,20 @@ subroutine qsGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
! Compute correlation part of the self-energy ! Compute correlation part of the self-energy
call excitation_density(nBas,nC,nO,nR,nS,ERI_MO_basis,XpY(:,:,ispin),rho(:,:,:,ispin)) call excitation_density(nBas,nC,nO,nR,nS,ERI_MO_basis,XpY(:,:,ispin),rho(:,:,:,ispin))
if(SOSEX) call excitation_density_SOSEX(nBas,nC,nO,nR,nS,ERI_MO_basis,XpY(:,:,ispin),rhox(:,:,:,ispin)) if(SOSEX) call excitation_density_SOSEX(nBas,nC,nO,nR,nS,ERI_MO_basis,XpY(:,:,ispin),rhox(:,:,:,ispin))
if(G0W) then if(G0W) then
call self_energy_correlation(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,eHF, & call self_energy_correlation(COHSEX,SOSEX,eta,nBas,nC,nO,nV,nR,nS,eHF, &
Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),EcGM,SigC) Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),EcGM,SigC)
call renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,eHF,Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),Z) call renormalization_factor(SOSEX,eta,nBas,nC,nO,nV,nR,nS,eHF,Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),Z)
else else
call self_energy_correlation(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e, & call self_energy_correlation(COHSEX,SOSEX,eta,nBas,nC,nO,nV,nR,nS,e, &
Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),EcGM,SigC) Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),EcGM,SigC)
call renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),Z) call renormalization_factor(SOSEX,eta,nBas,nC,nO,nV,nR,nS,e,Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),Z)
endif endif

View File

@ -1,8 +1,8 @@
subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type, & subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type, &
maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, & maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, &
singlet_manifold,triplet_manifold, & singlet_manifold,triplet_manifold, &
maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,renormalization, & maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,renormalization, &
maxSCF_GW,thresh_GW,DIIS_GW,n_diis_GW,COHSEX,SOSEX,BSE,TDA,G0W,GW0,linearize, & maxSCF_GW,thresh_GW,DIIS_GW,n_diis_GW,COHSEX,SOSEX,BSE,TDA,G0W,GW0,linearize,eta, &
nMC,nEq,nWalk,dt,nPrint,iSeed,doDrift) nMC,nEq,nWalk,dt,nPrint,iSeed,doDrift)
! Read desired methods ! Read desired methods
@ -43,6 +43,7 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_t
logical,intent(out) :: G0W logical,intent(out) :: G0W
logical,intent(out) :: GW0 logical,intent(out) :: GW0
logical,intent(out) :: linearize logical,intent(out) :: linearize
double precision,intent(out) :: eta
integer,intent(out) :: nMC integer,intent(out) :: nMC
integer,intent(out) :: nEq integer,intent(out) :: nEq
@ -133,10 +134,11 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_t
G0W = .false. G0W = .false.
GW0 = .false. GW0 = .false.
linearize = .false. linearize = .false.
eta = 0d0
read(1,*) read(1,*)
read(1,*) maxSCF_GW,thresh_GW,answer1,n_diis_GW,answer2, & read(1,*) maxSCF_GW,thresh_GW,answer1,n_diis_GW,answer2, &
answer3,answer4,answer5,answer6,answer7,answer8 answer3,answer4,answer5,answer6,answer7,answer8,eta
if(answer1 == 'T') DIIS_GW = .true. if(answer1 == 'T') DIIS_GW = .true.
if(answer2 == 'T') COHSEX = .true. if(answer2 == 'T') COHSEX = .true.

View File

@ -1,4 +1,4 @@
subroutine renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,Z) subroutine renormalization_factor(SOSEX,eta,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,Z)
! Compute renormalization factor for GW ! Compute renormalization factor for GW
@ -8,27 +8,25 @@ subroutine renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,Z)
! Input variables ! Input variables
logical,intent(in) :: SOSEX logical,intent(in) :: SOSEX
double precision,intent(in) :: eta
integer,intent(in) :: nBas,nC,nO,nV,nR,nS integer,intent(in) :: nBas,nC,nO,nV,nR,nS
double precision,intent(in) :: e(nBas),Omega(nS),rho(nBas,nBas,nS),rhox(nBas,nBas,nS) double precision,intent(in) :: e(nBas)
double precision,intent(in) :: Omega(nS)
double precision,intent(in) :: rho(nBas,nBas,nS)
double precision,intent(in) :: rhox(nBas,nBas,nS)
! Local variables ! Local variables
integer :: i,j,a,b,x,jb integer :: i,j,a,b,x,jb
double precision :: eps double precision :: eps
double precision,allocatable :: SigC(:),dSigC(:),d2SigC(:)
double precision,external :: Z_dcgw
! Output variables ! Output variables
double precision,intent(out) :: Z(nBas) double precision,intent(out) :: Z(nBas)
! Allocate ! Initialize
allocate(SigC(nBas),dSigC(nBas),d2SigC(nBas)) Z(:) = 0d0
SigC(:) = 0d0
dSigC(:) = 0d0
d2SigC(:) = 0d0
! Occupied part of the correlation self-energy ! Occupied part of the correlation self-energy
@ -38,11 +36,8 @@ subroutine renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,Z)
do j=nC+1,nO do j=nC+1,nO
do b=nO+1,nBas-nR do b=nO+1,nBas-nR
jb = jb + 1 jb = jb + 1
eps = e(x) - e(i) + Omega(jb) eps = e(x) - e(i) + Omega(jb)
! Z(x) = Z(x) + 2d0*Z_dcgw(eps,rho(x,i,jb)) Z(x) = Z(x) - 2d0*rho(x,i,jb)**2*(eps/(eps**2 + eta**2))**2
! SigC(x) = SigC(x) + 2d0*rho(x,i,jb)**2/eps
dSigC(x) = dSigC(x) - 2d0*rho(x,i,jb)**2/eps**2
! d2SigC(x) = d2SigC(x) + 4d0*rho(x,i,jb)**2/eps**3
enddo enddo
enddo enddo
enddo enddo
@ -56,11 +51,8 @@ subroutine renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,Z)
do j=nC+1,nO do j=nC+1,nO
do b=nO+1,nBas-nR do b=nO+1,nBas-nR
jb = jb + 1 jb = jb + 1
eps = e(x) - e(a) - Omega(jb) eps = e(x) - e(a) - Omega(jb)
! Z(x) = Z(x) + 2d0*Z_dcgw(eps,rho(x,a,jb)) Z(x) = Z(x) - 2d0*rho(x,a,jb)**2*(eps/(eps**2 + eta**2))**2
! SigC(x) = SigC(x) + 2d0*rho(x,a,jb)**2/eps
dSigC(x) = dSigC(x) - 2d0*rho(x,a,jb)**2/eps**2
! d2SigC(x) = d2SigC(x) + 4d0*rho(x,a,jb)**2/eps**3
enddo enddo
enddo enddo
enddo enddo
@ -78,8 +70,8 @@ subroutine renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,Z)
do j=nC+1,nO do j=nC+1,nO
do b=nO+1,nBas-nR do b=nO+1,nBas-nR
jb = jb + 1 jb = jb + 1
eps = e(x) - e(i) + Omega(jb) eps = e(x) - e(i) + Omega(jb)
dSigC(x) = dSigC(x) - (rho(x,i,jb)/eps)*(rhox(x,i,jb)/eps) Z(x) = Z(x) - (rho(x,i,jb)/eps)*(rhox(x,i,jb)/eps)
enddo enddo
enddo enddo
enddo enddo
@ -93,8 +85,8 @@ subroutine renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,Z)
do j=nC+1,nO do j=nC+1,nO
do b=nO+1,nBas-nR do b=nO+1,nBas-nR
jb = jb + 1 jb = jb + 1
eps = e(x) - e(a) - Omega(jb) eps = e(x) - e(a) - Omega(jb)
dSigC(x) = dSigC(x) - (rho(x,a,jb)/eps)*(rhox(x,a,jb)/eps) Z(x) = Z(x) - (rho(x,a,jb)/eps)*(rhox(x,a,jb)/eps)
enddo enddo
enddo enddo
enddo enddo
@ -104,9 +96,6 @@ subroutine renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,Z)
! Compute renormalization factor from derivative of SigC ! Compute renormalization factor from derivative of SigC
Z(:) = 1d0/(1d0-dSigC(:)) Z(:) = 1d0/(1d0 - Z(:))
! Z(:) = 1d0 - dSigC(:) + sqrt( (1d0 - dSigC(:))**2 - 2d0*SigC(:)*d2SigC(:) )
! Z(:) = Z(:)/(SigC(:)*d2SigC(:))
end subroutine renormalization_factor end subroutine renormalization_factor

View File

@ -1,4 +1,4 @@
subroutine self_energy_correlation(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,EcGM,SigC) subroutine self_energy_correlation(COHSEX,SOSEX,eta,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,EcGM,SigC)
! Compute correlation part of the self-energy ! Compute correlation part of the self-energy
@ -7,14 +7,19 @@ subroutine self_energy_correlation(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,
! Input variables ! Input variables
logical,intent(in) :: COHSEX,SOSEX logical,intent(in) :: COHSEX
logical,intent(in) :: SOSEX
double precision,intent(in) :: eta
integer,intent(in) :: nBas,nC,nO,nV,nR,nS integer,intent(in) :: nBas,nC,nO,nV,nR,nS
double precision,intent(in) :: e(nBas),Omega(nS),rho(nBas,nBas,nS),rhox(nBas,nBas,nS) double precision,intent(in) :: e(nBas)
double precision,intent(in) :: Omega(nS)
double precision,intent(in) :: rho(nBas,nBas,nS)
double precision,intent(in) :: rhox(nBas,nBas,nS)
! Local variables ! Local variables
integer :: i,j,a,b,p,x,y,jb integer :: i,j,a,b,p,x,y,jb
double precision :: eps,eta double precision :: eps
! Output variables ! Output variables
@ -25,11 +30,6 @@ subroutine self_energy_correlation(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,
SigC = 0d0 SigC = 0d0
! Infinitesimal
eta = 0.0d0
! eta = 0.001d0
! COHSEX static approximation ! COHSEX static approximation
if(COHSEX) then if(COHSEX) then
@ -118,8 +118,8 @@ subroutine self_energy_correlation(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,
do j=nC+1,nO do j=nC+1,nO
do b=nO+1,nBas-nR do b=nO+1,nBas-nR
jb = jb + 1 jb = jb + 1
eps = e(x) - e(i) + Omega(jb) eps = e(x) - e(i) + Omega(jb)
SigC(x,y) = SigC(x,y) - rho(x,i,jb)*rhox(y,i,jb)/eps SigC(x,y) = SigC(x,y) - rho(x,i,jb)*rhox(y,i,jb)*eps/(eps**2 + eta**2)
enddo enddo
enddo enddo
enddo enddo
@ -135,8 +135,8 @@ subroutine self_energy_correlation(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,
do j=nC+1,nO do j=nC+1,nO
do b=nO+1,nBas-nR do b=nO+1,nBas-nR
jb = jb + 1 jb = jb + 1
eps = e(x) - e(a) - Omega(jb) eps = e(x) - e(a) - Omega(jb)
SigC(x,y) = SigC(x,y) - rho(x,a,jb)*rhox(y,a,jb)/eps SigC(x,y) = SigC(x,y) - rho(x,a,jb)*rhox(y,a,jb)*eps/(eps**2 + eta**2)
enddo enddo
enddo enddo
enddo enddo

View File

@ -1,4 +1,4 @@
subroutine self_energy_correlation_diag(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,EcGM,SigC) subroutine self_energy_correlation_diag(COHSEX,SOSEX,eta,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,EcGM,SigC)
! Compute diagonal of the correlation part of the self-energy ! Compute diagonal of the correlation part of the self-energy
@ -7,14 +7,24 @@ subroutine self_energy_correlation_diag(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega
! Input variables ! Input variables
logical,intent(in) :: COHSEX,SOSEX logical,intent(in) :: COHSEX
integer,intent(in) :: nBas,nC,nO,nV,nR,nS logical,intent(in) :: SOSEX
double precision,intent(in) :: e(nBas),Omega(nS),rho(nBas,nBas,nS),rhox(nBas,nBas,nS) double precision,intent(in) :: eta
integer,intent(in) :: nBas
integer,intent(in) :: nC
integer,intent(in) :: nO
integer,intent(in) :: nV
integer,intent(in) :: nR
integer,intent(in) :: nS
double precision,intent(in) :: e(nBas)
double precision,intent(in) :: Omega(nS)
double precision,intent(in) :: rho(nBas,nBas,nS)
double precision,intent(in) :: rhox(nBas,nBas,nS)
! Local variables ! Local variables
integer :: i,j,a,b,p,x,jb integer :: i,j,a,b,p,x,jb
double precision :: eps,eta double precision :: eps
double precision,external :: SigC_dcgw double precision,external :: SigC_dcgw
! Output variables ! Output variables
@ -26,11 +36,6 @@ subroutine self_energy_correlation_diag(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega
SigC = 0d0 SigC = 0d0
! Infinitesimal
eta = 0d0
! eta = 0.001d0
! COHSEX static approximation ! COHSEX static approximation
if(COHSEX) then if(COHSEX) then
@ -116,7 +121,7 @@ subroutine self_energy_correlation_diag(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega
do b=nO+1,nBas-nR do b=nO+1,nBas-nR
jb = jb + 1 jb = jb + 1
eps = e(a) - e(i) + Omega(jb) eps = e(a) - e(i) + Omega(jb)
EcGM = EcGM - 2d0*rho(a,i,jb)*rho(a,i,jb)/eps EcGM = EcGM - 2d0*rho(a,i,jb)*rho(a,i,jb)*eps/(eps**2 + eta**2)
enddo enddo
enddo enddo
enddo enddo
@ -133,7 +138,7 @@ subroutine self_energy_correlation_diag(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega
do b=nO+1,nBas-nR do b=nO+1,nBas-nR
jb = jb + 1 jb = jb + 1
eps = e(x) - e(i) + Omega(jb) eps = e(x) - e(i) + Omega(jb)
SigC(x) = SigC(x) - rho(x,i,jb)*rhox(x,i,jb)/eps SigC(x) = SigC(x) - rho(x,i,jb)*rhox(x,i,jb)*eps/(eps**2 + eta**2)
enddo enddo
enddo enddo
enddo enddo
@ -148,7 +153,7 @@ subroutine self_energy_correlation_diag(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega
do b=nO+1,nBas-nR do b=nO+1,nBas-nR
jb = jb + 1 jb = jb + 1
eps = e(x) - e(a) - Omega(jb) eps = e(x) - e(a) - Omega(jb)
SigC(x) = SigC(x) - rho(x,a,jb)*rhox(x,a,jb)/eps SigC(x) = SigC(x) - rho(x,a,jb)*rhox(x,a,jb)*eps/(eps**2 + eta**2)
enddo enddo
enddo enddo
enddo enddo
@ -163,7 +168,7 @@ subroutine self_energy_correlation_diag(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega
do b=nO+1,nBas-nR do b=nO+1,nBas-nR
jb = jb + 1 jb = jb + 1
eps = e(a) - e(i) + Omega(jb) eps = e(a) - e(i) + Omega(jb)
EcGM = EcGM + rho(a,i,jb)*rhox(a,i,jb)/eps EcGM = EcGM + rho(a,i,jb)*rhox(a,i,jb)*eps/(eps**2 + eta**2)
enddo enddo
enddo enddo
enddo enddo