4
1
mirror of https://github.com/pfloos/quack synced 2024-06-22 21:22:20 +02:00
quack/src/QuAcK/read_options.f90

247 lines
6.9 KiB
Fortran
Raw Normal View History

2022-02-02 15:06:51 +01:00
subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type,mix,level_shift,dostab, &
regMP, &
2022-02-02 15:06:51 +01:00
maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, &
TDA,singlet,triplet,spin_conserved,spin_flip, &
maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,linGF,eta_GF,renormGF,regGF, &
2023-07-04 10:37:54 +02:00
maxSCF_GW,thresh_GW,DIIS_GW,n_diis_GW,linGW,eta_GW,regGW,COHSEX,TDA_W, &
2022-02-02 15:06:51 +01:00
maxSCF_GT,thresh_GT,DIIS_GT,n_diis_GT,linGT,eta_GT,regGT,TDA_T, &
doACFDT,exchange_kernel,doXBS, &
2022-11-29 09:54:18 +01:00
BSE,dBSE,dTDA,evDyn,ppBSE,BSE2)
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
integer,intent(out) :: n_diis_HF
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
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
integer,intent(out) :: n_diis_CC
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
integer,intent(out) :: n_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
integer,intent(out) :: n_diis_GW
logical,intent(out) :: COHSEX
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
integer,intent(out) :: n_diis_GT
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
2020-06-15 23:04:07 +02:00
logical,intent(out) :: BSE
2020-06-14 21:20:01 +02:00
logical,intent(out) :: dBSE
logical,intent(out) :: dTDA
logical,intent(out) :: evDyn
2022-08-17 14:38:00 +02:00
logical,intent(out) :: ppBSE
2022-11-28 10:52:06 +01:00
logical,intent(out) :: BSE2
2020-06-14 21:20:01 +02:00
2019-03-19 10:13:33 +01:00
! Local variables
2021-12-17 11:41:40 +01:00
character(len=1) :: answer1,answer2,answer3,answer4,answer5,answer6,answer7,answer8
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.
n_diis_HF = 5
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,*)
2022-02-03 10:05:58 +01:00
read(1,*) maxSCF_HF,thresh_HF,answer1,n_diis_HF,guess_type,ortho_type,answer2,level_shift,answer3
2019-03-19 10:13:33 +01:00
2022-02-02 15:06:51 +01:00
if(answer1 == 'T') DIIS_HF = .true.
if(answer2 == 'T') mix = .true.
2022-02-03 10:05:58 +01:00
if(answer3 == 'T') dostab = .true.
2019-03-19 10:13:33 +01:00
if(.not.DIIS_HF) n_diis_HF = 1
! Read MPn options
regMP = .false.
2019-03-19 10:13:33 +01:00
read(1,*)
read(1,*) answer1
if(answer1 == 'T') regMP = .true.
2019-03-19 10:13:33 +01:00
! Read CC options
maxSCF_CC = 64
thresh_CC = 1d-5
DIIS_CC = .false.
n_diis_CC = 5
read(1,*)
read(1,*) maxSCF_CC,thresh_CC,answer1,n_diis_CC
if(answer1 == 'T') DIIS_CC = .true.
if(.not.DIIS_CC) n_diis_CC = 1
! 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,*)
2020-09-22 23:08:47 +02:00
read(1,*) answer1,answer2,answer3,answer4,answer5
2019-03-19 10:13:33 +01:00
2020-10-05 23:00:56 +02:00
if(answer1 == 'T') TDA = .true.
if(answer2 == 'T') singlet = .true.
if(answer3 == 'T') triplet = .true.
if(answer4 == 'T') spin_conserved = .true.
if(answer5 == '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.
n_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,*)
2021-12-17 11:41:40 +01:00
read(1,*) maxSCF_GF,thresh_GF,answer1,n_diis_GF,answer2,eta_GF,renormGF,answer3
2019-03-19 10:13:33 +01:00
if(answer1 == 'T') DIIS_GF = .true.
2020-03-19 10:33:56 +01:00
if(answer2 == 'T') linGF = .true.
2021-12-17 11:41:40 +01:00
if(answer3 == 'T') regGF = .true.
2019-03-19 10:13:33 +01:00
if(.not.DIIS_GF) n_diis_GF = 1
! Read GW options
maxSCF_GW = 64
thresh_GW = 1d-5
DIIS_GW = .false.
n_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.
2019-03-19 10:13:33 +01:00
COHSEX = .false.
2020-06-09 21:24:37 +02:00
TDA_W = .false.
2019-03-19 10:13:33 +01:00
read(1,*)
2020-06-15 23:04:07 +02:00
read(1,*) maxSCF_GW,thresh_GW,answer1,n_diis_GW,answer2,eta_GW, &
2023-07-04 10:37:54 +02:00
answer3,answer4,answer5
2020-06-14 21:20:01 +02:00
if(answer1 == 'T') DIIS_GW = .true.
2020-06-15 23:04:07 +02:00
if(answer2 == 'T') linGW = .true.
if(answer3 == 'T') COHSEX = .true.
2023-07-04 10:37:54 +02:00
if(answer4 == 'T') TDA_W = .true.
if(answer5 == 'T') regGW = .true.
2019-03-19 10:13:33 +01:00
if(.not.DIIS_GW) n_diis_GW = 1
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.
n_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,*)
read(1,*) maxSCF_GT,thresh_GT,answer1,n_diis_GT,answer2,eta_GT, &
answer3,answer4
if(answer1 == 'T') DIIS_GT = .true.
if(answer2 == 'T') linGT = .true.
if(answer3 == 'T') TDA_T = .true.
if(answer4 == 'T') regGT = .true.
if(.not.DIIS_GT) n_diis_GT = 1
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,*)
2020-01-16 21:39:00 +01:00
read(1,*) answer1,answer2,answer3
2020-01-14 21:27:34 +01:00
if(answer1 == 'T') doACFDT = .true.
2020-01-16 21:39:00 +01:00
if(answer2 == 'T') exchange_kernel = .true.
if(answer3 == 'T') doXBS = .true.
2020-01-14 21:27:34 +01:00
2020-06-14 21:20:01 +02:00
! Options for dynamical BSE calculations
2020-06-15 23:04:07 +02:00
BSE = .false.
2020-06-14 21:20:01 +02:00
dBSE = .false.
dTDA = .true.
evDyn = .false.
2022-08-17 14:38:00 +02:00
ppBSE = .false.
2022-11-28 10:52:06 +01:00
BSE2 = .false.
2020-06-14 21:20:01 +02:00
read(1,*)
2022-11-28 10:52:06 +01:00
read(1,*) answer1,answer2,answer3,answer4,answer5,answer6
2020-06-14 21:20:01 +02:00
2020-06-15 23:04:07 +02:00
if(answer1 == 'T') BSE = .true.
if(answer2 == 'T') dBSE = .true.
if(answer3 == 'F') dTDA = .false.
if(answer4 == 'T') evDyn = .true.
2022-08-17 14:38:00 +02:00
if(answer5 == 'T') ppBSE = .true.
2022-11-28 10:52:06 +01:00
if(answer6 == 'T') BSE2 = .true.
2020-06-14 21:20:01 +02:00
2019-03-19 10:13:33 +01:00
! Close file with options
close(unit=1)
end subroutine read_options