4
1
mirror of https://github.com/pfloos/quack synced 2024-12-22 20:35:36 +01:00

rename printing routines

This commit is contained in:
Pierre-Francois Loos 2023-11-20 17:42:50 +01:00
parent 3c1553fd57
commit 09a33729fe
15 changed files with 164 additions and 96 deletions

View File

@ -108,7 +108,7 @@ subroutine evGGF2(dotest,dophBSE,doppBSE,TDA,dBSE,dTDA,maxSCF,thresh,max_diis, &
! Print results ! Print results
call GMP2(.false.,regularize,nBas,nC,nO,nV,nR,ERI,ENuc,ERHF,eGF,Ec) 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 ! DIIS extrapolation

60
src/GF/print_evGGF2.f90 Normal file
View File

@ -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

View File

@ -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(*,'(2X,A14,F15.5)')'Convergence = ',Conv
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') 'evGF2 HOMO energy =',eGF(HOMO)*HaToeV,' eV' write(*,'(2X,A60,F15.6,A3)') 'evRGF2 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)') 'evRGF2 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-LUMO gap =',Gap*HaToeV,' eV'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') 'evGF2 total energy =',ENuc + ERHF + Ec,' au' write(*,'(2X,A60,F15.6,A3)') 'evRGF2 total energy =',ENuc + ERHF + Ec,' au'
write(*,'(2X,A60,F15.6,A3)') 'evGF2 correlation energy =',Ec,' au' write(*,'(2X,A60,F15.6,A3)') 'evRGF2 correlation energy =',Ec,' au'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,*) write(*,*)

View File

@ -166,7 +166,7 @@ subroutine RG0T0eh(dotest,doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,T
! Dump results ! ! 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 ! Testing zone

View File

@ -241,7 +241,7 @@ subroutine RG0T0pp(dotest,doACFDT,exchange_kernel,doXBS,dophBSE,TDA_T,TDA,dBSE,d
EcRPA(1) = EcRPA(1) - EcRPA(2) EcRPA(1) = EcRPA(1) - EcRPA(2)
EcRPA(2) = 3d0*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 ! Perform BSE calculation

View File

@ -165,7 +165,7 @@ subroutine evRGTeh(dotest,maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,d
! Print results ! 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 ! Linear mixing or DIIS extrapolation

View File

@ -224,7 +224,7 @@ subroutine evRGTpp(dotest,maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,B
! Dump results ! 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 ! DIIS extrapolation

View File

@ -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 ! 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 enddo
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') 'G0T0eh HOMO energy =',eGT(HOMO)*HaToeV,' eV' write(*,'(2X,A60,F15.6,A3)') 'RG0T0eh 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)') 'RG0T0eh 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-LUMO gap =',Gap*HaToeV,' eV'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0T0eh total energy =',ENuc + ERHF + EcRPA,' au' write(*,'(2X,A60,F15.6,A3)') 'phRPA@RG0T0eh total energy =',ENuc + ERHF + EcRPA,' au'
write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0T0eh correlation energy =',EcRPA,' au' write(*,'(2X,A60,F15.6,A3)') 'phRPA@RG0T0eh 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@RG0T0eh total energy =',ENuc + ERHF + EcGM,' au'
write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0eh correlation energy =',EcGM,' au' write(*,'(2X,A60,F15.6,A3)') ' GM@RG0T0eh correlation energy =',EcGM,' au'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,*) write(*,*)

View File

@ -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 ! 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 enddo
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') 'G0T0pp HOMO energy =',eGT(HOMO)*HaToeV,' eV' write(*,'(2X,A60,F15.6,A3)') 'RG0T0pp 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)') 'RG0T0pp 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-LUMO gap =',Gap*HaToeV,' eV'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp correlation energy (singlet) =',EcRPA(1),' au' write(*,'(2X,A60,F15.6,A3)') 'ppRPA@RG0T0pp 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@RG0T0pp 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@RG0T0pp 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)') 'ppRPA@RG0T0pp 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@RG0T0pp correlation energy =',EcGM,' au'
write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0pp total energy =',ENuc + ERHF + EcGM,' au' write(*,'(2X,A60,F15.6,A3)') ' GM@RG0T0pp total energy =',ENuc + ERHF + EcGM,' au'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,*) write(*,*)

View File

@ -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 ! 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,A10,I3)') 'Iteration ',nSCF
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') 'evGTeh HOMO energy =',eGT(HOMO)*HaToeV,' eV' write(*,'(2X,A60,F15.6,A3)') 'evRGTeh 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)') 'evRGTeh 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-LUMO gap =',Gap*HaToeV,' eV'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGTeh total energy =',ENuc + ERHF + EcRPA,' au' write(*,'(2X,A60,F15.6,A3)') 'phRPA@evRGTeh total energy =',ENuc + ERHF + EcRPA,' au'
write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGTeh correlation energy =',EcRPA,' au' write(*,'(2X,A60,F15.6,A3)') 'phRPA@evRGTeh 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@evRGTeh total energy =',ENuc + ERHF + EcGM,' au'
write(*,'(2X,A60,F15.6,A3)') ' GM@evGTeh correlation energy =',EcGM,' au' write(*,'(2X,A60,F15.6,A3)') ' GM@evRGTeh correlation energy =',EcGM,' au'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,*) write(*,*)

View File

@ -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 ! 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,A10,I3)') 'Iteration ',nSCF
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') 'evGTpp HOMO energy =',eGT(HOMO)*HaToeV,' eV' write(*,'(2X,A60,F15.6,A3)') 'evRGTpp 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)') 'evRGTpp 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-LUMO gap =',Gap*HaToeV,' eV'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp correlation energy (singlet) =',EcRPA(1),' au' write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evRGTpp 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@evRGTpp 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@evRGTpp correlation energy =',sum(EcRPA),' au'
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2),' au' write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evRGTpp total energy =',ENuc + ERHF + sum(EcRPA),' au'
write(*,'(2X,A60,F15.6,A3)') ' GM@evGTpp correlation energy =',EcGM,' au' write(*,'(2X,A60,F15.6,A3)') ' GM@evRGTpp correlation energy =',EcGM,' au'
write(*,'(2X,A60,F15.6,A3)') ' GM@evGTpp total energy =',ENuc + ERHF + EcGM,' au' write(*,'(2X,A60,F15.6,A3)') ' GM@evRGTpp total energy =',ENuc + ERHF + EcGM,' au'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,*) write(*,*)

View File

@ -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 ! 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 ! Local variables
logical :: dump_orb = .false.
integer :: p,ixyz,HOMO,LUMO integer :: p,ixyz,HOMO,LUMO
double precision :: Gap double precision :: Gap
double precision,external :: trace_matrix 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,A10,I3)') 'Iteration ',nSCF
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') 'qsGTeh HOMO energy =',eGT(HOMO)*HaToeV,' eV' write(*,'(2X,A60,F15.6,A3)') 'qsRGTeh 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)') 'qsRGTeh 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-LUMO gap =',Gap*HaToeV,' eV'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') ' qsGTeh total energy =',ENuc + EqsGT,' au' write(*,'(2X,A60,F15.6,A3)') ' qsRGTeh total energy =',ENuc + EqsGT,' au'
write(*,'(2X,A60,F15.6,A3)') ' qsGTeh exchange energy =',Ex,' au' write(*,'(2X,A60,F15.6,A3)') ' qsRGTeh exchange energy =',Ex,' au'
write(*,'(2X,A60,F15.6,A3)') ' GM@qsGTeh correlation energy =',EcGM,' au' write(*,'(2X,A60,F15.6,A3)') ' GM@qsRGTeh correlation energy =',EcGM,' au'
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@qsGTeh correlation energy =',sum(EcRPA(:)),' au' write(*,'(2X,A60,F15.6,A3)') 'ppRPA@qsRGTeh correlation energy =',sum(EcRPA),' au'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
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(*,'(A50)') '---------------------------------------'
write(*,'(A32)') ' Summary ' write(*,'(A32)') ' Summary '
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A32,1X,F16.10,A3)') ' One-electron energy: ',ET + 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)') ' Kinetic energy = ',ET,' au'
write(*,'(A32,1X,F16.10,A3)') ' Potential energy: ',EV,' au' write(*,'(A32,1X,F16.10,A3)') ' Potential energy = ',EV,' au'
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A32,1X,F16.10,A3)') ' Two-electron energy: ',EJ + Ex,' 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)') ' Hartree energy = ',EJ,' au'
write(*,'(A32,1X,F16.10,A3)') ' Exchange energy: ',Ex,' 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)') ' Correlation energy = ',EcGM,' au'
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A32,1X,F16.10,A3)') ' Electronic energy: ',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)') ' Nuclear repulsion = ',ENuc,' au'
write(*,'(A32,1X,F16.10,A3)') ' qsGTeh energy: ',ENuc + EqsGT,' au' write(*,'(A32,1X,F16.10,A3)') ' qsGTeh energy = ',ENuc + EqsGT,' au'
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A35)') ' Dipole moment (Debye) ' write(*,'(A35)') ' Dipole moment (Debye) '
write(*,'(10X,4A10)') 'X','Y','Z','Tot.' 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(*,'(A50)') '-----------------------------------------'
write(*,*) write(*,*)
if(dump_orb) then
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A32)') ' qsGTeh MO coefficients' write(*,'(A32)') ' qsGTeh MO coefficients'
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
call matout(nBas,nBas,c) call matout(nBas,nBas,c)
write(*,*) write(*,*)
end if
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A32)') ' qsGTeh MO energies' write(*,'(A32)') ' qsGTeh MO energies'
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
call matout(nBas,1,eGT) call vecout(nBas,eGT)
write(*,*) write(*,*)
endif endif

View File

@ -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 ! 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 ! Local variables
logical :: dump_orb = .false.
integer :: p,ixyz,HOMO,LUMO integer :: p,ixyz,HOMO,LUMO
double precision :: Gap double precision :: Gap
double precision,external :: trace_matrix 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,A10,I3)') 'Iteration ',nSCF
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') 'qsGTpp HOMO energy =',eGT(HOMO)*HaToeV,' eV' write(*,'(2X,A60,F15.6,A3)') 'qsRGTpp 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)') 'qsRGTpp 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-LUMO gap =',Gap*HaToeV,' eV'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A60,F15.6,A3)') ' qsGTpp total energy =',ENuc + EqsGT,' au' write(*,'(2X,A60,F15.6,A3)') ' qsRGTpp total energy =',ENuc + EqsGT,' au'
write(*,'(2X,A60,F15.6,A3)') ' qsGTpp exchange energy =',Ex,' au' write(*,'(2X,A60,F15.6,A3)') ' qsRGTpp exchange energy =',Ex,' au'
write(*,'(2X,A60,F15.6,A3)') ' GM@qsGTpp correlation energy =',EcGM,' au' write(*,'(2X,A60,F15.6,A3)') ' GM@qsRGTpp correlation energy =',EcGM,' au'
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@qsGTpp correlation energy =',sum(EcRPA(:)),' au' write(*,'(2X,A60,F15.6,A3)') 'ppRPA@qsRGTpp correlation energy =',sum(EcRPA),' au'
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
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(*,'(A50)') '---------------------------------------'
write(*,'(A32)') ' Summary ' write(*,'(A32)') ' Summary '
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A32,1X,F16.10,A3)') ' One-electron energy: ',ET + 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)') ' Kinetic energy = ',ET,' au'
write(*,'(A32,1X,F16.10,A3)') ' Potential energy: ',EV,' au' write(*,'(A32,1X,F16.10,A3)') ' Potential energy = ',EV,' au'
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A32,1X,F16.10,A3)') ' Two-electron energy: ',EJ + Ex,' 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)') ' Hartree energy = ',EJ,' au'
write(*,'(A32,1X,F16.10,A3)') ' Exchange energy: ',Ex,' 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)') ' Correlation energy = ',EcGM,' au'
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A32,1X,F16.10,A3)') ' Electronic energy: ',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)') ' Nuclear repulsion = ',ENuc,' au'
write(*,'(A32,1X,F16.10,A3)') ' qsGTpp energy: ',ENuc + EqsGT,' au' write(*,'(A32,1X,F16.10,A3)') ' qsGTpp energy = ',ENuc + EqsGT,' au'
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A35)') ' Dipole moment (Debye) ' write(*,'(A35)') ' Dipole moment (Debye) '
write(*,'(10X,4A10)') 'X','Y','Z','Tot.' 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(*,'(A50)') '-----------------------------------------'
write(*,*) write(*,*)
if(dump_orb) then
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A32)') ' qsGTpp MO coefficients' write(*,'(A32)') ' qsGTpp MO coefficients'
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
call matout(nBas,nBas,c) call matout(nBas,nBas,c)
write(*,*) write(*,*)
end if
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
write(*,'(A32)') ' qsGTpp MO energies' write(*,'(A32)') ' qsGTpp MO energies'
write(*,'(A50)') '---------------------------------------' write(*,'(A50)') '---------------------------------------'
call matout(nBas,1,eGT) call vecout(nBas,eGT)
write(*,*) write(*,*)
endif endif

View File

@ -255,7 +255,7 @@ subroutine qsRGTeh(dotest,maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,d
! Print results ! Print results
call dipole_moment(nBas,P,nNuc,ZNuc,rNuc,dipole_int_AO,dipole) 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 enddo
!------------------------------------------------------------------------ !------------------------------------------------------------------------

View File

@ -298,7 +298,7 @@ subroutine qsRGTpp(dotest,maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,d
! Print results ! Print results
call dipole_moment(nBas,P,nNuc,ZNuc,rNuc,dipole_int_AO,dipole) 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 enddo
!------------------------------------------------------------------------ !------------------------------------------------------------------------