2023-10-25 21:38:20 +02:00
|
|
|
subroutine read_methods(doRHF,doUHF,doGHF,doROHF, &
|
|
|
|
doMP2,doMP3, &
|
|
|
|
doCCD,dopCCD,doDCD,doCCSD,doCCSDT, &
|
|
|
|
do_drCCD,do_rCCD,do_crCCD,do_lCCD, &
|
|
|
|
doCIS,doCIS_D,doCID,doCISD,doFCI, &
|
|
|
|
dophRPA,dophRPAx,docrRPA,doppRPA, &
|
|
|
|
doG0F2,doevGF2,doqsGF2, &
|
|
|
|
doG0F3,doevGF3, &
|
|
|
|
doG0W0,doevGW,doqsGW,doSRGqsGW, &
|
|
|
|
doufG0W0,doufGW, &
|
|
|
|
doG0T0pp,doevGTpp,doqsGTpp, &
|
2023-07-03 23:15:07 +02:00
|
|
|
doG0T0eh,doevGTeh,doqsGTeh)
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Read desired methods
|
|
|
|
|
|
|
|
implicit none
|
|
|
|
|
|
|
|
! Input variables
|
|
|
|
|
2023-10-25 21:38:20 +02:00
|
|
|
logical,intent(out) :: doRHF,doUHF,doGHF,doROHF
|
2022-12-01 09:42:23 +01:00
|
|
|
logical,intent(out) :: doMP2,doMP3
|
2021-11-10 14:47:26 +01:00
|
|
|
logical,intent(out) :: doCCD,dopCCD,doDCD,doCCSD,doCCSDT
|
|
|
|
logical,intent(out) :: do_drCCD,do_rCCD,do_crCCD,do_lCCD
|
2021-03-08 17:00:05 +01:00
|
|
|
logical,intent(out) :: doCIS,doCIS_D,doCID,doCISD,doFCI
|
2023-07-12 23:16:37 +02:00
|
|
|
logical,intent(out) :: dophRPA,dophRPAx,docrRPA,doppRPA
|
2021-03-05 22:34:48 +01:00
|
|
|
logical,intent(out) :: doG0F2,doevGF2,doqsGF2,doG0F3,doevGF3
|
2022-11-29 12:11:09 +01:00
|
|
|
logical,intent(out) :: doG0W0,doevGW,doqsGW,doSRGqsGW,doufG0W0,doufGW
|
2023-07-03 23:15:07 +02:00
|
|
|
logical,intent(out) :: doG0T0pp,doevGTpp,doqsGTpp
|
|
|
|
logical,intent(out) :: doG0T0eh,doevGTeh,doqsGTeh
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Local variables
|
|
|
|
|
2023-10-25 21:38:20 +02:00
|
|
|
character(len=1) :: ans1,ans2,ans3,ans4,ans5,ans6
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Open file with method specification
|
|
|
|
|
|
|
|
open(unit=1,file='input/methods')
|
|
|
|
|
2023-07-29 09:28:22 +02:00
|
|
|
! Read mean-field methods
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2023-07-17 13:35:24 +02:00
|
|
|
doRHF = .false.
|
|
|
|
doUHF = .false.
|
2023-10-25 21:38:20 +02:00
|
|
|
doGHF = .false.
|
2023-09-05 17:23:40 +02:00
|
|
|
doROHF = .false.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
read(1,*)
|
2023-10-25 21:38:20 +02:00
|
|
|
read(1,*) ans1,ans2,ans3,ans4
|
|
|
|
if(ans1 == 'T') doRHF = .true.
|
|
|
|
if(ans2 == 'T') doUHF = .true.
|
|
|
|
if(ans3 == 'T') doGHF = .true.
|
|
|
|
if(ans4 == 'T') doROHF = .true.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Read MPn methods
|
|
|
|
|
2023-07-29 09:28:22 +02:00
|
|
|
doMP2 = .false.
|
|
|
|
doMP3 = .false.
|
|
|
|
|
2019-03-19 10:13:33 +01:00
|
|
|
read(1,*)
|
2023-10-25 21:38:20 +02:00
|
|
|
read(1,*) ans1,ans2
|
|
|
|
if(ans1 == 'T') doMP2 = .true.
|
|
|
|
if(ans2 == 'T') doMP3 = .true.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Read CC methods
|
|
|
|
|
2023-07-29 09:28:22 +02:00
|
|
|
doCCD = .false.
|
|
|
|
dopCCD = .false.
|
|
|
|
doDCD = .false.
|
|
|
|
doCCSD = .false.
|
|
|
|
doCCSDT = .false.
|
|
|
|
|
2019-03-19 10:13:33 +01:00
|
|
|
read(1,*)
|
2023-10-25 21:38:20 +02:00
|
|
|
read(1,*) ans1,ans2,ans3,ans4,ans5
|
|
|
|
if(ans1 == 'T') doCCD = .true.
|
|
|
|
if(ans2 == 'T') dopCCD = .true.
|
|
|
|
if(ans3 == 'T') doDCD = .true.
|
|
|
|
if(ans4 == 'T') doCCSD = .true.
|
|
|
|
if(ans5 == 'T') doCCSDT = .true.
|
2020-03-24 14:55:22 +01:00
|
|
|
|
|
|
|
! Read weird CC methods
|
2023-07-29 09:28:22 +02:00
|
|
|
|
|
|
|
do_drCCD = .false.
|
|
|
|
do_rCCD = .false.
|
|
|
|
do_crCCD = .false.
|
|
|
|
do_lCCD = .false.
|
|
|
|
|
2020-03-24 14:55:22 +01:00
|
|
|
read(1,*)
|
2023-10-25 21:38:20 +02:00
|
|
|
read(1,*) ans1,ans2,ans3,ans4
|
|
|
|
if(ans1 == 'T') do_drCCD = .true.
|
|
|
|
if(ans2 == 'T') do_rCCD = .true.
|
|
|
|
if(ans3 == 'T') do_crCCD = .true.
|
|
|
|
if(ans4 == 'T') do_lCCD = .true.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2023-07-29 09:28:22 +02:00
|
|
|
! Read CI methods
|
|
|
|
|
|
|
|
doCIS = .false.
|
|
|
|
doCIS_D = .false.
|
|
|
|
doCID = .false.
|
|
|
|
doCISD = .false.
|
|
|
|
doFCI = .false.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
read(1,*)
|
2023-10-25 21:38:20 +02:00
|
|
|
read(1,*) ans1,ans2,ans3,ans4,ans5
|
|
|
|
if(ans1 == 'T') doCIS = .true.
|
|
|
|
if(ans2 == 'T') doCIS_D = .true.
|
|
|
|
if(ans3 == 'T') doCID = .true.
|
|
|
|
if(ans4 == 'T') doCISD = .true.
|
|
|
|
if(ans5 == 'T') doFCI = .true.
|
2020-10-01 23:05:23 +02:00
|
|
|
if(doCIS_D) doCIS = .true.
|
2020-04-20 12:28:19 +02:00
|
|
|
|
2023-07-29 09:28:22 +02:00
|
|
|
! Read RPA methods
|
|
|
|
|
|
|
|
dophRPA = .false.
|
|
|
|
dophRPAx = .false.
|
|
|
|
docrRPA = .false.
|
|
|
|
doppRPA = .false.
|
|
|
|
|
2020-04-20 12:28:19 +02:00
|
|
|
read(1,*)
|
2023-10-25 21:38:20 +02:00
|
|
|
read(1,*) ans1,ans2,ans3,ans4
|
|
|
|
if(ans1 == 'T') dophRPA = .true.
|
|
|
|
if(ans2 == 'T') dophRPAx = .true.
|
|
|
|
if(ans3 == 'T') docrRPA = .true.
|
|
|
|
if(ans4 == 'T') doppRPA = .true.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2023-07-29 09:28:22 +02:00
|
|
|
! Read Green's function methods
|
|
|
|
|
|
|
|
doG0F2 = .false.
|
|
|
|
doevGF2 = .false.
|
|
|
|
doqsGF2 = .false.
|
|
|
|
doG0F3 = .false.
|
|
|
|
doevGF3 = .false.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
read(1,*)
|
2023-10-25 21:38:20 +02:00
|
|
|
read(1,*) ans1,ans2,ans3,ans4,ans5
|
|
|
|
if(ans1 == 'T') doG0F2 = .true.
|
|
|
|
if(ans2 == 'T') doevGF2 = .true.
|
|
|
|
if(ans3 == 'T') doqsGF2 = .true.
|
|
|
|
if(ans4 == 'T') doG0F3 = .true.
|
|
|
|
if(ans5 == 'T') doevGF3 = .true.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Read GW methods
|
|
|
|
|
2023-07-29 09:28:22 +02:00
|
|
|
doG0W0 = .false.
|
|
|
|
doevGW = .false.
|
|
|
|
doqsGW = .false.
|
|
|
|
doSRGqsGW = .false.
|
|
|
|
doufG0W0 = .false.
|
|
|
|
doufGW = .false.
|
|
|
|
|
2019-03-19 10:13:33 +01:00
|
|
|
read(1,*)
|
2023-10-25 21:38:20 +02:00
|
|
|
read(1,*) ans1,ans2,ans3,ans4,ans5,ans6
|
|
|
|
if(ans1 == 'T') doG0W0 = .true.
|
|
|
|
if(ans2 == 'T') doevGW = .true.
|
|
|
|
if(ans3 == 'T') doqsGW = .true.
|
|
|
|
if(ans4 == 'T') doSRGqsGW = .true.
|
|
|
|
if(ans5 == 'T') doufG0W0 = .true.
|
|
|
|
if(ans6 == 'T') doufGW = .true.
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2019-10-16 18:14:47 +02:00
|
|
|
! Read GT methods
|
|
|
|
|
2023-07-29 09:28:22 +02:00
|
|
|
doG0T0pp = .false.
|
|
|
|
doevGTpp = .false.
|
|
|
|
doqsGTpp = .false.
|
|
|
|
doG0T0eh = .false.
|
|
|
|
doevGTeh = .false.
|
|
|
|
doqsGTeh = .false.
|
|
|
|
|
2019-10-16 18:14:47 +02:00
|
|
|
read(1,*)
|
2023-10-25 21:38:20 +02:00
|
|
|
read(1,*) ans1,ans2,ans3,ans4,ans5,ans6
|
|
|
|
if(ans1 == 'T') doG0T0pp = .true.
|
|
|
|
if(ans2 == 'T') doevGTpp = .true.
|
|
|
|
if(ans3 == 'T') doqsGTpp = .true.
|
|
|
|
if(ans4 == 'T') doG0T0eh = .true.
|
|
|
|
if(ans5 == 'T') doevGTeh = .true.
|
|
|
|
if(ans6 == 'T') doqsGTeh = .true.
|
2019-10-16 18:14:47 +02:00
|
|
|
|
2019-03-19 10:13:33 +01:00
|
|
|
! Close file with geometry specification
|
|
|
|
|
|
|
|
close(unit=1)
|
|
|
|
|
2023-07-18 14:59:18 +02:00
|
|
|
end subroutine
|