mirror of
https://github.com/pfloos/quack
synced 2024-08-25 05:31:47 +02:00
renaming LR routines and fix bug in Z GW
This commit is contained in:
parent
d697fe9b9d
commit
d207fb5173
@ -11,9 +11,9 @@
|
|||||||
# RPA* RPAx* crRPA ppRPA
|
# RPA* RPAx* crRPA ppRPA
|
||||||
F F F F
|
F F F F
|
||||||
# G0F2* evGF2* qsGF2* G0F3 evGF3
|
# G0F2* evGF2* qsGF2* G0F3 evGF3
|
||||||
F F F F F
|
T F F F F
|
||||||
# G0W0* evGW* qsGW* SRG-qsGW ufG0W0 ufGW
|
# G0W0* evGW* qsGW* SRG-qsGW ufG0W0 ufGW
|
||||||
T F F F F F
|
F F F F F F
|
||||||
# G0T0pp evGTpp qsGTpp G0T0eh evGTeh qsGTeh
|
# G0T0pp evGTpp qsGTpp G0T0eh evGTeh qsGTeh
|
||||||
F F F F F F
|
F F F T F F
|
||||||
# * unrestricted version available
|
# * unrestricted version available
|
||||||
|
@ -11,8 +11,8 @@
|
|||||||
# GW: maxSCF thresh DIIS n_diis lin eta COHSEX TDA_W reg
|
# GW: maxSCF thresh DIIS n_diis lin eta COHSEX TDA_W reg
|
||||||
256 0.00001 T 5 T 0.0 F F F
|
256 0.00001 T 5 T 0.0 F F F
|
||||||
# GT: maxSCF thresh DIIS n_diis lin eta TDA_T reg
|
# GT: maxSCF thresh DIIS n_diis lin eta TDA_T reg
|
||||||
256 0.00001 T 5 T 0.1 F F
|
256 0.00001 T 5 T 0.0 F F
|
||||||
# ACFDT: AC Kx XBS
|
# ACFDT: AC Kx XBS
|
||||||
F T T
|
F T T
|
||||||
# BSE: BSE dBSE dTDA evDyn ppBSE BSE2
|
# BSE: BSE dBSE dTDA evDyn ppBSE BSE2
|
||||||
T T T F F F
|
F T T F F F
|
||||||
|
@ -52,7 +52,7 @@ subroutine static_screening(nBas,nC,nO,nV,nR,eW,ERI,dbERI)
|
|||||||
eta = 0d0
|
eta = 0d0
|
||||||
TDA = .false.
|
TDA = .false.
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI,EcRPA,Om,XpY,XmY)
|
call phLR(ispin,.true.,TDA,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI,EcRPA,Om,XpY,XmY)
|
||||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY,rho)
|
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY,rho)
|
||||||
|
|
||||||
do p=1,nBas
|
do p=1,nBas
|
||||||
@ -71,4 +71,4 @@ subroutine static_screening(nBas,nC,nO,nV,nR,eW,ERI,dbERI)
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
end subroutine static_screening
|
end subroutine
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine Bethe_Salpeter_Tmatrix_so(eta,nBas,nC,nO,nV,nR,nS,nOO,nVV,Omega1,X1,Y1,Omega2,X2,Y2,rho1,rho2, &
|
subroutine Bethe_Salpeter_Tmatrix_so(eta,nBas,nC,nO,nV,nR,nS,nOO,nVV,Om1,X1,Y1,Om2,X2,Y2,rho1,rho2, &
|
||||||
ERI,eT,eGT,EcBSE)
|
ERI,eT,eGT,EcBSE)
|
||||||
|
|
||||||
! Compute the Bethe-Salpeter excitation energies with the T-matrix kernel
|
! Compute the Bethe-Salpeter excitation energies with the T-matrix kernel
|
||||||
@ -23,10 +23,10 @@ subroutine Bethe_Salpeter_Tmatrix_so(eta,nBas,nC,nO,nV,nR,nS,nOO,nVV,Omega1,X1,Y
|
|||||||
double precision,intent(in) :: eGT(nBas)
|
double precision,intent(in) :: eGT(nBas)
|
||||||
double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas)
|
||||||
|
|
||||||
double precision,intent(in) :: Omega1(nVV)
|
double precision,intent(in) :: Om1(nVV)
|
||||||
double precision,intent(in) :: X1(nVV,nVV)
|
double precision,intent(in) :: X1(nVV,nVV)
|
||||||
double precision,intent(in) :: Y1(nOO,nVV)
|
double precision,intent(in) :: Y1(nOO,nVV)
|
||||||
double precision,intent(in) :: Omega2(nOO)
|
double precision,intent(in) :: Om2(nOO)
|
||||||
double precision,intent(in) :: X2(nVV,nOO)
|
double precision,intent(in) :: X2(nVV,nOO)
|
||||||
double precision,intent(in) :: Y2(nOO,nOO)
|
double precision,intent(in) :: Y2(nOO,nOO)
|
||||||
double precision,intent(in) :: rho1(nBas,nBas,nVV)
|
double precision,intent(in) :: rho1(nBas,nBas,nVV)
|
||||||
@ -56,11 +56,10 @@ subroutine Bethe_Salpeter_Tmatrix_so(eta,nBas,nC,nO,nV,nR,nS,nOO,nVV,Omega1,X1,Y
|
|||||||
|
|
||||||
ispin = 4
|
ispin = 4
|
||||||
|
|
||||||
call linear_response_pp(ispin,.false.,nBas,nC,nO,nV,nR,nOO,nVV,1d0,eT,ERI, &
|
call ppLR(ispin,.false.,nBas,nC,nO,nV,nR,nOO,nVV,1d0,eT,ERI,Om1,X1,Y1,Om2,X2,Y2,EcRPA)
|
||||||
Omega1,X1,Y1,Omega2,X2,Y2,EcRPA)
|
|
||||||
|
|
||||||
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOO,nVV,1d0,Omega1,rho1,Omega2,rho2,TA)
|
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOO,nVV,1d0,Om1,rho1,Om2,rho2,TA)
|
||||||
call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOO,nVV,1d0,Omega1,rho1,Omega2,rho2,TB)
|
call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOO,nVV,1d0,Om1,rho1,Om2,rho2,TB)
|
||||||
|
|
||||||
!------------------!
|
!------------------!
|
||||||
! Singlet manifold !
|
! Singlet manifold !
|
||||||
@ -76,4 +75,4 @@ subroutine Bethe_Salpeter_Tmatrix_so(eta,nBas,nC,nO,nV,nR,nS,nOO,nVV,Omega1,X1,Y
|
|||||||
|
|
||||||
call print_excitation('BSE@GT ',ispin,nS,OmBSE)
|
call print_excitation('BSE@GT ',ispin,nS,OmBSE)
|
||||||
|
|
||||||
end subroutine Bethe_Salpeter_Tmatrix_so
|
end subroutine
|
||||||
|
@ -106,8 +106,7 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,BSE,BSE2,TDA_T,TDA,dBSE,dTDA,evD
|
|||||||
! Compute screening !
|
! Compute screening !
|
||||||
!-------------------!
|
!-------------------!
|
||||||
|
|
||||||
call linear_response(ispin,.false.,TDA_T,eta,nBas,nC,nO,nV,nR,nS,1d0, &
|
call phLR(ispin,.false.,TDA_T,eta,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI_MO,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
eHF,ERI_MO,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
|
|
||||||
if(print_W) call print_excitation('RPA@HF ',ispin,nS,OmRPA)
|
if(print_W) call print_excitation('RPA@HF ',ispin,nS,OmRPA)
|
||||||
|
|
||||||
@ -165,8 +164,7 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,BSE,BSE2,TDA_T,TDA,dBSE,dTDA,evD
|
|||||||
|
|
||||||
! Compute the RPA correlation energy
|
! Compute the RPA correlation energy
|
||||||
|
|
||||||
call linear_response(ispin,.false.,TDA_T,eta,nBas,nC,nO,nV,nR,nS,1d0,eGT,ERI_MO, &
|
call phLR(ispin,.false.,TDA_T,eta,nBas,nC,nO,nV,nR,nS,1d0,eGT,ERI_MO,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
|
|
||||||
!--------------!
|
!--------------!
|
||||||
! Dump results !
|
! Dump results !
|
||||||
|
@ -103,8 +103,7 @@ subroutine G0T0pp(doACFDT,exchange_kernel,doXBS,BSE,TDA_T,TDA,dBSE,dTDA,evDyn,pp
|
|||||||
|
|
||||||
! Compute linear response
|
! Compute linear response
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOab,nVVab,1d0,eHF,ERI_MO, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOab,nVVab,1d0,eHF,ERI_MO,Om1ab,X1ab,Y1ab,Om2ab,X2ab,Y2ab,EcRPA(ispin))
|
||||||
Om1ab,X1ab,Y1ab,Om2ab,X2ab,Y2ab,EcRPA(ispin))
|
|
||||||
|
|
||||||
call print_excitation('pp-RPA (N+2)',iblock,nVVab,Om1ab(:))
|
call print_excitation('pp-RPA (N+2)',iblock,nVVab,Om1ab(:))
|
||||||
call print_excitation('pp-RPA (N-2)',iblock,nOOab,Om2ab(:))
|
call print_excitation('pp-RPA (N-2)',iblock,nOOab,Om2ab(:))
|
||||||
@ -118,8 +117,7 @@ subroutine G0T0pp(doACFDT,exchange_kernel,doXBS,BSE,TDA_T,TDA,dBSE,dTDA,evDyn,pp
|
|||||||
|
|
||||||
! Compute linear response
|
! Compute linear response
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOaa,nVVaa,1d0,eHF,ERI_MO, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOaa,nVVaa,1d0,eHF,ERI_MO,Om1aa,X1aa,Y1aa,Om2aa,X2aa,Y2aa,EcRPA(ispin))
|
||||||
Om1aa,X1aa,Y1aa,Om2aa,X2aa,Y2aa,EcRPA(ispin))
|
|
||||||
|
|
||||||
call print_excitation('pp-RPA (N+2)',iblock,nVVaa,Om1aa(:))
|
call print_excitation('pp-RPA (N+2)',iblock,nVVaa,Om1aa(:))
|
||||||
call print_excitation('pp-RPA (N-2)',iblock,nOOaa,Om2aa(:))
|
call print_excitation('pp-RPA (N-2)',iblock,nOOaa,Om2aa(:))
|
||||||
@ -203,13 +201,11 @@ subroutine G0T0pp(doACFDT,exchange_kernel,doXBS,BSE,TDA_T,TDA,dBSE,dTDA,evDyn,pp
|
|||||||
ispin = 1
|
ispin = 1
|
||||||
iblock = 3
|
iblock = 3
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOab,nVVab,1d0,eGT,ERI_MO, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOab,nVVab,1d0,eGT,ERI_MO,Om1ab,X1ab,Y1ab,Om2ab,X2ab,Y2ab,EcRPA(ispin))
|
||||||
Om1ab,X1ab,Y1ab,Om2ab,X2ab,Y2ab,EcRPA(ispin))
|
|
||||||
ispin = 2
|
ispin = 2
|
||||||
iblock = 4
|
iblock = 4
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOaa,nVVaa,1d0,eGT,ERI_MO, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOaa,nVVaa,1d0,eGT,ERI_MO,Om1aa,X1aa,Y1aa,Om2aa,X2aa,Y2aa,EcRPA(ispin))
|
||||||
Om1aa,X1aa,Y1aa,Om2aa,X2aa,Y2aa,EcRPA(ispin))
|
|
||||||
|
|
||||||
EcRPA(1) = EcRPA(1) - EcRPA(2)
|
EcRPA(1) = EcRPA(1) - EcRPA(2)
|
||||||
EcRPA(2) = 3d0*EcRPA(2)
|
EcRPA(2) = 3d0*EcRPA(2)
|
||||||
|
@ -14,17 +14,21 @@ subroutine GTeh_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY,XmY,rhoL,rhoR)
|
|||||||
! Local variables
|
! Local variables
|
||||||
|
|
||||||
integer :: m,jb,p,q,j,b
|
integer :: m,jb,p,q,j,b
|
||||||
|
double precision :: X,Y
|
||||||
|
|
||||||
! Output variables
|
! Output variables
|
||||||
|
|
||||||
double precision,intent(out) :: rhoL(nBas,nBas,nS)
|
double precision,intent(out) :: rhoL(nBas,nBas,nS)
|
||||||
double precision,intent(out) :: rhoR(nBas,nBas,nS)
|
double precision,intent(out) :: rhoR(nBas,nBas,nS)
|
||||||
|
|
||||||
|
! Initialization
|
||||||
|
|
||||||
rhoL(:,:,:) = 0d0
|
rhoL(:,:,:) = 0d0
|
||||||
rhoR(:,:,:) = 0d0
|
rhoR(:,:,:) = 0d0
|
||||||
|
|
||||||
!$OMP PARALLEL &
|
!$OMP PARALLEL &
|
||||||
!$OMP SHARED(nC,nBas,nR,nO,nS,rhoL,rhoR,ERI,XpY,XmY) &
|
!$OMP SHARED(nC,nBas,nR,nO,nS,rhoL,rhoR,ERI,XpY,XmY) &
|
||||||
!$OMP PRIVATE(q,p,jb,m) &
|
!$OMP PRIVATE(q,p,jb,m,X,Y) &
|
||||||
!$OMP DEFAULT(NONE)
|
!$OMP DEFAULT(NONE)
|
||||||
!$OMP DO
|
!$OMP DO
|
||||||
do q=nC+1,nBas-nR
|
do q=nC+1,nBas-nR
|
||||||
@ -35,13 +39,12 @@ subroutine GTeh_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY,XmY,rhoL,rhoR)
|
|||||||
jb = jb + 1
|
jb = jb + 1
|
||||||
do m=1,nS
|
do m=1,nS
|
||||||
|
|
||||||
rhoL(p,q,m) = rhoL(p,q,m) &
|
X = 0.5d0*(XpY(m,jb) + XmY(m,jb))
|
||||||
+ ERI(p,j,b,q)*0.5d0*(XpY(m,jb) + XmY(m,jb)) &
|
Y = 0.5d0*(XpY(m,jb) - XmY(m,jb))
|
||||||
+ ERI(p,b,j,q)*0.5d0*(XpY(m,jb) - XmY(m,jb))
|
|
||||||
|
rhoL(p,q,m) = rhoL(p,q,m) + ERI(p,j,b,q)*X + ERI(p,b,j,q)*Y
|
||||||
|
rhoR(p,q,m) = rhoR(p,q,m) + (2d0*ERI(p,j,b,q) - ERI(p,j,q,b))*X + (2d0*ERI(p,b,j,q) - ERI(p,b,q,j))*Y
|
||||||
|
|
||||||
rhoR(p,q,m) = rhoR(p,q,m) &
|
|
||||||
+ (2d0*ERI(p,j,b,q) - ERI(p,j,q,b))*0.5d0*(XpY(m,jb) + XmY(m,jb)) &
|
|
||||||
+ (2d0*ERI(p,b,j,q) - ERI(p,b,q,j))*0.5d0*(XpY(m,jb) - XmY(m,jb))
|
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
@ -80,8 +80,7 @@ subroutine GTpp_phBSE(TDA_T,TDA,dBSE,dTDA,evDyn,singlet,triplet,eta,nBas,nC,nO,n
|
|||||||
ispin = 1
|
ispin = 1
|
||||||
iblock = 3
|
iblock = 3
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOab,nVVab,1d0,eT,ERI, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOab,nVVab,1d0,eT,ERI,Om1ab,X1ab,Y1ab,Om2ab,X2ab,Y2ab,EcRPA(ispin))
|
||||||
Om1ab,X1ab,Y1ab,Om2ab,X2ab,Y2ab,EcRPA(ispin))
|
|
||||||
|
|
||||||
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOOab,nVVab,1d0,Om1ab,rho1ab,Om2ab,rho2ab,TAab)
|
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOOab,nVVab,1d0,Om1ab,rho1ab,Om2ab,rho2ab,TAab)
|
||||||
if(.not.TDA) call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOOab,nVVab,1d0,Om1ab,rho1ab,Om2ab,rho2ab,TBab)
|
if(.not.TDA) call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOOab,nVVab,1d0,Om1ab,rho1ab,Om2ab,rho2ab,TBab)
|
||||||
@ -93,8 +92,7 @@ subroutine GTpp_phBSE(TDA_T,TDA,dBSE,dTDA,evDyn,singlet,triplet,eta,nBas,nC,nO,n
|
|||||||
ispin = 2
|
ispin = 2
|
||||||
iblock = 4
|
iblock = 4
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOaa,nVVaa,1d0,eT,ERI, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOaa,nVVaa,1d0,eT,ERI,Om1aa,X1aa,Y1aa,Om2aa,X2aa,Y2aa,EcRPA(ispin))
|
||||||
Om1aa,X1aa,Y1aa,Om2aa,X2aa,Y2aa,EcRPA(ispin))
|
|
||||||
|
|
||||||
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOOaa,nVVaa,1d0,Om1aa,rho1aa,Om2aa,rho2aa,TAaa)
|
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOOaa,nVVaa,1d0,Om1aa,rho1aa,Om2aa,rho2aa,TAaa)
|
||||||
if(.not.TDA) call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOOaa,nVVaa,1d0,Om1aa,rho1aa,Om2aa,rho2aa,TBaa)
|
if(.not.TDA) call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOOaa,nVVaa,1d0,Om1aa,rho1aa,Om2aa,rho2aa,TBaa)
|
||||||
|
@ -96,7 +96,7 @@ subroutine GTpp_ppBSE(TDA_T,TDA,dBSE,dTDA,evDyn,singlet,triplet,eta,nBas,nC,nO,n
|
|||||||
|
|
||||||
EcRPA(ispin) = 0d0
|
EcRPA(ispin) = 0d0
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOab,nVVab,1d0,eT,ERI,Om1ab,X1ab,Y1ab,Om2ab,X2ab,Y2ab,EcRPA(ispin))
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOab,nVVab,1d0,eT,ERI,Om1ab,X1ab,Y1ab,Om2ab,X2ab,Y2ab,EcRPA(ispin))
|
||||||
|
|
||||||
allocate(TBab(nVVs,nOOs),TCab(nVVs,nVVs),TDab(nOOs,nOOs))
|
allocate(TBab(nVVs,nOOs),TCab(nVVs,nVVs),TDab(nOOs,nOOs))
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ subroutine GTpp_ppBSE(TDA_T,TDA,dBSE,dTDA,evDyn,singlet,triplet,eta,nBas,nC,nO,n
|
|||||||
iblock = 4
|
iblock = 4
|
||||||
EcRPA(ispin) = 0d0
|
EcRPA(ispin) = 0d0
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOaa,nVVaa,1d0,eT,ERI,Om1aa,X1aa,Y1aa,Om2aa,X2aa,Y2aa,EcRPA(ispin))
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOaa,nVVaa,1d0,eT,ERI,Om1aa,X1aa,Y1aa,Om2aa,X2aa,Y2aa,EcRPA(ispin))
|
||||||
|
|
||||||
allocate(TBaa(nVVs,nOOs),TCaa(nVVs,nVVs),TDaa(nOOs,nOOs))
|
allocate(TBaa(nVVs,nOOs),TCaa(nVVs,nVVs),TDaa(nOOs,nOOs))
|
||||||
|
|
||||||
@ -154,7 +154,7 @@ subroutine GTpp_ppBSE(TDA_T,TDA,dBSE,dTDA,evDyn,singlet,triplet,eta,nBas,nC,nO,n
|
|||||||
iblock = 3
|
iblock = 3
|
||||||
EcRPA(ispin) = 0d0
|
EcRPA(ispin) = 0d0
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOab,nVVab,1d0,eT,ERI,Om1ab,X1ab,Y1ab,Om2ab,X2ab,Y2ab,EcRPA(ispin))
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOab,nVVab,1d0,eT,ERI,Om1ab,X1ab,Y1ab,Om2ab,X2ab,Y2ab,EcRPA(ispin))
|
||||||
|
|
||||||
allocate(TBab(nVVt,nOOt),TCab(nVVt,nVVt),TDab(nOOt,nOOt))
|
allocate(TBab(nVVt,nOOt),TCab(nVVt,nVVt),TDab(nOOt,nOOt))
|
||||||
|
|
||||||
@ -171,7 +171,7 @@ subroutine GTpp_ppBSE(TDA_T,TDA,dBSE,dTDA,evDyn,singlet,triplet,eta,nBas,nC,nO,n
|
|||||||
|
|
||||||
EcRPA(ispin) = 0d0
|
EcRPA(ispin) = 0d0
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOaa,nVVaa,1d0,eT,ERI,Om1aa,X1aa,Y1aa,Om2aa,X2aa,Y2aa,EcRPA(ispin))
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOaa,nVVaa,1d0,eT,ERI,Om1aa,X1aa,Y1aa,Om2aa,X2aa,Y2aa,EcRPA(ispin))
|
||||||
|
|
||||||
allocate(TBaa(nVVt,nOOt),TCaa(nVVt,nVVt),TDaa(nOOt,nOOt))
|
allocate(TBaa(nVVt,nOOt),TCaa(nVVt,nVVt),TDaa(nOOt,nOOt))
|
||||||
|
|
||||||
|
@ -136,8 +136,7 @@ subroutine evGTeh(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,BSE,BSE2,
|
|||||||
|
|
||||||
! Compute screening
|
! Compute screening
|
||||||
|
|
||||||
call linear_response(ispin,.false.,TDA_T,eta,nBas,nC,nO,nV,nR,nS,1d0,eGT,ERI_MO, &
|
call phLR(ispin,.false.,TDA_T,eta,nBas,nC,nO,nV,nR,nS,1d0,eGT,ERI_MO,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
|
|
||||||
! Compute spectral weights
|
! Compute spectral weights
|
||||||
|
|
||||||
|
@ -134,8 +134,7 @@ subroutine evGTpp(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS, &
|
|||||||
|
|
||||||
! Compute linear response
|
! Compute linear response
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOs,nVVs,1d0,eGT,ERI_MO, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOs,nVVs,1d0,eGT,ERI_MO,Om1s,X1s,Y1s,Om2s,X2s,Y2s,EcRPA(ispin))
|
||||||
Om1s,X1s,Y1s,Om2s,X2s,Y2s,EcRPA(ispin))
|
|
||||||
|
|
||||||
!----------------------------------------------
|
!----------------------------------------------
|
||||||
! alpha-alpha block
|
! alpha-alpha block
|
||||||
@ -146,8 +145,7 @@ subroutine evGTpp(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS, &
|
|||||||
|
|
||||||
! Compute linear response
|
! Compute linear response
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOt,nVVt,1d0,eGT,ERI_MO, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOt,nVVt,1d0,eGT,ERI_MO,Om1t,X1t,Y1t,Om2t,X2t,Y2t,EcRPA(ispin))
|
||||||
Om1t,X1t,Y1t,Om2t,X2t,Y2t,EcRPA(ispin))
|
|
||||||
|
|
||||||
EcRPA(1) = EcRPA(1) - EcRPA(2)
|
EcRPA(1) = EcRPA(1) - EcRPA(2)
|
||||||
EcRPA(2) = 3d0*EcRPA(2)
|
EcRPA(2) = 3d0*EcRPA(2)
|
||||||
|
@ -171,8 +171,7 @@ subroutine qsGTeh(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,BSE,BSE2,
|
|||||||
|
|
||||||
! Compute linear response
|
! Compute linear response
|
||||||
|
|
||||||
call linear_response(ispin,.false.,TDA_T,eta,nBas,nC,nO,nV,nR,nS,1d0,eGT,ERI_MO, &
|
call phLR(ispin,.false.,TDA_T,eta,nBas,nC,nO,nV,nR,nS,1d0,eGT,ERI_MO,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
if(print_T) call print_excitation('RPA@qsGTeh ',ispin,nS,OmRPA)
|
if(print_T) call print_excitation('RPA@qsGTeh ',ispin,nS,OmRPA)
|
||||||
|
|
||||||
! Compute correlation part of the self-energy
|
! Compute correlation part of the self-energy
|
||||||
|
@ -188,14 +188,12 @@ subroutine qsGTpp(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,BSE,TDA_T
|
|||||||
ispin = 1
|
ispin = 1
|
||||||
iblock = 3
|
iblock = 3
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOs,nVVs,1d0,eGT,ERI_MO, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOs,nVVs,1d0,eGT,ERI_MO,Om1s,X1s,Y1s,Om2s,X2s,Y2s,EcRPA(ispin))
|
||||||
Om1s,X1s,Y1s,Om2s,X2s,Y2s,EcRPA(ispin))
|
|
||||||
|
|
||||||
ispin = 2
|
ispin = 2
|
||||||
iblock = 4
|
iblock = 4
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOt,nVVt,1d0,eGT,ERI_MO, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOt,nVVt,1d0,eGT,ERI_MO,Om1t,X1t,Y1t,Om2t,X2t,Y2t,EcRPA(ispin))
|
||||||
Om1t,X1t,Y1t,Om2t,X2t,Y2t,EcRPA(ispin))
|
|
||||||
|
|
||||||
EcRPA(1) = EcRPA(1) - EcRPA(2)
|
EcRPA(1) = EcRPA(1) - EcRPA(2)
|
||||||
EcRPA(2) = 3d0*EcRPA(2)
|
EcRPA(2) = 3d0*EcRPA(2)
|
||||||
|
@ -65,8 +65,7 @@ subroutine Bethe_Salpeter_pp_so(TDA_W,TDA,singlet,triplet,eta,nBas,nC,nO,nV,nR,n
|
|||||||
|
|
||||||
allocate(OmRPA(nS),XpY_RPA(nS,nS),XmY_RPA(nS,nS),rho_RPA(nBas,nBas,nS))
|
allocate(OmRPA(nS),XpY_RPA(nS,nS),XmY_RPA(nS,nS),rho_RPA(nBas,nBas,nS))
|
||||||
|
|
||||||
call linear_response(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI, &
|
call phLR(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
||||||
|
|
||||||
write(*,*) '****************'
|
write(*,*) '****************'
|
||||||
|
@ -121,8 +121,7 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,BSE2,TDA_W,TDA,dBSE,dTD
|
|||||||
! Compute screening !
|
! Compute screening !
|
||||||
!-------------------!
|
!-------------------!
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0, &
|
call phLR(ispin,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI_MO,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
eHF,ERI_MO,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
|
|
||||||
if(print_W) call print_excitation('RPA@HF ',ispin,nS,OmRPA)
|
if(print_W) call print_excitation('RPA@HF ',ispin,nS,OmRPA)
|
||||||
|
|
||||||
@ -180,8 +179,7 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,BSE2,TDA_W,TDA,dBSE,dTD
|
|||||||
|
|
||||||
! Compute the RPA correlation energy
|
! Compute the RPA correlation energy
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI_MO, &
|
call phLR(ispin,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI_MO,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
|
|
||||||
!--------------!
|
!--------------!
|
||||||
! Dump results !
|
! Dump results !
|
||||||
|
@ -66,8 +66,7 @@ subroutine GW_phBSE(BSE2,TDA_W,TDA,dBSE,dTDA,evDyn,singlet,triplet,eta,nBas,nC,n
|
|||||||
isp_W = 1
|
isp_W = 1
|
||||||
EcRPA = 0d0
|
EcRPA = 0d0
|
||||||
|
|
||||||
call linear_response(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI, &
|
call phLR(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
||||||
|
|
||||||
call BSE_static_kernel_KA(eta,nBas,nC,nO,nV,nR,nS,1d0,ERI,OmRPA,rho_RPA,KA_sta)
|
call BSE_static_kernel_KA(eta,nBas,nC,nO,nV,nR,nS,1d0,ERI,OmRPA,rho_RPA,KA_sta)
|
||||||
|
@ -65,8 +65,7 @@ subroutine GW_ppBSE(TDA_W,TDA,singlet,triplet,eta,nBas,nC,nO,nV,nR,nS,ERI,dipole
|
|||||||
|
|
||||||
allocate(OmRPA(nS),XpY_RPA(nS,nS),XmY_RPA(nS,nS),rho_RPA(nBas,nBas,nS))
|
allocate(OmRPA(nS),XpY_RPA(nS,nS),XmY_RPA(nS,nS),rho_RPA(nBas,nBas,nS))
|
||||||
|
|
||||||
call linear_response(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI, &
|
call phLR(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
||||||
|
|
||||||
!-------------------
|
!-------------------
|
||||||
|
@ -47,7 +47,7 @@ subroutine GW_renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,e,Omega,rho,
|
|||||||
do i=nC+1,nO
|
do i=nC+1,nO
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(p) - e(i) + Omega(jb)
|
eps = e(p) - e(i) + Omega(jb)
|
||||||
Z(p) = Z(p) - 2d0*rho(p,i,jb)**2*(eps/(eps**2 + eta**2))**2
|
Z(p) = Z(p) - 2d0*rho(p,i,jb)**2*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
@ -58,7 +58,7 @@ subroutine GW_renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,e,Omega,rho,
|
|||||||
do a=nO+1,nBas-nR
|
do a=nO+1,nBas-nR
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(p) - e(a) - Omega(jb)
|
eps = e(p) - e(a) - Omega(jb)
|
||||||
Z(p) = Z(p) - 2d0*rho(p,a,jb)**2*(eps/(eps**2 + eta**2))**2
|
Z(p) = Z(p) - 2d0*rho(p,a,jb)**2*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
|
@ -179,8 +179,7 @@ subroutine SRG_qsGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,BSE,BSE
|
|||||||
|
|
||||||
call wall_time(tlr1)
|
call wall_time(tlr1)
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI_MO, &
|
call phLR(ispin,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI_MO,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
|
|
||||||
call wall_time(tlr2)
|
call wall_time(tlr2)
|
||||||
|
|
||||||
|
@ -65,8 +65,7 @@ subroutine XBSE(TDA_W,TDA,dBSE,dTDA,singlet,triplet,eta,nBas,nC,nO,nV,nR,nS,ERI,
|
|||||||
isp_W = 1
|
isp_W = 1
|
||||||
EcRPA = 0d0
|
EcRPA = 0d0
|
||||||
|
|
||||||
call linear_response(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI, &
|
call phLR(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
||||||
|
|
||||||
call XBSE_static_kernel_KA(eta,nBas,nC,nO,nV,nR,nS,1d0,ERI,OmRPA,rho_RPA,KA_sta,eW,eGW)
|
call XBSE_static_kernel_KA(eta,nBas,nC,nO,nV,nR,nS,1d0,ERI,OmRPA,rho_RPA,KA_sta,eW,eGW)
|
||||||
|
@ -152,8 +152,7 @@ subroutine evGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,BSE,
|
|||||||
|
|
||||||
! Compute screening
|
! Compute screening
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI_MO, &
|
call phLR(ispin,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI_MO,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
|
|
||||||
! Compute spectral weights
|
! Compute spectral weights
|
||||||
|
|
||||||
|
@ -178,8 +178,7 @@ subroutine qsGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,BSE,
|
|||||||
|
|
||||||
! Compute linear response
|
! Compute linear response
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI_MO, &
|
call phLR(ispin,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eGW,ERI_MO,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
if(print_W) call print_excitation('RPA@qsGW ',ispin,nS,OmRPA)
|
if(print_W) call print_excitation('RPA@qsGW ',ispin,nS,OmRPA)
|
||||||
|
|
||||||
! Compute correlation part of the self-energy
|
! Compute correlation part of the self-energy
|
||||||
|
@ -60,8 +60,7 @@ subroutine soBSE(TDA_W,TDA,eta,nBas,nC,nO,nV,nR,nS,ERI,eW,eGW)
|
|||||||
isp_W = 3
|
isp_W = 3
|
||||||
EcRPA = 0d0
|
EcRPA = 0d0
|
||||||
|
|
||||||
call linear_response(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI, &
|
call phLR(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
||||||
|
|
||||||
call static_screening_WA_so(eta,nBas,nC,nO,nV,nR,nS,1d0,ERI,OmRPA,rho_RPA,WA_sta)
|
call static_screening_WA_so(eta,nBas,nC,nO,nV,nR,nS,1d0,ERI,OmRPA,rho_RPA,WA_sta)
|
||||||
|
@ -134,8 +134,7 @@ subroutine soG0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,e
|
|||||||
! Compute screening !
|
! Compute screening !
|
||||||
!-------------------!
|
!-------------------!
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA_W,eta,nBas2,nC2,nO2,nV2,nR2,nS2,1d0, &
|
call phLR(ispin,.true.,TDA_W,eta,nBas2,nC2,nO2,nV2,nR2,nS2,1d0,seHF,sERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
seHF,sERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
|
|
||||||
if(print_W) call print_excitation('RPA@HF ',ispin,nS2,OmRPA)
|
if(print_W) call print_excitation('RPA@HF ',ispin,nS2,OmRPA)
|
||||||
|
|
||||||
@ -180,8 +179,7 @@ subroutine soG0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,e
|
|||||||
|
|
||||||
! Compute the RPA correlation energy
|
! Compute the RPA correlation energy
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA_W,eta,nBas2,nC2,nO2,nV2,nR2,nS2,1d0,seGW,sERI, &
|
call phLR(ispin,.true.,TDA_W,eta,nBas2,nC2,nO2,nV2,nR2,nS2,1d0,seGW,sERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
|
|
||||||
!--------------!
|
!--------------!
|
||||||
! Dump results !
|
! Dump results !
|
||||||
@ -210,4 +208,4 @@ subroutine soG0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,e
|
|||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
end subroutine soG0W0
|
end subroutine
|
||||||
|
@ -217,8 +217,7 @@ subroutine ufG0W0(nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI,eHF,TDA_W)
|
|||||||
!-------------------!
|
!-------------------!
|
||||||
! Compute screening !
|
! Compute screening !
|
||||||
!-------------------!
|
!-------------------!
|
||||||
call linear_response(ispin,.true.,TDA_W,0d0,nBas,nC,nO,nV,nR,nS,1d0, &
|
call phLR(ispin,.true.,TDA_W,0d0,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
eHF,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
!--------------------------!
|
!--------------------------!
|
||||||
! Compute spectral weights !
|
! Compute spectral weights !
|
||||||
!--------------------------!
|
!--------------------------!
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine linear_response(ispin,dRPA,TDA,eta,nBas,nC,nO,nV,nR,nS,lambda,e,ERI,Ec,Omega,XpY,XmY)
|
subroutine phLR(ispin,dRPA,TDA,eta,nBas,nC,nO,nV,nR,nS,lambda,e,ERI,Ec,Omega,XpY,XmY)
|
||||||
|
|
||||||
! Compute linear response
|
! Compute linear response
|
||||||
|
|
||||||
@ -109,4 +109,4 @@ subroutine linear_response(ispin,dRPA,TDA,eta,nBas,nC,nO,nV,nR,nS,lambda,e,ERI,E
|
|||||||
|
|
||||||
Ec = 0.5d0*(sum(Omega) - trace_matrix(nS,A))
|
Ec = 0.5d0*(sum(Omega) - trace_matrix(nS,A))
|
||||||
|
|
||||||
end subroutine linear_response
|
end subroutine
|
@ -1,4 +1,4 @@
|
|||||||
subroutine linear_response_pp(ispin,TDA,nBas,nC,nO,nV,nR,nOO,nVV,lambda,e,ERI,Omega1,X1,Y1,Omega2,X2,Y2,EcRPA)
|
subroutine ppLR(ispin,TDA,nBas,nC,nO,nV,nR,nOO,nVV,lambda,e,ERI,Omega1,X1,Y1,Omega2,X2,Y2,EcRPA)
|
||||||
|
|
||||||
! Compute the p-p channel of the linear response: see Scuseria et al. JCP 139, 104113 (2013)
|
! Compute the p-p channel of the linear response: see Scuseria et al. JCP 139, 104113 (2013)
|
||||||
|
|
||||||
@ -107,4 +107,4 @@ subroutine linear_response_pp(ispin,TDA,nBas,nC,nO,nV,nR,nOO,nVV,lambda,e,ERI,Om
|
|||||||
if(abs(EcRPA - EcRPA1) > 1d-6 .or. abs(EcRPA - EcRPA2) > 1d-6) &
|
if(abs(EcRPA - EcRPA1) > 1d-6 .or. abs(EcRPA - EcRPA2) > 1d-6) &
|
||||||
print*,'!!! Issue in pp-RPA linear reponse calculation RPA1 != RPA2 !!!'
|
print*,'!!! Issue in pp-RPA linear reponse calculation RPA1 != RPA2 !!!'
|
||||||
|
|
||||||
end subroutine linear_response_pp
|
end subroutine
|
@ -695,7 +695,7 @@ program QuAcK
|
|||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
call RPA(TDA,doACFDT,exchange_kernel,singlet,triplet,0d0,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_MO,dipole_int_MO,eHF)
|
call phRPA(TDA,doACFDT,exchange_kernel,singlet,triplet,0d0,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_MO,dipole_int_MO,eHF)
|
||||||
|
|
||||||
end if
|
end if
|
||||||
call cpu_time(end_RPA)
|
call cpu_time(end_RPA)
|
||||||
@ -720,7 +720,7 @@ program QuAcK
|
|||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
call RPAx(TDA,doACFDT,exchange_kernel,singlet,triplet,0d0,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_MO,dipole_int_MO,eHF)
|
call phRPAx(TDA,doACFDT,exchange_kernel,singlet,triplet,0d0,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_MO,dipole_int_MO,eHF)
|
||||||
|
|
||||||
end if
|
end if
|
||||||
call cpu_time(end_RPA)
|
call cpu_time(end_RPA)
|
||||||
|
@ -71,8 +71,7 @@ subroutine ACFDT(exchange_kernel,doXBS,dRPA,TDA_W,TDA,BSE,singlet,triplet,eta,nB
|
|||||||
isp_W = 1
|
isp_W = 1
|
||||||
EcRPA = 0d0
|
EcRPA = 0d0
|
||||||
|
|
||||||
call linear_response(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI, &
|
call phLR(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
||||||
|
|
||||||
call BSE_static_kernel_KA(eta,nBas,nC,nO,nV,nR,nS,1d0,ERI,OmRPA,rho_RPA,WA)
|
call BSE_static_kernel_KA(eta,nBas,nC,nO,nV,nR,nS,1d0,ERI,OmRPA,rho_RPA,WA)
|
||||||
@ -99,8 +98,7 @@ subroutine ACFDT(exchange_kernel,doXBS,dRPA,TDA_W,TDA,BSE,singlet,triplet,eta,nB
|
|||||||
|
|
||||||
if(doXBS) then
|
if(doXBS) then
|
||||||
|
|
||||||
call linear_response(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,lambda,eW,ERI, &
|
call phLR(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,lambda,eW,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
||||||
! call print_excitation('W^lambda: ',isp_W,nS,OmRPA)
|
! call print_excitation('W^lambda: ',isp_W,nS,OmRPA)
|
||||||
|
|
||||||
@ -151,8 +149,7 @@ subroutine ACFDT(exchange_kernel,doXBS,dRPA,TDA_W,TDA,BSE,singlet,triplet,eta,nB
|
|||||||
|
|
||||||
if(doXBS) then
|
if(doXBS) then
|
||||||
|
|
||||||
call linear_response(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,lambda,eW,ERI, &
|
call phLR(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,lambda,eW,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
||||||
|
|
||||||
call BSE_static_kernel_KA(eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,OmRPA,rho_RPA,WA)
|
call BSE_static_kernel_KA(eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,OmRPA,rho_RPA,WA)
|
||||||
@ -180,4 +177,4 @@ subroutine ACFDT(exchange_kernel,doXBS,dRPA,TDA_W,TDA,BSE,singlet,triplet,eta,nB
|
|||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
end subroutine ACFDT
|
end subroutine
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
subroutine ACFDT_Tmatrix(exchange_kernel,doXBS,dRPA,TDA_T,TDA,BSE,singlet,triplet,eta,nBas,nC,nO,nV,nR,nS, &
|
subroutine ACFDT_Tmatrix(exchange_kernel,doXBS,dRPA,TDA_T,TDA,BSE,singlet,triplet,eta,nBas,nC,nO,nV,nR,nS, &
|
||||||
nOOs,nVVs,nOOt,nVVt,Omega1s,X1s,Y1s,Omega2s,X2s,Y2s,rho1s,rho2s,Omega1t,X1t,Y1t, &
|
nOOs,nVVs,nOOt,nVVt,Om1s,X1s,Y1s,Om2s,X2s,Y2s,rho1s,rho2s,Om1t,X1t,Y1t, &
|
||||||
Omega2t,X2t,Y2t,rho1t,rho2t,ERI,eT,eGT,EcAC)
|
Om2t,X2t,Y2t,rho1t,rho2t,ERI,eT,eGT,EcAC)
|
||||||
|
|
||||||
! Compute the correlation energy via the adiabatic connection fluctuation dissipation theorem for the T-matrix
|
! Compute the correlation energy via the adiabatic connection fluctuation dissipation theorem for the T-matrix
|
||||||
|
|
||||||
@ -32,18 +32,18 @@ subroutine ACFDT_Tmatrix(exchange_kernel,doXBS,dRPA,TDA_T,TDA,BSE,singlet,triple
|
|||||||
integer,intent(in) :: nVVs
|
integer,intent(in) :: nVVs
|
||||||
integer,intent(in) :: nVVt
|
integer,intent(in) :: nVVt
|
||||||
|
|
||||||
double precision,intent(in) :: Omega1s(nVVs)
|
double precision,intent(in) :: Om1s(nVVs)
|
||||||
double precision,intent(in) :: X1s(nVVs,nVVs)
|
double precision,intent(in) :: X1s(nVVs,nVVs)
|
||||||
double precision,intent(in) :: Y1s(nOOs,nVVs)
|
double precision,intent(in) :: Y1s(nOOs,nVVs)
|
||||||
double precision,intent(in) :: Omega2s(nOOs)
|
double precision,intent(in) :: Om2s(nOOs)
|
||||||
double precision,intent(in) :: X2s(nVVs,nOOs)
|
double precision,intent(in) :: X2s(nVVs,nOOs)
|
||||||
double precision,intent(in) :: Y2s(nOOs,nOOs)
|
double precision,intent(in) :: Y2s(nOOs,nOOs)
|
||||||
double precision,intent(in) :: rho1s(nBas,nBas,nVVs)
|
double precision,intent(in) :: rho1s(nBas,nBas,nVVs)
|
||||||
double precision,intent(in) :: rho2s(nBas,nBas,nOOs)
|
double precision,intent(in) :: rho2s(nBas,nBas,nOOs)
|
||||||
double precision,intent(in) :: Omega1t(nVVt)
|
double precision,intent(in) :: Om1t(nVVt)
|
||||||
double precision,intent(in) :: X1t(nVVt,nVVt)
|
double precision,intent(in) :: X1t(nVVt,nVVt)
|
||||||
double precision,intent(in) :: Y1t(nOOt,nVVt)
|
double precision,intent(in) :: Y1t(nOOt,nVVt)
|
||||||
double precision,intent(in) :: Omega2t(nOOt)
|
double precision,intent(in) :: Om2t(nOOt)
|
||||||
double precision,intent(in) :: X2t(nVVt,nOOt)
|
double precision,intent(in) :: X2t(nVVt,nOOt)
|
||||||
double precision,intent(in) :: Y2t(nOOt,nOOt)
|
double precision,intent(in) :: Y2t(nOOt,nOOt)
|
||||||
double precision,intent(in) :: rho1t(nBas,nBas,nVVt)
|
double precision,intent(in) :: rho1t(nBas,nBas,nVVt)
|
||||||
@ -67,7 +67,7 @@ subroutine ACFDT_Tmatrix(exchange_kernel,doXBS,dRPA,TDA_T,TDA,BSE,singlet,triple
|
|||||||
double precision,allocatable :: TBs(:,:)
|
double precision,allocatable :: TBs(:,:)
|
||||||
double precision,allocatable :: TAt(:,:)
|
double precision,allocatable :: TAt(:,:)
|
||||||
double precision,allocatable :: TBt(:,:)
|
double precision,allocatable :: TBt(:,:)
|
||||||
double precision,allocatable :: Omega(:,:)
|
double precision,allocatable :: Om(:,:)
|
||||||
double precision,allocatable :: XpY(:,:,:)
|
double precision,allocatable :: XpY(:,:,:)
|
||||||
double precision,allocatable :: XmY(:,:,:)
|
double precision,allocatable :: XmY(:,:,:)
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ subroutine ACFDT_Tmatrix(exchange_kernel,doXBS,dRPA,TDA_T,TDA,BSE,singlet,triple
|
|||||||
! Memory allocation
|
! Memory allocation
|
||||||
|
|
||||||
allocate(TAs(nS,nS),TBs(nS,nS),TAt(nS,nS),TBt(nS,nS), &
|
allocate(TAs(nS,nS),TBs(nS,nS),TAt(nS,nS),TBt(nS,nS), &
|
||||||
Omega(nS,nspin),XpY(nS,nS,nspin),XmY(nS,nS,nspin))
|
Om(nS,nspin),XpY(nS,nS,nspin),XmY(nS,nS,nspin))
|
||||||
allocate(Ec(nAC,nspin))
|
allocate(Ec(nAC,nspin))
|
||||||
|
|
||||||
! Antisymmetrized kernel version
|
! Antisymmetrized kernel version
|
||||||
@ -118,29 +118,27 @@ subroutine ACFDT_Tmatrix(exchange_kernel,doXBS,dRPA,TDA_T,TDA,BSE,singlet,triple
|
|||||||
isp_T = 1
|
isp_T = 1
|
||||||
iblock = 3
|
iblock = 3
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOs,nVVs,lambda,eT,ERI, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOs,nVVs,lambda,eT,ERI,Om1s,X1s,Y1s,Om2s,X2s,Y2s,EcRPA(isp_T))
|
||||||
Omega1s,X1s,Y1s,Omega2s,X2s,Y2s,EcRPA(isp_T))
|
|
||||||
|
|
||||||
call GTpp_excitation_density(iblock,nBas,nC,nO,nV,nR,nOOs,nVVs,ERI,X1s,Y1s,rho1s,X2s,Y2s,rho2s)
|
call GTpp_excitation_density(iblock,nBas,nC,nO,nV,nR,nOOs,nVVs,ERI,X1s,Y1s,rho1s,X2s,Y2s,rho2s)
|
||||||
|
|
||||||
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOOs,nVVs,lambda,Omega1s,rho1s,Omega2s,rho2s,TAs)
|
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOOs,nVVs,lambda,Om1s,rho1s,Om2s,rho2s,TAs)
|
||||||
if(.not.TDA) call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOOs,nVVs,lambda,Omega1s,rho1s,Omega2s,rho2s,TBs)
|
if(.not.TDA) call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOOs,nVVs,lambda,Om1s,rho1s,Om2s,rho2s,TBs)
|
||||||
|
|
||||||
isp_T = 2
|
isp_T = 2
|
||||||
iblock = 4
|
iblock = 4
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOt,nVVt,lambda,eT,ERI, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOt,nVVt,lambda,eT,ERI,Om1t,X1t,Y1t,Om2t,X2t,Y2t,EcRPA(isp_T))
|
||||||
Omega1t,X1t,Y1t,Omega2t,X2t,Y2t,EcRPA(isp_T))
|
|
||||||
|
|
||||||
call GTpp_excitation_density(iblock,nBas,nC,nO,nV,nR,nOOt,nVVt,ERI,X1t,Y1t,rho1t,X2t,Y2t,rho2t)
|
call GTpp_excitation_density(iblock,nBas,nC,nO,nV,nR,nOOt,nVVt,ERI,X1t,Y1t,rho1t,X2t,Y2t,rho2t)
|
||||||
|
|
||||||
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOOt,nVVt,lambda,Omega1t,rho1t,Omega2t,rho2t,TAt)
|
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOOt,nVVt,lambda,Om1t,rho1t,Om2t,rho2t,TAt)
|
||||||
if(.not.TDA) call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOOt,nVVt,lambda,Omega1t,rho1t,Omega2t,rho2t,TBt)
|
if(.not.TDA) call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOOt,nVVt,lambda,Om1t,rho1t,Om2t,rho2t,TBt)
|
||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
call linear_response_BSE(ispin,.false.,TDA,BSE,eta,nBas,nC,nO,nV,nR,nS,lambda,eGT,ERI,TAt+TAs,TBt+TBs, &
|
call linear_response_BSE(ispin,.false.,TDA,BSE,eta,nBas,nC,nO,nV,nR,nS,lambda,eGT,ERI,TAt+TAs,TBt+TBs, &
|
||||||
EcAC(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
EcAC(ispin),Om(:,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))
|
||||||
|
|
||||||
@ -183,29 +181,27 @@ subroutine ACFDT_Tmatrix(exchange_kernel,doXBS,dRPA,TDA_T,TDA,BSE,singlet,triple
|
|||||||
isp_T = 1
|
isp_T = 1
|
||||||
iblock = 3
|
iblock = 3
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOs,nVVs,lambda,eT,ERI, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOs,nVVs,lambda,eT,ERI,Om1s,X1s,Y1s,Om2s,X2s,Y2s,EcRPA(isp_T))
|
||||||
Omega1s,X1s,Y1s,Omega2s,X2s,Y2s,EcRPA(isp_T))
|
|
||||||
|
|
||||||
call GTpp_excitation_density(iblock,nBas,nC,nO,nV,nR,nOOs,nVVs,ERI,X1s,Y1s,rho1s,X2s,Y2s,rho2s)
|
call GTpp_excitation_density(iblock,nBas,nC,nO,nV,nR,nOOs,nVVs,ERI,X1s,Y1s,rho1s,X2s,Y2s,rho2s)
|
||||||
|
|
||||||
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOOs,nVVs,lambda,Omega1s,rho1s,Omega2s,rho2s,TAs)
|
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOOs,nVVs,lambda,Om1s,rho1s,Om2s,rho2s,TAs)
|
||||||
if(.not.TDA) call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOOs,nVVs,lambda,Omega1s,rho1s,Omega2s,rho2s,TBs)
|
if(.not.TDA) call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOOs,nVVs,lambda,Om1s,rho1s,Om2s,rho2s,TBs)
|
||||||
|
|
||||||
isp_T = 2
|
isp_T = 2
|
||||||
iblock = 4
|
iblock = 4
|
||||||
|
|
||||||
call linear_response_pp(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOt,nVVt,lambda,eT,ERI, &
|
call ppLR(iblock,TDA_T,nBas,nC,nO,nV,nR,nOOt,nVVt,lambda,eT,ERI,Om1t,X1t,Y1t,Om2t,X2t,Y2t,EcRPA(isp_T))
|
||||||
Omega1t,X1t,Y1t,Omega2t,X2t,Y2t,EcRPA(isp_T))
|
|
||||||
|
|
||||||
call GTpp_excitation_density(iblock,nBas,nC,nO,nV,nR,nOOt,nVVt,ERI,X1t,Y1t,rho1t,X2t,Y2t,rho2t)
|
call GTpp_excitation_density(iblock,nBas,nC,nO,nV,nR,nOOt,nVVt,ERI,X1t,Y1t,rho1t,X2t,Y2t,rho2t)
|
||||||
|
|
||||||
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOOt,nVVt,lambda,Omega1t,rho1t,Omega2t,rho2t,TAt)
|
call static_Tmatrix_A(eta,nBas,nC,nO,nV,nR,nS,nOOt,nVVt,lambda,Om1t,rho1t,Om2t,rho2t,TAt)
|
||||||
if(.not.TDA) call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOOt,nVVt,lambda,Omega1t,rho1t,Omega2t,rho2t,TBt)
|
if(.not.TDA) call static_Tmatrix_B(eta,nBas,nC,nO,nV,nR,nS,nOOt,nVVt,lambda,Om1t,rho1t,Om2t,rho2t,TBt)
|
||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
call linear_response_BSE(ispin,.false.,TDA,BSE,eta,nBas,nC,nO,nV,nR,nS,lambda,eGT,ERI,TAt-TAs,TBt-TBs, &
|
call linear_response_BSE(ispin,.false.,TDA,BSE,eta,nBas,nC,nO,nV,nR,nS,lambda,eGT,ERI,TAt-TAs,TBt-TBs, &
|
||||||
EcAC(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
EcAC(ispin),Om(:,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))
|
||||||
|
|
||||||
@ -224,4 +220,4 @@ subroutine ACFDT_Tmatrix(exchange_kernel,doXBS,dRPA,TDA_T,TDA,BSE,singlet,triple
|
|||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
end subroutine ACFDT_Tmatrix
|
end subroutine
|
||||||
|
@ -72,8 +72,7 @@ subroutine ACFDT_cr(exchange_kernel,doXBS,dRPA,TDA_W,TDA,BSE,singlet,triplet,eta
|
|||||||
isp_W = 1
|
isp_W = 1
|
||||||
EcRPA = 0d0
|
EcRPA = 0d0
|
||||||
|
|
||||||
call linear_response(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI, &
|
call phLR(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,1d0,eW,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
||||||
|
|
||||||
call BSE_static_kernel_KA(eta,nBas,nC,nO,nV,nR,nS,1d0,ERI,OmRPA,rho_RPA,WA)
|
call BSE_static_kernel_KA(eta,nBas,nC,nO,nV,nR,nS,1d0,ERI,OmRPA,rho_RPA,WA)
|
||||||
@ -100,8 +99,7 @@ subroutine ACFDT_cr(exchange_kernel,doXBS,dRPA,TDA_W,TDA,BSE,singlet,triplet,eta
|
|||||||
|
|
||||||
if(doXBS) then
|
if(doXBS) then
|
||||||
|
|
||||||
call linear_response(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,lambda,eW,ERI, &
|
call phLR(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,lambda,eW,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
||||||
! call print_excitation('W^lambda: ',isp_W,nS,OmRPA)
|
! call print_excitation('W^lambda: ',isp_W,nS,OmRPA)
|
||||||
|
|
||||||
@ -152,8 +150,7 @@ subroutine ACFDT_cr(exchange_kernel,doXBS,dRPA,TDA_W,TDA,BSE,singlet,triplet,eta
|
|||||||
|
|
||||||
if(doXBS) then
|
if(doXBS) then
|
||||||
|
|
||||||
call linear_response(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,lambda,eW,ERI, &
|
call phLR(isp_W,.true.,TDA_W,eta,nBas,nC,nO,nV,nR,nS,lambda,eW,ERI,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
|
||||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY_RPA,rho_RPA)
|
||||||
|
|
||||||
call BSE_static_kernel_KA(eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,OmRPA,rho_RPA,WA)
|
call BSE_static_kernel_KA(eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,OmRPA,rho_RPA,WA)
|
||||||
|
@ -87,7 +87,7 @@ subroutine ACFDT_pp(TDA,singlet,triplet,nBas,nC,nO,nV,nR,nS,ERI,e,EcAC)
|
|||||||
|
|
||||||
lambda = rAC(iAC)
|
lambda = rAC(iAC)
|
||||||
|
|
||||||
call linear_response_pp(ispin,TDA,nBas,nC,nO,nV,nR,nOOs,nVVs,lambda,e,ERI,Omega1s,X1s,Y1s,Omega2s,X2s,Y2s,EcAC(ispin))
|
call ppLR(ispin,TDA,nBas,nC,nO,nV,nR,nOOs,nVVs,lambda,e,ERI,Omega1s,X1s,Y1s,Omega2s,X2s,Y2s,EcAC(ispin))
|
||||||
|
|
||||||
call ACFDT_pp_correlation_energy(ispin,nBas,nC,nO,nV,nR,nS,ERI,nOOs,nVVs,X1s,Y1s,X2s,Y2s,Ec(iAC,ispin))
|
call ACFDT_pp_correlation_energy(ispin,nBas,nC,nO,nV,nR,nS,ERI,nOOs,nVVs,X1s,Y1s,X2s,Y2s,Ec(iAC,ispin))
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ subroutine ACFDT_pp(TDA,singlet,triplet,nBas,nC,nO,nV,nR,nS,ERI,e,EcAC)
|
|||||||
|
|
||||||
! Initialize T matrix
|
! Initialize T matrix
|
||||||
|
|
||||||
call linear_response_pp(ispin,TDA,nBas,nC,nO,nV,nR,nOOt,nVVt,lambda,e,ERI,Omega1t,X1t,Y1t,Omega2t,X2t,Y2t,EcAC(ispin))
|
call ppLR(ispin,TDA,nBas,nC,nO,nV,nR,nOOt,nVVt,lambda,e,ERI,Omega1t,X1t,Y1t,Omega2t,X2t,Y2t,EcAC(ispin))
|
||||||
|
|
||||||
call ACFDT_pp_correlation_energy(ispin,nBas,nC,nO,nV,nR,nS,ERI,nOOt,nVVt,X1t,Y1t,X2t,Y2t,Ec(iAC,ispin))
|
call ACFDT_pp_correlation_energy(ispin,nBas,nC,nO,nV,nR,nS,ERI,nOOt,nVVt,X1t,Y1t,X2t,Y2t,Ec(iAC,ispin))
|
||||||
|
|
||||||
|
@ -67,8 +67,7 @@ subroutine crRPA(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,n
|
|||||||
|
|
||||||
ispin = 1
|
ispin = 1
|
||||||
|
|
||||||
call linear_response(ispin,.false.,TDA,eta,nBas,nC,nO,nV,nR,nS,-1d0,eHF,ERI, &
|
call phLR(ispin,.false.,TDA,eta,nBas,nC,nO,nV,nR,nS,-1d0,eHF,ERI,EcRPAx(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
EcRPAx(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
|
||||||
call print_excitation('crRPA@HF ',ispin,nS,Omega(:,ispin))
|
call print_excitation('crRPA@HF ',ispin,nS,Omega(:,ispin))
|
||||||
call print_transition_vectors(.true.,nBas,nC,nO,nV,nR,nS,dipole_int,Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
call print_transition_vectors(.true.,nBas,nC,nO,nV,nR,nS,dipole_int,Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
|
|
||||||
@ -80,8 +79,7 @@ subroutine crRPA(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,n
|
|||||||
|
|
||||||
ispin = 2
|
ispin = 2
|
||||||
|
|
||||||
call linear_response(ispin,.false.,TDA,eta,nBas,nC,nO,nV,nR,nS,-1d0,eHF,ERI, &
|
call phLR(ispin,.false.,TDA,eta,nBas,nC,nO,nV,nR,nS,-1d0,eHF,ERI,EcRPAx(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
EcRPAx(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
|
||||||
call print_excitation('crRPA@HF ',ispin,nS,Omega(:,ispin))
|
call print_excitation('crRPA@HF ',ispin,nS,Omega(:,ispin))
|
||||||
call print_transition_vectors(.false.,nBas,nC,nO,nV,nR,nS,dipole_int,Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
call print_transition_vectors(.false.,nBas,nC,nO,nV,nR,nS,dipole_int,Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine RPA(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI,dipole_int,eHF)
|
subroutine phRPA(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI,dipole_int,eHF)
|
||||||
|
|
||||||
! Perform a direct random phase approximation calculation
|
! Perform a direct random phase approximation calculation
|
||||||
|
|
||||||
@ -29,9 +29,9 @@ subroutine RPA(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR,
|
|||||||
! Local variables
|
! Local variables
|
||||||
|
|
||||||
integer :: ispin
|
integer :: ispin
|
||||||
double precision,allocatable :: Omega(:,:)
|
double precision,allocatable :: Om(:)
|
||||||
double precision,allocatable :: XpY(:,:,:)
|
double precision,allocatable :: XpY(:,:)
|
||||||
double precision,allocatable :: XmY(:,:,:)
|
double precision,allocatable :: XmY(:,:)
|
||||||
|
|
||||||
double precision :: EcRPA(nspin)
|
double precision :: EcRPA(nspin)
|
||||||
double precision :: EcAC(nspin)
|
double precision :: EcAC(nspin)
|
||||||
@ -58,7 +58,7 @@ subroutine RPA(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR,
|
|||||||
|
|
||||||
! Memory allocation
|
! Memory allocation
|
||||||
|
|
||||||
allocate(Omega(nS,nspin),XpY(nS,nS,nspin),XmY(nS,nS,nspin))
|
allocate(Om(nS),XpY(nS,nS),XmY(nS,nS))
|
||||||
|
|
||||||
! Singlet manifold
|
! Singlet manifold
|
||||||
|
|
||||||
@ -66,10 +66,9 @@ subroutine RPA(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR,
|
|||||||
|
|
||||||
ispin = 1
|
ispin = 1
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA,eta,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI, &
|
call phLR(ispin,.true.,TDA,eta,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI,EcRPA(ispin),Om,XpY,XmY)
|
||||||
EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
call print_excitation('RPA@HF ',ispin,nS,Om)
|
||||||
call print_excitation('RPA@HF ',ispin,nS,Omega(:,ispin))
|
call print_transition_vectors(.true.,nBas,nC,nO,nV,nR,nS,dipole_int,Om,XpY,XmY)
|
||||||
call print_transition_vectors(.true.,nBas,nC,nO,nV,nR,nS,dipole_int,Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -79,10 +78,9 @@ subroutine RPA(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR,
|
|||||||
|
|
||||||
ispin = 2
|
ispin = 2
|
||||||
|
|
||||||
call linear_response(ispin,.true.,TDA,eta,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI, &
|
call phLR(ispin,.true.,TDA,eta,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI,EcRPA(ispin),Om,XpY,XmY)
|
||||||
EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
call print_excitation('RPA@HF ',ispin,nS,Om)
|
||||||
call print_excitation('RPA@HF ',ispin,nS,Omega(:,ispin))
|
call print_transition_vectors(.false.,nBas,nC,nO,nV,nR,nS,dipole_int,Om,XpY,XmY)
|
||||||
call print_transition_vectors(.false.,nBas,nC,nO,nV,nR,nS,dipole_int,Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -102,6 +100,8 @@ subroutine RPA(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR,
|
|||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
|
deallocate(Om,XpY,XmY)
|
||||||
|
|
||||||
! Compute the correlation energy via the adiabatic connection
|
! Compute the correlation energy via the adiabatic connection
|
||||||
! Switch off ACFDT for RPA as the trace formula is equivalent
|
! Switch off ACFDT for RPA as the trace formula is equivalent
|
||||||
|
|
||||||
@ -134,4 +134,4 @@ subroutine RPA(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR,
|
|||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
end subroutine RPA
|
end subroutine
|
@ -1,5 +1,4 @@
|
|||||||
subroutine RPAx(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR,nS,ENuc,ERHF, &
|
subroutine phRPAx(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI,dipole_int,eHF)
|
||||||
ERI,dipole_int,eHF)
|
|
||||||
|
|
||||||
! Perform random phase approximation calculation with exchange (aka TDHF)
|
! Perform random phase approximation calculation with exchange (aka TDHF)
|
||||||
|
|
||||||
@ -30,9 +29,9 @@ subroutine RPAx(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR
|
|||||||
! Local variables
|
! Local variables
|
||||||
|
|
||||||
integer :: ispin
|
integer :: ispin
|
||||||
double precision,allocatable :: Omega(:,:)
|
double precision,allocatable :: Om(:)
|
||||||
double precision,allocatable :: XpY(:,:,:)
|
double precision,allocatable :: XpY(:,:)
|
||||||
double precision,allocatable :: XmY(:,:,:)
|
double precision,allocatable :: XmY(:,:)
|
||||||
|
|
||||||
double precision :: EcRPAx(nspin)
|
double precision :: EcRPAx(nspin)
|
||||||
double precision :: EcAC(nspin)
|
double precision :: EcAC(nspin)
|
||||||
@ -60,7 +59,7 @@ subroutine RPAx(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR
|
|||||||
|
|
||||||
! Memory allocation
|
! Memory allocation
|
||||||
|
|
||||||
allocate(Omega(nS,nspin),XpY(nS,nS,nspin),XmY(nS,nS,nspin))
|
allocate(Om(nS),XpY(nS,nS),XmY(nS,nS))
|
||||||
|
|
||||||
! Singlet manifold
|
! Singlet manifold
|
||||||
|
|
||||||
@ -68,10 +67,9 @@ subroutine RPAx(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR
|
|||||||
|
|
||||||
ispin = 1
|
ispin = 1
|
||||||
|
|
||||||
call linear_response(ispin,.false.,TDA,eta,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI, &
|
call phLR(ispin,.false.,TDA,eta,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI,EcRPAx(ispin),Om,XpY,XmY)
|
||||||
EcRPAx(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
call print_excitation('RPAx@HF ',ispin,nS,Om)
|
||||||
call print_excitation('RPAx@HF ',ispin,nS,Omega(:,ispin))
|
call print_transition_vectors(.true.,nBas,nC,nO,nV,nR,nS,dipole_int,Om,XpY,XmY)
|
||||||
call print_transition_vectors(.true.,nBas,nC,nO,nV,nR,nS,dipole_int,Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -81,10 +79,9 @@ subroutine RPAx(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR
|
|||||||
|
|
||||||
ispin = 2
|
ispin = 2
|
||||||
|
|
||||||
call linear_response(ispin,.false.,TDA,eta,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI, &
|
call phLR(ispin,.false.,TDA,eta,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI,EcRPAx(ispin),Om,XpY,XmY)
|
||||||
EcRPAx(ispin),Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
call print_excitation('RPAx@HF ',ispin,nS,Om)
|
||||||
call print_excitation('RPAx@HF ',ispin,nS,Omega(:,ispin))
|
call print_transition_vectors(.false.,nBas,nC,nO,nV,nR,nS,dipole_int,Om,XpY,XmY)
|
||||||
call print_transition_vectors(.false.,nBas,nC,nO,nV,nR,nS,dipole_int,Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -104,6 +101,10 @@ subroutine RPAx(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR
|
|||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
|
! deallocate memory
|
||||||
|
|
||||||
|
deallocate(Om,XpY,XmY)
|
||||||
|
|
||||||
! Compute the correlation energy via the adiabatic connection
|
! Compute the correlation energy via the adiabatic connection
|
||||||
|
|
||||||
if(doACFDT) then
|
if(doACFDT) then
|
||||||
@ -127,4 +128,4 @@ subroutine RPAx(TDA,doACFDT,exchange_kernel,singlet,triplet,eta,nBas,nC,nO,nV,nR
|
|||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
end subroutine RPAx
|
end subroutine
|
@ -28,10 +28,10 @@ subroutine ppRPA(TDA,doACFDT,singlet,triplet,nBas,nC,nO,nV,nR,ENuc,ERHF,ERI,dipo
|
|||||||
integer :: nS
|
integer :: nS
|
||||||
integer :: nOO
|
integer :: nOO
|
||||||
integer :: nVV
|
integer :: nVV
|
||||||
double precision,allocatable :: Omega1(:)
|
double precision,allocatable :: Om1(:)
|
||||||
double precision,allocatable :: X1(:,:)
|
double precision,allocatable :: X1(:,:)
|
||||||
double precision,allocatable :: Y1(:,:)
|
double precision,allocatable :: Y1(:,:)
|
||||||
double precision,allocatable :: Omega2(:)
|
double precision,allocatable :: Om2(:)
|
||||||
double precision,allocatable :: X2(:,:)
|
double precision,allocatable :: X2(:,:)
|
||||||
double precision,allocatable :: Y2(:,:)
|
double precision,allocatable :: Y2(:,:)
|
||||||
|
|
||||||
@ -69,17 +69,16 @@ subroutine ppRPA(TDA,doACFDT,singlet,triplet,nBas,nC,nO,nV,nR,ENuc,ERHF,ERI,dipo
|
|||||||
nOO = nO*(nO+1)/2
|
nOO = nO*(nO+1)/2
|
||||||
nVV = nV*(nV+1)/2
|
nVV = nV*(nV+1)/2
|
||||||
|
|
||||||
allocate(Omega1(nVV),X1(nVV,nVV),Y1(nOO,nVV),Omega2(nOO),X2(nVV,nOO),Y2(nOO,nOO))
|
allocate(Om1(nVV),X1(nVV,nVV),Y1(nOO,nVV),Om2(nOO),X2(nVV,nOO),Y2(nOO,nOO))
|
||||||
|
|
||||||
call linear_response_pp(ispin,TDA,nBas,nC,nO,nV,nR,nOO,nVV,1d0,e,ERI, &
|
call ppLR(ispin,TDA,nBas,nC,nO,nV,nR,nOO,nVV,1d0,e,ERI,Om1,X1,Y1,Om2,X2,Y2,Ec_ppRPA(ispin))
|
||||||
Omega1,X1,Y1,Omega2,X2,Y2,Ec_ppRPA(ispin))
|
|
||||||
|
|
||||||
! call print_transition_vectors_pp(.true.,nBas,nC,nO,nV,nR,nOO,nVV,dipole_int,Omega1,X1,Y1,Omega2,X2,Y2)
|
! call print_transition_vectors_pp(.true.,nBas,nC,nO,nV,nR,nOO,nVV,dipole_int,Om1,X1,Y1,Om2,X2,Y2)
|
||||||
|
|
||||||
call print_excitation('pp-BSE (N+2)',ispin,nVV,Omega1)
|
call print_excitation('pp-BSE (N+2)',ispin,nVV,Om1)
|
||||||
call print_excitation('pp-BSE (N-2)',ispin,nOO,Omega2)
|
call print_excitation('pp-BSE (N-2)',ispin,nOO,Om2)
|
||||||
|
|
||||||
deallocate(Omega1,X1,Y1,Omega2,X2,Y2)
|
deallocate(Om1,X1,Y1,Om2,X2,Y2)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -97,17 +96,16 @@ subroutine ppRPA(TDA,doACFDT,singlet,triplet,nBas,nC,nO,nV,nR,ENuc,ERHF,ERI,dipo
|
|||||||
nOO = nO*(nO-1)/2
|
nOO = nO*(nO-1)/2
|
||||||
nVV = nV*(nV-1)/2
|
nVV = nV*(nV-1)/2
|
||||||
|
|
||||||
allocate(Omega1(nVV),X1(nVV,nVV),Y1(nOO,nVV),Omega2(nOO),X2(nVV,nOO),Y2(nOO,nOO))
|
allocate(Om1(nVV),X1(nVV,nVV),Y1(nOO,nVV),Om2(nOO),X2(nVV,nOO),Y2(nOO,nOO))
|
||||||
|
|
||||||
call linear_response_pp(ispin,TDA,nBas,nC,nO,nV,nR,nOO,nVV,1d0,e,ERI, &
|
call ppLR(ispin,TDA,nBas,nC,nO,nV,nR,nOO,nVV,1d0,e,ERI,Om1,X1,Y1,Om2,X2,Y2,Ec_ppRPA(ispin))
|
||||||
Omega1,X1,Y1,Omega2,X2,Y2,Ec_ppRPA(ispin))
|
|
||||||
|
|
||||||
! call print_transition_vectors_pp(.false.,nBas,nC,nO,nV,nR,nOO,nVV,dipole_int,Omega1,X1,Y1,Omega2,X2,Y2)
|
! call print_transition_vectors_pp(.false.,nBas,nC,nO,nV,nR,nOO,nVV,dipole_int,Om1,X1,Y1,Om2,X2,Y2)
|
||||||
|
|
||||||
call print_excitation('pp-BSE (N+2)',ispin,nVV,Omega1)
|
call print_excitation('pp-BSE (N+2)',ispin,nVV,Om1)
|
||||||
call print_excitation('pp-BSE (N-2)',ispin,nOO,Omega2)
|
call print_excitation('pp-BSE (N-2)',ispin,nOO,Om2)
|
||||||
|
|
||||||
deallocate(Omega1,X1,Y1,Omega2,X2,Y2)
|
deallocate(Om1,X1,Y1,Om2,X2,Y2)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ subroutine soRPAx(TDA,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI,eHF)
|
|||||||
|
|
||||||
ispin = 3
|
ispin = 3
|
||||||
|
|
||||||
call linear_response(ispin,.false.,TDA,0d0,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI,EcRPAx,Omega,XpY,XmY)
|
call pphLR(ispin,.false.,TDA,0d0,nBas,nC,nO,nV,nR,nS,1d0,eHF,ERI,EcRPAx,Omega,XpY,XmY)
|
||||||
call print_excitation('soRPAx@HF ',ispin,nS,Omega)
|
call print_excitation('soRPAx@HF ',ispin,nS,Omega)
|
||||||
|
|
||||||
EcRPAx = 0.5d0*EcRPAx
|
EcRPAx = 0.5d0*EcRPAx
|
||||||
|
Loading…
Reference in New Issue
Block a user