mirror of
https://github.com/pfloos/quack
synced 2024-11-04 21:23:55 +01:00
eta in linear response
This commit is contained in:
parent
76aa00962d
commit
9e3c3f9c89
@ -2,4 +2,4 @@
|
|||||||
2 7 7 0 0
|
2 7 7 0 0
|
||||||
# Znuc x y z
|
# Znuc x y z
|
||||||
B 0. 0. 0.
|
B 0. 0. 0.
|
||||||
F 0. 0. 3.4
|
F 0. 0. 2.41
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# nAt nEla nElb nCore nRyd
|
# nAt nEla nElb nCore nRyd
|
||||||
2 7 7 4 0
|
2 7 7 0 0
|
||||||
# Znuc x y z
|
# Znuc x y z
|
||||||
C 0. 0. 0.
|
C 0. 0. 0.
|
||||||
O 0. 0. 3.4
|
O 0. 0. 2.154
|
||||||
|
@ -2,4 +2,4 @@
|
|||||||
2 9 9 0 0
|
2 9 9 0 0
|
||||||
# Znuc x y z
|
# Znuc x y z
|
||||||
F 0. 0. 0.
|
F 0. 0. 0.
|
||||||
F 0. 0. 3.4
|
F 0. 0. 3
|
||||||
|
@ -2,4 +2,4 @@
|
|||||||
2 1 1 0 0
|
2 1 1 0 0
|
||||||
# Znuc x y z
|
# Znuc x y z
|
||||||
H 0. 0. 0.
|
H 0. 0. 0.
|
||||||
H 0. 0. 3
|
H 0. 0. 1.4
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# nAt nEla nElb nCore nRyd
|
# nAt nEla nElb nCore nRyd
|
||||||
2 9 9 10 0
|
2 9 9 0 0
|
||||||
# Znuc x y z
|
# Znuc x y z
|
||||||
H 0. 0. 0.
|
H 0. 0. 0.
|
||||||
Cl 0. 0. 3.4
|
Cl 0. 0. 2.42
|
||||||
|
@ -2,4 +2,4 @@
|
|||||||
2 6 6 0 0
|
2 6 6 0 0
|
||||||
# Znuc x y z
|
# Znuc x y z
|
||||||
Li 0. 0. 0.
|
Li 0. 0. 0.
|
||||||
F 0. 0. 3.4
|
F 0. 0. 3.003
|
||||||
|
@ -2,4 +2,4 @@
|
|||||||
2 2 2 0 0
|
2 2 2 0 0
|
||||||
# Znuc x y z
|
# Znuc x y z
|
||||||
Li 0. 0. 0.
|
Li 0. 0. 0.
|
||||||
H 0. 0. 3.9
|
H 0. 0. 3.05
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# nAt nEla nElb nCore nRyd
|
# nAt nEla nElb nCore nRyd
|
||||||
2 7 7 4 0
|
2 7 7 0 0
|
||||||
# Znuc x y z
|
# Znuc x y z
|
||||||
N 0. 0. 0.
|
N 0. 0. 0.
|
||||||
N 0. 0. 3.4
|
N 0. 0. 2.067
|
||||||
|
109
input/basis
109
input/basis
@ -1,75 +1,58 @@
|
|||||||
1 10
|
1 6
|
||||||
S 8
|
S 8
|
||||||
1 11420.0000000 0.0005230
|
1 14710.0000000 0.0007210
|
||||||
2 1712.0000000 0.0040450
|
2 2207.0000000 0.0055530
|
||||||
3 389.3000000 0.0207750
|
3 502.8000000 0.0282670
|
||||||
4 110.0000000 0.0807270
|
4 142.6000000 0.1064440
|
||||||
5 35.5700000 0.2330740
|
5 46.4700000 0.2868140
|
||||||
6 12.5400000 0.4335010
|
6 16.7000000 0.4486410
|
||||||
7 4.6440000 0.3474720
|
7 6.3560000 0.2647610
|
||||||
8 0.5118000 -0.0085080
|
8 1.3160000 0.0153330
|
||||||
S 8
|
S 8
|
||||||
1 11420.0000000 -0.0001150
|
1 14710.0000000 -0.0001650
|
||||||
2 1712.0000000 -0.0008950
|
2 2207.0000000 -0.0013080
|
||||||
3 389.3000000 -0.0046240
|
3 502.8000000 -0.0064950
|
||||||
4 110.0000000 -0.0185280
|
4 142.6000000 -0.0266910
|
||||||
5 35.5700000 -0.0573390
|
5 46.4700000 -0.0736900
|
||||||
6 12.5400000 -0.1320760
|
6 16.7000000 -0.1707760
|
||||||
7 4.6440000 -0.1725100
|
7 6.3560000 -0.1123270
|
||||||
8 0.5118000 0.5999440
|
8 1.3160000 0.5628140
|
||||||
S 1
|
S 1
|
||||||
1 1.2930000 1.0000000
|
1 0.3897000 1.0000000
|
||||||
S 1
|
|
||||||
1 0.1787000 1.0000000
|
|
||||||
P 3
|
P 3
|
||||||
1 26.6300000 0.0146700
|
1 22.6700000 0.0448780
|
||||||
2 5.9480000 0.0917640
|
2 4.9770000 0.2357180
|
||||||
3 1.7420000 0.2986830
|
3 1.3470000 0.5085210
|
||||||
P 1
|
P 1
|
||||||
1 0.5550000 1.0000000
|
1 0.3471000 1.0000000
|
||||||
P 1
|
|
||||||
1 0.1725000 1.0000000
|
|
||||||
D 1
|
D 1
|
||||||
1 1.6540000 1.0000000
|
1 1.6400000 1.0000000
|
||||||
D 1
|
2 6
|
||||||
1 0.4690000 1.0000000
|
|
||||||
F 1
|
|
||||||
1 1.0930000 1.0000000
|
|
||||||
2 10
|
|
||||||
S 8
|
S 8
|
||||||
1 11420.0000000 0.0005230
|
1 14710.0000000 0.0007210
|
||||||
2 1712.0000000 0.0040450
|
2 2207.0000000 0.0055530
|
||||||
3 389.3000000 0.0207750
|
3 502.8000000 0.0282670
|
||||||
4 110.0000000 0.0807270
|
4 142.6000000 0.1064440
|
||||||
5 35.5700000 0.2330740
|
5 46.4700000 0.2868140
|
||||||
6 12.5400000 0.4335010
|
6 16.7000000 0.4486410
|
||||||
7 4.6440000 0.3474720
|
7 6.3560000 0.2647610
|
||||||
8 0.5118000 -0.0085080
|
8 1.3160000 0.0153330
|
||||||
S 8
|
S 8
|
||||||
1 11420.0000000 -0.0001150
|
1 14710.0000000 -0.0001650
|
||||||
2 1712.0000000 -0.0008950
|
2 2207.0000000 -0.0013080
|
||||||
3 389.3000000 -0.0046240
|
3 502.8000000 -0.0064950
|
||||||
4 110.0000000 -0.0185280
|
4 142.6000000 -0.0266910
|
||||||
5 35.5700000 -0.0573390
|
5 46.4700000 -0.0736900
|
||||||
6 12.5400000 -0.1320760
|
6 16.7000000 -0.1707760
|
||||||
7 4.6440000 -0.1725100
|
7 6.3560000 -0.1123270
|
||||||
8 0.5118000 0.5999440
|
8 1.3160000 0.5628140
|
||||||
S 1
|
S 1
|
||||||
1 1.2930000 1.0000000
|
1 0.3897000 1.0000000
|
||||||
S 1
|
|
||||||
1 0.1787000 1.0000000
|
|
||||||
P 3
|
P 3
|
||||||
1 26.6300000 0.0146700
|
1 22.6700000 0.0448780
|
||||||
2 5.9480000 0.0917640
|
2 4.9770000 0.2357180
|
||||||
3 1.7420000 0.2986830
|
3 1.3470000 0.5085210
|
||||||
P 1
|
P 1
|
||||||
1 0.5550000 1.0000000
|
1 0.3471000 1.0000000
|
||||||
P 1
|
|
||||||
1 0.1725000 1.0000000
|
|
||||||
D 1
|
D 1
|
||||||
1 1.6540000 1.0000000
|
1 1.6400000 1.0000000
|
||||||
D 1
|
|
||||||
1 0.4690000 1.0000000
|
|
||||||
F 1
|
|
||||||
1 1.0930000 1.0000000
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# nAt nEla nElb nCore nRyd
|
# nAt nEla nElb nCore nRyd
|
||||||
2 7 7 4 0
|
2 9 9 0 0
|
||||||
# Znuc x y z
|
# Znuc x y z
|
||||||
N 0. 0. 0.
|
F 0. 0. 0.
|
||||||
N 0. 0. 3.4
|
F 0. 0. 3
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
2
|
2
|
||||||
|
|
||||||
N 0.0000000000 0.0000000000 0.0000000000
|
F 0.0000000000 0.0000000000 0.0000000000
|
||||||
N 0.0000000000 0.0000000000 1.7992026466
|
F 0.0000000000 0.0000000000 1.5875317470
|
||||||
|
@ -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 5 2 1
|
64 0.0000001 T 5 1 1
|
||||||
# MP:
|
# MP:
|
||||||
|
|
||||||
# CC: maxSCF thresh DIIS n_diis
|
# CC: maxSCF thresh DIIS n_diis
|
||||||
|
109
input/weight
109
input/weight
@ -1,75 +1,58 @@
|
|||||||
1 10
|
1 6
|
||||||
S 8
|
S 8
|
||||||
1 11420.0000000 0.0005230
|
1 14710.0000000 0.0007210
|
||||||
2 1712.0000000 0.0040450
|
2 2207.0000000 0.0055530
|
||||||
3 389.3000000 0.0207750
|
3 502.8000000 0.0282670
|
||||||
4 110.0000000 0.0807270
|
4 142.6000000 0.1064440
|
||||||
5 35.5700000 0.2330740
|
5 46.4700000 0.2868140
|
||||||
6 12.5400000 0.4335010
|
6 16.7000000 0.4486410
|
||||||
7 4.6440000 0.3474720
|
7 6.3560000 0.2647610
|
||||||
8 0.5118000 -0.0085080
|
8 1.3160000 0.0153330
|
||||||
S 8
|
S 8
|
||||||
1 11420.0000000 -0.0001150
|
1 14710.0000000 -0.0001650
|
||||||
2 1712.0000000 -0.0008950
|
2 2207.0000000 -0.0013080
|
||||||
3 389.3000000 -0.0046240
|
3 502.8000000 -0.0064950
|
||||||
4 110.0000000 -0.0185280
|
4 142.6000000 -0.0266910
|
||||||
5 35.5700000 -0.0573390
|
5 46.4700000 -0.0736900
|
||||||
6 12.5400000 -0.1320760
|
6 16.7000000 -0.1707760
|
||||||
7 4.6440000 -0.1725100
|
7 6.3560000 -0.1123270
|
||||||
8 0.5118000 0.5999440
|
8 1.3160000 0.5628140
|
||||||
S 1
|
S 1
|
||||||
1 1.2930000 1.0000000
|
1 0.3897000 1.0000000
|
||||||
S 1
|
|
||||||
1 0.1787000 1.0000000
|
|
||||||
P 3
|
P 3
|
||||||
1 26.6300000 0.0146700
|
1 22.6700000 0.0448780
|
||||||
2 5.9480000 0.0917640
|
2 4.9770000 0.2357180
|
||||||
3 1.7420000 0.2986830
|
3 1.3470000 0.5085210
|
||||||
P 1
|
P 1
|
||||||
1 0.5550000 1.0000000
|
1 0.3471000 1.0000000
|
||||||
P 1
|
|
||||||
1 0.1725000 1.0000000
|
|
||||||
D 1
|
D 1
|
||||||
1 1.6540000 1.0000000
|
1 1.6400000 1.0000000
|
||||||
D 1
|
2 6
|
||||||
1 0.4690000 1.0000000
|
|
||||||
F 1
|
|
||||||
1 1.0930000 1.0000000
|
|
||||||
2 10
|
|
||||||
S 8
|
S 8
|
||||||
1 11420.0000000 0.0005230
|
1 14710.0000000 0.0007210
|
||||||
2 1712.0000000 0.0040450
|
2 2207.0000000 0.0055530
|
||||||
3 389.3000000 0.0207750
|
3 502.8000000 0.0282670
|
||||||
4 110.0000000 0.0807270
|
4 142.6000000 0.1064440
|
||||||
5 35.5700000 0.2330740
|
5 46.4700000 0.2868140
|
||||||
6 12.5400000 0.4335010
|
6 16.7000000 0.4486410
|
||||||
7 4.6440000 0.3474720
|
7 6.3560000 0.2647610
|
||||||
8 0.5118000 -0.0085080
|
8 1.3160000 0.0153330
|
||||||
S 8
|
S 8
|
||||||
1 11420.0000000 -0.0001150
|
1 14710.0000000 -0.0001650
|
||||||
2 1712.0000000 -0.0008950
|
2 2207.0000000 -0.0013080
|
||||||
3 389.3000000 -0.0046240
|
3 502.8000000 -0.0064950
|
||||||
4 110.0000000 -0.0185280
|
4 142.6000000 -0.0266910
|
||||||
5 35.5700000 -0.0573390
|
5 46.4700000 -0.0736900
|
||||||
6 12.5400000 -0.1320760
|
6 16.7000000 -0.1707760
|
||||||
7 4.6440000 -0.1725100
|
7 6.3560000 -0.1123270
|
||||||
8 0.5118000 0.5999440
|
8 1.3160000 0.5628140
|
||||||
S 1
|
S 1
|
||||||
1 1.2930000 1.0000000
|
1 0.3897000 1.0000000
|
||||||
S 1
|
|
||||||
1 0.1787000 1.0000000
|
|
||||||
P 3
|
P 3
|
||||||
1 26.6300000 0.0146700
|
1 22.6700000 0.0448780
|
||||||
2 5.9480000 0.0917640
|
2 4.9770000 0.2357180
|
||||||
3 1.7420000 0.2986830
|
3 1.3470000 0.5085210
|
||||||
P 1
|
P 1
|
||||||
1 0.5550000 1.0000000
|
1 0.3471000 1.0000000
|
||||||
P 1
|
|
||||||
1 0.1725000 1.0000000
|
|
||||||
D 1
|
D 1
|
||||||
1 1.6540000 1.0000000
|
1 1.6400000 1.0000000
|
||||||
D 1
|
|
||||||
1 0.4690000 1.0000000
|
|
||||||
F 1
|
|
||||||
1 1.0930000 1.0000000
|
|
||||||
|
|
||||||
|
1
int/.gitignore
vendored
1
int/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
*.dat
|
|
56513
int/boxints.txt
56513
int/boxints.txt
File diff suppressed because it is too large
Load Diff
@ -1,10 +1,10 @@
|
|||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
|
|
||||||
MOL="H2"
|
MOL="H2"
|
||||||
BASIS="VTZ"
|
BASIS="cc-pvqz"
|
||||||
R_START=0.5
|
R_START=1.397
|
||||||
R_END=3.0
|
R_END=1.400
|
||||||
DR=0.05
|
DR=0.001
|
||||||
|
|
||||||
for R in $(seq $R_START $DR $R_END)
|
for R in $(seq $R_START $DR $R_END)
|
||||||
do
|
do
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
MOL="LiF"
|
MOL="LiF"
|
||||||
BASIS="cc-pvdz"
|
BASIS="cc-pvdz"
|
||||||
R_START=1.5
|
R_START=3.001
|
||||||
R_END=3.5
|
R_END=3.003
|
||||||
DR=0.1
|
DR=0.001
|
||||||
|
|
||||||
for R in $(seq $R_START $DR $R_END)
|
for R in $(seq $R_START $DR $R_END)
|
||||||
do
|
do
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
MOL="LiH"
|
MOL="LiH"
|
||||||
BASIS="cc-pvtz"
|
BASIS="cc-pvtz"
|
||||||
R_START=1.5
|
R_START=3.00
|
||||||
R_END=4.0
|
R_END=3.05
|
||||||
DR=0.1
|
DR=0.001
|
||||||
|
|
||||||
for R in $(seq $R_START $DR $R_END)
|
for R in $(seq $R_START $DR $R_END)
|
||||||
do
|
do
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
|
|
||||||
MOL="N2"
|
MOL="N2"
|
||||||
BASIS="cc-pvqz"
|
BASIS="cc-pvtz"
|
||||||
R_START=1.5
|
R_START=2.060
|
||||||
R_END=3.5
|
R_END=2.080
|
||||||
DR=0.1
|
DR=0.001
|
||||||
|
|
||||||
for R in $(seq $R_START $DR $R_END)
|
for R in $(seq $R_START $DR $R_END)
|
||||||
do
|
do
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine ACFDT(exchange_kernel,doXBS,dRPA,TDA,BSE,singlet_manifold,triplet_manifold, &
|
subroutine ACFDT(exchange_kernel,doXBS,dRPA,TDA,BSE,singlet_manifold,triplet_manifold,eta, &
|
||||||
nBas,nC,nO,nV,nR,nS,ERI,e,Omega,XpY,XmY,rho,EcAC)
|
nBas,nC,nO,nV,nR,nS,ERI,e,Omega,XpY,XmY,rho,EcAC)
|
||||||
|
|
||||||
! Compute the correlation energy via the adiabatic connection fluctuation dissipation theorem
|
! Compute the correlation energy via the adiabatic connection fluctuation dissipation theorem
|
||||||
@ -17,6 +17,7 @@ subroutine ACFDT(exchange_kernel,doXBS,dRPA,TDA,BSE,singlet_manifold,triplet_man
|
|||||||
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) :: e(nBas)
|
double precision,intent(in) :: e(nBas)
|
||||||
double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas)
|
||||||
@ -74,13 +75,13 @@ subroutine ACFDT(exchange_kernel,doXBS,dRPA,TDA,BSE,singlet_manifold,triplet_man
|
|||||||
|
|
||||||
if(doXBS) then
|
if(doXBS) then
|
||||||
|
|
||||||
call linear_response(ispin,dRPA,TDA,.false.,nBas,nC,nO,nV,nR,nS,lambda,e,ERI, &
|
call linear_response(ispin,dRPA,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS,lambda,e,ERI, &
|
||||||
rho(:,:,:,ispin),EcAC(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
rho(:,:,:,ispin),EcAC(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
call excitation_density(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rho(:,:,:,ispin))
|
call excitation_density(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rho(:,:,:,ispin))
|
||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
call linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,lambda,e,ERI, &
|
call linear_response(ispin,dRPA,TDA,BSE,eta,nBas,nC,nO,nV,nR,nS,lambda,e,ERI, &
|
||||||
rho(:,:,:,ispin),EcAC(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
rho(:,:,:,ispin),EcAC(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
|
|
||||||
call ACFDT_correlation_energy(ispin,exchange_kernel,nBas,nC,nO,nV,nR,nS,ERI,XpY(:,:,ispin),XmY(:,:,ispin),Ec(iAC,ispin))
|
call ACFDT_correlation_energy(ispin,exchange_kernel,nBas,nC,nO,nV,nR,nS,ERI,XpY(:,:,ispin),XmY(:,:,ispin),Ec(iAC,ispin))
|
||||||
@ -119,20 +120,20 @@ subroutine ACFDT(exchange_kernel,doXBS,dRPA,TDA,BSE,singlet_manifold,triplet_man
|
|||||||
|
|
||||||
lambda = rAC(iAC)
|
lambda = rAC(iAC)
|
||||||
|
|
||||||
if(doXBS) then
|
! if(doXBS) then
|
||||||
|
|
||||||
call linear_response(ispin,dRPA,TDA,.false.,nBas,nC,nO,nV,nR,nS,lambda,e,ERI, &
|
! call linear_response(ispin,dRPA,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS,lambda,e,ERI, &
|
||||||
rho(:,:,:,ispin),EcAC(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
! rho(:,:,:,ispin),EcAC(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
call excitation_density(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rho(:,:,:,ispin))
|
! call excitation_density(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rho(:,:,:,ispin))
|
||||||
|
|
||||||
end if
|
! end if
|
||||||
|
|
||||||
call linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,lambda,e,ERI, &
|
! call linear_response(ispin,dRPA,TDA,BSE,eta,nBas,nC,nO,nV,nR,nS,lambda,e,ERI, &
|
||||||
rho(:,:,:,ispin),EcAC(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
! rho(:,:,:,ispin),EcAC(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
|
|
||||||
call ACFDT_correlation_energy(ispin,exchange_kernel,nBas,nC,nO,nV,nR,nS,ERI,XpY(:,:,ispin),XmY(:,:,ispin),Ec(iAC,ispin))
|
! call ACFDT_correlation_energy(ispin,exchange_kernel,nBas,nC,nO,nV,nR,nS,ERI,XpY(:,:,ispin),XmY(:,:,ispin),Ec(iAC,ispin))
|
||||||
|
|
||||||
write(*,'(2X,F15.6,1X,F30.15,1X,F30.15)') lambda,EcAC(ispin),Ec(iAC,ispin)
|
! write(*,'(2X,F15.6,1X,F30.15,1X,F30.15)') lambda,EcAC(ispin),Ec(iAC,ispin)
|
||||||
|
|
||||||
end do
|
end do
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine Bethe_Salpeter(TDA,singlet_manifold,triplet_manifold, &
|
subroutine Bethe_Salpeter(TDA,singlet_manifold,triplet_manifold,eta, &
|
||||||
nBas,nC,nO,nV,nR,nS,ERI,eW,eGW,Omega,XpY,XmY,rho,EcRPA,EcBSE)
|
nBas,nC,nO,nV,nR,nS,ERI,eW,eGW,Omega,XpY,XmY,rho,EcRPA,EcBSE)
|
||||||
|
|
||||||
! Compute the Bethe-Salpeter excitation energies
|
! Compute the Bethe-Salpeter excitation energies
|
||||||
@ -12,6 +12,7 @@ subroutine Bethe_Salpeter(TDA,singlet_manifold,triplet_manifold, &
|
|||||||
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) :: eW(nBas)
|
double precision,intent(in) :: eW(nBas)
|
||||||
double precision,intent(in) :: eGW(nBas)
|
double precision,intent(in) :: eGW(nBas)
|
||||||
@ -38,11 +39,11 @@ subroutine Bethe_Salpeter(TDA,singlet_manifold,triplet_manifold, &
|
|||||||
ispin = 1
|
ispin = 1
|
||||||
EcBSE(ispin) = 0d0
|
EcBSE(ispin) = 0d0
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA,.false.,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI, &
|
call linear_response(ispin,.true.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI, &
|
||||||
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
call excitation_density(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rho(:,:,:,ispin))
|
call excitation_density(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rho(:,:,:,ispin))
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA,.true.,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI, &
|
call linear_response(ispin,.true.,TDA,.true.,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI, &
|
||||||
rho(:,:,:,ispin),EcBSE(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
rho(:,:,:,ispin),EcBSE(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
call print_excitation('BSE ',ispin,nS,Omega(:,ispin))
|
call print_excitation('BSE ',ispin,nS,Omega(:,ispin))
|
||||||
|
|
||||||
@ -55,11 +56,11 @@ subroutine Bethe_Salpeter(TDA,singlet_manifold,triplet_manifold, &
|
|||||||
ispin = 2
|
ispin = 2
|
||||||
EcBSE(ispin) = 0d0
|
EcBSE(ispin) = 0d0
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA,.false.,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI, &
|
call linear_response(ispin,.true.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI, &
|
||||||
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
call excitation_density(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rho(:,:,:,ispin))
|
call excitation_density(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rho(:,:,:,ispin))
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA,.true.,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI, &
|
call linear_response(ispin,.true.,TDA,.true.,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI, &
|
||||||
rho(:,:,:,ispin),EcBSE(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
rho(:,:,:,ispin),EcBSE(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
call print_excitation('BSE ',ispin,nS,Omega(:,ispin))
|
call print_excitation('BSE ',ispin,nS,Omega(:,ispin))
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine Bethe_Salpeter_A_matrix(nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,A_lr)
|
subroutine Bethe_Salpeter_A_matrix(eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,A_lr)
|
||||||
|
|
||||||
! Compute the extra term for Bethe-Salpeter equation for linear response
|
! Compute the extra term for Bethe-Salpeter equation for linear response
|
||||||
|
|
||||||
@ -8,6 +8,7 @@ subroutine Bethe_Salpeter_A_matrix(nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,A_lr
|
|||||||
! Input variables
|
! Input variables
|
||||||
|
|
||||||
integer,intent(in) :: nBas,nC,nO,nV,nR,nS
|
integer,intent(in) :: nBas,nC,nO,nV,nR,nS
|
||||||
|
double precision,intent(in) :: eta
|
||||||
double precision,intent(in) :: lambda
|
double precision,intent(in) :: lambda
|
||||||
double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: Omega(nS)
|
double precision,intent(in) :: Omega(nS)
|
||||||
@ -16,6 +17,7 @@ subroutine Bethe_Salpeter_A_matrix(nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,A_lr
|
|||||||
! Local variables
|
! Local variables
|
||||||
|
|
||||||
double precision :: chi
|
double precision :: chi
|
||||||
|
double precision :: eps
|
||||||
integer :: i,j,a,b,ia,jb,kc
|
integer :: i,j,a,b,ia,jb,kc
|
||||||
|
|
||||||
! Output variables
|
! Output variables
|
||||||
@ -33,7 +35,8 @@ subroutine Bethe_Salpeter_A_matrix(nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,A_lr
|
|||||||
|
|
||||||
chi = 0d0
|
chi = 0d0
|
||||||
do kc=1,nS
|
do kc=1,nS
|
||||||
chi = chi + rho(i,j,kc)*rho(a,b,kc)/Omega(kc)
|
eps = Omega(kc)**2 + eta**2
|
||||||
|
chi = chi + rho(i,j,kc)*rho(a,b,kc)*Omega(kc)/eps
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
A_lr(ia,jb) = A_lr(ia,jb) - lambda*ERI(i,a,j,b) + 4d0*lambda*chi
|
A_lr(ia,jb) = A_lr(ia,jb) - lambda*ERI(i,a,j,b) + 4d0*lambda*chi
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine Bethe_Salpeter_B_matrix(nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,B_lr)
|
subroutine Bethe_Salpeter_B_matrix(eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,B_lr)
|
||||||
|
|
||||||
! Compute the extra term for Bethe-Salpeter equation for linear response
|
! Compute the extra term for Bethe-Salpeter equation for linear response
|
||||||
|
|
||||||
@ -8,6 +8,7 @@ subroutine Bethe_Salpeter_B_matrix(nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,B_lr
|
|||||||
! Input variables
|
! Input variables
|
||||||
|
|
||||||
integer,intent(in) :: nBas,nC,nO,nV,nR,nS
|
integer,intent(in) :: nBas,nC,nO,nV,nR,nS
|
||||||
|
double precision,intent(in) :: eta
|
||||||
double precision,intent(in) :: lambda
|
double precision,intent(in) :: lambda
|
||||||
double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: Omega(nS)
|
double precision,intent(in) :: Omega(nS)
|
||||||
@ -16,6 +17,7 @@ subroutine Bethe_Salpeter_B_matrix(nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,B_lr
|
|||||||
! Local variables
|
! Local variables
|
||||||
|
|
||||||
double precision :: chi
|
double precision :: chi
|
||||||
|
double precision :: eps
|
||||||
integer :: i,j,a,b,ia,jb,kc
|
integer :: i,j,a,b,ia,jb,kc
|
||||||
|
|
||||||
! Output variables
|
! Output variables
|
||||||
@ -33,7 +35,8 @@ subroutine Bethe_Salpeter_B_matrix(nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,B_lr
|
|||||||
|
|
||||||
chi = 0d0
|
chi = 0d0
|
||||||
do kc=1,nS
|
do kc=1,nS
|
||||||
chi = chi + rho(i,b,kc)*rho(a,j,kc)/Omega(kc)
|
eps = Omega(kc)**2 + eta**2
|
||||||
|
chi = chi + rho(i,b,kc)*rho(a,j,kc)*Omega(kc)/eps
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
B_lr(ia,jb) = B_lr(ia,jb) - lambda*ERI(i,a,b,j) + 4d0*lambda*chi
|
B_lr(ia,jb) = B_lr(ia,jb) - lambda*ERI(i,a,b,j) + 4d0*lambda*chi
|
||||||
|
@ -78,7 +78,7 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,SOSEX,BSE,TDA,singlet_manif
|
|||||||
|
|
||||||
! Compute linear response
|
! Compute linear response
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA,.false.,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI, &
|
call linear_response(ispin,.true.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI, &
|
||||||
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
|
|
||||||
! Compute correlation part of the self-energy
|
! Compute correlation part of the self-energy
|
||||||
@ -106,15 +106,15 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,SOSEX,BSE,TDA,singlet_manif
|
|||||||
|
|
||||||
! Compute the RPA correlation energy
|
! Compute the RPA correlation energy
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA,.false.,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI, &
|
call linear_response(ispin,.true.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI, &
|
||||||
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA@G0W0 correlation energy (singlet) =',EcRPA(1)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA@G0W0 correlation energy (singlet) =',EcRPA(1)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA@G0W0 correlation energy (triplet) =',EcRPA(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA@G0W0 correlation energy (triplet) =',EcRPA(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA@G0W0 correlation energy =',EcRPA(1) + EcRPA(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA@G0W0 correlation energy =',EcRPA(1) + EcRPA(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA@G0W0 total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA@G0W0 total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
@ -126,7 +126,7 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,SOSEX,BSE,TDA,singlet_manif
|
|||||||
|
|
||||||
if(BSE) then
|
if(BSE) then
|
||||||
|
|
||||||
call Bethe_Salpeter(TDA,singlet_manifold,triplet_manifold, &
|
call Bethe_Salpeter(TDA,singlet_manifold,triplet_manifold,eta, &
|
||||||
nBas,nC,nO,nV,nR,nS,ERI,eHF,eGW,Omega,XpY,XmY,rho,EcRPA,EcBSE)
|
nBas,nC,nO,nV,nR,nS,ERI,eHF,eGW,Omega,XpY,XmY,rho,EcRPA,EcBSE)
|
||||||
|
|
||||||
if(exchange_kernel) then
|
if(exchange_kernel) then
|
||||||
@ -138,10 +138,10 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,SOSEX,BSE,TDA,singlet_manif
|
|||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@BSE@G0W0 correlation energy (singlet) =',EcBSE(1)
|
write(*,'(2X,A50,F20.10)') 'Tr@BSE@G0W0 correlation energy (singlet) =',EcBSE(1)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@BSE@G0W0 correlation energy (triplet) =',EcBSE(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@BSE@G0W0 correlation energy (triplet) =',EcBSE(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@BSE@G0W0 correlation energy =',EcBSE(1) + EcBSE(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@BSE@G0W0 correlation energy =',EcBSE(1) + EcBSE(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@BSE@G0W0 total energy =',ENuc + ERHF + EcBSE(1) + EcBSE(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@BSE@G0W0 total energy =',ENuc + ERHF + EcBSE(1) + EcBSE(2)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
@ -161,7 +161,7 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,SOSEX,BSE,TDA,singlet_manif
|
|||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
call ACFDT(exchange_kernel,doXBS,.true.,TDA,BSE,singlet_manifold,triplet_manifold, &
|
call ACFDT(exchange_kernel,doXBS,.true.,TDA,BSE,singlet_manifold,triplet_manifold,eta, &
|
||||||
nBas,nC,nO,nV,nR,nS,ERI,eGW,Omega,XpY,XmY,rho,EcAC)
|
nBas,nC,nO,nV,nR,nS,ERI,eGW,Omega,XpY,XmY,rho,EcAC)
|
||||||
|
|
||||||
if(exchange_kernel) then
|
if(exchange_kernel) then
|
||||||
@ -173,10 +173,10 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,SOSEX,BSE,TDA,singlet_manif
|
|||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@BSE@G0W0 correlation energy (singlet) =',EcAC(1)
|
write(*,'(2X,A50,F20.10)') 'AC@BSE@G0W0 correlation energy (singlet) =',EcAC(1)
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@BSE@G0W0 correlation energy (triplet) =',EcAC(2)
|
write(*,'(2X,A50,F20.10)') 'AC@BSE@G0W0 correlation energy (triplet) =',EcAC(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@BSE@G0W0 correlation energy =',EcAC(1) + EcAC(2)
|
write(*,'(2X,A50,F20.10)') 'AC@BSE@G0W0 correlation energy =',EcAC(1) + EcAC(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@BSE@G0W0 total energy =',ENuc + ERHF + EcAC(1) + EcAC(2)
|
write(*,'(2X,A50,F20.10)') 'AC@BSE@G0W0 total energy =',ENuc + ERHF + EcAC(1) + EcAC(2)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
|
@ -442,7 +442,8 @@ program QuAcK
|
|||||||
if(doRPA) then
|
if(doRPA) then
|
||||||
|
|
||||||
call cpu_time(start_RPA)
|
call cpu_time(start_RPA)
|
||||||
call RPA(doACFDT,exchange_kernel,singlet_manifold,triplet_manifold,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_MO_basis,eHF)
|
call RPA(doACFDT,exchange_kernel,singlet_manifold,triplet_manifold,eta, &
|
||||||
|
nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_MO_basis,eHF)
|
||||||
call cpu_time(end_RPA)
|
call cpu_time(end_RPA)
|
||||||
|
|
||||||
t_RPA = end_RPA - start_RPA
|
t_RPA = end_RPA - start_RPA
|
||||||
@ -458,7 +459,8 @@ program QuAcK
|
|||||||
if(doRPAx) then
|
if(doRPAx) then
|
||||||
|
|
||||||
call cpu_time(start_RPAx)
|
call cpu_time(start_RPAx)
|
||||||
call RPAx(doACFDT,exchange_kernel,singlet_manifold,triplet_manifold,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_MO_basis,eHF)
|
call RPAx(doACFDT,exchange_kernel,singlet_manifold,triplet_manifold,eta, &
|
||||||
|
nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_MO_basis,eHF)
|
||||||
call cpu_time(end_RPAx)
|
call cpu_time(end_RPAx)
|
||||||
|
|
||||||
t_RPAx = end_RPAx - start_RPAx
|
t_RPAx = end_RPAx - start_RPAx
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
subroutine RPA(doACFDT,exchange_kernel,singlet_manifold,triplet_manifold,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI,e)
|
subroutine RPA(doACFDT,exchange_kernel,singlet_manifold,triplet_manifold,eta, &
|
||||||
|
nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI,e)
|
||||||
|
|
||||||
! Perform a direct random phase approximation calculation
|
! Perform a direct random phase approximation calculation
|
||||||
|
|
||||||
@ -12,6 +13,7 @@ subroutine RPA(doACFDT,exchange_kernel,singlet_manifold,triplet_manifold,nBas,nC
|
|||||||
logical,intent(in) :: exchange_kernel
|
logical,intent(in) :: exchange_kernel
|
||||||
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
|
integer,intent(in) :: nBas
|
||||||
integer,intent(in) :: nC
|
integer,intent(in) :: nC
|
||||||
integer,intent(in) :: nO
|
integer,intent(in) :: nO
|
||||||
@ -57,7 +59,7 @@ subroutine RPA(doACFDT,exchange_kernel,singlet_manifold,triplet_manifold,nBas,nC
|
|||||||
|
|
||||||
ispin = 1
|
ispin = 1
|
||||||
|
|
||||||
call linear_response(ispin,.true.,.false.,.false.,nBas,nC,nO,nV,nR,nS,1d0,e,ERI,rho, &
|
call linear_response(ispin,.true.,.false.,.false.,eta,nBas,nC,nO,nV,nR,nS,1d0,e,ERI,rho, &
|
||||||
EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
call print_excitation('RPA ',ispin,nS,Omega(:,ispin))
|
call print_excitation('RPA ',ispin,nS,Omega(:,ispin))
|
||||||
|
|
||||||
@ -69,7 +71,7 @@ subroutine RPA(doACFDT,exchange_kernel,singlet_manifold,triplet_manifold,nBas,nC
|
|||||||
|
|
||||||
ispin = 2
|
ispin = 2
|
||||||
|
|
||||||
call linear_response(ispin,.true.,.false.,.false.,nBas,nC,nO,nV,nR,nS,1d0,e,ERI,rho, &
|
call linear_response(ispin,.true.,.false.,.false.,eta,nBas,nC,nO,nV,nR,nS,1d0,e,ERI,rho, &
|
||||||
EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
call print_excitation('RPA ',ispin,nS,Omega(:,ispin))
|
call print_excitation('RPA ',ispin,nS,Omega(:,ispin))
|
||||||
|
|
||||||
@ -84,10 +86,10 @@ subroutine RPA(doACFDT,exchange_kernel,singlet_manifold,triplet_manifold,nBas,nC
|
|||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA correlation energy (singlet) =',EcRPA(1)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA correlation energy (singlet) =',EcRPA(1)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA correlation energy (triplet) =',EcRPA(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA correlation energy (triplet) =',EcRPA(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA correlation energy =',EcRPA(1) + EcRPA(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA correlation energy =',EcRPA(1) + EcRPA(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
@ -100,7 +102,7 @@ subroutine RPA(doACFDT,exchange_kernel,singlet_manifold,triplet_manifold,nBas,nC
|
|||||||
write(*,*) '------------------------------------------------------'
|
write(*,*) '------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
call ACFDT(exchange_kernel,.false.,.true.,.false.,.false.,singlet_manifold,triplet_manifold, &
|
call ACFDT(exchange_kernel,.false.,.true.,.false.,.false.,singlet_manifold,triplet_manifold,eta, &
|
||||||
nBas,nC,nO,nV,nR,nS,ERI,e,Omega,XpY,XmY,rho,EcAC)
|
nBas,nC,nO,nV,nR,nS,ERI,e,Omega,XpY,XmY,rho,EcAC)
|
||||||
|
|
||||||
if(exchange_kernel) then
|
if(exchange_kernel) then
|
||||||
@ -112,10 +114,10 @@ subroutine RPA(doACFDT,exchange_kernel,singlet_manifold,triplet_manifold,nBas,nC
|
|||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@RPA correlation energy (singlet) =',EcAC(1)
|
write(*,'(2X,A50,F20.10)') 'AC@RPA correlation energy (singlet) =',EcAC(1)
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@RPA correlation energy (triplet) =',EcAC(2)
|
write(*,'(2X,A50,F20.10)') 'AC@RPA correlation energy (triplet) =',EcAC(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@RPA correlation energy =',EcAC(1) + EcAC(2)
|
write(*,'(2X,A50,F20.10)') 'AC@RPA correlation energy =',EcAC(1) + EcAC(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@RPA total energy =',ENuc + ERHF + EcAC(1) + EcAC(2)
|
write(*,'(2X,A50,F20.10)') 'AC@RPA total energy =',ENuc + ERHF + EcAC(1) + EcAC(2)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ subroutine evGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,SOSE
|
|||||||
|
|
||||||
if(.not. GW0 .or. nSCF == 0) then
|
if(.not. GW0 .or. nSCF == 0) then
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA,.false.,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI, &
|
call linear_response(ispin,.true.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI, &
|
||||||
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
|
|
||||||
endif
|
endif
|
||||||
@ -217,10 +217,10 @@ subroutine evGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,SOSE
|
|||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA@evGW correlation energy (singlet) =',EcRPA(1)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA@evGW correlation energy (singlet) =',EcRPA(1)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA@evGW correlation energy (triplet) =',EcRPA(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA@evGW correlation energy (triplet) =',EcRPA(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA@evGW correlation energy =',EcRPA(1) + EcRPA(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA@evGW correlation energy =',EcRPA(1) + EcRPA(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA@evGW total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA@evGW total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
@ -228,15 +228,15 @@ subroutine evGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,SOSE
|
|||||||
|
|
||||||
if(BSE) then
|
if(BSE) then
|
||||||
|
|
||||||
call Bethe_Salpeter(TDA,singlet_manifold,triplet_manifold, &
|
call Bethe_Salpeter(TDA,singlet_manifold,triplet_manifold,eta, &
|
||||||
nBas,nC,nO,nV,nR,nS,ERI,eGW,eGW,Omega,XpY,XmY,rho,EcRPA,EcBSE)
|
nBas,nC,nO,nV,nR,nS,ERI,eGW,eGW,Omega,XpY,XmY,rho,EcRPA,EcBSE)
|
||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@BSE@evGW correlation energy (singlet) =',EcBSE(1)
|
write(*,'(2X,A50,F20.10)') 'Tr@BSE@evGW correlation energy (singlet) =',EcBSE(1)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@BSE@evGW correlation energy (triplet) =',EcBSE(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@BSE@evGW correlation energy (triplet) =',EcBSE(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@BSE@evGW correlation energy =',EcBSE(1) + EcBSE(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@BSE@evGW correlation energy =',EcBSE(1) + EcBSE(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@BSE@evGW total energy =',ENuc + ERHF + EcBSE(1) + EcBSE(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@BSE@evGW total energy =',ENuc + ERHF + EcBSE(1) + EcBSE(2)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
@ -256,15 +256,15 @@ subroutine evGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,SOSE
|
|||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
call ACFDT(exchange_kernel,doXBS,.true.,TDA,BSE,singlet_manifold,triplet_manifold, &
|
call ACFDT(exchange_kernel,doXBS,.true.,TDA,BSE,singlet_manifold,triplet_manifold,eta, &
|
||||||
nBas,nC,nO,nV,nR,nS,ERI,eGW,Omega,XpY,XmY,rho,EcAC)
|
nBas,nC,nO,nV,nR,nS,ERI,eGW,Omega,XpY,XmY,rho,EcAC)
|
||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@BSE@evGW correlation energy (singlet) =',EcAC(1)
|
write(*,'(2X,A50,F20.10)') 'AC@BSE@evGW correlation energy (singlet) =',EcAC(1)
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@BSE@evGW correlation energy (triplet) =',EcAC(2)
|
write(*,'(2X,A50,F20.10)') 'AC@BSE@evGW correlation energy (triplet) =',EcAC(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@BSE@evGW correlation energy =',EcAC(1) + EcAC(2)
|
write(*,'(2X,A50,F20.10)') 'AC@BSE@evGW correlation energy =',EcAC(1) + EcAC(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@BSE@evGW total energy =',ENuc + ERHF + EcAC(1) + EcAC(2)
|
write(*,'(2X,A50,F20.10)') 'AC@BSE@evGW total energy =',ENuc + ERHF + EcAC(1) + EcAC(2)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,lambda,e,ERI,rho,EcRPA,Omega,XpY,XmY)
|
subroutine linear_response(ispin,dRPA,TDA,BSE,eta,nBas,nC,nO,nV,nR,nS,lambda,e,ERI,rho,EcRPA,Omega,XpY,XmY)
|
||||||
|
|
||||||
! Compute linear response
|
! Compute linear response
|
||||||
|
|
||||||
@ -8,6 +8,7 @@ subroutine linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,lambda,e,ERI,r
|
|||||||
! Input variables
|
! Input variables
|
||||||
|
|
||||||
logical,intent(in) :: dRPA,TDA,BSE
|
logical,intent(in) :: dRPA,TDA,BSE
|
||||||
|
double precision,intent(in) :: eta
|
||||||
integer,intent(in) :: ispin,nBas,nC,nO,nV,nR,nS
|
integer,intent(in) :: ispin,nBas,nC,nO,nV,nR,nS
|
||||||
double precision,intent(in) :: lambda
|
double precision,intent(in) :: lambda
|
||||||
double precision,intent(in) :: e(nBas)
|
double precision,intent(in) :: e(nBas)
|
||||||
@ -40,7 +41,7 @@ subroutine linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,lambda,e,ERI,r
|
|||||||
! Build A and B matrices
|
! Build A and B matrices
|
||||||
|
|
||||||
call linear_response_A_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nS,lambda,e,ERI,A)
|
call linear_response_A_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nS,lambda,e,ERI,A)
|
||||||
if(BSE) call Bethe_Salpeter_A_matrix(nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,A)
|
if(BSE) call Bethe_Salpeter_A_matrix(eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,A)
|
||||||
|
|
||||||
! Tamm-Dancoff approximation
|
! Tamm-Dancoff approximation
|
||||||
|
|
||||||
@ -48,7 +49,7 @@ subroutine linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,lambda,e,ERI,r
|
|||||||
if(.not. TDA) then
|
if(.not. TDA) then
|
||||||
|
|
||||||
call linear_response_B_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nS,lambda,ERI,B)
|
call linear_response_B_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nS,lambda,ERI,B)
|
||||||
if(BSE) call Bethe_Salpeter_B_matrix(nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,B)
|
if(BSE) call Bethe_Salpeter_B_matrix(eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,B)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ subroutine qsGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,
|
|||||||
|
|
||||||
if(.not. GW0 .or. nSCF == 0) then
|
if(.not. GW0 .or. nSCF == 0) then
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA,.false.,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI_MO_basis, &
|
call linear_response(ispin,.true.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI_MO_basis, &
|
||||||
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
|
|
||||||
endif
|
endif
|
||||||
@ -248,10 +248,10 @@ subroutine qsGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,
|
|||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA@qsGW correlation energy (singlet) =',EcRPA(1)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA@qsGW correlation energy (singlet) =',EcRPA(1)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA@qsGW correlation energy (triplet) =',EcRPA(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA@qsGW correlation energy (triplet) =',EcRPA(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA@qsGW correlation energy =',EcRPA(1) + EcRPA(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA@qsGW correlation energy =',EcRPA(1) + EcRPA(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@RPA@qsGW total energy =',ENuc + EqsGW + EcRPA(1) + EcRPA(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@RPA@qsGW total energy =',ENuc + EqsGW + EcRPA(1) + EcRPA(2)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
@ -259,15 +259,15 @@ subroutine qsGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,
|
|||||||
|
|
||||||
if(BSE) then
|
if(BSE) then
|
||||||
|
|
||||||
call Bethe_Salpeter(TDA,singlet_manifold,triplet_manifold, &
|
call Bethe_Salpeter(TDA,singlet_manifold,triplet_manifold,eta, &
|
||||||
nBas,nC,nO,nV,nR,nS,ERI_MO_basis,eGW,eGW,Omega,XpY,XmY,rho,EcRPA,EcBSE)
|
nBas,nC,nO,nV,nR,nS,ERI_MO_basis,eGW,eGW,Omega,XpY,XmY,rho,EcRPA,EcBSE)
|
||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@BSE@qsGW correlation energy (singlet) =',EcBSE(1)
|
write(*,'(2X,A50,F20.10)') 'Tr@BSE@qsGW correlation energy (singlet) =',EcBSE(1)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@BSE@qsGW correlation energy (triplet) =',EcBSE(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@BSE@qsGW correlation energy (triplet) =',EcBSE(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@BSE@qsGW correlation energy =',EcBSE(1) + EcBSE(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@BSE@qsGW correlation energy =',EcBSE(1) + EcBSE(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'Tr@BSE@qsGW total energy =',ENuc + EqsGW + EcBSE(1) + EcBSE(2)
|
write(*,'(2X,A50,F20.10)') 'Tr@BSE@qsGW total energy =',ENuc + EqsGW + EcBSE(1) + EcBSE(2)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
@ -287,15 +287,15 @@ subroutine qsGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,
|
|||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
call ACFDT(exchange_kernel,doXBS,.true.,TDA,BSE,singlet_manifold,triplet_manifold, &
|
call ACFDT(exchange_kernel,doXBS,.true.,TDA,BSE,singlet_manifold,triplet_manifold,eta, &
|
||||||
nBas,nC,nO,nV,nR,nS,ERI_MO_basis,eGW,Omega,XpY,XmY,rho,EcAC)
|
nBas,nC,nO,nV,nR,nS,ERI_MO_basis,eGW,Omega,XpY,XmY,rho,EcAC)
|
||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@BSE@qsGW correlation energy (singlet) =',EcAC(1)
|
write(*,'(2X,A50,F20.10)') 'AC@BSE@qsGW correlation energy (singlet) =',EcAC(1)
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@BSE@qsGW correlation energy (triplet) =',EcAC(2)
|
write(*,'(2X,A50,F20.10)') 'AC@BSE@qsGW correlation energy (triplet) =',EcAC(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@BSE@qsGW correlation energy =',EcAC(1) + EcAC(2)
|
write(*,'(2X,A50,F20.10)') 'AC@BSE@qsGW correlation energy =',EcAC(1) + EcAC(2)
|
||||||
write(*,'(2X,A50,F15.6)') 'AC@BSE@qsGW total energy =',ENuc + EqsGW + EcAC(1) + EcAC(2)
|
write(*,'(2X,A50,F20.10)') 'AC@BSE@qsGW total energy =',ENuc + EqsGW + EcAC(1) + EcAC(2)
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user