mirror of
https://github.com/pfloos/quack
synced 2024-12-23 04:43:42 +01:00
S^2 spin flip almost OK
This commit is contained in:
parent
3d2ca7529f
commit
73e6c58852
@ -1,6 +1,6 @@
|
|||||||
integer,parameter :: ncart = 3
|
integer,parameter :: ncart = 3
|
||||||
integer,parameter :: nspin = 2
|
integer,parameter :: nspin = 2
|
||||||
integer,parameter :: nsp = 3
|
integer,parameter :: nsp = 3
|
||||||
integer,parameter :: maxEns = 10
|
integer,parameter :: maxEns = 10
|
||||||
integer,parameter :: maxShell = 512
|
integer,parameter :: maxShell = 512
|
||||||
integer,parameter :: maxL = 7
|
integer,parameter :: maxL = 7
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
# CC: maxSCF thresh DIIS n_diis
|
# CC: maxSCF thresh DIIS n_diis
|
||||||
64 0.0000001 T 5
|
64 0.0000001 T 5
|
||||||
# spin: singlet triplet spin_conserved spin_flip TDA
|
# spin: TDA singlet triplet spin_conserved spin_flip
|
||||||
T T T T F
|
F T T T T
|
||||||
# GF: maxSCF thresh DIIS n_diis lin eta renorm
|
# GF: maxSCF thresh DIIS n_diis lin eta renorm
|
||||||
256 0.00001 T 5 T 0.0 3
|
256 0.00001 T 5 T 0.0 3
|
||||||
# GW/GT: maxSCF thresh DIIS n_diis lin eta COHSEX SOSEX TDA_W G0W GW0
|
# GW/GT: maxSCF thresh DIIS n_diis lin eta COHSEX SOSEX TDA_W G0W GW0
|
||||||
@ -13,6 +13,6 @@
|
|||||||
# ACFDT: AC Kx XBS
|
# ACFDT: AC Kx XBS
|
||||||
F F T
|
F F T
|
||||||
# BSE: BSE dBSE dTDA evDyn
|
# BSE: BSE dBSE dTDA evDyn
|
||||||
F F T F
|
T F T F
|
||||||
# MCMP2: nMC nEq nWalk dt nPrint iSeed doDrift
|
# MCMP2: nMC nEq nWalk dt nPrint iSeed doDrift
|
||||||
1000000 100000 10 0.3 10000 1234 T
|
1000000 100000 10 0.3 10000 1234 T
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine UCIS(spin_conserved,spin_flip,nBas,nC,nO,nV,nR,nS,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab, &
|
subroutine UCIS(spin_conserved,spin_flip,nBas,nC,nO,nV,nR,nS,ERI_aaaa,ERI_aabb,ERI_bbbb, &
|
||||||
dipole_int_aa,dipole_int_bb,eHF,cHF,S)
|
dipole_int_aa,dipole_int_bb,eHF,cHF,S)
|
||||||
|
|
||||||
! Perform configuration interaction single calculation`
|
! Perform configuration interaction single calculation`
|
||||||
@ -22,7 +22,6 @@ subroutine UCIS(spin_conserved,spin_flip,nBas,nC,nO,nV,nR,nS,ERI_aaaa,ERI_aabb,E
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart,nspin)
|
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart,nspin)
|
||||||
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart,nspin)
|
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart,nspin)
|
||||||
|
|
||||||
@ -72,7 +71,7 @@ subroutine UCIS(spin_conserved,spin_flip,nBas,nC,nO,nV,nR,nS,ERI_aaaa,ERI_aabb,E
|
|||||||
allocate(A_sc(nS_sc,nS_sc),Omega_sc(nS_sc))
|
allocate(A_sc(nS_sc,nS_sc),Omega_sc(nS_sc))
|
||||||
|
|
||||||
call unrestricted_linear_response_A_matrix(ispin,.false.,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,lambda,eHF, &
|
call unrestricted_linear_response_A_matrix(ispin,.false.,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,lambda,eHF, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,A_sc)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,A_sc)
|
||||||
|
|
||||||
if(dump_matrix) then
|
if(dump_matrix) then
|
||||||
print*,'CIS matrix (spin-conserved transitions)'
|
print*,'CIS matrix (spin-conserved transitions)'
|
||||||
@ -112,7 +111,7 @@ subroutine UCIS(spin_conserved,spin_flip,nBas,nC,nO,nV,nR,nS,ERI_aaaa,ERI_aabb,E
|
|||||||
allocate(A_sf(nS_sf,nS_sf),Omega_sf(nS_sf),Z_sf(nS_sf,nS_sf))
|
allocate(A_sf(nS_sf,nS_sf),Omega_sf(nS_sf),Z_sf(nS_sf,nS_sf))
|
||||||
|
|
||||||
call unrestricted_linear_response_A_matrix(ispin,.false.,nBas,nC,nO,nV,nR,nS_ab,nS_ba,nS_sf,lambda,eHF, &
|
call unrestricted_linear_response_A_matrix(ispin,.false.,nBas,nC,nO,nV,nR,nS_ab,nS_ba,nS_sf,lambda,eHF, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,A_sf)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,A_sf)
|
||||||
|
|
||||||
if(dump_matrix) then
|
if(dump_matrix) then
|
||||||
print*,'CIS matrix (spin-conserved transitions)'
|
print*,'CIS matrix (spin-conserved transitions)'
|
||||||
|
@ -14,7 +14,7 @@ subroutine print_excitation(method,ispin,nS,Omega)
|
|||||||
! Local variables
|
! Local variables
|
||||||
|
|
||||||
character*14 :: spin_manifold
|
character*14 :: spin_manifold
|
||||||
integer,parameter :: maxS = 32
|
integer,parameter :: maxS = 10
|
||||||
integer :: ia
|
integer :: ia
|
||||||
|
|
||||||
if(ispin == 1) spin_manifold = 'singlet'
|
if(ispin == 1) spin_manifold = 'singlet'
|
@ -152,23 +152,23 @@ subroutine unrestricted_S2_expval(ispin,nBas,nC,nO,nV,nR,nS,nSa,nSb,nSt,maxS,c,S
|
|||||||
Yat(:,:) = transpose(Ya(:,:))
|
Yat(:,:) = transpose(Ya(:,:))
|
||||||
Ybt(:,:) = transpose(Yb(:,:))
|
Ybt(:,:) = transpose(Yb(:,:))
|
||||||
|
|
||||||
S2(m) = 0d0
|
S2(m) = S2_gs &
|
||||||
|
|
||||||
! S2(m) = S2_gs &
|
+ trace_matrix(nV(1),matmul(Xbt,matmul(OOt,matmul(OO,Xb)))) &
|
||||||
! + trace_matrix(nV(1),matmul(Xat,matmul(OO,matmul(OOt,Xa)))) &
|
- trace_matrix(nO(2),matmul(Xb,matmul(VO,matmul(VOt,Xbt)))) &
|
||||||
! + trace_matrix(nV(2),matmul(Xbt,matmul(OOt,matmul(OO,Xb)))) &
|
+ trace_matrix(nO(2),matmul(Xb,VO))**2 &
|
||||||
! - trace_matrix(nO(1),matmul(Xa,matmul(VO,matmul(VOt,Xat)))) &
|
+ trace_matrix(nV(2),matmul(Yat,matmul(OO,matmul(OOt,Ya)))) &
|
||||||
! - trace_matrix(nO(2),matmul(Xb,matmul(OVt,matmul(OV,Xbt)))) &
|
+ trace_matrix(nO(1),matmul(Ya,matmul(OVt,matmul(OV,Yat)))) &
|
||||||
! - 2d0*trace_matrix(nO(1),matmul(OO,matmul(Xb,matmul(VVt,Xat)))) &
|
+ trace_matrix(nO(1),matmul(Ya,OVt))**2 &
|
||||||
!
|
- 2d0*trace_matrix(nO(2),matmul(Xb,VO))*trace_matrix(nO(1),matmul(Ya,OVt)) &
|
||||||
! - 2d0*trace_matrix(nV(2),matmul(OVt,matmul(Xa,matmul(VO,Yb)))) &
|
|
||||||
! - 2d0*trace_matrix(nV(1),matmul(VO,matmul(Xb,matmul(OVt,Ya)))) &
|
+ trace_matrix(nV(2),matmul(Xat,matmul(OO,matmul(OOt,Xa)))) &
|
||||||
!
|
- trace_matrix(nO(1),matmul(Xa,matmul(OVt,matmul(OV,Xat)))) &
|
||||||
! - trace_matrix(nV(1),matmul(Yat,matmul(OO,matmul(OOt,Ya)))) &
|
+ trace_matrix(nO(1),matmul(Xa,OVt))**2 &
|
||||||
! - trace_matrix(nV(2),matmul(Ybt,matmul(OOt,matmul(OO,Yb)))) &
|
+ trace_matrix(nV(1),matmul(Ybt,matmul(OOt,matmul(OO,Yb)))) &
|
||||||
! + trace_matrix(nO(1),matmul(Ya,matmul(VO,matmul(VOt,Yat)))) &
|
- trace_matrix(nO(2),matmul(Yb,matmul(VO,matmul(VOt,Ybt)))) &
|
||||||
! + trace_matrix(nO(2),matmul(Yb,matmul(OVt,matmul(OV,Ybt)))) &
|
+ trace_matrix(nV(1),matmul(Ybt,VOt))**2 &
|
||||||
! + 2d0*trace_matrix(nO(1),matmul(Ya,matmul(VV,matmul(Ybt,OOt))))
|
- 2d0*trace_matrix(nO(1),matmul(Xa,OVt))*trace_matrix(nO(2),matmul(Yb,VO))
|
||||||
|
|
||||||
end do
|
end do
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine unrestricted_linear_response(ispin,dRPA,TDA,BSE,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda, &
|
subroutine unrestricted_linear_response(ispin,dRPA,TDA,BSE,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda, &
|
||||||
e,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,EcRPA,Omega,XpY,XmY)
|
e,ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,EcRPA,Omega,XpY,XmY)
|
||||||
|
|
||||||
! Compute linear response for unrestricted formalism
|
! Compute linear response for unrestricted formalism
|
||||||
|
|
||||||
@ -27,7 +27,6 @@ subroutine unrestricted_linear_response(ispin,dRPA,TDA,BSE,eta,nBas,nC,nO,nV,nR,
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
|
|
||||||
double precision,intent(in) :: OmRPA(nS_sc)
|
double precision,intent(in) :: OmRPA(nS_sc)
|
||||||
double precision,intent(in) :: rho_RPA(nBas,nBas,nS_sc,nspin)
|
double precision,intent(in) :: rho_RPA(nBas,nBas,nS_sc,nspin)
|
||||||
@ -58,11 +57,11 @@ subroutine unrestricted_linear_response(ispin,dRPA,TDA,BSE,eta,nBas,nC,nO,nV,nR,
|
|||||||
! Build A and B matrices
|
! Build A and B matrices
|
||||||
|
|
||||||
call unrestricted_linear_response_A_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nSa,nSb,nSt,lambda,e, &
|
call unrestricted_linear_response_A_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nSa,nSb,nSt,lambda,e, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,A)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,A)
|
||||||
|
|
||||||
if(BSE) &
|
if(BSE) &
|
||||||
call unrestricted_Bethe_Salpeter_A_matrix(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda,e, &
|
call unrestricted_Bethe_Salpeter_A_matrix(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda,e, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,A)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,A)
|
||||||
|
|
||||||
! Tamm-Dancoff approximation
|
! Tamm-Dancoff approximation
|
||||||
|
|
||||||
@ -70,11 +69,11 @@ subroutine unrestricted_linear_response(ispin,dRPA,TDA,BSE,eta,nBas,nC,nO,nV,nR,
|
|||||||
if(.not. TDA) then
|
if(.not. TDA) then
|
||||||
|
|
||||||
call unrestricted_linear_response_B_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nSa,nSb,nSt,lambda, &
|
call unrestricted_linear_response_B_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nSa,nSb,nSt,lambda, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,B)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,B)
|
||||||
|
|
||||||
if(BSE) &
|
if(BSE) &
|
||||||
call unrestricted_Bethe_Salpeter_B_matrix(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda, &
|
call unrestricted_Bethe_Salpeter_B_matrix(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,B)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,B)
|
||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine unrestricted_linear_response_A_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nSa,nSb,nSt,lambda, &
|
subroutine unrestricted_linear_response_A_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nSa,nSb,nSt,lambda, &
|
||||||
e,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,A_lr)
|
e,ERI_aaaa,ERI_aabb,ERI_bbbb,A_lr)
|
||||||
|
|
||||||
! Compute linear response
|
! Compute linear response
|
||||||
|
|
||||||
@ -23,7 +23,6 @@ subroutine unrestricted_linear_response_A_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nSa
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
|
|
||||||
! Local variables
|
! Local variables
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine unrestricted_linear_response_B_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nSa,nSb,nSt,lambda, &
|
subroutine unrestricted_linear_response_B_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nSa,nSb,nSt,lambda, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,B_lr)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,B_lr)
|
||||||
|
|
||||||
! Compute linear response
|
! Compute linear response
|
||||||
|
|
||||||
@ -22,7 +22,6 @@ subroutine unrestricted_linear_response_B_matrix(ispin,dRPA,nBas,nC,nO,nV,nR,nSa
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
|
|
||||||
! Local variables
|
! Local variables
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine UG0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,spin_flip, &
|
subroutine UG0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,spin_flip, &
|
||||||
linearize,eta,nBas,nC,nO,nV,nR,nS,ENuc,EUHF,Hc,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab, &
|
linearize,eta,nBas,nC,nO,nV,nR,nS,ENuc,EUHF,Hc,ERI_aaaa,ERI_aabb,ERI_bbbb, &
|
||||||
dipole_int_aa,dipole_int_bb,PHF,cHF,eHF,eGW)
|
dipole_int_aa,dipole_int_bb,PHF,cHF,eHF,eGW)
|
||||||
|
|
||||||
! Perform unrestricted G0W0 calculation
|
! Perform unrestricted G0W0 calculation
|
||||||
@ -40,7 +40,6 @@ subroutine UG0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,ev
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart)
|
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart)
|
||||||
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart)
|
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart)
|
||||||
|
|
||||||
@ -118,7 +117,7 @@ subroutine UG0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,ev
|
|||||||
ispin = 1
|
ispin = 1
|
||||||
|
|
||||||
call unrestricted_linear_response(ispin,.true.,TDA_W,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0, &
|
call unrestricted_linear_response(ispin,.true.,TDA_W,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0, &
|
||||||
eHF,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
eHF,ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
|
|
||||||
if(print_W) call print_excitation('RPA@UHF ',5,nS_sc,OmRPA)
|
if(print_W) call print_excitation('RPA@UHF ',5,nS_sc,OmRPA)
|
||||||
|
|
||||||
@ -167,7 +166,7 @@ subroutine UG0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,ev
|
|||||||
! Compute RPA correlation energy
|
! Compute RPA correlation energy
|
||||||
|
|
||||||
call unrestricted_linear_response(ispin,.true.,TDA_W,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0, &
|
call unrestricted_linear_response(ispin,.true.,TDA_W,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0, &
|
||||||
eGW,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
eGW,ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
|
|
||||||
! Dump results
|
! Dump results
|
||||||
|
|
||||||
@ -182,7 +181,7 @@ subroutine UG0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,ev
|
|||||||
if(BSE) then
|
if(BSE) then
|
||||||
|
|
||||||
call unrestricted_Bethe_Salpeter(TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,spin_flip,eta,nBas,nC,nO,nV,nR,nS, &
|
call unrestricted_Bethe_Salpeter(TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,spin_flip,eta,nBas,nC,nO,nV,nR,nS, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,dipole_int_aa,dipole_int_bb,eHF,eGW,EcBSE)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,dipole_int_aa,dipole_int_bb,eHF,eGW,EcBSE)
|
||||||
|
|
||||||
! if(exchange_kernel) then
|
! if(exchange_kernel) then
|
||||||
!
|
!
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
subroutine evUGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA, &
|
subroutine evUGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA, &
|
||||||
G0W,GW0,dBSE,dTDA,evDyn,spin_conserved,spin_flip,eta,nBas,nC,nO,nV,nR,nS,ENuc, &
|
G0W,GW0,dBSE,dTDA,evDyn,spin_conserved,spin_flip,eta,nBas,nC,nO,nV,nR,nS,ENuc, &
|
||||||
ERHF,Hc,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,dipole_int_aa,dipole_int_bb,PHF,cHF,eHF,eG0W0)
|
ERHF,Hc,ERI_aaaa,ERI_aabb,ERI_bbbb,dipole_int_aa,dipole_int_bb,PHF,cHF,eHF,eG0W0)
|
||||||
|
|
||||||
! Perform self-consistent eigenvalue-only GW calculation
|
! Perform self-consistent eigenvalue-only GW calculation
|
||||||
|
|
||||||
@ -45,7 +45,6 @@ subroutine evUGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,BSE
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart)
|
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart)
|
||||||
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart)
|
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart)
|
||||||
|
|
||||||
@ -155,7 +154,7 @@ subroutine evUGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,BSE
|
|||||||
if(.not. GW0 .or. nSCF == 0) then
|
if(.not. GW0 .or. nSCF == 0) then
|
||||||
|
|
||||||
call unrestricted_linear_response(ispin,.true.,TDA_W,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0, &
|
call unrestricted_linear_response(ispin,.true.,TDA_W,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0, &
|
||||||
eGW,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
eGW,ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
@ -256,7 +255,7 @@ subroutine evUGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,BSE
|
|||||||
if(BSE) then
|
if(BSE) then
|
||||||
|
|
||||||
call unrestricted_Bethe_Salpeter(TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,spin_flip,eta,nBas,nC,nO,nV,nR,nS, &
|
call unrestricted_Bethe_Salpeter(TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,spin_flip,eta,nBas,nC,nO,nV,nR,nS, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,dipole_int_aa,dipole_int_bb,eGW,eGW,EcBSE)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,dipole_int_aa,dipole_int_bb,eGW,eGW,EcBSE)
|
||||||
|
|
||||||
! if(exchange_kernel) then
|
! if(exchange_kernel) then
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine unrestricted_Bethe_Salpeter(TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,spin_flip,eta, &
|
subroutine unrestricted_Bethe_Salpeter(TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,spin_flip,eta, &
|
||||||
nBas,nC,nO,nV,nR,nS,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab, &
|
nBas,nC,nO,nV,nR,nS,ERI_aaaa,ERI_aabb,ERI_bbbb, &
|
||||||
dipole_int_aa,dipole_int_bb,eW,eGW,EcBSE)
|
dipole_int_aa,dipole_int_bb,eW,eGW,EcBSE)
|
||||||
|
|
||||||
! Compute the Bethe-Salpeter excitation energies
|
! Compute the Bethe-Salpeter excitation energies
|
||||||
@ -29,7 +29,6 @@ subroutine unrestricted_Bethe_Salpeter(TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart)
|
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart)
|
||||||
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart)
|
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart)
|
||||||
|
|
||||||
@ -76,7 +75,7 @@ subroutine unrestricted_Bethe_Salpeter(TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,
|
|||||||
! Compute spin-conserved RPA screening
|
! Compute spin-conserved RPA screening
|
||||||
|
|
||||||
call unrestricted_linear_response(isp_W,.true.,TDA_W,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0, &
|
call unrestricted_linear_response(isp_W,.true.,TDA_W,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0, &
|
||||||
eW,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
eW,ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,EcRPA,OmRPA,XpY_RPA,XmY_RPA)
|
||||||
|
|
||||||
call unrestricted_excitation_density(nBas,nC,nO,nR,nS_aa,nS_bb,nS_sc,ERI_aaaa,ERI_aabb,ERI_bbbb,XpY_RPA,rho_RPA)
|
call unrestricted_excitation_density(nBas,nC,nO,nR,nS_aa,nS_bb,nS_sc,ERI_aaaa,ERI_aabb,ERI_bbbb,XpY_RPA,rho_RPA)
|
||||||
|
|
||||||
@ -95,7 +94,7 @@ subroutine unrestricted_Bethe_Salpeter(TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,
|
|||||||
! Compute spin-conserved BSE excitation energies
|
! Compute spin-conserved BSE excitation energies
|
||||||
|
|
||||||
call unrestricted_linear_response(ispin,.true.,TDA,.true.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0, &
|
call unrestricted_linear_response(ispin,.true.,TDA,.true.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0, &
|
||||||
eGW,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,EcBSE(ispin), &
|
eGW,ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,EcBSE(ispin), &
|
||||||
OmBSE_sc,XpY_BSE_sc,XmY_BSE_sc)
|
OmBSE_sc,XpY_BSE_sc,XmY_BSE_sc)
|
||||||
call print_excitation('BSE@UG0W0',5,nS_sc,OmBSE_sc)
|
call print_excitation('BSE@UG0W0',5,nS_sc,OmBSE_sc)
|
||||||
! call print_unrestricted_transition_vectors(ispin,nBas,nC,nO,nV,nR,nS,nS_aa,nS_bb,nS_sc,dipole_int_aa,dipole_int_bb, &
|
! call print_unrestricted_transition_vectors(ispin,nBas,nC,nO,nV,nR,nS,nS_aa,nS_bb,nS_sc,dipole_int_aa,dipole_int_bb, &
|
||||||
@ -107,7 +106,7 @@ subroutine unrestricted_Bethe_Salpeter(TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,
|
|||||||
|
|
||||||
if(dBSE) &
|
if(dBSE) &
|
||||||
call unrestricted_Bethe_Salpeter_dynamic_perturbation(ispin,dTDA,eta,nBas,nC,nO,nV,nR,nS,nS_aa,nS_bb,nS_sc,nS_sc, &
|
call unrestricted_Bethe_Salpeter_dynamic_perturbation(ispin,dTDA,eta,nBas,nC,nO,nV,nR,nS,nS_aa,nS_bb,nS_sc,nS_sc, &
|
||||||
eGW,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,dipole_int_aa,dipole_int_bb, &
|
eGW,ERI_aaaa,ERI_aabb,ERI_bbbb,dipole_int_aa,dipole_int_bb, &
|
||||||
OmRPA,rho_RPA,OmBSE_sc,XpY_BSE_sc,XmY_BSE_sc)
|
OmRPA,rho_RPA,OmBSE_sc,XpY_BSE_sc,XmY_BSE_sc)
|
||||||
|
|
||||||
deallocate(OmBSE_sc,XpY_BSE_sc,XmY_BSE_sc)
|
deallocate(OmBSE_sc,XpY_BSE_sc,XmY_BSE_sc)
|
||||||
@ -134,7 +133,7 @@ subroutine unrestricted_Bethe_Salpeter(TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,
|
|||||||
! Compute spin-flip BSE excitation energies
|
! Compute spin-flip BSE excitation energies
|
||||||
|
|
||||||
call unrestricted_linear_response(ispin,.true.,TDA,.true.,eta,nBas,nC,nO,nV,nR,nS_ab,nS_ba,nS_sf,nS_sc,1d0, &
|
call unrestricted_linear_response(ispin,.true.,TDA,.true.,eta,nBas,nC,nO,nV,nR,nS_ab,nS_ba,nS_sf,nS_sc,1d0, &
|
||||||
eGW,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,EcBSE(ispin), &
|
eGW,ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,EcBSE(ispin), &
|
||||||
OmBSE_sf,XpY_BSE_sf,XmY_BSE_sf)
|
OmBSE_sf,XpY_BSE_sf,XmY_BSE_sf)
|
||||||
|
|
||||||
call print_excitation('BSE@UG0W0',6,nS_sf,OmBSE_sf)
|
call print_excitation('BSE@UG0W0',6,nS_sf,OmBSE_sf)
|
||||||
@ -145,7 +144,7 @@ subroutine unrestricted_Bethe_Salpeter(TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,
|
|||||||
|
|
||||||
if(dBSE) &
|
if(dBSE) &
|
||||||
call unrestricted_Bethe_Salpeter_dynamic_perturbation(ispin,dTDA,eta,nBas,nC,nO,nV,nR,nS,nS_ab,nS_ba,nS_sf,nS_sc, &
|
call unrestricted_Bethe_Salpeter_dynamic_perturbation(ispin,dTDA,eta,nBas,nC,nO,nV,nR,nS,nS_ab,nS_ba,nS_sf,nS_sc, &
|
||||||
eGW,ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,dipole_int_aa,dipole_int_bb, &
|
eGW,ERI_aaaa,ERI_aabb,ERI_bbbb,dipole_int_aa,dipole_int_bb, &
|
||||||
OmRPA,rho_RPA,OmBSE_sf,XpY_BSE_sf,XmY_BSE_sf)
|
OmRPA,rho_RPA,OmBSE_sf,XpY_BSE_sf,XmY_BSE_sf)
|
||||||
|
|
||||||
deallocate(OmBSE_sf,XpY_BSE_sf,XmY_BSE_sf)
|
deallocate(OmBSE_sf,XpY_BSE_sf,XmY_BSE_sf)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine unrestricted_Bethe_Salpeter_A_matrix(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda,eGW, &
|
subroutine unrestricted_Bethe_Salpeter_A_matrix(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda,eGW, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,Omega,rho,A_lr)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,Omega,rho,A_lr)
|
||||||
|
|
||||||
! Compute the extra term for Bethe-Salpeter equation for linear response in the unrestricted formalism
|
! Compute the extra term for Bethe-Salpeter equation for linear response in the unrestricted formalism
|
||||||
|
|
||||||
@ -24,7 +24,6 @@ subroutine unrestricted_Bethe_Salpeter_A_matrix(ispin,eta,nBas,nC,nO,nV,nR,nSa,n
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
double precision,intent(in) :: Omega(nS_sc)
|
double precision,intent(in) :: Omega(nS_sc)
|
||||||
double precision,intent(in) :: rho(nBas,nBas,nS_sc,nspin)
|
double precision,intent(in) :: rho(nBas,nBas,nS_sc,nspin)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine unrestricted_Bethe_Salpeter_A_matrix_dynamic(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda,eGW, &
|
subroutine unrestricted_Bethe_Salpeter_A_matrix_dynamic(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda,eGW, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,OmBSE,A_dyn)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,OmBSE,A_dyn)
|
||||||
|
|
||||||
! Compute the extra term for dynamical Bethe-Salpeter equation for linear response in the unrestricted formalism
|
! Compute the extra term for dynamical Bethe-Salpeter equation for linear response in the unrestricted formalism
|
||||||
|
|
||||||
@ -24,7 +24,6 @@ subroutine unrestricted_Bethe_Salpeter_A_matrix_dynamic(ispin,eta,nBas,nC,nO,nV,
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
double precision,intent(in) :: OmRPA(nS_sc)
|
double precision,intent(in) :: OmRPA(nS_sc)
|
||||||
double precision,intent(in) :: rho_RPA(nBas,nBas,nS_sc,nspin)
|
double precision,intent(in) :: rho_RPA(nBas,nBas,nS_sc,nspin)
|
||||||
double precision,intent(in) :: OmBSE
|
double precision,intent(in) :: OmBSE
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine unrestricted_Bethe_Salpeter_B_matrix(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda, &
|
subroutine unrestricted_Bethe_Salpeter_B_matrix(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,Omega,rho,B_lr)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,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
|
||||||
|
|
||||||
@ -23,7 +23,6 @@ subroutine unrestricted_Bethe_Salpeter_B_matrix(ispin,eta,nBas,nC,nO,nV,nR,nSa,n
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
double precision,intent(in) :: Omega(nS_sc)
|
double precision,intent(in) :: Omega(nS_sc)
|
||||||
double precision,intent(in) :: rho(nBas,nBas,nS_sc,nspin)
|
double precision,intent(in) :: rho(nBas,nBas,nS_sc,nspin)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine unrestricted_Bethe_Salpeter_ZA_matrix_dynamic(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda,eGW, &
|
subroutine unrestricted_Bethe_Salpeter_ZA_matrix_dynamic(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,lambda,eGW, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,OmBSE,ZA_dyn)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,OmBSE,ZA_dyn)
|
||||||
|
|
||||||
! Compute the extra term for dynamical Bethe-Salpeter equation for linear response in the unrestricted formalism
|
! Compute the extra term for dynamical Bethe-Salpeter equation for linear response in the unrestricted formalism
|
||||||
|
|
||||||
@ -24,7 +24,6 @@ subroutine unrestricted_Bethe_Salpeter_ZA_matrix_dynamic(ispin,eta,nBas,nC,nO,nV
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
double precision,intent(in) :: OmRPA(nS_sc)
|
double precision,intent(in) :: OmRPA(nS_sc)
|
||||||
double precision,intent(in) :: rho_RPA(nBas,nBas,nS_sc,nspin)
|
double precision,intent(in) :: rho_RPA(nBas,nBas,nS_sc,nspin)
|
||||||
double precision,intent(in) :: OmBSE
|
double precision,intent(in) :: OmBSE
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine unrestricted_Bethe_Salpeter_dynamic_perturbation(ispin,dTDA,eta,nBas,nC,nO,nV,nR,nS,nSa,nSb,nSt,nS_sc,eGW, &
|
subroutine unrestricted_Bethe_Salpeter_dynamic_perturbation(ispin,dTDA,eta,nBas,nC,nO,nV,nR,nS,nSa,nSb,nSt,nS_sc,eGW, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,dipole_int_aa,dipole_int_bb, &
|
ERI_aaaa,ERI_aabb,ERI_bbbb,dipole_int_aa,dipole_int_bb, &
|
||||||
OmRPA,rho_RPA,OmBSE,XpY_BSE,XmY_BSE)
|
OmRPA,rho_RPA,OmBSE,XpY_BSE,XmY_BSE)
|
||||||
|
|
||||||
! Compute dynamical effects via perturbation theory for BSE
|
! Compute dynamical effects via perturbation theory for BSE
|
||||||
@ -27,7 +27,6 @@ subroutine unrestricted_Bethe_Salpeter_dynamic_perturbation(ispin,dTDA,eta,nBas,
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart)
|
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart)
|
||||||
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart)
|
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart)
|
||||||
double precision,intent(in) :: OmRPA(nS_sc)
|
double precision,intent(in) :: OmRPA(nS_sc)
|
||||||
@ -85,12 +84,12 @@ subroutine unrestricted_Bethe_Salpeter_dynamic_perturbation(ispin,dTDA,eta,nBas,
|
|||||||
! Resonant part of the BSE correction for dynamical TDA
|
! Resonant part of the BSE correction for dynamical TDA
|
||||||
|
|
||||||
call unrestricted_Bethe_Salpeter_A_matrix_dynamic(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,1d0,eGW, &
|
call unrestricted_Bethe_Salpeter_A_matrix_dynamic(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,1d0,eGW, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,OmBSE(ia),A_dyn)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,OmBSE(ia),A_dyn)
|
||||||
|
|
||||||
! Renormalization factor of the resonant parts for dynamical TDA
|
! Renormalization factor of the resonant parts for dynamical TDA
|
||||||
|
|
||||||
call unrestricted_Bethe_Salpeter_ZA_matrix_dynamic(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,1d0,eGW, &
|
call unrestricted_Bethe_Salpeter_ZA_matrix_dynamic(ispin,eta,nBas,nC,nO,nV,nR,nSa,nSb,nSt,nS_sc,1d0,eGW, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,OmRPA,rho_RPA,OmBSE(ia),ZA_dyn)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,OmRPA,rho_RPA,OmBSE(ia),ZA_dyn)
|
||||||
|
|
||||||
ZDyn(ia) = dot_product(X,matmul(ZA_dyn,X))
|
ZDyn(ia) = dot_product(X,matmul(ZA_dyn,X))
|
||||||
OmDyn(ia) = dot_product(X,matmul( A_dyn,X))
|
OmDyn(ia) = dot_product(X,matmul( A_dyn,X))
|
||||||
|
@ -70,7 +70,6 @@ program QuAcK
|
|||||||
double precision,allocatable :: ERI_MO_aaaa(:,:,:,:)
|
double precision,allocatable :: ERI_MO_aaaa(:,:,:,:)
|
||||||
double precision,allocatable :: ERI_MO_aabb(:,:,:,:)
|
double precision,allocatable :: ERI_MO_aabb(:,:,:,:)
|
||||||
double precision,allocatable :: ERI_MO_bbbb(:,:,:,:)
|
double precision,allocatable :: ERI_MO_bbbb(:,:,:,:)
|
||||||
double precision,allocatable :: ERI_MO_abab(:,:,:,:)
|
|
||||||
double precision,allocatable :: ERI_ERF_AO(:,:,:,:)
|
double precision,allocatable :: ERI_ERF_AO(:,:,:,:)
|
||||||
double precision,allocatable :: ERI_ERF_MO(:,:,:,:)
|
double precision,allocatable :: ERI_ERF_MO(:,:,:,:)
|
||||||
double precision,allocatable :: F12(:,:,:,:),Yuk(:,:,:,:),FC(:,:,:,:,:,:)
|
double precision,allocatable :: F12(:,:,:,:),Yuk(:,:,:,:),FC(:,:,:,:,:,:)
|
||||||
@ -169,7 +168,7 @@ program QuAcK
|
|||||||
|
|
||||||
call read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type, &
|
call read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type, &
|
||||||
maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, &
|
maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, &
|
||||||
singlet,triplet,spin_conserved,spin_flip,TDA, &
|
TDA,singlet,triplet,spin_conserved,spin_flip, &
|
||||||
maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,linGF,eta_GF,renormGF, &
|
maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,linGF,eta_GF,renormGF, &
|
||||||
maxSCF_GW,thresh_GW,DIIS_GW,n_diis_GW,linGW,eta_GW, &
|
maxSCF_GW,thresh_GW,DIIS_GW,n_diis_GW,linGW,eta_GW, &
|
||||||
COHSEX,SOSEX,TDA_W,G0W,GW0, &
|
COHSEX,SOSEX,TDA_W,G0W,GW0, &
|
||||||
@ -356,8 +355,7 @@ program QuAcK
|
|||||||
|
|
||||||
! Memory allocation
|
! Memory allocation
|
||||||
|
|
||||||
allocate(ERI_MO_aaaa(nBas,nBas,nBas,nBas),ERI_MO_aabb(nBas,nBas,nBas,nBas), &
|
allocate(ERI_MO_aaaa(nBas,nBas,nBas,nBas),ERI_MO_aabb(nBas,nBas,nBas,nBas),ERI_MO_bbbb(nBas,nBas,nBas,nBas))
|
||||||
ERI_MO_bbbb(nBas,nBas,nBas,nBas),ERI_MO_abab(nBas,nBas,nBas,nBas))
|
|
||||||
|
|
||||||
! 4-index transform for (aa|aa) block
|
! 4-index transform for (aa|aa) block
|
||||||
|
|
||||||
@ -383,14 +381,6 @@ program QuAcK
|
|||||||
ket2 = 2
|
ket2 = 2
|
||||||
call AOtoMO_integral_transform(bra1,bra2,ket1,ket2,nBas,cHF,ERI_AO,ERI_MO_bbbb)
|
call AOtoMO_integral_transform(bra1,bra2,ket1,ket2,nBas,cHF,ERI_AO,ERI_MO_bbbb)
|
||||||
|
|
||||||
! 4-index transform for (ab|ab) block
|
|
||||||
|
|
||||||
bra1 = 1
|
|
||||||
bra2 = 2
|
|
||||||
ket1 = 1
|
|
||||||
ket2 = 2
|
|
||||||
call AOtoMO_integral_transform(bra1,bra2,ket1,ket2,nBas,cHF,ERI_AO,ERI_MO_abab)
|
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
! Memory allocation
|
! Memory allocation
|
||||||
@ -612,7 +602,7 @@ program QuAcK
|
|||||||
if(unrestricted) then
|
if(unrestricted) then
|
||||||
|
|
||||||
call UCIS(spin_conserved,spin_flip,nBas,nC,nO,nV,nR,nS,ERI_MO_aaaa,ERI_MO_aabb, &
|
call UCIS(spin_conserved,spin_flip,nBas,nC,nO,nV,nR,nS,ERI_MO_aaaa,ERI_MO_aabb, &
|
||||||
ERI_MO_bbbb,ERI_MO_abab,dipole_int_aa,dipole_int_bb,eHF,cHF,S)
|
ERI_MO_bbbb,dipole_int_aa,dipole_int_bb,eHF,cHF,S)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
@ -669,7 +659,7 @@ program QuAcK
|
|||||||
if(unrestricted) then
|
if(unrestricted) then
|
||||||
|
|
||||||
call UdRPA(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,0d0,nBas,nC,nO,nV,nR,nS,ENuc,EUHF, &
|
call UdRPA(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,0d0,nBas,nC,nO,nV,nR,nS,ENuc,EUHF, &
|
||||||
ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,ERI_MO_abab,dipole_int_aa,dipole_int_bb,eHF,cHF,S)
|
ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,dipole_int_aa,dipole_int_bb,eHF,cHF,S)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
@ -694,7 +684,7 @@ program QuAcK
|
|||||||
if(unrestricted) then
|
if(unrestricted) then
|
||||||
|
|
||||||
call URPAx(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,0d0,nBas,nC,nO,nV,nR,nS,ENuc,EUHF, &
|
call URPAx(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,0d0,nBas,nC,nO,nV,nR,nS,ENuc,EUHF, &
|
||||||
ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,ERI_MO_abab,dipole_int_aa,dipole_int_bb,eHF,cHF,S)
|
ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,dipole_int_aa,dipole_int_bb,eHF,cHF,S)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
@ -821,7 +811,7 @@ program QuAcK
|
|||||||
if(unrestricted) then
|
if(unrestricted) then
|
||||||
|
|
||||||
call UG0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,spin_flip, &
|
call UG0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,evDyn,spin_conserved,spin_flip, &
|
||||||
linGW,eta_GW,nBas,nC,nO,nV,nR,nS,ENuc,EUHF,Hc,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,ERI_MO_abab, &
|
linGW,eta_GW,nBas,nC,nO,nV,nR,nS,ENuc,EUHF,Hc,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb, &
|
||||||
dipole_int_aa,dipole_int_bb,PHF,cHF,eHF,eG0W0)
|
dipole_int_aa,dipole_int_bb,PHF,cHF,eHF,eG0W0)
|
||||||
else
|
else
|
||||||
|
|
||||||
@ -849,7 +839,7 @@ program QuAcK
|
|||||||
|
|
||||||
call evUGW(maxSCF_GW,thresh_GW,n_diis_GW,doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA, &
|
call evUGW(maxSCF_GW,thresh_GW,n_diis_GW,doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA, &
|
||||||
G0W,GW0,dBSE,dTDA,evDyn,spin_conserved,spin_flip,eta_GW,nBas,nC,nO,nV,nR,nS,ENuc, &
|
G0W,GW0,dBSE,dTDA,evDyn,spin_conserved,spin_flip,eta_GW,nBas,nC,nO,nV,nR,nS,ENuc, &
|
||||||
EUHF,Hc,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,ERI_MO_abab,dipole_int_aa,dipole_int_bb, &
|
EUHF,Hc,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,dipole_int_aa,dipole_int_bb, &
|
||||||
PHF,cHF,eHF,eG0W0)
|
PHF,cHF,eHF,eG0W0)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type, &
|
subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type, &
|
||||||
maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, &
|
maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, &
|
||||||
singlet,triplet,spin_conserved,spin_flip,TDA, &
|
TDA,singlet,triplet,spin_conserved,spin_flip, &
|
||||||
maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,linGF,eta_GF,renormGF, &
|
maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,linGF,eta_GF,renormGF, &
|
||||||
maxSCF_GW,thresh_GW,DIIS_GW,n_diis_GW,linGW,eta_GW, &
|
maxSCF_GW,thresh_GW,DIIS_GW,n_diis_GW,linGW,eta_GW, &
|
||||||
COHSEX,SOSEX,TDA_W,G0W,GW0, &
|
COHSEX,SOSEX,TDA_W,G0W,GW0, &
|
||||||
doACFDT,exchange_kernel,doXBS, &
|
doACFDT,exchange_kernel,doXBS, &
|
||||||
BSE,dBSE,dTDA,evDyn, &
|
BSE,dBSE,dTDA,evDyn, &
|
||||||
nMC,nEq,nWalk,dt,nPrint,iSeed,doDrift)
|
nMC,nEq,nWalk,dt,nPrint,iSeed,doDrift)
|
||||||
|
|
||||||
! Read desired methods
|
! Read desired methods
|
||||||
@ -26,11 +26,11 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_t
|
|||||||
logical,intent(out) :: DIIS_CC
|
logical,intent(out) :: DIIS_CC
|
||||||
integer,intent(out) :: n_diis_CC
|
integer,intent(out) :: n_diis_CC
|
||||||
|
|
||||||
|
logical,intent(out) :: TDA
|
||||||
logical,intent(out) :: singlet
|
logical,intent(out) :: singlet
|
||||||
logical,intent(out) :: triplet
|
logical,intent(out) :: triplet
|
||||||
logical,intent(out) :: spin_conserved
|
logical,intent(out) :: spin_conserved
|
||||||
logical,intent(out) :: spin_flip
|
logical,intent(out) :: spin_flip
|
||||||
logical,intent(out) :: TDA
|
|
||||||
|
|
||||||
integer,intent(out) :: maxSCF_GF
|
integer,intent(out) :: maxSCF_GF
|
||||||
double precision,intent(out) :: thresh_GF
|
double precision,intent(out) :: thresh_GF
|
||||||
@ -115,20 +115,20 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_t
|
|||||||
|
|
||||||
! Read excited state options
|
! Read excited state options
|
||||||
|
|
||||||
|
TDA = .false.
|
||||||
singlet = .false.
|
singlet = .false.
|
||||||
triplet = .false.
|
triplet = .false.
|
||||||
spin_conserved = .false.
|
spin_conserved = .false.
|
||||||
spin_flip = .false.
|
spin_flip = .false.
|
||||||
TDA = .false.
|
|
||||||
|
|
||||||
read(1,*)
|
read(1,*)
|
||||||
read(1,*) answer1,answer2,answer3,answer4,answer5
|
read(1,*) answer1,answer2,answer3,answer4,answer5
|
||||||
|
|
||||||
if(answer1 == 'T') singlet = .true.
|
if(answer1 == 'T') TDA = .true.
|
||||||
if(answer2 == 'T') triplet = .true.
|
if(answer2 == 'T') singlet = .true.
|
||||||
if(answer3 == 'T') spin_conserved = .true.
|
if(answer3 == 'T') triplet = .true.
|
||||||
if(answer4 == 'T') spin_flip = .true.
|
if(answer4 == 'T') spin_conserved = .true.
|
||||||
if(answer5 == 'T') TDA = .true.
|
if(answer5 == 'T') spin_flip = .true.
|
||||||
|
|
||||||
! Read Green function options
|
! Read Green function options
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine URPAx(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,eta,nBas,nC,nO,nV,nR,nS,ENuc,EUHF, &
|
subroutine URPAx(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,eta,nBas,nC,nO,nV,nR,nS,ENuc,EUHF, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,dipole_int_aa,dipole_int_bb,e,c,S)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,dipole_int_aa,dipole_int_bb,e,c,S)
|
||||||
|
|
||||||
! Perform random phase approximation calculation with exchange (aka TDHF) in the unrestricted formalism
|
! Perform random phase approximation calculation with exchange (aka TDHF) in the unrestricted formalism
|
||||||
|
|
||||||
@ -29,7 +29,6 @@ subroutine URPAx(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,eta,nBas,n
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart)
|
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart)
|
||||||
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart)
|
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart)
|
||||||
|
|
||||||
@ -87,7 +86,7 @@ subroutine URPAx(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,eta,nBas,n
|
|||||||
allocate(Omega_sc(nS_sc),XpY_sc(nS_sc,nS_sc),XmY_sc(nS_sc,nS_sc))
|
allocate(Omega_sc(nS_sc),XpY_sc(nS_sc,nS_sc),XmY_sc(nS_sc,nS_sc))
|
||||||
|
|
||||||
call unrestricted_linear_response(ispin,.false.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0,e, &
|
call unrestricted_linear_response(ispin,.false.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0,e, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,Omega_sc,rho_sc,EcRPAx(ispin),Omega_sc,XpY_sc,XmY_sc)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,Omega_sc,rho_sc,EcRPAx(ispin),Omega_sc,XpY_sc,XmY_sc)
|
||||||
call print_excitation('URPAx ',5,nS_sc,Omega_sc)
|
call print_excitation('URPAx ',5,nS_sc,Omega_sc)
|
||||||
call print_unrestricted_transition_vectors(ispin,nBas,nC,nO,nV,nR,nS,nS_aa,nS_bb,nS_sc,dipole_int_aa,dipole_int_bb, &
|
call print_unrestricted_transition_vectors(ispin,nBas,nC,nO,nV,nR,nS,nS_aa,nS_bb,nS_sc,dipole_int_aa,dipole_int_bb, &
|
||||||
c,S,Omega_sc,XpY_sc,XmY_sc)
|
c,S,Omega_sc,XpY_sc,XmY_sc)
|
||||||
@ -111,7 +110,7 @@ subroutine URPAx(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,eta,nBas,n
|
|||||||
allocate(Omega_sf(nS_sf),XpY_sf(nS_sf,nS_sf),XmY_sf(nS_sf,nS_sf))
|
allocate(Omega_sf(nS_sf),XpY_sf(nS_sf,nS_sf),XmY_sf(nS_sf,nS_sf))
|
||||||
|
|
||||||
call unrestricted_linear_response(ispin,.false.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS_ab,nS_ba,nS_sf,nS_sf,1d0,e, &
|
call unrestricted_linear_response(ispin,.false.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS_ab,nS_ba,nS_sf,nS_sf,1d0,e, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,Omega_sf,rho_sf,EcRPAx(ispin),Omega_sf,XpY_sf,XmY_sf)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,Omega_sf,rho_sf,EcRPAx(ispin),Omega_sf,XpY_sf,XmY_sf)
|
||||||
call print_excitation('URPAx ',6,nS_sf,Omega_sf)
|
call print_excitation('URPAx ',6,nS_sf,Omega_sf)
|
||||||
call print_unrestricted_transition_vectors(ispin,nBas,nC,nO,nV,nR,nS,nS_ab,nS_ba,nS_sf,dipole_int_aa,dipole_int_bb, &
|
call print_unrestricted_transition_vectors(ispin,nBas,nC,nO,nV,nR,nS,nS_ab,nS_ba,nS_sf,dipole_int_aa,dipole_int_bb, &
|
||||||
c,S,Omega_sf,XpY_sf,XmY_sf)
|
c,S,Omega_sf,XpY_sf,XmY_sf)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine UdRPA(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,eta,nBas,nC,nO,nV,nR,nS,ENuc,EUHF, &
|
subroutine UdRPA(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,eta,nBas,nC,nO,nV,nR,nS,ENuc,EUHF, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,dipole_int_aa,dipole_int_bb,e,c,S)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,dipole_int_aa,dipole_int_bb,e,c,S)
|
||||||
|
|
||||||
! Perform random phase approximation calculation with exchange (aka TDHF) in the unrestricted formalism
|
! Perform random phase approximation calculation with exchange (aka TDHF) in the unrestricted formalism
|
||||||
|
|
||||||
@ -29,7 +29,6 @@ subroutine UdRPA(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,eta,nBas,n
|
|||||||
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aaaa(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_aabb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
double precision,intent(in) :: ERI_bbbb(nBas,nBas,nBas,nBas)
|
||||||
double precision,intent(in) :: ERI_abab(nBas,nBas,nBas,nBas)
|
|
||||||
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart)
|
double precision,intent(in) :: dipole_int_aa(nBas,nBas,ncart)
|
||||||
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart)
|
double precision,intent(in) :: dipole_int_bb(nBas,nBas,ncart)
|
||||||
|
|
||||||
@ -86,7 +85,7 @@ subroutine UdRPA(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,eta,nBas,n
|
|||||||
allocate(Omega_sc(nS_sc),XpY_sc(nS_sc,nS_sc),XmY_sc(nS_sc,nS_sc))
|
allocate(Omega_sc(nS_sc),XpY_sc(nS_sc,nS_sc),XmY_sc(nS_sc,nS_sc))
|
||||||
|
|
||||||
call unrestricted_linear_response(ispin,.true.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0,e, &
|
call unrestricted_linear_response(ispin,.true.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0,e, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,Omega_sc,rho_sc,EcRPA(ispin),Omega_sc,XpY_sc,XmY_sc)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,Omega_sc,rho_sc,EcRPA(ispin),Omega_sc,XpY_sc,XmY_sc)
|
||||||
call print_excitation('URPA ',5,nS_sc,Omega_sc)
|
call print_excitation('URPA ',5,nS_sc,Omega_sc)
|
||||||
call print_unrestricted_transition_vectors(ispin,nBas,nC,nO,nV,nR,nS,nS_aa,nS_bb,nS_sc,dipole_int_aa,dipole_int_bb, &
|
call print_unrestricted_transition_vectors(ispin,nBas,nC,nO,nV,nR,nS,nS_aa,nS_bb,nS_sc,dipole_int_aa,dipole_int_bb, &
|
||||||
c,S,Omega_sc,XpY_sc,XmY_sc)
|
c,S,Omega_sc,XpY_sc,XmY_sc)
|
||||||
@ -109,7 +108,7 @@ subroutine UdRPA(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,eta,nBas,n
|
|||||||
allocate(Omega_sf(nS_sf),XpY_sf(nS_sf,nS_sf),XmY_sf(nS_sf,nS_sf))
|
allocate(Omega_sf(nS_sf),XpY_sf(nS_sf,nS_sf),XmY_sf(nS_sf,nS_sf))
|
||||||
|
|
||||||
call unrestricted_linear_response(ispin,.true.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS_ab,nS_ba,nS_sf,nS_sf,1d0,e, &
|
call unrestricted_linear_response(ispin,.true.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS_ab,nS_ba,nS_sf,nS_sf,1d0,e, &
|
||||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,Omega_sf,rho_sf,EcRPA(ispin),Omega_sf,XpY_sf,XmY_sf)
|
ERI_aaaa,ERI_aabb,ERI_bbbb,Omega_sf,rho_sf,EcRPA(ispin),Omega_sf,XpY_sf,XmY_sf)
|
||||||
call print_excitation('URPA ',6,nS_sf,Omega_sf)
|
call print_excitation('URPA ',6,nS_sf,Omega_sf)
|
||||||
call print_unrestricted_transition_vectors(ispin,nBas,nC,nO,nV,nR,nS,nS_ab,nS_ba,nS_sf,dipole_int_aa,dipole_int_bb, &
|
call print_unrestricted_transition_vectors(ispin,nBas,nC,nO,nV,nR,nS,nS_ab,nS_ba,nS_sf,dipole_int_aa,dipole_int_bb, &
|
||||||
c,S,Omega_sf,XpY_sf,XmY_sf)
|
c,S,Omega_sf,XpY_sf,XmY_sf)
|
||||||
|
Loading…
Reference in New Issue
Block a user