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, & TDA,singlet,triplet,spin_conserved,spin_flip, & 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, & COHSEX,SOSEX,TDA_W,G0W,GW0, & doACFDT,exchange_kernel,doXBS, & BSE,dBSE,dTDA,evDyn, & nMC,nEq,nWalk,dt,nPrint,iSeed,doDrift) ! 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 integer,intent(out) :: maxSCF_CC double precision,intent(out) :: thresh_CC logical,intent(out) :: DIIS_CC integer,intent(out) :: n_diis_CC logical,intent(out) :: TDA logical,intent(out) :: singlet logical,intent(out) :: triplet logical,intent(out) :: spin_conserved logical,intent(out) :: spin_flip integer,intent(out) :: maxSCF_GF double precision,intent(out) :: thresh_GF logical,intent(out) :: DIIS_GF integer,intent(out) :: n_diis_GF logical,intent(out) :: linGF integer,intent(out) :: renormGF double precision,intent(out) :: eta_GF 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 logical,intent(out) :: SOSEX logical,intent(out) :: TDA_W logical,intent(out) :: G0W logical,intent(out) :: GW0 logical,intent(out) :: linGW double precision,intent(out) :: eta_GW logical,intent(out) :: doACFDT logical,intent(out) :: exchange_kernel logical,intent(out) :: doXBS logical,intent(out) :: BSE logical,intent(out) :: dBSE logical,intent(out) :: dTDA logical,intent(out) :: evDyn integer,intent(out) :: nMC integer,intent(out) :: nEq integer,intent(out) :: nWalk double precision,intent(out) :: dt integer,intent(out) :: nPrint integer,intent(out) :: iSeed logical,intent(out) :: doDrift ! Local variables character(len=1) :: answer1,answer2,answer3,answer4,answer5,answer6,answer7 ! 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 read(1,*) read(1,*) maxSCF_HF,thresh_HF,answer1,n_diis_HF,guess_type,ortho_type if(answer1 == 'T') DIIS_HF = .true. if(.not.DIIS_HF) n_diis_HF = 1 ! Read MPn options read(1,*) read(1,*) ! 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 TDA = .false. singlet = .false. triplet = .false. spin_conserved = .false. spin_flip = .false. read(1,*) read(1,*) answer1,answer2,answer3,answer4,answer5 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. ! Read Green function options maxSCF_GF = 64 thresh_GF = 1d-5 DIIS_GF = .false. n_diis_GF = 5 linGF = .false. eta_GF = 0d0 renormGF = 0 read(1,*) read(1,*) maxSCF_GF,thresh_GF,answer1,n_diis_GF,answer2,eta_GF,renormGF if(answer1 == 'T') DIIS_GF = .true. if(answer2 == 'T') linGF = .true. 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 linGW = .false. eta_GW = 0d0 COHSEX = .false. SOSEX = .false. TDA_W = .false. G0W = .false. GW0 = .false. read(1,*) read(1,*) maxSCF_GW,thresh_GW,answer1,n_diis_GW,answer2,eta_GW, & answer3,answer4,answer5,answer6,answer7 if(answer1 == 'T') DIIS_GW = .true. if(answer2 == 'T') linGW = .true. if(answer3 == 'T') COHSEX = .true. if(answer4 == 'T') SOSEX = .true. if(answer5 == 'T') TDA_W = .true. if(answer6 == 'T') G0W = .true. if(answer7 == 'T') GW0 = .true. if(.not.DIIS_GW) n_diis_GW = 1 ! Options for adiabatic connection doACFDT = .false. exchange_kernel = .false. doXBS = .false. read(1,*) read(1,*) answer1,answer2,answer3 if(answer1 == 'T') doACFDT = .true. if(answer2 == 'T') exchange_kernel = .true. if(answer3 == 'T') doXBS = .true. ! Options for dynamical BSE calculations BSE = .false. dBSE = .false. dTDA = .true. evDyn = .false. read(1,*) read(1,*) answer1,answer2,answer3,answer4 if(answer1 == 'T') BSE = .true. if(answer2 == 'T') dBSE = .true. if(answer3 == 'F') dTDA = .false. if(answer4 == 'T') evDyn = .true. ! Read options for MC-MP2: Monte Carlo steps, number of equilibration steps, number of walkers, ! Monte Carlo time step, frequency of output results, and seed for random number generator nMC = 100000 nEq = 10000 nWalk = 10 dt = 0.3d0 nPrint = 1000 iSeed = 0 doDrift = .false. read(1,*) read(1,*) nMC,nEq,nWalk,dt,nPrint,iSeed,answer1 if(answer1 == 'T') doDrift = .true. ! Close file with options close(unit=1) end subroutine read_options