mirror of
https://github.com/pfloos/quack
synced 2024-11-06 22:24:03 +01:00
eta parameter
This commit is contained in:
parent
153fe069aa
commit
8dbd12ecac
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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
|
||||||
|
80
input/basis
80
input/basis
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
80
input/weight
80
input/weight
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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'
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
|
||||||
@ -39,10 +37,7 @@ subroutine renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,Z)
|
|||||||
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
|
||||||
@ -57,10 +52,7 @@ subroutine renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,Z)
|
|||||||
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
|
||||||
@ -79,7 +71,7 @@ subroutine renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,Z)
|
|||||||
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
|
||||||
@ -94,7 +86,7 @@ subroutine renormalization_factor(SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,rhox,Z)
|
|||||||
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
|
||||||
|
@ -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
|
||||||
@ -119,7 +119,7 @@ subroutine self_energy_correlation(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,
|
|||||||
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
|
||||||
@ -136,7 +136,7 @@ subroutine self_energy_correlation(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,e,Omega,rho,
|
|||||||
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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user