mirror of
https://github.com/pfloos/quack
synced 2025-05-06 15:14:55 +02:00
Merge branch 'master' of github.com:pfloos/QuAcK
This commit is contained in:
commit
f6d2322204
@ -1,10 +1,10 @@
|
|||||||
|
|
||||||
! ---
|
! ---
|
||||||
|
|
||||||
subroutine print_complex_qsRGF2(nBas, nOrb, nO, nSCF, Conv, thresh, eHF, eGW, c, SigC, &
|
subroutine print_complex_qsRGF2(nBas, nOrb, nO, nSCF, Conv, thresh, eHF, eGF, c, SigC, &
|
||||||
Z, ENuc, ET, EV,EW, EJ, EK, EcGM, EcRPA, EqsGW, dipole)
|
Z, ENuc, ET, EV,EW, EJ, EK, EcGM, EcRPA, EqsGF, dipole)
|
||||||
|
|
||||||
! Print useful information about qsRGW calculation
|
! Print useful information about qsRGF calculation
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
include 'parameters.h'
|
include 'parameters.h'
|
||||||
@ -25,11 +25,11 @@ subroutine print_complex_qsRGF2(nBas, nOrb, nO, nSCF, Conv, thresh, eHF, eGW, c,
|
|||||||
double precision,intent(in) :: Conv
|
double precision,intent(in) :: Conv
|
||||||
double precision,intent(in) :: thresh
|
double precision,intent(in) :: thresh
|
||||||
complex*16,intent(in) :: eHF(nOrb)
|
complex*16,intent(in) :: eHF(nOrb)
|
||||||
complex*16,intent(in) :: eGW(nOrb)
|
complex*16,intent(in) :: eGF(nOrb)
|
||||||
complex*16,intent(in) :: c(nBas,nOrb)
|
complex*16,intent(in) :: c(nBas,nOrb)
|
||||||
complex*16,intent(in) :: SigC(nOrb,nOrb)
|
complex*16,intent(in) :: SigC(nOrb,nOrb)
|
||||||
complex*16,intent(in) :: Z(nOrb)
|
complex*16,intent(in) :: Z(nOrb)
|
||||||
complex*16,intent(in) :: EqsGW
|
complex*16,intent(in) :: EqsGF
|
||||||
complex*16,intent(in) :: dipole(ncart)
|
complex*16,intent(in) :: dipole(ncart)
|
||||||
|
|
||||||
! Local variables
|
! Local variables
|
||||||
@ -43,9 +43,9 @@ subroutine print_complex_qsRGF2(nBas, nOrb, nO, nSCF, Conv, thresh, eHF, eGW, c,
|
|||||||
|
|
||||||
! HOMO and LUMO
|
! HOMO and LUMO
|
||||||
|
|
||||||
HOMO = maxloc(real(eGW(1:nO)),1)
|
HOMO = maxloc(real(eGF(1:nO)),1)
|
||||||
LUMO = minloc(real(eGW(nO+1:nBas)),1) + nO
|
LUMO = minloc(real(eGF(nO+1:nBas)),1) + nO
|
||||||
Gap = eGW(LUMO)-eGW(HOMO)
|
Gap = eGF(LUMO)-eGF(HOMO)
|
||||||
|
|
||||||
! Compute energies
|
! Compute energies
|
||||||
|
|
||||||
@ -53,16 +53,16 @@ subroutine print_complex_qsRGF2(nBas, nOrb, nO, nSCF, Conv, thresh, eHF, eGW, c,
|
|||||||
write(*,*)' Self-consistent qsGF2 calculation'
|
write(*,*)' Self-consistent qsGF2 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)') &
|
||||||
'|','#','|','Re(e_HF (eV))','|','Re(Sig_GW) (eV)','|','Re(Z)','|','Re(e_GW) (eV)','|'
|
'|','#','|','Re(e_HF (eV))','|','Re(Sig_GF) (eV)','|','Re(Z)','|','Re(e_GF) (eV)','|'
|
||||||
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)') &
|
||||||
'|','#','|','Im(e_HF (eV))','|','Im(Sig_GW) (eV)','|','Im(Z)','|','Im(e_GW) (eV)','|'
|
'|','#','|','Im(e_HF (eV))','|','Im(Sig_GF) (eV)','|','Im(Z)','|','Im(e_GF) (eV)','|'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
|
|
||||||
do p=1,nOrb
|
do p=1,nOrb
|
||||||
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)') &
|
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,'|',real(eHF(p))*HaToeV,'|',real(SigC(p,p))*HaToeV,'|',real(Z(p)),'|',real(eGW(p))*HaToeV,'|'
|
'|',p,'|',real(eHF(p))*HaToeV,'|',real(SigC(p,p))*HaToeV,'|',real(Z(p)),'|',real(eGF(p))*HaToeV,'|'
|
||||||
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)') &
|
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,'|',aimag(eHF(p))*HaToeV,'|',aimag(SigC(p,p))*HaToeV,'|',aimag(Z(p)),'|',aimag(eGW(p))*HaToeV,'|'
|
'|',p,'|',aimag(eHF(p))*HaToeV,'|',aimag(SigC(p,p))*HaToeV,'|',aimag(Z(p)),'|',aimag(eGF(p))*HaToeV,'|'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
if(p==nO) then
|
if(p==nO) then
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
@ -74,17 +74,17 @@ subroutine print_complex_qsRGF2(nBas, nOrb, nO, nSCF, Conv, thresh, eHF, eGW, c,
|
|||||||
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@RHF HOMO real energy = ',real(eGW(HOMO))*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'qsGF@RHF HOMO real energy = ',real(eGF(HOMO))*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'qsGW@RHF HOMO imag energy = ',aimag(eGW(HOMO))*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'qsGF@RHF HOMO imag energy = ',aimag(eGF(HOMO))*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'qsGW@RHF LUMO real energy = ',real(eGW(LUMO))*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'qsGF@RHF LUMO real energy = ',real(eGF(LUMO))*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'qsGW@RHF LUMO imag energy = ',aimag(eGW(LUMO))*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'qsGF@RHF LUMO imag energy = ',aimag(eGF(LUMO))*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'qsGW@RHF HOMO-LUMO gap = ',real(Gap)*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'qsGF@RHF HOMO-LUMO gap = ',real(Gap)*HaToeV,' eV'
|
||||||
write(*,'(2X,A60,F15.6,A3)') 'qsGW@RHF HOMO-LUMO gap = ',aimag(Gap)*HaToeV,' eV'
|
write(*,'(2X,A60,F15.6,A3)') 'qsGF@RHF HOMO-LUMO gap = ',aimag(Gap)*HaToeV,' eV'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' qsGW@RHF total real energy = ',ENuc + real(EqsGW),' au'
|
write(*,'(2X,A60,F15.6,A3)') ' qsGF@RHF total real energy = ',ENuc + real(EqsGF),' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' qsGW@RHF total imag energy = ',aimag(EqsGW),' au'
|
write(*,'(2X,A60,F15.6,A3)') ' qsGF@RHF total imag energy = ',aimag(EqsGF),' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' qsGW@RHF exchange energy = ',real(EK),' au'
|
write(*,'(2X,A60,F15.6,A3)') ' qsGF@RHF exchange energy = ',real(EK),' au'
|
||||||
write(*,'(2X,A60,F15.6,A3)') ' qsGW@RHF exchange energy = ',aimag(EK),' au'
|
write(*,'(2X,A60,F15.6,A3)') ' qsGF@RHF exchange energy = ',aimag(EK),' au'
|
||||||
write(*,*)'-------------------------------------------------------------------------------'
|
write(*,*)'-------------------------------------------------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
@ -114,25 +114,25 @@ subroutine print_complex_qsRGF2(nBas, nOrb, nO, nSCF, Conv, thresh, eHF, eGW, c,
|
|||||||
write(*,'(A33,1X,F16.10,A3)') ' Correlation energy = ',real(EcGM),' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Correlation energy = ',real(EcGM),' au'
|
||||||
write(*,'(A33,1X,F16.10,A3)') ' Correlation energy = ',aimag(EcGM),' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Correlation energy = ',aimag(EcGM),' au'
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A33,1X,F16.10,A3)') ' Electronic energy = ',real(EqsGW),' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Electronic energy = ',real(EqsGF),' au'
|
||||||
write(*,'(A33,1X,F16.10,A3)') ' Electronic energy = ',aimag(EqsGW),' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Electronic energy = ',aimag(EqsGF),' au'
|
||||||
write(*,'(A33,1X,F16.10,A3)') ' Nuclear repulsion = ',ENuc,' au'
|
write(*,'(A33,1X,F16.10,A3)') ' Nuclear repulsion = ',ENuc,' au'
|
||||||
write(*,'(A33,1X,F16.10,A3)') ' qsRGW energy = ',ENuc + real(EqsGW),' au'
|
write(*,'(A33,1X,F16.10,A3)') ' qsRGF energy = ',ENuc + real(EqsGF),' au'
|
||||||
write(*,'(A33,1X,F16.10,A3)') ' qsRGW energy = ',aimag(EqsGW),' au'
|
write(*,'(A33,1X,F16.10,A3)') ' qsRGF energy = ',aimag(EqsGF),' au'
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
if(dump_orb) then
|
if(dump_orb) then
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A50)') ' Restricted qsGW orbital coefficients'
|
write(*,'(A50)') ' Restricted qsGF orbital coefficients'
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
call complex_matout(nBas, nOrb, c)
|
call complex_matout(nBas, nOrb, c)
|
||||||
write(*,*)
|
write(*,*)
|
||||||
end if
|
end if
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
write(*,'(A50)') ' Restricted qsGW orbital energies (au) '
|
write(*,'(A50)') ' Restricted qsGF orbital energies (au) '
|
||||||
write(*,'(A50)') '---------------------------------------'
|
write(*,'(A50)') '---------------------------------------'
|
||||||
call complex_vecout(nOrb, eGW)
|
call complex_vecout(nOrb, eGF)
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
end if
|
end if
|
||||||
|
Loading…
x
Reference in New Issue
Block a user