subroutine print_RHF(nBas,nO,eHF,cHF,ENuc,ET,EV,EJ,EK,ERHF) ! Print one-electron energies and other stuff for G0W0 implicit none include 'parameters.h' integer,intent(in) :: nBas,nO double precision,intent(in) :: eHF(nBas),cHF(nBas,nBas),ENuc,ET,EV,EJ,EK,ERHF integer :: HOMO,LUMO double precision :: Gap ! HOMO and LUMO HOMO = nO LUMO = HOMO + 1 Gap = eHF(LUMO)-eHF(HOMO) ! Dump results write(*,*) write(*,'(A50)') '-----------------------------------------' write(*,'(A32)') ' Summary ' write(*,'(A50)') '-----------------------------------------' write(*,'(A32,1X,F16.10)') ' One-electron energy = ',ET + EV write(*,'(A32,1X,F16.10)') ' Kinetic energy = ',ET write(*,'(A32,1X,F16.10)') ' Potential energy = ',EV write(*,'(A50)') '-----------------------------------------' write(*,'(A32,1X,F16.10)') ' Two-electron energy = ',EJ + EK write(*,'(A32,1X,F16.10)') ' Coulomb energy = ',EJ write(*,'(A32,1X,F16.10)') ' Exchange energy = ',EK write(*,'(A50)') '-----------------------------------------' write(*,'(A32,1X,F16.10)') ' Electronic energy = ',ERHF write(*,'(A32,1X,F16.10)') ' Nuclear repulsion = ',ENuc write(*,'(A32,1X,F16.10)') ' Hartree-Fock energy = ',ERHF + ENuc write(*,'(A50)') '-----------------------------------------' write(*,'(A36,F13.6)') ' HF HOMO energy (eV) = ',eHF(HOMO)*HaToeV write(*,'(A36,F13.6)') ' HF LUMO energy (eV) = ',eHF(LUMO)*HaToeV write(*,'(A36,F13.6)') ' HF HOMO-LUMO gap (eV) = ',Gap*HaToeV write(*,'(A50)') '-----------------------------------------' write(*,*) ! Print results write(*,'(A50)') '---------------------------------------' write(*,'(A32)') 'MO coefficients' write(*,'(A50)') '---------------------------------------' call matout(nBas,nBas,cHF) write(*,*) write(*,'(A50)') '---------------------------------------' write(*,'(A32)') 'MO energies' write(*,'(A50)') '---------------------------------------' call matout(nBas,1,eHF) write(*,*) end subroutine print_RHF