2003-06-10 05:27:20 +08:00
|
|
|
!
|
2005-07-13 04:08:01 +08:00
|
|
|
! Copyright (C) 2002-2005 Quantum-ESPRESSO group
|
2003-06-10 05:27:20 +08:00
|
|
|
! This file is distributed under the terms of the
|
|
|
|
! GNU General Public License. See the file `License'
|
|
|
|
! in the root directory of the present distribution,
|
|
|
|
! or http://www.gnu.org/copyleft/gpl.txt .
|
|
|
|
!
|
|
|
|
|
|
|
|
MODULE energies
|
2003-11-04 18:26:03 +08:00
|
|
|
|
|
|
|
USE io_global, ONLY : stdout
|
2003-06-10 05:27:20 +08:00
|
|
|
USE kinds
|
|
|
|
IMPLICIT NONE
|
|
|
|
SAVE
|
|
|
|
|
2004-06-29 01:42:18 +08:00
|
|
|
PRIVATE
|
|
|
|
|
2003-06-10 05:27:20 +08:00
|
|
|
TYPE dft_energy_type
|
2005-08-28 22:09:42 +08:00
|
|
|
REAL(DP) :: ETOT
|
|
|
|
REAL(DP) :: SKIN
|
|
|
|
REAL(DP) :: EMKIN
|
|
|
|
REAL(DP) :: SELF_SXC
|
|
|
|
REAL(DP) :: SXC
|
|
|
|
REAL(DP) :: EHT
|
|
|
|
REAL(DP) :: EH
|
|
|
|
REAL(DP) :: SELF_EHTE
|
|
|
|
REAL(DP) :: EHTE
|
|
|
|
REAL(DP) :: EHTI
|
|
|
|
REAL(DP) :: EPSEU
|
|
|
|
REAL(DP) :: ENL
|
|
|
|
REAL(DP) :: ENT
|
|
|
|
REAL(DP) :: VXC
|
|
|
|
REAL(DP) :: EXC
|
|
|
|
REAL(DP) :: ESELF
|
|
|
|
REAL(DP) :: ESR
|
|
|
|
REAL(DP) :: EVDW
|
|
|
|
REAL(DP) :: EBAND
|
|
|
|
REAL(DP) :: EKIN
|
|
|
|
REAL(DP) :: ATOT ! Ensamble DFT
|
|
|
|
REAL(DP) :: ENTROPY ! Ensamble DFT
|
|
|
|
REAL(DP) :: EGRAND ! Ensamble DFT
|
|
|
|
REAL(DP) :: VAVE ! Ensamble DFT
|
2003-06-10 05:27:20 +08:00
|
|
|
END TYPE
|
|
|
|
|
2005-08-28 22:09:42 +08:00
|
|
|
REAL(DP) :: EHTE = 0.0_DP
|
|
|
|
REAL(DP) :: SELF_EHTE = 0.0_DP
|
|
|
|
REAL(DP) :: EHTI = 0.0_DP
|
|
|
|
REAL(DP) :: EH = 0.0_DP
|
|
|
|
REAL(DP) :: EHT = 0.0_DP
|
|
|
|
REAL(DP) :: SXC = 0.0_DP
|
|
|
|
REAL(DP) :: SELF_SXC = 0.0_DP
|
|
|
|
REAL(DP) :: EKIN = 0.0_DP
|
|
|
|
REAL(DP) :: ESELF = 0.0_DP
|
|
|
|
REAL(DP) :: EVDW = 0.0_DP
|
|
|
|
REAL(DP) :: EPSEU = 0.0_DP
|
|
|
|
REAL(DP) :: ENT = 0.0_DP
|
|
|
|
REAL(DP) :: ETOT = 0.0_DP
|
|
|
|
REAL(DP) :: ENL = 0.0_DP
|
|
|
|
REAL(DP) :: ESR = 0.0_DP
|
|
|
|
REAL(DP) :: EXC = 0.0_DP
|
|
|
|
REAL(DP) :: VXC = 0.0_DP
|
|
|
|
REAL(DP) :: SELF_VXC = 0.0_DP
|
|
|
|
REAL(DP) :: EBAND = 0.0_DP
|
|
|
|
REAL(DP) :: ATOT = 0.0_DP
|
|
|
|
REAL(DP) :: ENTROPY = 0.0_DP
|
|
|
|
REAL(DP) :: EGRAND = 0.0_DP
|
|
|
|
REAL(DP) :: VAVE = 0.0_DP ! average potential
|
2005-07-13 04:08:01 +08:00
|
|
|
|
2005-08-28 22:09:42 +08:00
|
|
|
REAL(DP) :: enthal, ekincm
|
2003-06-10 05:27:20 +08:00
|
|
|
|
2004-06-29 01:42:18 +08:00
|
|
|
PUBLIC :: dft_energy_type, total_energy, eig_total_energy, &
|
2005-07-13 04:08:01 +08:00
|
|
|
print_energies, debug_energies
|
2003-06-10 05:27:20 +08:00
|
|
|
|
2005-07-13 04:08:01 +08:00
|
|
|
PUBLIC :: etot, eself, enl, ekin, epseu, esr, eht, exc, ekincm
|
2005-12-06 22:55:23 +08:00
|
|
|
PUBLIC :: self_sxc, self_ehte
|
2004-06-29 18:13:59 +08:00
|
|
|
|
- FPMD: pseudopotential variable wsg, wnl, fnl substituted with
dion, beta, bec everyware.
- subroutines formfn, compute_beta, nlsm1, nlsm2, ecc ... now are common
between FPMD and CPV, a lot of clean ups!
- Changes in stdout: relevant physical quantities ( positions velocities an cell )
are now printed with the seme format of the corresponding input card,
like in PW, as was suggested by SdG.
- exemple23 updated to reflect the new input namelist "wannier"
- Subroutine init_run now is used in FPMD too.
- WARNING in the stress computed with CP, for a pseudo with core-corrections,
a contribution is missing! Not yet fixed, I need to talk with PG for the
box staff.
- WARNING the examples reference are not updated, I'm on the IBM sp, and
I prefer to update them from a linux machine.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2110 c92efa57-630b-4861-b058-cf58834340f0
2005-08-22 22:14:13 +08:00
|
|
|
PUBLIC :: atot, entropy, egrand, enthal, vave
|
2004-12-21 23:48:19 +08:00
|
|
|
|
2003-06-10 05:27:20 +08:00
|
|
|
CONTAINS
|
|
|
|
|
|
|
|
! ---------------------------------------------------------------------------- !
|
|
|
|
|
2004-06-24 18:13:56 +08:00
|
|
|
SUBROUTINE total_energy( edft, omega, vvxc, eps, self_vxc_in, nnr)
|
2004-04-02 00:30:59 +08:00
|
|
|
|
2003-06-10 05:27:20 +08:00
|
|
|
TYPE (dft_energy_type) :: edft
|
2005-08-28 22:09:42 +08:00
|
|
|
REAL(DP), INTENT(IN) :: OMEGA, VVXC
|
|
|
|
REAL(DP) :: VXC
|
|
|
|
REAL(DP) :: self_vxc_in
|
|
|
|
COMPLEX(DP), INTENT(IN) :: EPS
|
2003-06-10 05:27:20 +08:00
|
|
|
INTEGER, INTENT(IN) :: nnr
|
|
|
|
|
2005-11-08 08:03:27 +08:00
|
|
|
eself = edft%eself
|
|
|
|
ent = edft%ent
|
|
|
|
enl = edft%enl
|
|
|
|
evdw = edft%evdw
|
|
|
|
esr = edft%esr
|
|
|
|
ekin = edft%ekin
|
|
|
|
sxc = edft%sxc
|
|
|
|
ehti = edft%ehti
|
|
|
|
ehte = edft%ehte
|
2005-12-06 22:55:23 +08:00
|
|
|
self_ehte = edft%self_ehte * omega / DBLE(NNR)
|
|
|
|
self_sxc = edft%self_sxc * omega / DBLE(NNR)
|
2003-06-10 05:27:20 +08:00
|
|
|
|
2004-04-02 00:30:59 +08:00
|
|
|
self_vxc = self_vxc_in
|
|
|
|
|
2005-11-08 08:03:27 +08:00
|
|
|
EXC = edft%sxc * omega / DBLE(NNR)
|
General cleanup of intrinsic functions:
conversion to real => DBLE
(including real part of a complex number)
conversion to complex => CMPLX
complex conjugate => CONJG
imaginary part => AIMAG
All functions are uppercase.
CMPLX is preprocessed by f_defs.h and performs an explicit cast:
#define CMPLX(a,b) cmplx(a,b,kind=DP)
This implies that 1) f_defs.h must be included whenever a CMPLX is present,
2) CMPLX should stay in a single line, 3) DP must be defined.
All occurrences of real, float, dreal, dfloat, dconjg, dimag, dcmplx
removed - please do not reintroduce any of them.
Tested only with ifc7 and g95 - beware unintended side effects
Maybe not the best solution (explicit casts everywhere would be better)
but it can be easily changed with a script if the need arises.
The following code might be used to test for possible trouble:
program test_intrinsic
implicit none
integer, parameter :: dp = selected_real_kind(14,200)
real (kind=dp) :: a = 0.123456789012345_dp
real (kind=dp) :: b = 0.987654321098765_dp
complex (kind=dp) :: c = ( 0.123456789012345_dp, 0.987654321098765_dp)
print *, ' A = ', a
print *, ' DBLE(A)= ', DBLE(a)
print *, ' C = ', c
print *, 'CONJG(C)= ', CONJG(c)
print *, 'DBLE(c),AIMAG(C) = ', DBLE(c), AIMAG(c)
print *, 'CMPLX(A,B,kind=dp)= ', CMPLX( a, b, kind=dp)
end program test_intrinsic
Note that CMPLX and REAL without a cast yield single precision numbers on
ifc7 and g95 !!!
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2133 c92efa57-630b-4861-b058-cf58834340f0
2005-08-27 01:44:42 +08:00
|
|
|
VXC = VVXC * omega / DBLE(NNR)
|
2004-06-24 18:13:56 +08:00
|
|
|
|
2003-06-10 05:27:20 +08:00
|
|
|
edft%exc = exc
|
|
|
|
edft%vxc = vxc
|
|
|
|
|
2005-11-08 08:03:27 +08:00
|
|
|
edft%eht = edft%eh + esr - eself ! = eht
|
|
|
|
eht = edft%eht
|
2003-06-10 05:27:20 +08:00
|
|
|
|
2005-11-08 08:03:27 +08:00
|
|
|
epseu = DBLE(eps)
|
2003-06-10 05:27:20 +08:00
|
|
|
edft%epseu = epseu
|
|
|
|
|
2005-11-08 08:03:27 +08:00
|
|
|
etot = ekin + eht + epseu + enl + exc + evdw - ent
|
|
|
|
!
|
2003-06-10 05:27:20 +08:00
|
|
|
edft%etot = etot
|
|
|
|
|
|
|
|
RETURN
|
|
|
|
END SUBROUTINE total_energy
|
|
|
|
|
|
|
|
! ---------------------------------------------------------------------------- !
|
|
|
|
|
|
|
|
SUBROUTINE eig_total_energy(ei)
|
|
|
|
IMPLICIT NONE
|
2005-08-28 22:09:42 +08:00
|
|
|
REAL(DP), INTENT(IN) :: ei(:)
|
2003-06-10 05:27:20 +08:00
|
|
|
INTEGER :: i
|
2005-08-28 22:09:42 +08:00
|
|
|
REAL(DP) etot_band, EII
|
2003-06-10 05:27:20 +08:00
|
|
|
eband = 0.0d0
|
|
|
|
do i = 1, SIZE(ei)
|
|
|
|
eband = eband + ei(i) * 2.0d0
|
|
|
|
end do
|
|
|
|
EII = ehti + ESR - ESELF
|
|
|
|
etot_band = eband - ehte + (exc-vxc) + eii
|
2003-11-04 18:26:03 +08:00
|
|
|
WRITE( stdout,200) etot_band, eband, ehte, (exc-vxc), eii
|
2003-06-10 05:27:20 +08:00
|
|
|
200 FORMAT(' *** TOTAL ENERGY : ',F14.8,/ &
|
|
|
|
,' eband : ',F14.8,/ &
|
|
|
|
,' eh : ',F14.8,/ &
|
|
|
|
,' xc : ',F14.8,/ &
|
|
|
|
,' eii : ',F14.8)
|
|
|
|
RETURN
|
2005-05-18 17:38:45 +08:00
|
|
|
END SUBROUTINE eig_total_energy
|
2003-06-10 05:27:20 +08:00
|
|
|
|
|
|
|
! ---------------------------------------------------------------------------- !
|
|
|
|
|
2005-12-06 22:55:23 +08:00
|
|
|
SUBROUTINE print_energies( tsic, iprsta, edft, sic_alpha, sic_epsilon )
|
2004-06-24 18:13:56 +08:00
|
|
|
LOGICAL, INTENT(IN) :: tsic
|
2003-06-10 05:27:20 +08:00
|
|
|
TYPE (dft_energy_type), OPTIONAL, INTENT(IN) :: edft
|
- FPMD: pseudopotential variable wsg, wnl, fnl substituted with
dion, beta, bec everyware.
- subroutines formfn, compute_beta, nlsm1, nlsm2, ecc ... now are common
between FPMD and CPV, a lot of clean ups!
- Changes in stdout: relevant physical quantities ( positions velocities an cell )
are now printed with the seme format of the corresponding input card,
like in PW, as was suggested by SdG.
- exemple23 updated to reflect the new input namelist "wannier"
- Subroutine init_run now is used in FPMD too.
- WARNING in the stress computed with CP, for a pseudo with core-corrections,
a contribution is missing! Not yet fixed, I need to talk with PG for the
box staff.
- WARNING the examples reference are not updated, I'm on the IBM sp, and
I prefer to update them from a linux machine.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2110 c92efa57-630b-4861-b058-cf58834340f0
2005-08-22 22:14:13 +08:00
|
|
|
INTEGER, OPTIONAL, INTENT(IN) :: iprsta
|
2005-12-06 22:55:23 +08:00
|
|
|
REAL(DP), OPTIONAL, INTENT(IN) :: sic_alpha, sic_epsilon
|
2004-06-24 18:13:56 +08:00
|
|
|
|
2003-06-10 05:27:20 +08:00
|
|
|
IF( PRESENT ( edft ) ) THEN
|
2004-06-29 01:42:18 +08:00
|
|
|
WRITE( stdout, * )
|
|
|
|
WRITE( stdout, * )
|
|
|
|
WRITE( stdout, 1 ) edft%etot
|
|
|
|
WRITE( stdout, 2 ) edft%ekin
|
|
|
|
WRITE( stdout, 3 ) edft%eht
|
2004-10-14 16:38:05 +08:00
|
|
|
WRITE( stdout, 4 ) edft%eself ! self interaction of the pseudocharges NOT SIC!
|
2004-06-29 01:42:18 +08:00
|
|
|
WRITE( stdout, 5 ) edft%esr
|
|
|
|
WRITE( stdout, 9 ) edft%epseu
|
|
|
|
WRITE( stdout, 10 ) edft%enl
|
|
|
|
WRITE( stdout, 11 ) edft%exc
|
- FPMD: pseudopotential variable wsg, wnl, fnl substituted with
dion, beta, bec everyware.
- subroutines formfn, compute_beta, nlsm1, nlsm2, ecc ... now are common
between FPMD and CPV, a lot of clean ups!
- Changes in stdout: relevant physical quantities ( positions velocities an cell )
are now printed with the seme format of the corresponding input card,
like in PW, as was suggested by SdG.
- exemple23 updated to reflect the new input namelist "wannier"
- Subroutine init_run now is used in FPMD too.
- WARNING in the stress computed with CP, for a pseudo with core-corrections,
a contribution is missing! Not yet fixed, I need to talk with PG for the
box staff.
- WARNING the examples reference are not updated, I'm on the IBM sp, and
I prefer to update them from a linux machine.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2110 c92efa57-630b-4861-b058-cf58834340f0
2005-08-22 22:14:13 +08:00
|
|
|
IF( PRESENT( iprsta ) ) THEN
|
|
|
|
IF( iprsta > 1 ) THEN
|
|
|
|
WRITE( stdout, * )
|
|
|
|
WRITE( stdout, 6 ) edft%eh
|
|
|
|
WRITE( stdout, 7 ) edft%ehte
|
|
|
|
WRITE( stdout, 8 ) edft%ehti
|
|
|
|
WRITE( stdout, 12 ) edft%evdw
|
|
|
|
WRITE( stdout, 13 ) edft%emkin
|
|
|
|
END IF
|
|
|
|
END IF
|
2003-06-10 05:27:20 +08:00
|
|
|
ELSE
|
- FPMD: pseudopotential variable wsg, wnl, fnl substituted with
dion, beta, bec everyware.
- subroutines formfn, compute_beta, nlsm1, nlsm2, ecc ... now are common
between FPMD and CPV, a lot of clean ups!
- Changes in stdout: relevant physical quantities ( positions velocities an cell )
are now printed with the seme format of the corresponding input card,
like in PW, as was suggested by SdG.
- exemple23 updated to reflect the new input namelist "wannier"
- Subroutine init_run now is used in FPMD too.
- WARNING in the stress computed with CP, for a pseudo with core-corrections,
a contribution is missing! Not yet fixed, I need to talk with PG for the
box staff.
- WARNING the examples reference are not updated, I'm on the IBM sp, and
I prefer to update them from a linux machine.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2110 c92efa57-630b-4861-b058-cf58834340f0
2005-08-22 22:14:13 +08:00
|
|
|
!
|
2005-11-08 08:03:27 +08:00
|
|
|
999 WRITE( stdout,100) etot, ekin, eht, esr, eself, epseu, enl, exc, vave
|
- FPMD: pseudopotential variable wsg, wnl, fnl substituted with
dion, beta, bec everyware.
- subroutines formfn, compute_beta, nlsm1, nlsm2, ecc ... now are common
between FPMD and CPV, a lot of clean ups!
- Changes in stdout: relevant physical quantities ( positions velocities an cell )
are now printed with the seme format of the corresponding input card,
like in PW, as was suggested by SdG.
- exemple23 updated to reflect the new input namelist "wannier"
- Subroutine init_run now is used in FPMD too.
- WARNING in the stress computed with CP, for a pseudo with core-corrections,
a contribution is missing! Not yet fixed, I need to talk with PG for the
box staff.
- WARNING the examples reference are not updated, I'm on the IBM sp, and
I prefer to update them from a linux machine.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2110 c92efa57-630b-4861-b058-cf58834340f0
2005-08-22 22:14:13 +08:00
|
|
|
!
|
2003-06-10 05:27:20 +08:00
|
|
|
END IF
|
2005-11-08 08:03:27 +08:00
|
|
|
!
|
|
|
|
IF( tsic ) THEN
|
2005-12-06 22:55:23 +08:00
|
|
|
!
|
|
|
|
IF( .NOT. PRESENT( sic_alpha ) .OR. .NOT. PRESENT( sic_epsilon ) ) &
|
|
|
|
CALL errore( ' print_energies ', ' sic without parameters? ', 1 )
|
|
|
|
|
|
|
|
WRITE( stdout, fmt = "('Sic contributes in Mauri&al. approach:')" )
|
|
|
|
WRITE( stdout, fmt = "('--------------------------------------')" )
|
|
|
|
!
|
|
|
|
! qui e' da aggiungere i due parametetri alpha_si e si_epsilon che determinano "quanto"
|
|
|
|
! correggo lo exc e hartree
|
|
|
|
!
|
|
|
|
WRITE( stdout, 14 ) self_ehte, sic_epsilon
|
|
|
|
WRITE( stdout, 15 ) self_sxc, sic_alpha
|
2005-11-08 08:03:27 +08:00
|
|
|
END IF
|
|
|
|
!
|
|
|
|
1 FORMAT(6X,' total energy = ',F18.10,' Hartree a.u.')
|
|
|
|
2 FORMAT(6X,' kinetic energy = ',F18.10,' Hartree a.u.')
|
|
|
|
3 FORMAT(6X,' electrostatic energy = ',F18.10,' Hartree a.u.')
|
|
|
|
4 FORMAT(6X,' eself = ',F18.10,' Hartree a.u.')
|
|
|
|
5 FORMAT(6X,' esr = ',F18.10,' Hartree a.u.')
|
|
|
|
6 FORMAT(6X,' hartree energy = ',F18.10,' Hartree a.u.')
|
|
|
|
7 FORMAT(6X,' hartree ehte = ',F18.10,' Hartree a.u.')
|
|
|
|
8 FORMAT(6X,' hartree ehti = ',F18.10,' Hartree a.u.')
|
|
|
|
9 FORMAT(6X,' pseudopotential energy = ',F18.10,' Hartree a.u.')
|
|
|
|
10 FORMAT(6X,' n-l pseudopotential energy = ',F18.10,' Hartree a.u.')
|
|
|
|
11 FORMAT(6X,' exchange-correlation energy = ',F18.10,' Hartree a.u.')
|
|
|
|
12 FORMAT(6X,' van der waals energy = ',F18.10,' Hartree a.u.')
|
|
|
|
13 FORMAT(6X,' emass kinetic energy = ',F18.10,' Hartree a.u.')
|
2005-12-06 22:55:23 +08:00
|
|
|
14 FORMAT(6X,' hartree sic_ehte = ',F18.10,' Hartree a.u.', 1X, 'corr. factor = ',F6.3)
|
|
|
|
15 FORMAT(6X,' sic exchange-correla energy = ',F18.10,' Hartree a.u.', 1X, 'corr. factor = ',F6.3)
|
2005-11-02 23:42:06 +08:00
|
|
|
|
|
|
|
100 format(//' total energy = ',f14.5,' Hartree a.u.'/ &
|
|
|
|
& ' kinetic energy = ',f14.5,' Hartree a.u.'/ &
|
|
|
|
& ' electrostatic energy = ',f14.5,' Hartree a.u.'/ &
|
|
|
|
& ' esr = ',f14.5,' Hartree a.u.'/ &
|
|
|
|
& ' eself = ',f14.5,' Hartree a.u.'/ &
|
|
|
|
& ' pseudopotential energy = ',f14.5,' Hartree a.u.'/ &
|
|
|
|
& ' n-l pseudopotential energy = ',f14.5,' Hartree a.u.'/ &
|
|
|
|
& ' exchange-correlation energy = ',f14.5,' Hartree a.u.'/ &
|
|
|
|
& ' average potential = ',f14.5,' Hartree a.u.'//)
|
- FPMD: pseudopotential variable wsg, wnl, fnl substituted with
dion, beta, bec everyware.
- subroutines formfn, compute_beta, nlsm1, nlsm2, ecc ... now are common
between FPMD and CPV, a lot of clean ups!
- Changes in stdout: relevant physical quantities ( positions velocities an cell )
are now printed with the seme format of the corresponding input card,
like in PW, as was suggested by SdG.
- exemple23 updated to reflect the new input namelist "wannier"
- Subroutine init_run now is used in FPMD too.
- WARNING in the stress computed with CP, for a pseudo with core-corrections,
a contribution is missing! Not yet fixed, I need to talk with PG for the
box staff.
- WARNING the examples reference are not updated, I'm on the IBM sp, and
I prefer to update them from a linux machine.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2110 c92efa57-630b-4861-b058-cf58834340f0
2005-08-22 22:14:13 +08:00
|
|
|
|
2003-06-10 05:27:20 +08:00
|
|
|
RETURN
|
|
|
|
END SUBROUTINE print_energies
|
|
|
|
|
2004-06-24 18:13:56 +08:00
|
|
|
|
2003-06-10 05:27:20 +08:00
|
|
|
! ---------------------------------------------------------------------------- !
|
|
|
|
|
|
|
|
SUBROUTINE debug_energies( edft )
|
|
|
|
TYPE (dft_energy_type), OPTIONAL, INTENT(IN) :: edft
|
|
|
|
IF( PRESENT ( edft ) ) THEN
|
2004-06-24 18:13:56 +08:00
|
|
|
WRITE( stdout,2) edft%ETOT, edft%EKIN, edft%EHT, &
|
|
|
|
edft%ESELF, edft%ESR, edft%EH, &
|
|
|
|
edft%EPSEU, edft%ENL, edft%SXC, edft%VXC, edft%EVDW, edft%EHTE, &
|
|
|
|
edft%EHTI, edft%ENT, edft%EBAND, (edft%SXC-edft%VXC), &
|
2003-06-10 05:27:20 +08:00
|
|
|
(edft%EHTI+edft%ESR-edft%ESELF), &
|
2004-06-24 18:13:56 +08:00
|
|
|
edft%EBAND-edft%EHTE+(edft%SXC-edft%VXC)+(edft%EHTI+edft%ESR-edft%ESELF)
|
2003-06-10 05:27:20 +08:00
|
|
|
ELSE
|
2004-06-24 18:13:56 +08:00
|
|
|
WRITE( stdout,2) ETOT, EKIN, EHT, ESELF, ESR, EH, EPSEU, ENL, EXC, VXC, &
|
2003-06-10 05:27:20 +08:00
|
|
|
EVDW, EHTE, EHTI, ENT, EBAND, (EXC-VXC), (EHTI+ESR-ESELF), &
|
|
|
|
EBAND-EHTE+(EXC-VXC)+(EHTI+ESR-ESELF)
|
|
|
|
END IF
|
|
|
|
2 FORMAT(/,/ &
|
|
|
|
,6X,' ETOT .... = ',F18.10,/ &
|
|
|
|
,6X,' EKIN .... = ',F18.10,/ &
|
|
|
|
,6X,' EHT ..... = ',F18.10,/ &
|
|
|
|
,6X,' ESELF ... = ',F18.10,/ &
|
|
|
|
,6X,' ESR ..... = ',F18.10,/ &
|
2004-06-24 18:13:56 +08:00
|
|
|
,6X,' EH ...... = ',F18.10,/ &
|
2003-06-10 05:27:20 +08:00
|
|
|
,6X,' EPSEU ... = ',F18.10,/ &
|
|
|
|
,6X,' ENL ..... = ',F18.10,/ &
|
|
|
|
,6X,' EXC ..... = ',F18.10,/ &
|
|
|
|
,6X,' VXC ..... = ',F18.10,/ &
|
|
|
|
,6X,' EVDW .... = ',F18.10,/ &
|
|
|
|
,6X,' EHTE .... = ',F18.10,/ &
|
|
|
|
,6X,' EHTI .... = ',F18.10,/ &
|
|
|
|
,6X,' ENT ..... = ',F18.10,/ &
|
|
|
|
,6X,' EBAND ... = ',F18.10,/ &
|
|
|
|
,6X,' EXC-VXC ............................. = ',F18.10,/ &
|
|
|
|
,6X,' EHTI+ESR-ESELF ...................... = ',F18.10,/ &
|
|
|
|
,6X,' EBAND-EHTE+(EXC-VXC)+(EHTI+ESR-ESELF) = ',F18.10)
|
|
|
|
RETURN
|
|
|
|
END SUBROUTINE debug_energies
|
|
|
|
|
|
|
|
|
2005-05-18 17:38:45 +08:00
|
|
|
END MODULE energies
|