mirror of
https://github.com/pfloos/quack
synced 2025-04-23 16:54:54 +02:00
more options in parquet
This commit is contained in:
parent
abf82a3453
commit
2b99b154c5
@ -19,4 +19,4 @@
|
||||
# HFB: temperature sigma chem_pot_HF restart_HFB
|
||||
0.05 1.00 T F
|
||||
# Parquet: TDAeh TDApp max_it_1b conv_1b max_it_2b conv_2b lin reg
|
||||
T T 1 0.00001 1 0.00001 F 0.0
|
||||
F F 1 0.00001 1 0.00001 F 0.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
subroutine GParquet(TDAeh,TDApp,linearize,eta,ENuc,max_it_1b,conv_1b,max_it_2b,conv_2b,nOrb,nC,nO,nV,nR,nS,eGHF,eHF,ERI)
|
||||
subroutine GParquet(TDAeh,TDApp,linearize,eta,ENuc,max_it_1b,conv_1b,max_it_2b,conv_2b,nOrb,nC,nO,nV,nR,nS,EGHF,eHF,ERI)
|
||||
|
||||
! Parquet approximation based on restricted orbitals
|
||||
|
||||
@ -107,21 +107,17 @@ subroutine GParquet(TDAeh,TDApp,linearize,eta,ENuc,max_it_1b,conv_1b,max_it_2b,c
|
||||
write(*,*)'---------------------------------------------------------------'
|
||||
write(*,'(1X,A50,1X,I5)') 'Maximum number of one-body iteration:',max_it_1b
|
||||
write(*,'(1X,A50,1X,E10.5)') 'Convergence threshold for one-body energies:',conv_1b
|
||||
write(*,'(1X,A50,1X,L5)') 'Linearization of quasiparticle equation?',conv_1b
|
||||
write(*,'(1X,A50,1X,E10.5)') 'Strenght of SRG regularization:',eta
|
||||
write(*,*)'---------------------------------------------------------------'
|
||||
write(*,'(1X,A50,1X,I5)') 'Maximum number of two-body iteration:',max_it_2b
|
||||
write(*,'(1X,A50,1X,E10.5)') 'Convergence threshold for two-body energies:',conv_2b
|
||||
write(*,'(1X,A50,1X,L5)') 'TDA for eh excitation energies?',TDAeh
|
||||
write(*,'(1X,A50,1X,L5)') 'TDA for pp excitation energies?',TDApp
|
||||
write(*,*)'---------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
if(linearize) then
|
||||
write(*,*) ' *** Quasiparticle energies obtained by linearization *** '
|
||||
write(*,*)
|
||||
else
|
||||
write(*,*) ' *** Quasiparticle energies obtained by root search *** '
|
||||
write(*,*)
|
||||
endif
|
||||
|
||||
! Memory allocation
|
||||
! Memory allocation
|
||||
|
||||
allocate(old_eh_Om(nS),old_ee_Om(nVV),old_hh_Om(nOO))
|
||||
allocate(eh_rho(nOrb,nOrb,nS),ee_rho(nOrb,nOrb,nVV),hh_rho(nOrb,nOrb,nOO))
|
||||
@ -494,7 +490,7 @@ subroutine GParquet(TDAeh,TDApp,linearize,eta,ENuc,max_it_1b,conv_1b,max_it_2b,c
|
||||
|
||||
! Check one-body converge
|
||||
|
||||
err_1b = maxval(abs(eOld - eQP))
|
||||
err_1b = maxval(abs(eOld - eQP))
|
||||
eOld(:) = eQP(:)
|
||||
|
||||
! Print for one-body part
|
||||
|
@ -1,4 +1,4 @@
|
||||
subroutine RParquet(ENuc,max_it_1b,conv_1b,max_it_2b,conv_2b,nOrb,nC,nO,nV,nR,nS,ERHF,eHF,ERI)
|
||||
subroutine RParquet(TDAeh,TDApp,linearize,eta,ENuc,max_it_1b,conv_1b,max_it_2b,conv_2b,nOrb,nC,nO,nV,nR,nS,ERHF,eHF,ERI)
|
||||
|
||||
! Parquet approximation based on restricted orbitals
|
||||
|
||||
@ -7,14 +7,15 @@ subroutine RParquet(ENuc,max_it_1b,conv_1b,max_it_2b,conv_2b,nOrb,nC,nO,nV,nR,nS
|
||||
|
||||
! Hard-coded parameters
|
||||
|
||||
logical :: TDAeh = .true.
|
||||
logical :: TDApp = .true.
|
||||
logical :: linearize = .true.
|
||||
logical :: print_phLR = .true.
|
||||
logical :: print_ppLR = .true.
|
||||
logical :: print_phLR = .false.
|
||||
logical :: print_ppLR = .false.
|
||||
|
||||
! Input variables
|
||||
|
||||
logical,intent(in) :: TDAeh
|
||||
logical,intent(in) :: TDApp
|
||||
logical,intent(in) :: linearize
|
||||
double precision,intent(in) :: eta
|
||||
double precision,intent(in) :: ENuc
|
||||
double precision,intent(in) :: ERHF
|
||||
integer,intent(in) :: max_it_1b,max_it_2b
|
||||
@ -101,22 +102,18 @@ subroutine RParquet(ENuc,max_it_1b,conv_1b,max_it_2b,conv_2b,nOrb,nC,nO,nV,nR,nS
|
||||
write(*,*)'---------------------------------------------------------------'
|
||||
write(*,*)' Parquet parameters for one-body and two-body self-consistency '
|
||||
write(*,*)'---------------------------------------------------------------'
|
||||
write(*,'(1X,A50,1X,I5)') 'Maximum number for one-body self-consistency:', max_it_1b
|
||||
write(*,'(1X,A50,1X,E10.5)') 'Convergence threshold for one-body energies:', conv_1b
|
||||
write(*,'(1X,A50,1X,I5)') 'Maximum number of one-body iteration:',max_it_1b
|
||||
write(*,'(1X,A50,1X,E10.5)') 'Convergence threshold for one-body energies:',conv_1b
|
||||
write(*,'(1X,A50,1X,L5)') 'Linearization of quasiparticle equation?',conv_1b
|
||||
write(*,'(1X,A50,1X,E10.5)') 'Strenght of SRG regularization:',eta
|
||||
write(*,*)'---------------------------------------------------------------'
|
||||
write(*,'(1X,A50,1X,I5)') 'Maximum number for two-body self-consistency:', max_it_2b
|
||||
write(*,'(1X,A50,1X,E10.5)') 'Convergence threshold for two-body energies:', conv_2b
|
||||
write(*,'(1X,A50,1X,I5)') 'Maximum number of two-body iteration:',max_it_2b
|
||||
write(*,'(1X,A50,1X,E10.5)') 'Convergence threshold for two-body energies:',conv_2b
|
||||
write(*,'(1X,A50,1X,L5)') 'TDA for eh excitation energies?',TDAeh
|
||||
write(*,'(1X,A50,1X,L5)') 'TDA for pp excitation energies?',TDApp
|
||||
write(*,*)'---------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
if(linearize) then
|
||||
write(*,*) ' *** Quasiparticle energies obtained by linearization *** '
|
||||
write(*,*)
|
||||
else
|
||||
write(*,*) ' *** Quasiparticle energies obtained by root search *** '
|
||||
write(*,*)
|
||||
endif
|
||||
|
||||
! Memory allocation
|
||||
|
||||
allocate(old_eh_sing_Om(nS),old_eh_trip_Om(nS))
|
||||
|
@ -266,7 +266,7 @@ program QuAcK
|
||||
maxSCF_GF,max_diis_GF,renorm_GF,thresh_GF,lin_GF,reg_GF,eta_GF,maxSCF_GW,max_diis_GW,thresh_GW, &
|
||||
TDA_W,lin_GW,reg_GW,eta_GW,maxSCF_GT,max_diis_GT,thresh_GT,TDA_T,lin_GT,reg_GT,eta_GT, &
|
||||
dophBSE,dophBSE2,doppBSE,dBSE,dTDA,doACFDT,exchange_kernel,doXBS, &
|
||||
max_it_1b,conv_1b,max_it_2b,conv_2b)
|
||||
TDAeh,TDApp,max_it_1b,conv_1b,max_it_2b,conv_2b,lin_parquet,reg_parquet)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -8,7 +8,7 @@ subroutine RQuAcK(working_dir,use_gpu,dotest,doRHF,doROHF,dostab,dosearch,doMP2,
|
||||
maxSCF_GF,max_diis_GF,renorm_GF,thresh_GF,lin_GF,reg_GF,eta_GF,maxSCF_GW,max_diis_GW,thresh_GW, &
|
||||
TDA_W,lin_GW,reg_GW,eta_GW,maxSCF_GT,max_diis_GT,thresh_GT,TDA_T,lin_GT,reg_GT,eta_GT, &
|
||||
dophBSE,dophBSE2,doppBSE,dBSE,dTDA,doACFDT,exchange_kernel,doXBS, &
|
||||
max_it_1b,conv_1b,max_it_2b,conv_2b)
|
||||
TDAeh,TDApp,max_it_1b,conv_1b,max_it_2b,conv_2b,lin_parquet,reg_parquet)
|
||||
|
||||
! Restricted branch of QuAcK
|
||||
|
||||
@ -84,6 +84,9 @@ subroutine RQuAcK(working_dir,use_gpu,dotest,doRHF,doROHF,dostab,dosearch,doMP2,
|
||||
|
||||
integer,intent(in) :: max_it_1b,max_it_2b
|
||||
double precision,intent(in) :: conv_1b,conv_2b
|
||||
logical,intent(in) :: TDAeh,TDApp
|
||||
double precision,intent(in) :: reg_parquet
|
||||
logical,intent(in) :: lin_parquet
|
||||
|
||||
! Local variables
|
||||
|
||||
@ -377,7 +380,7 @@ subroutine RQuAcK(working_dir,use_gpu,dotest,doRHF,doROHF,dostab,dosearch,doMP2,
|
||||
|
||||
if(doParquet) then
|
||||
call wall_time(start_Parquet)
|
||||
call RParquet(ENuc,max_it_1b,conv_1b,max_it_2b,conv_2b,nOrb,nC,nO,nV,nR,nS,ERHF,eGW,ERI_MO)
|
||||
call RParquet(TDAeh,TDApp,lin_parquet,reg_parquet,ENuc,max_it_1b,conv_1b,max_it_2b,conv_2b,nOrb,nC,nO,nV,nR,nS,ERHF,eGW,ERI_MO)
|
||||
call wall_time(end_Parquet)
|
||||
|
||||
t_Parquet = end_Parquet - start_Parquet
|
||||
|
Loading…
x
Reference in New Issue
Block a user