4
1
mirror of https://github.com/pfloos/quack synced 2024-12-23 12:56:38 +01:00

clean up qsGW print

This commit is contained in:
Pierre-Francois Loos 2021-03-23 22:35:46 +01:00
parent d01e7c248c
commit ed2992bc85
5 changed files with 40 additions and 13 deletions

View File

@ -11,9 +11,9 @@
# RPA* RPAx* ppRPA # RPA* RPAx* ppRPA
F F F F F F
# G0F2* evGF2* qsGF2* G0F3 evGF3 # G0F2* evGF2* qsGF2* G0F3 evGF3
F F T F F F F F F F
# G0W0* evGW* qsGW* # G0W0* evGW* qsGW*
F F F F F T
# G0T0 evGT qsGT # G0T0 evGT qsGT
F F F F F F
# MCMP2 # MCMP2

View File

@ -1,5 +1,5 @@
# HF: maxSCF thresh DIIS n_diis guess_type ortho_type mix_guess stability # HF: maxSCF thresh DIIS n_diis guess_type ortho_type mix_guess stability
128 0.0000001 T 5 1 1 F F 128 0.0000001 T 5 1 1 T F
# MP: # MP:
# CC: maxSCF thresh DIIS n_diis # CC: maxSCF thresh DIIS n_diis

View File

@ -1,4 +1,4 @@
2 2
H 0.0 0.0 0.0 H 0.0 0.0 0.0
H 0.0 0.0 0.741 H 0.0 0.0 2.0

View File

@ -1,4 +1,5 @@
subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,ENuc,P,T,V,J,K,F,SigC,Z,EcGM,EcRPA,EqsGW,dipole) subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,P,T,V,J,K,F,SigC,Z, &
ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGW,dipole)
! Print one-electron energies and other stuff for qsGW ! Print one-electron energies and other stuff for qsGW
@ -11,6 +12,10 @@ subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,ENuc,P,T,V,J,K,F,SigC,Z
integer,intent(in) :: nO integer,intent(in) :: nO
integer,intent(in) :: nSCF integer,intent(in) :: nSCF
double precision,intent(in) :: ENuc double precision,intent(in) :: ENuc
double precision,intent(in) :: ET
double precision,intent(in) :: EV
double precision,intent(in) :: EJ
double precision,intent(in) :: Ex
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
@ -27,7 +32,7 @@ subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,ENuc,P,T,V,J,K,F,SigC,Z
! Local variables ! Local variables
integer :: x,ixyz,HOMO,LUMO integer :: x,ixyz,HOMO,LUMO
double precision :: Gap,ET,EV,EJ,Ex double precision :: Gap
double precision,external :: trace_matrix double precision,external :: trace_matrix
! Output variables ! Output variables
@ -42,12 +47,6 @@ subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,ENuc,P,T,V,J,K,F,SigC,Z
! Compute energies ! Compute energies
ET = trace_matrix(nBas,matmul(P,T))
EV = trace_matrix(nBas,matmul(P,V))
EJ = 0.5d0*trace_matrix(nBas,matmul(P,J))
Ex = 0.25d0*trace_matrix(nBas,matmul(P,K))
EqsGW = ET + EV + EJ + Ex
! Dump results ! Dump results
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'

View File

@ -55,6 +55,10 @@ subroutine qsGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,SOSE
integer :: nBasSq integer :: nBasSq
integer :: ispin integer :: ispin
integer :: n_diis integer :: n_diis
double precision :: ET
double precision :: EV
double precision :: EJ
double precision :: Ex
double precision :: EqsGW double precision :: EqsGW
double precision :: EcRPA double precision :: EcRPA
double precision :: EcBSE(nspin) double precision :: EcBSE(nspin)
@ -234,10 +238,34 @@ subroutine qsGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,SOSE
P(:,:) = 2d0*matmul(c(:,1:nO),transpose(c(:,1:nO))) P(:,:) = 2d0*matmul(c(:,1:nO),transpose(c(:,1:nO)))
!------------------------------------------------------------------------
! Compute total energy
!------------------------------------------------------------------------
! Kinetic energy
ET = trace_matrix(nBas,matmul(P,T))
! Potential energy
EV = trace_matrix(nBas,matmul(P,V))
! Coulomb energy
EJ = 0.5d0*trace_matrix(nBas,matmul(P,J))
! Exchange energy
Ex = 0.25d0*trace_matrix(nBas,matmul(P,K))
! Total energy
EqsGW = ET + EV + EJ + Ex
! 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,ENuc,P,T,V,J,K,F,SigCp,Z,EcGM,EcRPA,EqsGW,dipole) call print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,P,T,V,J,K,F,SigCp,Z,ENuc,ET,EV,EJ,Ex,EcGM,EcRPA,EqsGW,dipole)
enddo enddo
!------------------------------------------------------------------------ !------------------------------------------------------------------------