diff --git a/src/GF/evGGF2.f90 b/src/GF/evGGF2.f90 index bdcdd0c..568423f 100644 --- a/src/GF/evGGF2.f90 +++ b/src/GF/evGGF2.f90 @@ -108,7 +108,7 @@ subroutine evGGF2(dotest,dophBSE,doppBSE,TDA,dBSE,dTDA,maxSCF,thresh,max_diis, & ! Print results call GMP2(.false.,regularize,nBas,nC,nO,nV,nR,ERI,ENuc,ERHF,eGF,Ec) - call print_evRGF2(nBas,nO,nSCF,Conv,eHF,SigC,Z,eGF,ENuc,ERHF,Ec) + call print_evGGF2(nBas,nO,nSCF,Conv,eHF,SigC,Z,eGF,ENuc,ERHF,Ec) ! DIIS extrapolation diff --git a/src/GF/print_evGGF2.f90 b/src/GF/print_evGGF2.f90 new file mode 100644 index 0000000..a93be0e --- /dev/null +++ b/src/GF/print_evGGF2.f90 @@ -0,0 +1,60 @@ +subroutine print_evGGF2(nBas,nO,nSCF,Conv,eHF,Sig,Z,eGF,ENuc,ERHF,Ec) + +! Print one-electron energies and other stuff for G0F2 + + implicit none + include 'parameters.h' + + integer,intent(in) :: nBas + integer,intent(in) :: nO + integer,intent(in) :: nSCF + double precision,intent(in) :: Conv + double precision,intent(in) :: eHF(nBas) + double precision,intent(in) :: Sig(nBas) + double precision,intent(in) :: eGF(nBas) + double precision,intent(in) :: Z(nBas) + double precision,intent(in) :: ENuc + double precision,intent(in) :: ERHF + double precision,intent(in) :: Ec + + integer :: p + integer :: HOMO + integer :: LUMO + double precision :: Gap + +! HOMO and LUMO + + HOMO = nO + LUMO = HOMO + 1 + Gap = eGF(LUMO) - eGF(HOMO) + +! Dump results + + write(*,*)'-------------------------------------------------------------------------------' + write(*,*)' Self-consistent evGF2 calculation' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') & + '|','#','|','e_HF (eV)','|','Sig_GF2 (eV)','|','Z','|','e_GF2 (eV)','|' + write(*,*)'-------------------------------------------------------------------------------' + + do p=1,nBas + write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') & + '|',p,'|',eHF(p)*HaToeV,'|',Sig(p)*HaToeV,'|',Z(p),'|',eGF(p)*HaToeV,'|' + enddo + + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A10,I3)') 'Iteration ',nSCF + write(*,'(2X,A14,F15.5)')'Convergence = ',Conv + + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') 'evGGF2 HOMO energy =',eGF(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evGGF2 LUMO energy =',eGF(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evGGF2 HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,*)'-------------------------------------------------------------------------------' + write(*,'(2X,A60,F15.6,A3)') 'evGGF2 total energy =',ENuc + ERHF + Ec,' au' + write(*,'(2X,A60,F15.6,A3)') 'evGGF2 correlation energy =',Ec,' au' + write(*,*)'-------------------------------------------------------------------------------' + write(*,*) + + +end subroutine diff --git a/src/GF/print_evRGF2.f90 b/src/GF/print_evRGF2.f90 index 17e6e80..5d723dc 100644 --- a/src/GF/print_evRGF2.f90 +++ b/src/GF/print_evRGF2.f90 @@ -47,12 +47,12 @@ subroutine print_evRGF2(nBas,nO,nSCF,Conv,eHF,Sig,Z,eGF,ENuc,ERHF,Ec) write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') 'evGF2 HOMO energy =',eGF(HOMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'evGF2 LUMO energy =',eGF(LUMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'evGF2 HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evRGF2 HOMO energy =',eGF(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evRGF2 LUMO energy =',eGF(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evRGF2 HOMO-LUMO gap =',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') 'evGF2 total energy =',ENuc + ERHF + Ec,' au' - write(*,'(2X,A60,F15.6,A3)') 'evGF2 correlation energy =',Ec,' au' + write(*,'(2X,A60,F15.6,A3)') 'evRGF2 total energy =',ENuc + ERHF + Ec,' au' + write(*,'(2X,A60,F15.6,A3)') 'evRGF2 correlation energy =',Ec,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) diff --git a/src/GT/RG0T0eh.f90 b/src/GT/RG0T0eh.f90 index 80c232e..c721acf 100644 --- a/src/GT/RG0T0eh.f90 +++ b/src/GT/RG0T0eh.f90 @@ -166,7 +166,7 @@ subroutine RG0T0eh(dotest,doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,T ! Dump results ! !--------------! - call print_G0T0eh(nBas,nO,eHF,ENuc,ERHF,Sig,Z,eGT,EcRPA,EcGM) + call print_RG0T0eh(nBas,nO,eHF,ENuc,ERHF,Sig,Z,eGT,EcRPA,EcGM) ! Testing zone diff --git a/src/GT/RG0T0pp.f90 b/src/GT/RG0T0pp.f90 index 27a7919..179e3c8 100644 --- a/src/GT/RG0T0pp.f90 +++ b/src/GT/RG0T0pp.f90 @@ -241,7 +241,7 @@ subroutine RG0T0pp(dotest,doACFDT,exchange_kernel,doXBS,dophBSE,TDA_T,TDA,dBSE,d EcRPA(1) = EcRPA(1) - EcRPA(2) EcRPA(2) = 3d0*EcRPA(2) - call print_G0T0pp(nBas,nO,eHF,ENuc,ERHF,Sig,Z,eGT,EcGM,EcRPA) + call print_RG0T0pp(nBas,nO,eHF,ENuc,ERHF,Sig,Z,eGT,EcGM,EcRPA) ! Perform BSE calculation diff --git a/src/GT/evRGTeh.f90 b/src/GT/evRGTeh.f90 index 5733cd0..415c100 100644 --- a/src/GT/evRGTeh.f90 +++ b/src/GT/evRGTeh.f90 @@ -165,7 +165,7 @@ subroutine evRGTeh(dotest,maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,d ! Print results - call print_evGTeh(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,Sig,Z,eGT,EcRPA,EcGM) + call print_evRGTeh(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,Sig,Z,eGT,EcRPA,EcGM) ! Linear mixing or DIIS extrapolation diff --git a/src/GT/evRGTpp.f90 b/src/GT/evRGTpp.f90 index dfbda1f..010005c 100644 --- a/src/GT/evRGTpp.f90 +++ b/src/GT/evRGTpp.f90 @@ -224,7 +224,7 @@ subroutine evRGTpp(dotest,maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,B ! Dump results !---------------------------------------------- - call print_evGTpp(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,Sig,Z,eGT,EcGM,EcRPA) + call print_evRGTpp(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,Sig,Z,eGT,EcGM,EcRPA) ! DIIS extrapolation diff --git a/src/GT/print_G0T0eh.f90 b/src/GT/print_RG0T0eh.f90 similarity index 72% rename from src/GT/print_G0T0eh.f90 rename to src/GT/print_RG0T0eh.f90 index 2d0a7e0..c57051c 100644 --- a/src/GT/print_G0T0eh.f90 +++ b/src/GT/print_RG0T0eh.f90 @@ -1,4 +1,4 @@ -subroutine print_G0T0eh(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM) +subroutine print_RG0T0eh(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM) ! Print one-electron energies and other stuff for G0W0 @@ -39,14 +39,14 @@ subroutine print_G0T0eh(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM) enddo write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') 'G0T0eh HOMO energy =',eGT(HOMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'G0T0eh LUMO energy =',eGT(LUMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'G0T0eh HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'RG0T0eh HOMO energy =',eGT(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'RG0T0eh LUMO energy =',eGT(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'RG0T0eh HOMO-LUMO gap =',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0T0eh total energy =',ENuc + ERHF + EcRPA,' au' - write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0T0eh correlation energy =',EcRPA,' au' - write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0eh total energy =',ENuc + ERHF + EcGM,' au' - write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0eh correlation energy =',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@RG0T0eh total energy =',ENuc + ERHF + EcRPA,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@RG0T0eh correlation energy =',EcRPA,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@RG0T0eh total energy =',ENuc + ERHF + EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@RG0T0eh correlation energy =',EcGM,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) diff --git a/src/GT/print_G0T0pp.f90 b/src/GT/print_RG0T0pp.f90 similarity index 65% rename from src/GT/print_G0T0pp.f90 rename to src/GT/print_RG0T0pp.f90 index a77a3a5..1028c99 100644 --- a/src/GT/print_G0T0pp.f90 +++ b/src/GT/print_RG0T0pp.f90 @@ -1,4 +1,4 @@ -subroutine print_G0T0pp(nBas,nO,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA) +subroutine print_RG0T0pp(nBas,nO,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA) ! Print one-electron energies and other stuff for G0T0 @@ -48,16 +48,16 @@ subroutine print_G0T0pp(nBas,nO,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA) enddo write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') 'G0T0pp HOMO energy =',eGT(HOMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'G0T0pp LUMO energy =',eGT(LUMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'G0T0pp HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'RG0T0pp HOMO energy =',eGT(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'RG0T0pp LUMO energy =',eGT(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'RG0T0pp HOMO-LUMO gap =',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp correlation energy (singlet) =',EcRPA(1),' au' - write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp correlation energy (triplet) =',EcRPA(2),' au' - write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp correlation energy =',EcRPA(1) + EcRPA(2),' au' - write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2),' au' - write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0pp correlation energy =',EcGM,' au' - write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0pp total energy =',ENuc + ERHF + EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@RG0T0pp correlation energy (singlet) =',EcRPA(1),' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@RG0T0pp correlation energy (triplet) =',EcRPA(2),' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@RG0T0pp correlation energy =',EcRPA(1) + EcRPA(2),' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@RG0T0pp total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2),' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@RG0T0pp correlation energy =',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@RG0T0pp total energy =',ENuc + ERHF + EcGM,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) diff --git a/src/GT/print_evGTeh.f90 b/src/GT/print_evRGTeh.f90 similarity index 76% rename from src/GT/print_evGTeh.f90 rename to src/GT/print_evRGTeh.f90 index 77c1655..51a0780 100644 --- a/src/GT/print_evGTeh.f90 +++ b/src/GT/print_evRGTeh.f90 @@ -1,4 +1,4 @@ -subroutine print_evGTeh(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM) +subroutine print_evRGTeh(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM) ! Print one-electron energies and other stuff for evGTeh @@ -47,14 +47,14 @@ subroutine print_evGTeh(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM) write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') 'evGTeh HOMO energy =',eGT(HOMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'evGTeh LUMO energy =',eGT(LUMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'evGTeh HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evRGTeh HOMO energy =',eGT(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evRGTeh LUMO energy =',eGT(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evRGTeh HOMO-LUMO gap =',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGTeh total energy =',ENuc + ERHF + EcRPA,' au' - write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGTeh correlation energy =',EcRPA,' au' - write(*,'(2X,A60,F15.6,A3)') ' GM@evGTeh total energy =',ENuc + ERHF + EcGM,' au' - write(*,'(2X,A60,F15.6,A3)') ' GM@evGTeh correlation energy =',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@evRGTeh total energy =',ENuc + ERHF + EcRPA,' au' + write(*,'(2X,A60,F15.6,A3)') 'phRPA@evRGTeh correlation energy =',EcRPA,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@evRGTeh total energy =',ENuc + ERHF + EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@evRGTeh correlation energy =',EcGM,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) diff --git a/src/GT/print_evGTpp.f90 b/src/GT/print_evRGTpp.f90 similarity index 70% rename from src/GT/print_evGTpp.f90 rename to src/GT/print_evRGTpp.f90 index c026beb..4453cc3 100644 --- a/src/GT/print_evGTpp.f90 +++ b/src/GT/print_evRGTpp.f90 @@ -1,4 +1,4 @@ -subroutine print_evGTpp(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA) +subroutine print_evRGTpp(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA) ! Print one-electron energies and other stuff for evGT @@ -49,16 +49,16 @@ subroutine print_evGTpp(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA) write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') 'evGTpp HOMO energy =',eGT(HOMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'evGTpp LUMO energy =',eGT(LUMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'evGTpp HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evRGTpp HOMO energy =',eGT(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evRGTpp LUMO energy =',eGT(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'evRGTpp HOMO-LUMO gap =',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp correlation energy (singlet) =',EcRPA(1),' au' - write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp correlation energy (triplet) =',EcRPA(2),' au' - write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp correlation energy =',EcRPA(1) + EcRPA(2),' au' - write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2),' au' - write(*,'(2X,A60,F15.6,A3)') ' GM@evGTpp correlation energy =',EcGM,' au' - write(*,'(2X,A60,F15.6,A3)') ' GM@evGTpp total energy =',ENuc + ERHF + EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evRGTpp correlation energy (singlet) =',EcRPA(1),' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evRGTpp correlation energy (triplet) =',EcRPA(2),' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evRGTpp correlation energy =',sum(EcRPA),' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evRGTpp total energy =',ENuc + ERHF + sum(EcRPA),' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@evRGTpp correlation energy =',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@evRGTpp total energy =',ENuc + ERHF + EcGM,' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) diff --git a/src/GT/print_qsGTeh.f90 b/src/GT/print_qsRGTeh.f90 similarity index 67% rename from src/GT/print_qsGTeh.f90 rename to src/GT/print_qsRGTeh.f90 index 9f27bfe..75aefd3 100644 --- a/src/GT/print_qsGTeh.f90 +++ b/src/GT/print_qsRGTeh.f90 @@ -1,4 +1,4 @@ -subroutine print_qsGTeh(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGT,dipole) +subroutine print_qsRGTeh(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGT,dipole) ! Print one-electron energies and other stuff for qsGTeh @@ -29,6 +29,8 @@ subroutine print_qsGTeh(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, ! Local variables + logical :: dump_orb = .false. + integer :: p,ixyz,HOMO,LUMO double precision :: Gap double precision,external :: trace_matrix @@ -65,14 +67,14 @@ subroutine print_qsGTeh(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') 'qsGTeh HOMO energy =',eGT(HOMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'qsGTeh LUMO energy =',eGT(LUMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'qsGTeh HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsRGTeh HOMO energy =',eGT(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsRGTeh LUMO energy =',eGT(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsRGTeh HOMO-LUMO gap =',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') ' qsGTeh total energy =',ENuc + EqsGT,' au' - write(*,'(2X,A60,F15.6,A3)') ' qsGTeh exchange energy =',Ex,' au' - write(*,'(2X,A60,F15.6,A3)') ' GM@qsGTeh correlation energy =',EcGM,' au' - write(*,'(2X,A60,F15.6,A3)') 'ppRPA@qsGTeh correlation energy =',sum(EcRPA(:)),' au' + write(*,'(2X,A60,F15.6,A3)') ' qsRGTeh total energy =',ENuc + EqsGT,' au' + write(*,'(2X,A60,F15.6,A3)') ' qsRGTeh exchange energy =',Ex,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@qsRGTeh correlation energy =',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@qsRGTeh correlation energy =',sum(EcRPA),' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) @@ -84,18 +86,18 @@ subroutine print_qsGTeh(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, write(*,'(A50)') '---------------------------------------' write(*,'(A32)') ' Summary ' write(*,'(A50)') '---------------------------------------' - write(*,'(A32,1X,F16.10,A3)') ' One-electron energy: ',ET + EV,' au' - write(*,'(A32,1X,F16.10,A3)') ' Kinetic energy: ',ET,' au' - write(*,'(A32,1X,F16.10,A3)') ' Potential energy: ',EV,' au' + write(*,'(A32,1X,F16.10,A3)') ' One-electron energy = ',ET + EV,' au' + write(*,'(A32,1X,F16.10,A3)') ' Kinetic energy = ',ET,' au' + write(*,'(A32,1X,F16.10,A3)') ' Potential energy = ',EV,' au' write(*,'(A50)') '---------------------------------------' - write(*,'(A32,1X,F16.10,A3)') ' Two-electron energy: ',EJ + Ex,' au' - write(*,'(A32,1X,F16.10,A3)') ' Hartree energy: ',EJ,' au' - write(*,'(A32,1X,F16.10,A3)') ' Exchange energy: ',Ex,' au' - write(*,'(A32,1X,F16.10,A3)') ' Correlation energy: ',EcGM,' au' + write(*,'(A32,1X,F16.10,A3)') ' Two-electron energy = ',EJ + Ex,' au' + write(*,'(A32,1X,F16.10,A3)') ' Hartree energy = ',EJ,' au' + write(*,'(A32,1X,F16.10,A3)') ' Exchange energy = ',Ex,' au' + write(*,'(A32,1X,F16.10,A3)') ' Correlation energy = ',EcGM,' au' write(*,'(A50)') '---------------------------------------' - write(*,'(A32,1X,F16.10,A3)') ' Electronic energy: ',EqsGT,' au' - write(*,'(A32,1X,F16.10,A3)') ' Nuclear repulsion: ',ENuc,' au' - write(*,'(A32,1X,F16.10,A3)') ' qsGTeh energy: ',ENuc + EqsGT,' au' + write(*,'(A32,1X,F16.10,A3)') ' Electronic energy = ',EqsGT,' au' + write(*,'(A32,1X,F16.10,A3)') ' Nuclear repulsion = ',ENuc,' au' + write(*,'(A32,1X,F16.10,A3)') ' qsGTeh energy = ',ENuc + EqsGT,' au' write(*,'(A50)') '---------------------------------------' write(*,'(A35)') ' Dipole moment (Debye) ' write(*,'(10X,4A10)') 'X','Y','Z','Tot.' @@ -103,15 +105,17 @@ subroutine print_qsGTeh(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, write(*,'(A50)') '-----------------------------------------' write(*,*) - write(*,'(A50)') '---------------------------------------' - write(*,'(A32)') ' qsGTeh MO coefficients' - write(*,'(A50)') '---------------------------------------' - call matout(nBas,nBas,c) - write(*,*) + if(dump_orb) then + write(*,'(A50)') '---------------------------------------' + write(*,'(A32)') ' qsGTeh MO coefficients' + write(*,'(A50)') '---------------------------------------' + call matout(nBas,nBas,c) + write(*,*) + end if write(*,'(A50)') '---------------------------------------' write(*,'(A32)') ' qsGTeh MO energies' write(*,'(A50)') '---------------------------------------' - call matout(nBas,1,eGT) + call vecout(nBas,eGT) write(*,*) endif diff --git a/src/GT/print_qsGTpp.f90 b/src/GT/print_qsRGTpp.f90 similarity index 67% rename from src/GT/print_qsGTpp.f90 rename to src/GT/print_qsRGTpp.f90 index 04b8ad2..c0a1ad6 100644 --- a/src/GT/print_qsGTpp.f90 +++ b/src/GT/print_qsRGTpp.f90 @@ -1,4 +1,4 @@ -subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGT,dipole) +subroutine print_qsRGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGT,dipole) ! Print one-electron energies and other stuff for qsGT @@ -29,6 +29,8 @@ subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, ! Local variables + logical :: dump_orb = .false. + integer :: p,ixyz,HOMO,LUMO double precision :: Gap double precision,external :: trace_matrix @@ -65,14 +67,14 @@ subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') 'qsGTpp HOMO energy =',eGT(HOMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'qsGTpp LUMO energy =',eGT(LUMO)*HaToeV,' eV' - write(*,'(2X,A60,F15.6,A3)') 'qsGTpp HOMO-LUMO gap =',Gap*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsRGTpp HOMO energy =',eGT(HOMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsRGTpp LUMO energy =',eGT(LUMO)*HaToeV,' eV' + write(*,'(2X,A60,F15.6,A3)') 'qsRGTpp HOMO-LUMO gap =',Gap*HaToeV,' eV' write(*,*)'-------------------------------------------------------------------------------' - write(*,'(2X,A60,F15.6,A3)') ' qsGTpp total energy =',ENuc + EqsGT,' au' - write(*,'(2X,A60,F15.6,A3)') ' qsGTpp exchange energy =',Ex,' au' - write(*,'(2X,A60,F15.6,A3)') ' GM@qsGTpp correlation energy =',EcGM,' au' - write(*,'(2X,A60,F15.6,A3)') 'ppRPA@qsGTpp correlation energy =',sum(EcRPA(:)),' au' + write(*,'(2X,A60,F15.6,A3)') ' qsRGTpp total energy =',ENuc + EqsGT,' au' + write(*,'(2X,A60,F15.6,A3)') ' qsRGTpp exchange energy =',Ex,' au' + write(*,'(2X,A60,F15.6,A3)') ' GM@qsRGTpp correlation energy =',EcGM,' au' + write(*,'(2X,A60,F15.6,A3)') 'ppRPA@qsRGTpp correlation energy =',sum(EcRPA),' au' write(*,*)'-------------------------------------------------------------------------------' write(*,*) @@ -84,18 +86,18 @@ subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, write(*,'(A50)') '---------------------------------------' write(*,'(A32)') ' Summary ' write(*,'(A50)') '---------------------------------------' - write(*,'(A32,1X,F16.10,A3)') ' One-electron energy: ',ET + EV,' au' - write(*,'(A32,1X,F16.10,A3)') ' Kinetic energy: ',ET,' au' - write(*,'(A32,1X,F16.10,A3)') ' Potential energy: ',EV,' au' + write(*,'(A32,1X,F16.10,A3)') ' One-electron energy = ',ET + EV,' au' + write(*,'(A32,1X,F16.10,A3)') ' Kinetic energy = ',ET,' au' + write(*,'(A32,1X,F16.10,A3)') ' Potential energy = ',EV,' au' write(*,'(A50)') '---------------------------------------' - write(*,'(A32,1X,F16.10,A3)') ' Two-electron energy: ',EJ + Ex,' au' - write(*,'(A32,1X,F16.10,A3)') ' Hartree energy: ',EJ,' au' - write(*,'(A32,1X,F16.10,A3)') ' Exchange energy: ',Ex,' au' - write(*,'(A32,1X,F16.10,A3)') ' Correlation energy: ',EcGM,' au' + write(*,'(A32,1X,F16.10,A3)') ' Two-electron energy = ',EJ + Ex,' au' + write(*,'(A32,1X,F16.10,A3)') ' Hartree energy = ',EJ,' au' + write(*,'(A32,1X,F16.10,A3)') ' Exchange energy = ',Ex,' au' + write(*,'(A32,1X,F16.10,A3)') ' Correlation energy = ',EcGM,' au' write(*,'(A50)') '---------------------------------------' - write(*,'(A32,1X,F16.10,A3)') ' Electronic energy: ',EqsGT,' au' - write(*,'(A32,1X,F16.10,A3)') ' Nuclear repulsion: ',ENuc,' au' - write(*,'(A32,1X,F16.10,A3)') ' qsGTpp energy: ',ENuc + EqsGT,' au' + write(*,'(A32,1X,F16.10,A3)') ' Electronic energy = ',EqsGT,' au' + write(*,'(A32,1X,F16.10,A3)') ' Nuclear repulsion = ',ENuc,' au' + write(*,'(A32,1X,F16.10,A3)') ' qsGTpp energy = ',ENuc + EqsGT,' au' write(*,'(A50)') '---------------------------------------' write(*,'(A35)') ' Dipole moment (Debye) ' write(*,'(10X,4A10)') 'X','Y','Z','Tot.' @@ -103,15 +105,17 @@ subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ, write(*,'(A50)') '-----------------------------------------' write(*,*) - write(*,'(A50)') '---------------------------------------' - write(*,'(A32)') ' qsGTpp MO coefficients' - write(*,'(A50)') '---------------------------------------' - call matout(nBas,nBas,c) - write(*,*) + if(dump_orb) then + write(*,'(A50)') '---------------------------------------' + write(*,'(A32)') ' qsGTpp MO coefficients' + write(*,'(A50)') '---------------------------------------' + call matout(nBas,nBas,c) + write(*,*) + end if write(*,'(A50)') '---------------------------------------' write(*,'(A32)') ' qsGTpp MO energies' write(*,'(A50)') '---------------------------------------' - call matout(nBas,1,eGT) + call vecout(nBas,eGT) write(*,*) endif diff --git a/src/GT/qsRGTeh.f90 b/src/GT/qsRGTeh.f90 index 4f4a58c..37d9736 100644 --- a/src/GT/qsRGTeh.f90 +++ b/src/GT/qsRGTeh.f90 @@ -255,7 +255,7 @@ subroutine qsRGTeh(dotest,maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,d ! Print results call dipole_moment(nBas,P,nNuc,ZNuc,rNuc,dipole_int_AO,dipole) - call print_qsGTeh(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,Sigp,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGT,dipole) + call print_qsRGTeh(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,Sigp,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGT,dipole) enddo !------------------------------------------------------------------------ diff --git a/src/GT/qsRGTpp.f90 b/src/GT/qsRGTpp.f90 index 45967ba..9e84606 100644 --- a/src/GT/qsRGTpp.f90 +++ b/src/GT/qsRGTpp.f90 @@ -298,7 +298,7 @@ subroutine qsRGTpp(dotest,maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,d ! Print results call dipole_moment(nBas,P,nNuc,ZNuc,rNuc,dipole_int_AO,dipole) - call print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,Sigp,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGT,dipole) + call print_qsRGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,Sigp,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGT,dipole) enddo !------------------------------------------------------------------------