MsSpec-DFM/New_libraries/DFM_library/PRINT_LIBRARY/print_energies.f90

148 lines
5.1 KiB
Fortran

!
!=======================================================================
!
MODULE ENERGIES_P
!
! This module defines the energies parameters
!
USE ACCURACY_REAL
!
IMPLICIT NONE
!
REAL (WP) :: E_0,E_X,E_X_HF,E_C,E_XC
REAL (WP) :: E_HF,E_GS,E_KIN,E_POT
!
END MODULE ENERGIES_P
!
!=======================================================================
!
MODULE PRINT_ENERGIES_EL
!
! This module prints the energies in the log file
!
!
CONTAINS
!
!=======================================================================
!
SUBROUTINE CALC_ENERGIES_MAT(X,I_SCREEN,K_SC,FF)
!
! This subroutine computes the different energies (per electron)
!
!
! Input parameters:
!
! * X : dimensionless factor --> X = q / (2 * k_F)
! * I_SCREEN : switch for screened (=1) or unscreened (=0) Coulomb
! * K_SC : screening momentum (in SI)
! * FF : form factor
!
!
!
! Author : D. Sébilleau
!
! Last modified : 28 Jul 2020
!
USE CALC_ENERGIES
USE MATERIAL_PROP, ONLY : RS,DMN
USE EXT_FIELDS, ONLY : T
USE ENERGIES, ONLY : EC_TYPE
!
USE ENERGIES_P
!
IMPLICIT NONE
!
REAL (WP) :: X,K_SC,FF
!
INTEGER :: I_SCREEN
!
IF(DMN == '3D') THEN !
CALL ENERGIES_3D(X,EC_TYPE,RS,T,I_SCREEN,K_SC,E_0,E_X, & !
E_X_HF,E_C,E_XC,E_HF,E_GS,E_KIN,E_POT) !
ELSE IF(DMN == '2D') THEN !
CALL ENERGIES_2D(X,EC_TYPE,RS,T,E_0,E_X,E_X_HF,E_C,E_XC, & !
E_HF,E_GS,E_KIN,E_POT) !
ELSE IF(DMN == '1D') THEN !
CALL ENERGIES_1D(EC_TYPE,FF,RS,T,E_0,E_X,E_C,E_XC,E_HF, & !
E_GS,E_KIN,E_POT) !
END IF !
!
END SUBROUTINE CALC_ENERGIES_MAT
!
!=======================================================================
!
SUBROUTINE PRINT_ENERGIES(X,I_SCREEN,K_SC,FF)
!
! This subroutine prints the different energies (per electron)
! in the log file
!
!
! Input parameters:
!
! * X : dimensionless factor --> X = q / (2 * k_F)
! * I_SCREEN : switch for screened (=1) or unscreened (=0) Coulomb
! * K_SC : screening momentum (in SI)
! * FF : form factor
!
!
!
! Author : D. Sébilleau
!
! Last modified : 28 Jul 2020
!
!
USE ENE_CHANGE, ONLY : EV
!
USE ENERGIES_P
!
IMPLICIT NONE
!
REAL (WP) :: TEST
REAL (WP) :: X,K_SC,FF
!
INTEGER :: LOGF
INTEGER :: I_SCREEN
!
LOGF=6 ! log file unit
!
TEST=90000.0E0_WP !
!
CALL CALC_ENERGIES_MAT(X,I_SCREEN,K_SC,FF) !
!
WRITE(LOGF,17) !
WRITE(LOGF,7) !
WRITE(LOGF,27) !
!
WRITE(LOGF,10) E_0/EV !
WRITE(LOGF,20) E_X/EV !
WRITE(LOGF,30) E_X_HF/EV !
WRITE(LOGF,40) E_C/EV !
WRITE(LOGF,50) E_XC/EV !
WRITE(LOGF,60) E_HF/EV !
WRITE(LOGF,70) E_GS/EV !
WRITE(LOGF,80) E_KIN/EV !
WRITE(LOGF,90) E_POT/EV !
!
WRITE(LOGF,77) !
!
! Formats:
!
10 FORMAT(5X,'|',5X,'energy of non-interacting electron : ',F8.3,' eV',4X,'|')
20 FORMAT(5X,'|',5X,'exchange energy (1st order) : ',F8.3,' eV',4X,'|')
30 FORMAT(5X,'|',5X,'exchange energy (Hartree-Fock) : ',F8.3,' eV',4X,'|')
40 FORMAT(5X,'|',5X,'correlation energy : ',F8.3,' eV',4X,'|')
50 FORMAT(5X,'|',5X,'exchange and correlation energy : ',F8.3,' eV',4X,'|')
60 FORMAT(5X,'|',5X,'Hartree-Fock energy : ',F8.3,' eV',4X,'|')
70 FORMAT(5X,'|',5X,'ground state energy : ',F8.3,' eV',4X,'|')
80 FORMAT(5X,'|',5X,'kinetic energy : ',F8.3,' eV',4X,'|')
90 FORMAT(5X,'|',5X,'potential energy : ',F8.3,' eV',4X,'|')
!
7 FORMAT(5X,'|',10X,'Energies at q = 0 : ',27X,'|')
17 FORMAT(6X,'_________________________________________________________')
27 FORMAT(5X,'| |')
77 FORMAT(5X,'|_________________________________________________________|',/)
!
END SUBROUTINE PRINT_ENERGIES
!
END MODULE PRINT_ENERGIES_EL