mirror of
https://github.com/pfloos/quack
synced 2024-11-03 20:53:53 +01:00
modifs print qsGW
This commit is contained in:
parent
60b214a560
commit
068d88aa06
@ -1,5 +1,5 @@
|
|||||||
# RHF UHF GHF ROHF
|
# RHF UHF GHF ROHF
|
||||||
F T F F
|
F F T F
|
||||||
# MP2 MP3
|
# MP2 MP3
|
||||||
F F
|
F F
|
||||||
# CCD pCCD DCD CCSD CCSD(T)
|
# CCD pCCD DCD CCSD CCSD(T)
|
||||||
|
@ -154,7 +154,7 @@ subroutine GG0W0(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_W,TDA,dBSE,d
|
|||||||
! Dump results !
|
! Dump results !
|
||||||
!--------------!
|
!--------------!
|
||||||
|
|
||||||
call print_G0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
call print_GG0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||||
|
|
||||||
! Deallocate memory
|
! Deallocate memory
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ subroutine RG0W0(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_W,TDA,dBSE,d
|
|||||||
! Dump results !
|
! Dump results !
|
||||||
!--------------!
|
!--------------!
|
||||||
|
|
||||||
call print_G0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
call print_RG0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||||
|
|
||||||
! Deallocate memory
|
! Deallocate memory
|
||||||
|
|
||||||
|
@ -279,7 +279,7 @@ subroutine SRG_qsGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,BSE,BSE
|
|||||||
! 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_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGW,dipole)
|
call print_qsRGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGW,dipole)
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
|
@ -155,7 +155,7 @@ subroutine evGGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,dophBSE,do
|
|||||||
|
|
||||||
! Print results
|
! Print results
|
||||||
|
|
||||||
call print_evGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
call print_evGGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||||
|
|
||||||
! Linear mixing or DIIS extrapolation
|
! Linear mixing or DIIS extrapolation
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ subroutine evRGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,dophBSE,do
|
|||||||
|
|
||||||
! Print results
|
! Print results
|
||||||
|
|
||||||
call print_evGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
call print_evRGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||||
|
|
||||||
! Linear mixing or DIIS extrapolation
|
! Linear mixing or DIIS extrapolation
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine print_G0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
subroutine print_GG0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||||
|
|
||||||
! Print one-electron energies and other stuff for G0W0
|
! Print one-electron energies and other stuff for G0W0
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ subroutine print_G0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
|||||||
! Dump results
|
! Dump results
|
||||||
|
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)' One-shot G0W0 calculation'
|
write(*,*)' One-shot GG0W0 calculation'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
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)') &
|
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_GW (eV)','|','Z','|','e_GW (eV)','|'
|
'|','#','|','e_HF (eV)','|','Sig_GW (eV)','|','Z','|','e_GW (eV)','|'
|
||||||
@ -39,14 +39,14 @@ subroutine print_G0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
|||||||
enddo
|
enddo
|
||||||
|
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'G0W0 HOMO energy =',eGW(HOMO)*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'GG0W0 HOMO energy =',eGW(HOMO)*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'G0W0 LUMO energy =',eGW(LUMO)*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'GG0W0 LUMO energy =',eGW(LUMO)*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'G0W0 HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'GG0W0 HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0W0 total energy =',ENuc + ERHF + EcRPA,' au'
|
write(*,'(2X,A60,F15.6,A3)') 'phRPA@GG0W0 total energy =',ENuc + ERHF + EcRPA,' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0W0 correlation energy =',EcRPA,' au'
|
write(*,'(2X,A60,F15.6,A3)') 'phRPA@GG0W0 correlation energy =',EcRPA,' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' GM@G0W0 total energy =',ENuc + ERHF + EcGM,' au'
|
write(*,'(2X,A60,F15.6,A3)') ' GM@GG0W0 total energy =',ENuc + ERHF + EcGM,' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' GM@G0W0 correlation energy =',EcGM,' au'
|
write(*,'(2X,A60,F15.6,A3)') ' GM@GG0W0 correlation energy =',EcGM,' au'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
53
src/GW/print_RG0W0.f90
Normal file
53
src/GW/print_RG0W0.f90
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
subroutine print_RG0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||||
|
|
||||||
|
! Print one-electron energies and other stuff for G0W0
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
include 'parameters.h'
|
||||||
|
|
||||||
|
integer,intent(in) :: nBas,nO
|
||||||
|
double precision,intent(in) :: ENuc
|
||||||
|
double precision,intent(in) :: ERHF
|
||||||
|
double precision,intent(in) :: EcRPA
|
||||||
|
double precision,intent(in) :: EcGM
|
||||||
|
double precision,intent(in) :: eHF(nBas)
|
||||||
|
double precision,intent(in) :: SigC(nBas)
|
||||||
|
double precision,intent(in) :: Z(nBas)
|
||||||
|
double precision,intent(in) :: eGW(nBas)
|
||||||
|
|
||||||
|
integer :: p,HOMO,LUMO
|
||||||
|
double precision :: Gap
|
||||||
|
|
||||||
|
! HOMO and LUMO
|
||||||
|
|
||||||
|
HOMO = nO
|
||||||
|
LUMO = HOMO + 1
|
||||||
|
Gap = eGW(LUMO)-eGW(HOMO)
|
||||||
|
|
||||||
|
! Dump results
|
||||||
|
|
||||||
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
|
write(*,*)' One-shot RG0W0 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_GW (eV)','|','Z','|','e_GW (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,'|',SigC(p)*HaToeV,'|',Z(p),'|',eGW(p)*HaToeV,'|'
|
||||||
|
enddo
|
||||||
|
|
||||||
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') 'RG0W0 HOMO energy =',eGW(HOMO)*HaToeV,' eV'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') 'RG0W0 LUMO energy =',eGW(LUMO)*HaToeV,' eV'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') 'RG0W0 HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||||
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') 'phRPA@RG0W0 total energy =',ENuc + ERHF + EcRPA,' au'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') 'phRPA@RG0W0 correlation energy =',EcRPA,' au'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') ' GM@RG0W0 total energy =',ENuc + ERHF + EcGM,' au'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') ' GM@RG0W0 correlation energy =',EcGM,' au'
|
||||||
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
|
write(*,*)
|
||||||
|
|
||||||
|
end subroutine
|
@ -40,7 +40,7 @@ subroutine print_UG0W0(nBas,nO,eHF,ENuc,EUHF,SigC,Z,eGW,EcRPA,EcGM)
|
|||||||
|
|
||||||
write(*,*)'-------------------------------------------------------------------------------&
|
write(*,*)'-------------------------------------------------------------------------------&
|
||||||
------------------------------------------------'
|
------------------------------------------------'
|
||||||
write(*,*)' Unrestricted one-shot G0W0 calculation (eV)'
|
write(*,*)' One-shot UG0W0 calculation (eV)'
|
||||||
write(*,*)'-------------------------------------------------------------------------------&
|
write(*,*)'-------------------------------------------------------------------------------&
|
||||||
------------------------------------------------'
|
------------------------------------------------'
|
||||||
write(*,'(A1,A3,A1,A30,A1,A30,A1,A30,A1,A30,A1)') &
|
write(*,'(A1,A3,A1,A30,A1,A30,A1,A30,A1,A30,A1)') &
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine print_evGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
subroutine print_evGGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||||
|
|
||||||
! Print one-electron energies and other stuff for evGW
|
! Print one-electron energies and other stuff for evGW
|
||||||
|
|
||||||
@ -28,11 +28,7 @@ subroutine print_evGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
|||||||
! Dump results
|
! Dump results
|
||||||
|
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
if(nSCF < 10) then
|
write(*,'(1X,A21,I3,A1,I3,A12)')' Self-consistent evGG',nSCF,'W',nSCF,' calculation'
|
||||||
write(*,'(1X,A21,I1,A1,I1,A12)')' Self-consistent evG',nSCF,'W',nSCF,' calculation'
|
|
||||||
else
|
|
||||||
write(*,'(1X,A21,I2,A1,I2,A12)')' Self-consistent evG',nSCF,'W',nSCF,' calculation'
|
|
||||||
endif
|
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
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)') &
|
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_GW (eV)','|','Z','|','e_GW (eV)','|'
|
'|','#','|','e_HF (eV)','|','Sig_GW (eV)','|','Z','|','e_GW (eV)','|'
|
||||||
@ -47,14 +43,14 @@ subroutine print_evGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,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)') 'evGW HOMO energy =',eGW(HOMO)*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'evGGW HOMO energy =',eGW(HOMO)*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'evGW LUMO energy =',eGW(LUMO)*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'evGGW LUMO energy =',eGW(LUMO)*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'evGW HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'evGGW HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGW total energy =',ENuc + ERHF + EcRPA,' au'
|
write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGGW total energy =',ENuc + ERHF + EcRPA,' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGW correlation energy =',EcRPA,' au'
|
write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGGW correlation energy =',EcRPA,' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' GM@evGW total energy =',ENuc + ERHF + EcGM,' au'
|
write(*,'(2X,A60,F15.6,A3)') ' GM@evGGW total energy =',ENuc + ERHF + EcGM,' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' GM@evGW correlation energy =',EcGM,' au'
|
write(*,'(2X,A60,F15.6,A3)') ' GM@evGGW correlation energy =',EcGM,' au'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
57
src/GW/print_evRGW.f90
Normal file
57
src/GW/print_evRGW.f90
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
subroutine print_evRGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||||
|
|
||||||
|
! Print one-electron energies and other stuff for evGW
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
include 'parameters.h'
|
||||||
|
|
||||||
|
integer,intent(in) :: nBas,nO,nSCF
|
||||||
|
double precision,intent(in) :: ENuc
|
||||||
|
double precision,intent(in) :: ERHF
|
||||||
|
double precision,intent(in) :: Conv
|
||||||
|
double precision,intent(in) :: eHF(nBas)
|
||||||
|
double precision,intent(in) :: SigC(nBas)
|
||||||
|
double precision,intent(in) :: Z(nBas)
|
||||||
|
double precision,intent(in) :: eGW(nBas)
|
||||||
|
double precision,intent(in) :: EcRPA
|
||||||
|
double precision,intent(in) :: EcGM
|
||||||
|
|
||||||
|
integer :: p,HOMO,LUMO
|
||||||
|
double precision :: Gap
|
||||||
|
|
||||||
|
! HOMO and LUMO
|
||||||
|
|
||||||
|
HOMO = nO
|
||||||
|
LUMO = HOMO + 1
|
||||||
|
Gap = eGW(LUMO)-eGW(HOMO)
|
||||||
|
|
||||||
|
! Dump results
|
||||||
|
|
||||||
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
|
write(*,'(1X,A21,I3,A1,I3,A12)')' Self-consistent evRG',nSCF,'W',nSCF,' 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_GW (eV)','|','Z','|','e_GW (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,'|',SigC(p)*HaToeV,'|',Z(p),'|',eGW(p)*HaToeV,'|'
|
||||||
|
enddo
|
||||||
|
|
||||||
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
|
write(*,'(2X,A10,I3)') 'Iteration ',nSCF
|
||||||
|
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
|
||||||
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') 'evRGW HOMO energy =',eGW(HOMO)*HaToeV,' eV'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') 'evRGW LUMO energy =',eGW(LUMO)*HaToeV,' eV'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') 'evRGW HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||||
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') 'phRPA@evRGW total energy =',ENuc + ERHF + EcRPA,' au'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') 'phRPA@evRGW correlation energy =',EcRPA,' au'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') ' GM@evRGW total energy =',ENuc + ERHF + EcGM,' au'
|
||||||
|
write(*,'(2X,A60,F15.6,A3)') ' GM@evRGW correlation energy =',EcGM,' au'
|
||||||
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
|
write(*,*)
|
||||||
|
|
||||||
|
end subroutine
|
@ -42,11 +42,7 @@ subroutine print_evUGW(nBas,nO,nSCF,Conv,eHF,ENuc,EUHF,SigC,Z,eGW,EcRPA,EcGM)
|
|||||||
|
|
||||||
write(*,*)'-------------------------------------------------------------------------------&
|
write(*,*)'-------------------------------------------------------------------------------&
|
||||||
------------------------------------------------'
|
------------------------------------------------'
|
||||||
if(nSCF < 10) then
|
write(*,'(1X,A21,I3,A1,I3,A12)')' Self-consistent evUG',nSCF,'W',nSCF,' calculation'
|
||||||
write(*,'(1X,A21,I1,A1,I1,A12)')' Self-consistent evG',nSCF,'W',nSCF,' calculation'
|
|
||||||
else
|
|
||||||
write(*,'(1X,A21,I2,A1,I2,A12)')' Self-consistent evG',nSCF,'W',nSCF,' calculation'
|
|
||||||
endif
|
|
||||||
write(*,*)'-------------------------------------------------------------------------------&
|
write(*,*)'-------------------------------------------------------------------------------&
|
||||||
------------------------------------------------'
|
------------------------------------------------'
|
||||||
write(*,'(A1,A3,A1,A30,A1,A30,A1,A30,A1,A30,A1)') &
|
write(*,'(A1,A3,A1,A30,A1,A30,A1,A30,A1,A30,A1)') &
|
||||||
@ -68,15 +64,15 @@ subroutine print_evUGW(nBas,nO,nSCF,Conv,eHF,ENuc,EUHF,SigC,Z,eGW,EcRPA,EcGM)
|
|||||||
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
|
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
|
||||||
write(*,*)'-------------------------------------------------------------------------------&
|
write(*,*)'-------------------------------------------------------------------------------&
|
||||||
-------------------------------------------------'
|
-------------------------------------------------'
|
||||||
write(*,'(2X,A30,F15.6,A3)') 'evGW HOMO energy:',maxval(HOMO(:))*HaToeV,' eV'
|
write(*,'(2X,A30,F15.6,A3)') 'evUGW HOMO energy:',maxval(HOMO(:))*HaToeV,' eV'
|
||||||
write(*,'(2X,A30,F15.6,A3)') 'evGW LUMO energy:',minval(LUMO(:))*HaToeV,' eV'
|
write(*,'(2X,A30,F15.6,A3)') 'evUGW LUMO energy:',minval(LUMO(:))*HaToeV,' eV'
|
||||||
write(*,'(2X,A30,F15.6,A3)') 'evGW HOMO-LUMO gap :',(minval(LUMO(:))-maxval(HOMO(:)))*HaToeV,' eV'
|
write(*,'(2X,A30,F15.6,A3)') 'evUGW HOMO-LUMO gap :',(minval(LUMO(:))-maxval(HOMO(:)))*HaToeV,' eV'
|
||||||
write(*,*)'-------------------------------------------------------------------------------&
|
write(*,*)'-------------------------------------------------------------------------------&
|
||||||
------------------------------------------------'
|
------------------------------------------------'
|
||||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@evGW total energy :',ENuc + EUHF + EcRPA,' au'
|
write(*,'(2X,A30,F15.6,A3)') 'RPA@evUGW total energy :',ENuc + EUHF + EcRPA,' au'
|
||||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@evGW correlation energy:',EcRPA,' au'
|
write(*,'(2X,A30,F15.6,A3)') 'RPA@evUGW correlation energy:',EcRPA,' au'
|
||||||
write(*,'(2X,A30,F15.6,A3)') ' GM@evGW total energy :',ENuc + EUHF + sum(EcGM(:)),' au'
|
write(*,'(2X,A30,F15.6,A3)') ' GM@evUGW total energy :',ENuc + EUHF + sum(EcGM(:)),' au'
|
||||||
write(*,'(2X,A30,F15.6,A3)') ' GM@evGW correlation energy:',sum(EcGM(:)),' au'
|
write(*,'(2X,A30,F15.6,A3)') ' GM@evUGW correlation energy:',sum(EcGM(:)),' au'
|
||||||
write(*,*)'-------------------------------------------------------------------------------&
|
write(*,*)'-------------------------------------------------------------------------------&
|
||||||
-------------------------------------------------'
|
-------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
@ -48,9 +48,11 @@ subroutine print_qsGGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,E
|
|||||||
|
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
if(nSCF < 10) then
|
if(nSCF < 10) then
|
||||||
write(*,'(1X,A21,I1,A1,I1,A12)')' Self-consistent qsG',nSCF,'W',nSCF,' calculation'
|
write(*,'(1X,A22,I1,A1,I1,A12)')' Self-consistent qsRG',nSCF,'W',nSCF,' calculation'
|
||||||
|
elseif(nSCF < 100) then
|
||||||
|
write(*,'(1X,A22,I2,A1,I2,A12)')' Self-consistent qsRG',nSCF,'W',nSCF,' calculation'
|
||||||
else
|
else
|
||||||
write(*,'(1X,A21,I2,A1,I2,A12)')' Self-consistent qsG',nSCF,'W',nSCF,' calculation'
|
write(*,'(1X,A22,I3,A1,I3,A12)')' Self-consistent qsRG',nSCF,'W',nSCF,' calculation'
|
||||||
endif
|
endif
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
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)') &
|
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') &
|
||||||
@ -66,14 +68,14 @@ subroutine print_qsGGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,E
|
|||||||
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)') 'qsGGW HOMO energy =',eGW(HOMO)*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'qsGGW HOMO energy = ',eGW(HOMO)*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'qsGGW LUMO energy =',eGW(LUMO)*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'qsGGW LUMO energy = ',eGW(LUMO)*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'qsGGW HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'qsGGW HOMO-LUMO gap = ',Gap*HaToeV,' eV'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' qsGGW total energy =',ENuc + EqsGW,' au'
|
write(*,'(2X,A60,F15.6,A3)') ' qsGGW total energy = ',ENuc + EqsGW,' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' qsGGW exchange energy =',Ex,' au'
|
write(*,'(2X,A60,F15.6,A3)') ' qsGGW exchange energy = ',Ex,' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' GM@qsgGW correlation energy =',EcGM,' au'
|
write(*,'(2X,A60,F15.6,A3)') ' GM@qsGGW correlation energy = ',EcGM,' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@qsGGW correlation energy =',EcRPA,' au'
|
write(*,'(2X,A60,F15.6,A3)') 'phRPA@qsGGW correlation energy = ',EcRPA,' au'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
@ -83,38 +85,38 @@ subroutine print_qsGGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,E
|
|||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A32)') ' Summary '
|
write(*,'(A33)') ' Summary '
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' One-electron energy: ',ET + EV,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' One-electron energy = ',ET + EV,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Kinetic energy: ',ET,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Kinetic energy = ',ET,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Potential energy: ',EV,' au'
|
write(*,'(A33,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(*,'(A33,1X,F16.10,A3)') ' Two-electron energy = ',EJ + Ex,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Hartree energy: ',EJ,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Hartree energy = ',EJ,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Exchange energy: ',Ex,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Exchange energy = ',Ex,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Correlation energy: ',EcGM,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Correlation energy = ',EcGM,' au'
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Electronic energy: ',EqsGW,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Electronic energy = ',EqsGW,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Nuclear repulsion: ',ENuc,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Nuclear repulsion = ',ENuc,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' qsGGW energy: ',ENuc + EqsGW,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' qsGGW energy = ',ENuc + EqsGW,' au'
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A35)') ' Dipole moment (Debye) '
|
write(*,'(A36)') ' Dipole moment (Debye) '
|
||||||
write(*,'(10X,4A10)') 'X','Y','Z','Tot.'
|
write(*,'(10X,4A10)') 'X','Y','Z','Tot.'
|
||||||
write(*,'(10X,4F10.6)') (dipole(ixyz)*auToD,ixyz=1,ncart),norm2(dipole)*auToD
|
write(*,'(10X,4F10.4)') (dipole(ixyz)*auToD,ixyz=1,ncart),norm2(dipole)*auToD
|
||||||
write(*,'(A50)') '-----------------------------------------'
|
write(*,'(A50)') '-----------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
if(dump_orb) then
|
if(dump_orb) then
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A32)') ' qsGGW orbital coefficients'
|
write(*,'(A32)') ' Generalized qsGW orbital coefficients '
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
call matout(nBas,nBas,c)
|
call matout(nBas,nBas,c)
|
||||||
write(*,*)
|
write(*,*)
|
||||||
end if
|
end if
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A32)') ' qsGGW orbital energies'
|
write(*,'(A32)') ' Generalized qsGW orbital energies (au)'
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
call matout(nBas,1,eGW)
|
call vecout(nBas,eGW)
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGW,dipole)
|
subroutine print_qsRGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,EK,EcGM,EcRPA,EqsGW,dipole)
|
||||||
|
|
||||||
! Print one-electron energies and other stuff for qsGW
|
! Print useful information about qsRGW calculation
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
include 'parameters.h'
|
include 'parameters.h'
|
||||||
@ -14,7 +14,7 @@ subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,Ex
|
|||||||
double precision,intent(in) :: ET
|
double precision,intent(in) :: ET
|
||||||
double precision,intent(in) :: EV
|
double precision,intent(in) :: EV
|
||||||
double precision,intent(in) :: EJ
|
double precision,intent(in) :: EJ
|
||||||
double precision,intent(in) :: Ex
|
double precision,intent(in) :: EK
|
||||||
double precision,intent(in) :: EcGM
|
double precision,intent(in) :: EcGM
|
||||||
double precision,intent(in) :: EcRPA
|
double precision,intent(in) :: EcRPA
|
||||||
double precision,intent(in) :: Conv
|
double precision,intent(in) :: Conv
|
||||||
@ -48,10 +48,12 @@ subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,Ex
|
|||||||
|
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
if(nSCF < 10) then
|
if(nSCF < 10) then
|
||||||
write(*,'(1X,A21,I1,A1,I1,A12)')' Self-consistent qsG',nSCF,'W',nSCF,' calculation'
|
write(*,'(1X,A22,I1,A1,I1,A12)')' Self-consistent qsRG',nSCF,'W',nSCF,' calculation'
|
||||||
|
elseif(nSCF < 100) then
|
||||||
|
write(*,'(1X,A22,I2,A1,I2,A12)')' Self-consistent qsRG',nSCF,'W',nSCF,' calculation'
|
||||||
else
|
else
|
||||||
write(*,'(1X,A21,I2,A1,I2,A12)')' Self-consistent qsG',nSCF,'W',nSCF,' calculation'
|
write(*,'(1X,A22,I3,A1,I3,A12)')' Self-consistent qsRG',nSCF,'W',nSCF,' calculation'
|
||||||
endif
|
end if
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
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)') &
|
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_GW (eV)','|','Z','|','e_GW (eV)','|'
|
'|','#','|','e_HF (eV)','|','Sig_GW (eV)','|','Z','|','e_GW (eV)','|'
|
||||||
@ -66,14 +68,14 @@ subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,Ex
|
|||||||
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)') 'qsGW HOMO energy =',eGW(HOMO)*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'qsRGW HOMO energy =',eGW(HOMO)*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'qsGW LUMO energy =',eGW(LUMO)*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'qsRGW LUMO energy =',eGW(LUMO)*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'qsGW HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'qsRGW HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' qsGW total energy =',ENuc + EqsGW,' au'
|
write(*,'(2X,A60,F15.6,A3)') ' qsRGW total energy =',ENuc + EqsGW,' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' qsGW exchange energy =',Ex,' au'
|
write(*,'(2X,A60,F15.6,A3)') ' qsRGW exchange energy =',EK,' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' GM@qsGW correlation energy =',EcGM,' au'
|
write(*,'(2X,A60,F15.6,A3)') ' GM@qsRGW correlation energy =',EcGM,' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@qsGW correlation energy =',EcRPA,' au'
|
write(*,'(2X,A60,F15.6,A3)') 'phRPA@qsRGW correlation energy =',EcRPA,' au'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
@ -83,41 +85,40 @@ subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,Ex
|
|||||||
|
|
||||||
write(*,*)
|
write(*,*)
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A32)') ' Summary '
|
write(*,'(A33)') ' Summary '
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' One-electron energy: ',ET + EV,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' One-electron energy = ',ET + EV,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Kinetic energy: ',ET,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Kinetic energy = ',ET,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Potential energy: ',EV,' au'
|
write(*,'(A33,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(*,'(A33,1X,F16.10,A3)') ' Two-electron energy = ',EJ + EK,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Hartree energy: ',EJ,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Hartree energy = ',EJ,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Exchange energy: ',Ex,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Exchange energy = ',EK,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Correlation energy: ',EcGM,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Correlation energy = ',EcGM,' au'
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Electronic energy: ',EqsGW,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Electronic energy = ',EqsGW,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' Nuclear repulsion: ',ENuc,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Nuclear repulsion = ',ENuc,' au'
|
||||||
write(*,'(A32,1X,F16.10,A3)') ' qsGW energy: ',ENuc + EqsGW,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' qsRGW energy = ',ENuc + EqsGW,' au'
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A35)') ' Dipole moment (Debye) '
|
write(*,'(A36)') ' Dipole moment (Debye) '
|
||||||
write(*,'(10X,4A10)') 'X','Y','Z','Tot.'
|
write(*,'(10X,4A10)') 'X','Y','Z','Tot.'
|
||||||
write(*,'(10X,4F10.6)') (dipole(ixyz)*auToD,ixyz=1,ncart),norm2(dipole)*auToD
|
write(*,'(10X,4F10.4)') (dipole(ixyz)*auToD,ixyz=1,ncart),norm2(dipole)*auToD
|
||||||
write(*,'(A50)') '-----------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
if(dump_orb) then
|
if(dump_orb) then
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A32)') ' qsGW MO coefficients'
|
write(*,'(A50)') ' Restricted qsGW orbital coefficients'
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
call matout(nBas,nBas,c)
|
call matout(nBas,nBas,c)
|
||||||
write(*,*)
|
write(*,*)
|
||||||
end if
|
end if
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A32)') ' qsGW MO energies'
|
write(*,'(A50)') ' Restricted qsGW orbital energies (au) '
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
call matout(nBas,1,eGW)
|
call vecout(nBas,eGW)
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
end subroutine
|
end subroutine
|
@ -65,11 +65,7 @@ subroutine print_qsUGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,cGW,Ov, &
|
|||||||
|
|
||||||
write(*,*)'-------------------------------------------------------------------------------&
|
write(*,*)'-------------------------------------------------------------------------------&
|
||||||
------------------------------------------------'
|
------------------------------------------------'
|
||||||
if(nSCF < 10) then
|
write(*,'(1X,A21,I3,A1,I3,A12)')' Self-consistent qsUG',nSCF,'W',nSCF,' calculation'
|
||||||
write(*,'(1X,A21,I1,A1,I1,A12)')' Self-consistent qsG',nSCF,'W',nSCF,' calculation'
|
|
||||||
else
|
|
||||||
write(*,'(1X,A21,I2,A1,I2,A12)')' Self-consistent qsG',nSCF,'W',nSCF,' calculation'
|
|
||||||
endif
|
|
||||||
write(*,*)'-------------------------------------------------------------------------------&
|
write(*,*)'-------------------------------------------------------------------------------&
|
||||||
------------------------------------------------'
|
------------------------------------------------'
|
||||||
write(*,'(A1,A3,A1,A30,A1,A30,A1,A30,A1,A30,A1)') &
|
write(*,'(A1,A3,A1,A30,A1,A30,A1,A30,A1,A30,A1)') &
|
||||||
@ -153,7 +149,7 @@ subroutine print_qsUGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,cGW,Ov, &
|
|||||||
write(*,'(A60)') '-------------------------------------------------'
|
write(*,'(A60)') '-------------------------------------------------'
|
||||||
write(*,'(A45)') ' Dipole moment (Debye) '
|
write(*,'(A45)') ' Dipole moment (Debye) '
|
||||||
write(*,'(19X,4A10)') 'X','Y','Z','Tot.'
|
write(*,'(19X,4A10)') 'X','Y','Z','Tot.'
|
||||||
write(*,'(19X,4F10.6)') (dipole(ixyz)*auToD,ixyz=1,ncart),norm2(dipole)*auToD
|
write(*,'(19X,4F10.4)') (dipole(ixyz)*auToD,ixyz=1,ncart),norm2(dipole)*auToD
|
||||||
write(*,'(A60)') '-------------------------------------------------'
|
write(*,'(A60)') '-------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ subroutine qsRGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,dophBSE,do
|
|||||||
double precision :: ET
|
double precision :: ET
|
||||||
double precision :: EV
|
double precision :: EV
|
||||||
double precision :: EJ
|
double precision :: EJ
|
||||||
double precision :: Ex
|
double precision :: EK
|
||||||
double precision :: EqsGW
|
double precision :: EqsGW
|
||||||
double precision :: EcRPA
|
double precision :: EcRPA
|
||||||
double precision :: EcBSE(nspin)
|
double precision :: EcBSE(nspin)
|
||||||
@ -73,7 +73,7 @@ subroutine qsRGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,dophBSE,do
|
|||||||
double precision :: dipole(ncart)
|
double precision :: dipole(ncart)
|
||||||
|
|
||||||
logical :: dRPA = .true.
|
logical :: dRPA = .true.
|
||||||
logical :: print_W = .true.
|
logical :: print_W = .false.
|
||||||
double precision,allocatable :: error_diis(:,:)
|
double precision,allocatable :: error_diis(:,:)
|
||||||
double precision,allocatable :: F_diis(:,:)
|
double precision,allocatable :: F_diis(:,:)
|
||||||
double precision,allocatable :: Aph(:,:)
|
double precision,allocatable :: Aph(:,:)
|
||||||
@ -245,16 +245,16 @@ subroutine qsRGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,dophBSE,do
|
|||||||
|
|
||||||
! Exchange energy
|
! Exchange energy
|
||||||
|
|
||||||
Ex = 0.25d0*trace_matrix(nBas,matmul(P,K))
|
EK = 0.25d0*trace_matrix(nBas,matmul(P,K))
|
||||||
|
|
||||||
! Total energy
|
! Total energy
|
||||||
|
|
||||||
EqsGW = ET + EV + EJ + Ex
|
EqsGW = ET + EV + EJ + EK
|
||||||
|
|
||||||
! 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_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigCp,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGW,dipole)
|
call print_qsRGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigCp,Z,ENuc,ET,EV,EJ,EK,EcGM,EcRPA,EqsGW,dipole)
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
|
@ -143,6 +143,20 @@ subroutine matout(m,n,A)
|
|||||||
|
|
||||||
end subroutine
|
end subroutine
|
||||||
|
|
||||||
|
!------------------------------------------------------------------------
|
||||||
|
subroutine vecout(m,A)
|
||||||
|
|
||||||
|
! Print the N vector A
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
integer,intent(in) :: m
|
||||||
|
double precision,intent(in) :: A(m)
|
||||||
|
|
||||||
|
call matout(m,1,A)
|
||||||
|
|
||||||
|
end subroutine
|
||||||
|
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
subroutine trace_vector(n,v,Tr)
|
subroutine trace_vector(n,v,Tr)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user