From 5f75ec478bb6b1ac6bce4a02ccaa0c7a10945dbb Mon Sep 17 00:00:00 2001 From: Pierre-Francois Loos Date: Thu, 19 Mar 2020 10:33:56 +0100 Subject: [PATCH] GF clean up --- input/methods | 4 ++-- input/options | 4 ++-- src/QuAcK/QuAcK.f90 | 22 +++++++++++----------- src/QuAcK/read_options.f90 | 19 +++++++++++-------- 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/input/methods b/input/methods index 5baa140..2b2d735 100644 --- a/input/methods +++ b/input/methods @@ -6,8 +6,8 @@ F F F F F # CIS RPA RPAx ppRPA ADC F F F F F -# GF2 GF3 - T F +# G0F2 evGF2 G0F3 evGF3 + T F F F # G0W0 evGW qsGW F F F # G0T0 evGT qsGT diff --git a/input/options b/input/options index 5b85bcd..a3963bf 100644 --- a/input/options +++ b/input/options @@ -6,8 +6,8 @@ 64 0.0000001 F 1 # CIS/TDHF/BSE: singlet triplet T T -# GF: maxSCF thresh DIIS n_diis renormalization - 256 0.00001 T 5 3 +# GF: maxSCF thresh DIIS n_diis lin renorm + 256 0.00001 T 5 T 3 # GW: maxSCF thresh DIIS n_diis COHSEX SOSEX BSE TDA G0W GW0 lin eta 256 0.00001 T 5 F F T F F F T 0.000 # ACFDT: AC Kx XBS diff --git a/src/QuAcK/QuAcK.f90 b/src/QuAcK/QuAcK.f90 index 5d6d9ea..909e20d 100644 --- a/src/QuAcK/QuAcK.f90 +++ b/src/QuAcK/QuAcK.f90 @@ -81,13 +81,13 @@ program QuAcK logical :: singlet_manifold logical :: triplet_manifold - integer :: maxSCF_GF,n_diis_GF,renormalization + integer :: maxSCF_GF,n_diis_GF,renormGF double precision :: thresh_GF - logical :: DIIS_GF + logical :: DIIS_GF,linGF integer :: maxSCF_GW,n_diis_GW double precision :: thresh_GW - logical :: DIIS_GW,COHSEX,SOSEX,BSE,TDA,G0W,GW0,linearize + logical :: DIIS_GW,COHSEX,SOSEX,BSE,TDA,G0W,GW0,linGW double precision :: eta integer :: nMC,nEq,nWalk,nPrint,iSeed @@ -130,9 +130,9 @@ program QuAcK call read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_type, & maxSCF_CC,thresh_CC,DIIS_CC,n_diis_CC, & singlet_manifold,triplet_manifold, & - maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,renormalization, & + maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,linGF,renormGF, & maxSCF_GW,thresh_GW,DIIS_GW,n_diis_GW, & - COHSEX,SOSEX,BSE,TDA,G0W,GW0,linearize,eta, & + COHSEX,SOSEX,BSE,TDA,G0W,GW0,linGW,eta, & doACFDT,exchange_kernel,doXBS, & nMC,nEq,nWalk,dt,nPrint,iSeed,doDrift) @@ -513,7 +513,7 @@ program QuAcK if(doG0F2) then call cpu_time(start_GF2) - call G0F2(maxSCF_GF,thresh_GF,n_diis_GF,linearize,nBas,nC(1),nO(1),nV(1),nR(1),ERI_MO_basis,eHF) + call G0F2(linGF,nBas,nC(1),nO(1),nV(1),nR(1),ERI_MO_basis,eHF) call cpu_time(end_GF2) t_GF2 = end_GF2 - start_GF2 @@ -529,7 +529,7 @@ program QuAcK if(doevGF2) then call cpu_time(start_GF2) - call evGF2(maxSCF_GF,thresh_GF,n_diis_GF,linearize,nBas,nC(1),nO(1),nV(1),nR(1),ERI_MO_basis,eHF) + call evGF2(maxSCF_GF,thresh_GF,n_diis_GF,linGF,nBas,nC(1),nO(1),nV(1),nR(1),ERI_MO_basis,eHF) call cpu_time(end_GF2) t_GF2 = end_GF2 - start_GF2 @@ -545,7 +545,7 @@ program QuAcK if(doG0F3) then call cpu_time(start_GF3) - call G0F3(renormalization,nBas,nC(1),nO(1),nV(1),nR(1),ERI_MO_basis,eHF) + call G0F3(renormGF,nBas,nC(1),nO(1),nV(1),nR(1),ERI_MO_basis,eHF) call cpu_time(end_GF3) t_GF3 = end_GF3 - start_GF3 @@ -561,7 +561,7 @@ program QuAcK if(doevGF3) then call cpu_time(start_GF3) - call evGF3(maxSCF_GF,thresh_GF,n_diis_GF,renormalization,nBas,nC(1),nO(1),nV(1),nR(1),ERI_MO_basis,eHF) + call evGF3(maxSCF_GF,thresh_GF,n_diis_GF,renormGF,nBas,nC(1),nO(1),nV(1),nR(1),ERI_MO_basis,eHF) call cpu_time(end_GF3) t_GF3 = end_GF3 - start_GF3 @@ -580,7 +580,7 @@ program QuAcK call cpu_time(start_G0W0) call G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,SOSEX,BSE,TDA, & - singlet_manifold,triplet_manifold,linearize,eta, & + singlet_manifold,triplet_manifold,linGW,eta, & nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,Hc,H,ERI_MO_basis,PHF,cHF,eHF,eG0W0) call cpu_time(end_G0W0) @@ -598,7 +598,7 @@ program QuAcK call cpu_time(start_evGW) call evGW(maxSCF_GW,thresh_GW,n_diis_GW,doACFDT,exchange_kernel,doXBS,COHSEX,SOSEX,BSE,TDA,G0W,GW0, & - singlet_manifold,triplet_manifold,linearize,eta, & + singlet_manifold,triplet_manifold,linGW,eta, & nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,Hc,H,ERI_MO_basis,PHF,cHF,eHF,eG0W0) call cpu_time(end_evGW) diff --git a/src/QuAcK/read_options.f90 b/src/QuAcK/read_options.f90 index 1b15a24..8ac01f2 100644 --- a/src/QuAcK/read_options.f90 +++ b/src/QuAcK/read_options.f90 @@ -1,9 +1,9 @@ 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, & singlet_manifold,triplet_manifold, & - maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,renormalization, & + maxSCF_GF,thresh_GF,DIIS_GF,n_diis_GF,linGF,renormGF, & maxSCF_GW,thresh_GW,DIIS_GW,n_diis_GW, & - COHSEX,SOSEX,BSE,TDA,G0W,GW0,linearize,eta, & + COHSEX,SOSEX,BSE,TDA,G0W,GW0,linGW,eta, & doACFDT,exchange_kernel,doXBS, & nMC,nEq,nWalk,dt,nPrint,iSeed,doDrift) @@ -32,7 +32,8 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_t double precision,intent(out) :: thresh_GF logical,intent(out) :: DIIS_GF integer,intent(out) :: n_diis_GF - integer,intent(out) :: renormalization + logical,intent(out) :: linGF + integer,intent(out) :: renormGF integer,intent(out) :: maxSCF_GW double precision,intent(out) :: thresh_GW @@ -44,7 +45,7 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_t logical,intent(out) :: TDA logical,intent(out) :: G0W logical,intent(out) :: GW0 - logical,intent(out) :: linearize + logical,intent(out) :: linGW double precision,intent(out) :: eta logical,intent(out) :: doACFDT @@ -119,12 +120,14 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_t thresh_GF = 1d-5 DIIS_GF = .false. n_diis_GF = 5 - renormalization = 0 + linGF = .false. + renormGF = 0 read(1,*) - read(1,*) maxSCF_GF,thresh_GW,answer1,n_diis_GF,renormalization + read(1,*) maxSCF_GF,thresh_GW,answer1,n_diis_GF,answer2,renormGF if(answer1 == 'T') DIIS_GF = .true. + if(answer2 == 'T') linGF = .true. if(.not.DIIS_GF) n_diis_GF = 1 ! Read GW options @@ -139,7 +142,7 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_t TDA = .false. G0W = .false. GW0 = .false. - linearize = .false. + linGW = .false. eta = 0d0 read(1,*) @@ -153,7 +156,7 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,n_diis_HF,guess_type,ortho_t if(answer5 == 'T') TDA = .true. if(answer6 == 'T') G0W = .true. if(answer7 == 'T') GW0 = .true. - if(answer8 == 'T') linearize = .true. + if(answer8 == 'T') linGW = .true. if(.not.DIIS_GW) n_diis_GW = 1 ! Options for adiabatic connection