2023-07-23 22:05:38 +02:00
|
|
|
subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho_type,mix,level_shift,dostab, &
|
2023-07-30 22:14:28 +02:00
|
|
|
regMP, &
|
2023-07-23 22:05:38 +02:00
|
|
|
maxSCF_CC,thresh_CC,DIIS_CC,max_diis_CC, &
|
2023-07-30 22:14:28 +02:00
|
|
|
TDA,singlet,triplet,spin_conserved,spin_flip, &
|
2023-07-23 22:05:38 +02:00
|
|
|
maxSCF_GF,thresh_GF,DIIS_GF,max_diis_GF,linGF,eta_GF,renormGF,regGF, &
|
|
|
|
maxSCF_GW,thresh_GW,DIIS_GW,max_diis_GW,linGW,eta_GW,regGW,TDA_W, &
|
|
|
|
maxSCF_GT,thresh_GT,DIIS_GT,max_diis_GT,linGT,eta_GT,regGT,TDA_T, &
|
2023-07-30 22:14:28 +02:00
|
|
|
doACFDT,exchange_kernel,doXBS, &
|
2023-07-21 10:21:54 +02:00
|
|
|
dophBSE,dophBSE2,doppBSE,dBSE,dTDA)
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Read desired methods
|
|
|
|
|
|
|
|
implicit none
|
|
|
|
|
|
|
|
! Input variables
|
|
|
|
|
|
|
|
integer,intent(out) :: maxSCF_HF
|
|
|
|
double precision,intent(out) :: thresh_HF
|
|
|
|
logical,intent(out) :: DIIS_HF
|
2023-07-23 22:05:38 +02:00
|
|
|
integer,intent(out) :: max_diis_HF
|
2019-03-19 10:13:33 +01:00
|
|
|
integer,intent(out) :: guess_type
|
|
|
|
integer,intent(out) :: ortho_type
|
2020-10-27 17:23:48 +01:00
|
|
|
logical,intent(out) :: mix
|
2022-02-03 10:05:58 +01:00
|
|
|
double precision,intent(out) :: level_shift
|
2021-03-03 11:37:46 +01:00
|
|
|
logical,intent(out) :: dostab
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2022-11-30 17:18:51 +01:00
|
|
|
logical,intent(out) :: regMP
|
|
|
|
|
2019-03-19 10:13:33 +01:00
|
|
|
integer,intent(out) :: maxSCF_CC
|
|
|
|
double precision,intent(out) :: thresh_CC
|
|
|
|
logical,intent(out) :: DIIS_CC
|
2023-07-23 22:05:38 +02:00
|
|
|
integer,intent(out) :: max_diis_CC
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2020-10-05 23:00:56 +02:00
|
|
|
logical,intent(out) :: TDA
|
2020-09-22 23:08:47 +02:00
|
|
|
logical,intent(out) :: singlet
|
|
|
|
logical,intent(out) :: triplet
|
|
|
|
logical,intent(out) :: spin_conserved
|
|
|
|
logical,intent(out) :: spin_flip
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
integer,intent(out) :: maxSCF_GF
|
|
|
|
double precision,intent(out) :: thresh_GF
|
|
|
|
logical,intent(out) :: DIIS_GF
|
2023-07-23 22:05:38 +02:00
|
|
|
integer,intent(out) :: max_diis_GF
|
2020-03-19 10:33:56 +01:00
|
|
|
logical,intent(out) :: linGF
|
|
|
|
integer,intent(out) :: renormGF
|
2020-06-03 12:06:16 +02:00
|
|
|
double precision,intent(out) :: eta_GF
|
2021-12-17 11:41:40 +01:00
|
|
|
logical,intent(out) :: regGF
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
integer,intent(out) :: maxSCF_GW
|
|
|
|
double precision,intent(out) :: thresh_GW
|
|
|
|
logical,intent(out) :: DIIS_GW
|
2023-07-23 22:05:38 +02:00
|
|
|
integer,intent(out) :: max_diis_GW
|
2020-06-09 21:24:37 +02:00
|
|
|
logical,intent(out) :: TDA_W
|
2020-03-19 10:33:56 +01:00
|
|
|
logical,intent(out) :: linGW
|
2020-06-03 12:06:16 +02:00
|
|
|
double precision,intent(out) :: eta_GW
|
2021-12-17 11:41:40 +01:00
|
|
|
logical,intent(out) :: regGW
|
|
|
|
|
|
|
|
integer,intent(out) :: maxSCF_GT
|
|
|
|
double precision,intent(out) :: thresh_GT
|
|
|
|
logical,intent(out) :: DIIS_GT
|
2023-07-23 22:05:38 +02:00
|
|
|
integer,intent(out) :: max_diis_GT
|
2021-12-17 11:41:40 +01:00
|
|
|
logical,intent(out) :: TDA_T
|
|
|
|
logical,intent(out) :: linGT
|
|
|
|
double precision,intent(out) :: eta_GT
|
|
|
|
logical,intent(out) :: regGT
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2020-01-14 21:27:34 +01:00
|
|
|
logical,intent(out) :: doACFDT
|
2020-01-16 21:39:00 +01:00
|
|
|
logical,intent(out) :: exchange_kernel
|
2020-01-14 21:27:34 +01:00
|
|
|
logical,intent(out) :: doXBS
|
|
|
|
|
2023-07-12 23:16:37 +02:00
|
|
|
logical,intent(out) :: dophBSE
|
|
|
|
logical,intent(out) :: dophBSE2
|
|
|
|
logical,intent(out) :: doppBSE
|
2020-06-14 21:20:01 +02:00
|
|
|
logical,intent(out) :: dBSE
|
|
|
|
logical,intent(out) :: dTDA
|
|
|
|
|
2019-03-19 10:13:33 +01:00
|
|
|
! Local variables
|
|
|
|
|
2023-07-30 22:14:28 +02:00
|
|
|
character(len=1) :: ans1,ans2,ans3,ans4,ans5
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Open file with method specification
|
|
|
|
|
|
|
|
open(unit=1,file='input/options')
|
|
|
|
|
|
|
|
! Read HF options
|
|
|
|
|
|
|
|
maxSCF_HF = 64
|
|
|
|
thresh_HF = 1d-6
|
|
|
|
DIIS_HF = .false.
|
2023-07-23 22:05:38 +02:00
|
|
|
max_diis_HF = 5
|
2019-03-19 10:13:33 +01:00
|
|
|
guess_type = 1
|
|
|
|
ortho_type = 1
|
2020-10-27 17:23:48 +01:00
|
|
|
mix = .false.
|
2022-02-03 10:05:58 +01:00
|
|
|
level_shift = 0d0
|
2021-03-03 11:37:46 +01:00
|
|
|
dostab = .false.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
read(1,*)
|
2023-07-30 22:14:28 +02:00
|
|
|
read(1,*) maxSCF_HF,thresh_HF,ans1,max_diis_HF,guess_type,ortho_type,ans2,level_shift,ans3
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2023-07-30 22:14:28 +02:00
|
|
|
if(ans1 == 'T') DIIS_HF = .true.
|
|
|
|
if(ans2 == 'T') mix = .true.
|
|
|
|
if(ans3 == 'T') dostab = .true.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2023-07-23 22:05:38 +02:00
|
|
|
if(.not.DIIS_HF) max_diis_HF = 1
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Read MPn options
|
|
|
|
|
2022-11-30 17:18:51 +01:00
|
|
|
regMP = .false.
|
2019-03-19 10:13:33 +01:00
|
|
|
read(1,*)
|
2023-07-30 22:14:28 +02:00
|
|
|
read(1,*) ans1
|
2022-11-30 17:18:51 +01:00
|
|
|
|
2023-07-30 22:14:28 +02:00
|
|
|
if(ans1 == 'T') regMP = .true.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Read CC options
|
|
|
|
|
|
|
|
maxSCF_CC = 64
|
|
|
|
thresh_CC = 1d-5
|
|
|
|
DIIS_CC = .false.
|
2023-07-23 22:05:38 +02:00
|
|
|
max_diis_CC = 5
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
read(1,*)
|
2023-07-30 22:14:28 +02:00
|
|
|
read(1,*) maxSCF_CC,thresh_CC,ans1,max_diis_CC
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2023-07-30 22:14:28 +02:00
|
|
|
if(ans1 == 'T') DIIS_CC = .true.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2023-07-23 22:05:38 +02:00
|
|
|
if(.not.DIIS_CC) max_diis_CC = 1
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Read excited state options
|
|
|
|
|
2020-10-05 23:00:56 +02:00
|
|
|
TDA = .false.
|
2020-09-22 23:08:47 +02:00
|
|
|
singlet = .false.
|
|
|
|
triplet = .false.
|
|
|
|
spin_conserved = .false.
|
|
|
|
spin_flip = .false.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
read(1,*)
|
2023-07-30 22:14:28 +02:00
|
|
|
read(1,*) ans1,ans2,ans3,ans4,ans5
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2023-07-30 22:14:28 +02:00
|
|
|
if(ans1 == 'T') TDA = .true.
|
|
|
|
if(ans2 == 'T') singlet = .true.
|
|
|
|
if(ans3 == 'T') triplet = .true.
|
|
|
|
if(ans4 == 'T') spin_conserved = .true.
|
|
|
|
if(ans5 == 'T') spin_flip = .true.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2021-12-17 11:41:40 +01:00
|
|
|
! Read GF options
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
maxSCF_GF = 64
|
|
|
|
thresh_GF = 1d-5
|
|
|
|
DIIS_GF = .false.
|
2023-07-23 22:05:38 +02:00
|
|
|
max_diis_GF = 5
|
2020-06-03 12:06:16 +02:00
|
|
|
linGF = .false.
|
|
|
|
eta_GF = 0d0
|
2020-06-15 23:04:07 +02:00
|
|
|
renormGF = 0
|
2021-12-17 11:41:40 +01:00
|
|
|
regGF = .false.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
read(1,*)
|
2023-07-30 22:14:28 +02:00
|
|
|
read(1,*) maxSCF_GF,thresh_GF,ans1,max_diis_GF,ans2,eta_GF,renormGF,ans3
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2023-07-30 22:14:28 +02:00
|
|
|
if(ans1 == 'T') DIIS_GF = .true.
|
|
|
|
if(ans2 == 'T') linGF = .true.
|
|
|
|
if(ans3 == 'T') regGF = .true.
|
2023-07-23 22:05:38 +02:00
|
|
|
if(.not.DIIS_GF) max_diis_GF = 1
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Read GW options
|
|
|
|
|
|
|
|
maxSCF_GW = 64
|
|
|
|
thresh_GW = 1d-5
|
|
|
|
DIIS_GW = .false.
|
2023-07-23 22:05:38 +02:00
|
|
|
max_diis_GW = 5
|
2020-06-17 22:10:08 +02:00
|
|
|
linGW = .false.
|
|
|
|
eta_GW = 0d0
|
2021-12-17 11:41:40 +01:00
|
|
|
regGW = .false.
|
2020-06-09 21:24:37 +02:00
|
|
|
TDA_W = .false.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
read(1,*)
|
2023-07-30 22:14:28 +02:00
|
|
|
read(1,*) maxSCF_GW,thresh_GW,ans1,max_diis_GW,ans2,eta_GW, &
|
|
|
|
ans3,ans4
|
2020-06-14 21:20:01 +02:00
|
|
|
|
2023-07-30 22:14:28 +02:00
|
|
|
if(ans1 == 'T') DIIS_GW = .true.
|
|
|
|
if(ans2 == 'T') linGW = .true.
|
|
|
|
if(ans3 == 'T') TDA_W = .true.
|
|
|
|
if(ans4 == 'T') regGW = .true.
|
2023-07-23 22:05:38 +02:00
|
|
|
if(.not.DIIS_GW) max_diis_GW = 1
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2022-01-17 15:15:27 +01:00
|
|
|
! Read GT options
|
2021-12-17 11:41:40 +01:00
|
|
|
|
2022-01-06 21:41:12 +01:00
|
|
|
maxSCF_GT = 64
|
|
|
|
thresh_GT = 1d-5
|
|
|
|
DIIS_GT = .false.
|
2023-07-23 22:05:38 +02:00
|
|
|
max_diis_GT = 5
|
2022-01-17 15:15:27 +01:00
|
|
|
linGT = .false.
|
2022-01-06 21:41:12 +01:00
|
|
|
eta_GT = 0d0
|
|
|
|
regGT = .false.
|
2021-12-17 11:41:40 +01:00
|
|
|
TDA_T = .false.
|
|
|
|
|
|
|
|
read(1,*)
|
2023-07-30 22:14:28 +02:00
|
|
|
read(1,*) maxSCF_GT,thresh_GT,ans1,max_diis_GT,ans2,eta_GT, &
|
|
|
|
ans3,ans4
|
2021-12-17 11:41:40 +01:00
|
|
|
|
2023-07-30 22:14:28 +02:00
|
|
|
if(ans1 == 'T') DIIS_GT = .true.
|
|
|
|
if(ans2 == 'T') linGT = .true.
|
|
|
|
if(ans3 == 'T') TDA_T = .true.
|
|
|
|
if(ans4 == 'T') regGT = .true.
|
2023-07-23 22:05:38 +02:00
|
|
|
if(.not.DIIS_GT) max_diis_GT = 1
|
2021-12-17 11:41:40 +01:00
|
|
|
|
2020-01-14 21:27:34 +01:00
|
|
|
! Options for adiabatic connection
|
|
|
|
|
2020-06-15 23:04:07 +02:00
|
|
|
doACFDT = .false.
|
2020-01-16 21:39:00 +01:00
|
|
|
exchange_kernel = .false.
|
2020-06-15 23:04:07 +02:00
|
|
|
doXBS = .false.
|
2020-01-14 21:27:34 +01:00
|
|
|
|
|
|
|
read(1,*)
|
2023-07-30 22:14:28 +02:00
|
|
|
read(1,*) ans1,ans2,ans3
|
2020-01-14 21:27:34 +01:00
|
|
|
|
2023-07-30 22:14:28 +02:00
|
|
|
if(ans1 == 'T') doACFDT = .true.
|
|
|
|
if(ans2 == 'T') exchange_kernel = .true.
|
|
|
|
if(ans3 == 'T') doXBS = .true.
|
2020-01-14 21:27:34 +01:00
|
|
|
|
2020-06-14 21:20:01 +02:00
|
|
|
! Options for dynamical BSE calculations
|
|
|
|
|
2023-07-12 23:16:37 +02:00
|
|
|
dophBSE = .false.
|
|
|
|
dophBSE2 = .false.
|
|
|
|
doppBSE = .false.
|
|
|
|
dBSE = .false.
|
|
|
|
dTDA = .true.
|
2020-06-14 21:20:01 +02:00
|
|
|
|
|
|
|
read(1,*)
|
2023-07-30 22:14:28 +02:00
|
|
|
read(1,*) ans1,ans2,ans3,ans4,ans5
|
2020-06-14 21:20:01 +02:00
|
|
|
|
2023-07-30 22:14:28 +02:00
|
|
|
if(ans1 == 'T') dophBSE = .true.
|
|
|
|
if(ans2 == 'T') dophBSE2 = .true.
|
|
|
|
if(ans3 == 'T') doppBSE = .true.
|
|
|
|
if(ans4 == 'T') dBSE = .true.
|
|
|
|
if(ans5 == 'F') dTDA = .false.
|
2020-06-14 21:20:01 +02:00
|
|
|
|
2019-03-19 10:13:33 +01:00
|
|
|
! Close file with options
|
|
|
|
|
|
|
|
close(unit=1)
|
|
|
|
|
2023-07-18 14:59:18 +02:00
|
|
|
end subroutine
|