MsSpec-DFM/New_libraries/DFM_library/CALCULATORS_LIBRARY/calculators_7.f90

216 lines
7.1 KiB
Fortran
Raw Normal View History

2022-02-02 16:19:10 +01:00
!
!=======================================================================
!
MODULE CALCULATORS_7
!
USE ACCURACY_REAL
!
! This module contains the subroutines allowing to compute
! various properties of the electron/plasma liquids:
!
! * Exchange energy : CALC_EXX
! * Exchange-correlation energy : CALC_EXC
! * correlation energy : CALC_ECO
! * kinetic energy : CALC_KIN
!
!
CONTAINS
!
!=======================================================================
!
SUBROUTINE CALC_EXX
!
! This subroutine computes the exchange energy
!
!
!
!
! Author : D. Sébilleau
!
! Last modified : 14 Dec 2020
!
!
!
USE MATERIAL_PROP, ONLY : RS,DMN
USE EXT_FIELDS, ONLY : T
USE EXCHANGE_ENERGIES
!
USE ENE_CHANGE, ONLY : RYD
!
USE ENERGIES, ONLY : EX_TYPE
USE SPIN_POLARIZATION
!
USE OUT_VALUES_7, ONLY : I_EX
USE PRINT_FILES, ONLY : IO_EX
!
REAL (WP) :: E_EX
!
IF(DMN == '3D') THEN !
E_EX = EX_3D(EX_TYPE,IMODE,RS,T,XI) !
ELSE IF(DMN == '2D') THEN !
CONTINUE ! not implemented yet
ELSE IF(DMN == '1D') THEN !
CONTINUE ! not implemented yet
END IF !
!
IF(I_EX == 1) THEN !
WRITE(IO_EX,*) RS,T,E_EX * RYD ! exchange energy in eV
END IF !
!
END SUBROUTINE CALC_EXX
!
!=======================================================================
!
SUBROUTINE CALC_EXC
!
! This subroutine computes the exchange and correlation energy
!
!
!
!
! Author : D. Sébilleau
!
! Last modified : 14 Dec 2020
!
!
!
USE MATERIAL_PROP, ONLY : RS,DMN
USE EXT_FIELDS, ONLY : T
USE XC_ENERGIES
!
USE ENE_CHANGE, ONLY : RYD
!
USE ENERGIES, ONLY : FXC_TYPE,EXC_TYPE
!
USE OUT_VALUES_7, ONLY : I_XC
USE PRINT_FILES, ONLY : IO_XC
!
IMPLICIT NONE
!
REAL (WP) :: E_XC
!
IF(EXC_TYPE /= 'NO') THEN !
!
! Exchange and correlation energy functionals (EXC_TYPE)
!
IF(DMN == '3D') THEN !
E_XC = EXC_3D(EXC_TYPE,RS,T) !
ELSE IF(DMN == '2D') THEN !
CONTINUE ! not implemented yet
ELSE IF(DMN == '1D') THEN !
CONTINUE ! not implemented yet
END IF !
!
ELSE !
!
! Exchange and correlation free energy functionals (FXC_TYPE)
!
IF(DMN == '3D') THEN !
CALL FXC_TO_EXC_3D(FXC_TYPE,RS,T,E_XC) !
ELSE IF(DMN == '2D') THEN !
CONTINUE ! not implemented yet
ELSE IF(DMN == '1D') THEN !
CONTINUE ! not implemented yet
END IF !
!
END IF
!
IF(I_XC == 1) THEN !
WRITE(IO_XC,*) RS,T,E_XC * RYD ! XC energy in eV
END IF !
!
END SUBROUTINE CALC_EXC
!
!=======================================================================
!
SUBROUTINE CALC_ECO
!
! This subroutine computes the correlation energy
!
!
!
! Author : D. Sébilleau
!
! Last modified : 14 Dec 2020
!
!
!
USE MATERIAL_PROP, ONLY : RS,DMN
USE EXT_FIELDS, ONLY : T
USE CORRELATION_ENERGIES
!
USE ENE_CHANGE, ONLY : RYD
!
USE ENERGIES, ONLY : EC_TYPE
USE SPIN_POLARIZATION
!
USE OUT_VALUES_7, ONLY : I_EC
USE PRINT_FILES, ONLY : IO_EC
!
IMPLICIT NONE
!
REAL (WP) :: E_CORR
!
IF(DMN == '3D') THEN !
E_CORR = EC_3D(EC_TYPE,IMODE,RS,T) !
ELSE IF(DMN == '2D') THEN !
E_CORR = EC_2D(EC_TYPE,RS,T) !
ELSE IF(DMN == '1D') THEN !
E_CORR = EC_1D(EC_TYPE,RS,T) !
END IF !
!
IF(I_EC == 1) THEN !
WRITE(IO_EC,*) RS,T,E_CORR * RYD ! correlation energy in eV
END IF !
!
END SUBROUTINE CALC_ECO
!
!=======================================================================
!
SUBROUTINE CALC_KIN
!
! This subroutine computes the kinetic energy
!
!
! Reference: H. T. Tran and J. P. Perdew, Am. J. Phys. 1048-1061 (2003)
!
!
! Author : D. Sébilleau
!
! Last modified : 14 Dec 2020
!
!
!
USE MATERIAL_PROP, ONLY : RS,DMN
USE EXT_FIELDS, ONLY : T
USE KINETIC_ENERGIES
!
USE ENE_CHANGE, ONLY : RYD
!
USE ENERGIES, ONLY : EK_TYPE
USE SPIN_POLARIZATION
!
USE OUT_VALUES_7, ONLY : I_EK
USE PRINT_FILES, ONLY : IO_EK
!
IMPLICIT NONE
!
REAL (WP) :: E_KIN
REAL (WP) :: ALPHA
!
IF(DMN == '3D') THEN !
E_KIN = EK_3D(EK_TYPE,RS,T,XI) !
ELSE IF(DMN == '2D') THEN !
CONTINUE ! not implemented yet
ELSE IF(DMN == '1D') THEN !
CONTINUE ! not implemented yet
END IF !
!
IF(I_EK == 1) THEN !
WRITE(IO_EK,*) RS,E_KIN * RYD ! kinetic energy in eV
END IF !
!
END SUBROUTINE CALC_KIN
!
END MODULE CALCULATORS_7