MsSpec-DFM/New_libraries/DFM_library/DIELECTRIC_FUNCTIONS_LIBRARY/dfuncl_static.f90

308 lines
9.8 KiB
Fortran

!
!=======================================================================
!
MODULE DFUNC_STATIC
!
USE ACCURACY_REAL
!
!
CONTAINS
!
!=======================================================================
!
SUBROUTINE DFUNCL_STATIC(X,D_FUNCL,EPSR,EPSI)
!
! This subroutine computes the longitudinal static
! dielectric functions
!
!
! Input parameters:
!
! * X : dimensionless factor --> X = q / (2 * k_F)
! * D_FUNCL : type of longitudinal dielectric function
! D_FUNCL = 'LRPA' random phase approximation
! D_FUNCL = 'THFE' Thomas-Fermi
!
!
! Output parameters:
!
! * EPSR : real part of the dielectric function
! * EPSI : imaginary part of the dielectric function
!
!
!
!
! Author : D. Sébilleau
!
! Last modified : 16 Jun 2020
!
!
USE MATERIAL_PROP, ONLY : DMN
!
IMPLICIT NONE
!
CHARACTER (LEN = 4) :: D_FUNCL
!
REAL (WP) :: X
REAL (WP) :: EPSR,EPSI
!
IF(D_FUNCL == 'LRPA') THEN !
CALL RPA1_EPS_S_LG(X,DMN,EPSR,EPSI) !
ELSE IF(D_FUNCL == 'THFE') THEN !
CALL THFE_EPS_S_LG(X,DMN,EPSR,EPSI) !
END IF !
!
END SUBROUTINE DFUNCL_STATIC
!
!=======================================================================
!
SUBROUTINE RPA1_EPS_S_LG(X,DMN,EPSR,EPSI)
!
! This subroutine computes the longitudinal static RPA dielectric function
!
! References: (1) J. Solyom, "Fundamental of the Physics of Solids", Vol3, Chap. 29
! p. 61-138, Springer
!
! Notation: hbar omega_q = hbar^2 q^2 / 2m
!
! Input parameters:
!
! * X : dimensionless factor --> X = q / (2 * k_F)
! * DMN : problem dimension
!
! Output parameters:
!
! * EPSR : real part of the dielectric function
! * EPSI : imaginary part of the dielectric function
!
! In the RPA case, we have
!
! EPS(RPA) = 1 - V_C * Pi_0 Pi_0 : RPA polarisability
!
! which we will write as
!
! EPS(RPA) = 1 + Z * L Z : (q_{TF}/q)^2
! L : Lindhard function
!
! where q_{TF} is the Thomas-Fermi screening vector, and EPS(TF) = 1 + Z
! is the Thomas-Fermi dielectric function.
!
!
! Author : D. Sébilleau
!
! Last modified : 16 Jun 2020
!
!
USE REAL_NUMBERS, ONLY : ONE,TWO,FOUR,EIGHT
USE CONSTANTS_P1, ONLY : BOHR
USE FERMI_SI, ONLY : KF_SI
USE PI_ETC, ONLY : PI
USE LINDHARD_FUNCTION, ONLY : LINDHARD_S
!
IMPLICIT NONE
!
CHARACTER (LEN = 2) :: DMN
!
REAL (WP) :: X
REAL (WP) :: EPSR,EPSI
REAL (WP) :: LR,LI,Q_SI,Z
!
Q_SI=TWO*X*KF_SI !
!
! Coefficient Z: (q_{TF}/q)^2 --> dimension-dependent
!
IF(DMN == '3D') THEN ! 3D case
!
Z=FOUR*KF_SI/(PI*BOHR*Q_SI*Q_SI) !
!
ELSEIF(DMN == '2D') THEN ! 2D case
!
Z=FOUR/(BOHR*Q_SI*Q_SI) !
!
ELSEIF(DMN == '1D') THEN ! 1D case
!
Z=EIGHT/(BOHR*KF_SI*Q_SI*Q_SI) !
!
END IF !
!
! Calling the static Lindhard function
!
CALL LINDHARD_S(X,DMN,LR,LI) !
!
! Calculation of the RPA dielectric function
! !
EPSR=ONE+Z*LR !
EPSI=Z*LI ! EPS(RPA) = 1 + Z * L
!
END SUBROUTINE RPA1_EPS_S_LG
!
!=======================================================================
!
SUBROUTINE THFE_EPS_S_LG(X,DMN,EPSR,EPSI)
!
! This subroutine computes the longitudinal static RPA dielectric function
!
! References: (1) J. Solyom, "Fundamental of the Physics of Solids", Vol3, Chap. 29
! p. 61-138, Springer
! Input parameters:
!
! * X : dimensionless factor --> X = q / (2 * k_F)
! * DMN : problem dimension
!
! Output parameters:
!
! * EPSR : real part of the dielectric function
! * EPSI : imaginary part of the dielectric function
!
!
! Author : D. Sébilleau
!
! Last modified : 16 Jun 2020
!
!
USE REAL_NUMBERS, ONLY : ZERO,ONE,TWO,FOUR,EIGHT
USE CONSTANTS_P1, ONLY : BOHR
USE FERMI_SI, ONLY : KF_SI
USE PI_ETC, ONLY : PI
!
IMPLICIT NONE
!
CHARACTER (LEN = 2) :: DMN
!
REAL (WP) :: X
REAL (WP) :: EPSR,EPSI
REAL (WP) :: Q_SI,Z
!
Q_SI=TWO*X*KF_SI !
!
! Coefficient Z: (q_{TF}/q)^2 --> dimension-dependent
!
IF(DMN == '3D') THEN ! 3D case
!
Z=FOUR*KF_SI/(PI*BOHR*Q_SI*Q_SI) !
!
ELSEIF(DMN == '2D') THEN ! 2D case
!
Z=FOUR/(BOHR*Q_SI*Q_SI) !
!
ELSEIF(DMN == '1D') THEN ! 1D case
!
Z=EIGHT/(BOHR*KF_SI*Q_SI*Q_SI) !
!
ENDIF !
!
! Calculation of the TF dielectric function
!
EPSR=ONE+Z !
EPSI=ZERO ! EPS = 1 + Z
!
END SUBROUTINE THFE_EPS_S_LG
!
!=======================================================================
!
SUBROUTINE DFUNCL_STATIC_2D_M(X,KS,A,D_FUNCL,EPSR,EPSI)
!
! This subroutine computes the longitudinal static
! dielectric functions in 2D in the presence of an external
! magnetic field
!
!
! Input parameters:
!
! * X : dimensionless factor --> X = q / (2 * k_F)
! * KS : screening wave vector in SI
! * A : sqrt(mu_B * B) : magnitude of the magnetic field in SI
! * D_FUNCL : type of longitudinal dielectric function
! D_FUNCL = 'LRPA' random phase approximation
!
!
! Output parameters:
!
! * EPSR : real part of the dielectric function
! * EPSI : imaginary part of the dielectric function
!
!
!
!
! Author : D. Sébilleau
!
! Last modified : 26 Feb 2020
!
!
!
IMPLICIT NONE
!
CHARACTER (LEN = 4) :: D_FUNCL
!
REAL (WP) :: X,KS,A
REAL (WP) :: EPSR,EPSI
!
IF(D_FUNCL == 'LRPA') THEN !
CALL RPA2_EPS_S_LG_2D(X,KS,A,EPSR,EPSI) !
END IF !
!
END SUBROUTINE DFUNCL_STATIC_2D_M
!
!=======================================================================
!
SUBROUTINE RPA2_EPS_S_LG_2D(X,KS,A,EPSR,EPSI)
!
! This subroutine computes the longitudinal static 2D RPA
! dielectric function in the presence of a magnetic field
! for an integer filling factor of 1
!
! References: (1) G. F. Giuliani and G. Vignale, "Quantum Theory of
! the Electron Liquid", (Cambridge, 2005) p. 579
!
! Input parameters:
!
! * X : dimensionless factor --> X = q / (2 * k_F)
! * KS : screening wave vector in SI
! * A : sqrt(mu_B * B) : magnitude of the magnetic field in SI
!
! Output parameters:
!
! * EPSR : real part of the dielectric function
! * EPSI : imaginary part of the dielectric function
!
!
! Author : D. Sébilleau
!
! Last modified : 23 Jun 2020
!
!
USE REAL_NUMBERS, ONLY : ZERO,ONE,TWO,HALF
USE CONSTANTS_P1, ONLY : H_BAR,M_E,E,EPS_0
USE FERMI_SI, ONLY : KF_SI
USE PI_ETC, ONLY : PI_INV
USE SQUARE_ROOTS, ONLY : SQR2
USE EULER_CONST, ONLY : EUMAS
USE EXT_FUNCTIONS, ONLY : DEI
!
IMPLICIT NONE
!
REAL (WP) :: X,KS,A
REAL (WP) :: Q_SI,Q2,KS2,COEF,V_C
REAL (WP) :: HOC,QL2,L2O
REAL (WP) :: EPSR,EPSI
!
REAL (WP) :: DSQRT,DLOG,DEXP
!
COEF=E*E/EPS_0 !
!
Q_SI=TWO*X*KF_SI !
Q2=Q_SI*Q_SI !
KS2=KS*KS !
!
HOC=SQR2*A ! hbar * omega_c
QL2=HALF*H_BAR*H_BAR*Q_SI*Q_SI/(M_E*HOC) ! q^2 l^2 / 2
L2O=H_BAR*H_BAR/M_E ! l^2 hbar omega_c
V_C=HALF*COEF/DSQRT(Q2+KS2) ! 2D Coulomb pot.
!
EPSR=ONE+V_C*PI_INV*(DEI(QL2)-DLOG(QL2)-EUMAS)*DEXP(-QL2)/L2O !
EPSI=ZERO !
!
END SUBROUTINE RPA2_EPS_S_LG_2D
!
END MODULE DFUNC_STATIC