10
1
mirror of https://github.com/pfloos/quack synced 2025-04-25 01:34:57 +02:00

Incl sigma to change sign HFB

This commit is contained in:
Mauricio Rodriguez-Mayorga 2025-02-04 14:34:31 +01:00
parent b260a7a70d
commit c05631e1ba
5 changed files with 18 additions and 14 deletions

View File

@ -1,4 +1,4 @@
subroutine anomalous_matrix_AO_basis(nBas,Pa,ERI,L)
subroutine anomalous_matrix_AO_basis(nBas,sigma,Pa,ERI,L)
! Compute anomalous L matrix in the AO basis
@ -8,6 +8,7 @@ subroutine anomalous_matrix_AO_basis(nBas,Pa,ERI,L)
! Input variables
integer,intent(in) :: nBas
double precision,intent(in) :: sigma
double precision,intent(in) :: Pa(nBas,nBas)
double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas)
@ -25,7 +26,7 @@ subroutine anomalous_matrix_AO_basis(nBas,Pa,ERI,L)
do si=1,nBas
do la=1,nBas
do mu=1,nBas
L(mu,nu) = L(mu,nu) + Pa(la,si)*ERI(la,si,mu,nu)
L(mu,nu) = L(mu,nu) + sigma*Pa(la,si)*ERI(la,si,mu,nu)
end do
end do
end do

View File

@ -1,6 +1,6 @@
subroutine HFB(dotest,maxSCF,thresh,max_diis,level_shift,nNuc,ZNuc,rNuc,ENuc, &
nBas,nOrb,nO,S,T,V,Hc,ERI,dipole_int,X,EHFB,eHF,c,P,Panom,F,Delta, &
temperature)
temperature,sigma)
! Perform Hartree-Fock Bogoliubov calculation
@ -23,7 +23,7 @@ subroutine HFB(dotest,maxSCF,thresh,max_diis,level_shift,nNuc,ZNuc,rNuc,ENuc,
double precision,intent(in) :: ZNuc(nNuc)
double precision,intent(in) :: rNuc(nNuc,ncart)
double precision,intent(in) :: ENuc
double precision,intent(in) :: temperature
double precision,intent(in) :: temperature,sigma
double precision,intent(in) :: S(nBas,nBas)
double precision,intent(in) :: T(nBas,nBas)
double precision,intent(in) :: V(nBas,nBas)
@ -175,7 +175,7 @@ subroutine HFB(dotest,maxSCF,thresh,max_diis,level_shift,nNuc,ZNuc,rNuc,ENuc,
call Hartree_matrix_AO_basis(nBas,P,ERI,J)
call exchange_matrix_AO_basis(nBas,P,ERI,K)
call anomalous_matrix_AO_basis(nBas,Panom,ERI,Delta)
call anomalous_matrix_AO_basis(nBas,sigma,Panom,ERI,Delta)
F(:,:) = Hc(:,:) + J(:,:) + 0.5d0*K(:,:) - chem_pot*S(:,:)

View File

@ -1,6 +1,6 @@
subroutine BQuAcK(working_dir,dotest,doHFB,nNuc,nBas,nOrb,nC,nO,nV,nR,ENuc,ZNuc,rNuc, &
S,T,V,Hc,X,dipole_int_AO,maxSCF_HF,max_diis_HF,thresh_HF,level_shift, &
guess_type,mix,temperature)
guess_type,mix,temperature,sigma)
! Restricted branch of QuAcK
@ -19,7 +19,7 @@ subroutine BQuAcK(working_dir,dotest,doHFB,nNuc,nBas,nOrb,nC,nO,nV,nR,ENuc,ZNuc,
integer,intent(in) :: nV
integer,intent(in) :: nR
double precision,intent(in) :: ENuc
double precision,intent(in) :: temperature
double precision,intent(in) :: temperature,sigma
double precision,intent(in) :: ZNuc(nNuc),rNuc(nNuc,ncart)
@ -94,7 +94,7 @@ subroutine BQuAcK(working_dir,dotest,doHFB,nNuc,nBas,nOrb,nC,nO,nV,nR,ENuc,ZNuc,
call wall_time(start_HF)
call HFB(dotest,maxSCF_HF,thresh_HF,max_diis_HF,level_shift,nNuc,ZNuc,rNuc,ENuc, &
nBas,nOrb,nO,S,T,V,Hc,ERI_AO,dipole_int_AO,X,EHFB,eHF,cHF,PHF,PanomHF, &
FHF,Delta,temperature)
FHF,Delta,temperature,sigma)
call wall_time(end_HF)
t_HF = end_HF - start_HF

View File

@ -73,7 +73,7 @@ program QuAcK
logical :: dotest,doRtest,doUtest,doGtest
double precision :: temperature
double precision :: temperature,sigma
character(len=256) :: working_dir
@ -136,7 +136,8 @@ program QuAcK
maxSCF_GW,thresh_GW,max_diis_GW,lin_GW,eta_GW,reg_GW,TDA_W, &
maxSCF_GT,thresh_GT,max_diis_GT,lin_GT,eta_GT,reg_GT,TDA_T, &
doACFDT,exchange_kernel,doXBS, &
dophBSE,dophBSE2,doppBSE,dBSE,dTDA,temperature)
dophBSE,dophBSE2,doppBSE,dBSE,dTDA, &
temperature,sigma)
!------------------!
! Hardware !
@ -293,7 +294,7 @@ program QuAcK
if(doBQuAcK) &
call BQuAcK(working_dir,dotest,doHFB,nNuc,nBas,nOrb,nC,nO,nV,nR,ENuc,ZNuc,rNuc, &
S,T,V,Hc,X,dipole_int_AO,maxSCF_HF,max_diis_HF,thresh_HF,level_shift,guess_type,mix, &
temperature)
temperature,sigma)
!-----------!
! Stop Test !

View File

@ -7,7 +7,8 @@ subroutine read_options(working_dir,
maxSCF_GW,thresh_GW,max_diis_GW,lin_GW,eta_GW,reg_GW,TDA_W, &
maxSCF_GT,thresh_GT,max_diis_GT,lin_GT,eta_GT,reg_GT,TDA_T, &
doACFDT,exchange_kernel,doXBS, &
dophBSE,dophBSE2,doppBSE,dBSE,dTDA,temperature)
dophBSE,dophBSE2,doppBSE,dBSE,dTDA, &
temperature,sigma)
! Read desired methods
@ -73,6 +74,7 @@ subroutine read_options(working_dir,
logical,intent(out) :: dTDA
double precision,intent(out) :: temperature
double precision,intent(out) :: sigma
! Local variables
@ -219,12 +221,12 @@ subroutine read_options(working_dir,
if(ans4 == 'T') dBSE = .true.
if(ans5 == 'F') dTDA = .false.
! Options for dynamical Fermi-Dirac occupancies
! Options for Hartree-Fock Bogoliubov
temperature = 0d0
read(1,*)
read(1,*) temperature
read(1,*) temperature,sigma
endif