85 lines
2.9 KiB
Fortran
85 lines
2.9 KiB
Fortran
!
|
|
!=======================================================================
|
|
!
|
|
MODULE THERMAL_PROPERTIES
|
|
!
|
|
USE ACCURACY_REAL
|
|
!
|
|
CONTAINS
|
|
!
|
|
!
|
|
!=======================================================================
|
|
!
|
|
SUBROUTINE TH_PROP(DMN,RS,T,K_TH,V_TH,L_TH,CV,P)
|
|
!
|
|
! This subroutine computes the thermal variations of different
|
|
! physical properties
|
|
!
|
|
! References: (1) J.-S. Chen, J. Stat. Mech. L08002 (2009)
|
|
! (2) M. Selmke, https://photonicsdesign.jimdo.com/app/
|
|
! download/5512592980/SommerfeldExpansion.pdf?t=1418743530
|
|
!
|
|
! Input parameters:
|
|
!
|
|
! * DMN : dimension
|
|
! * RS : Wigner-Seitz radius (in units of a_0)
|
|
! * T : temperature (SI)
|
|
!
|
|
! Output parameters:
|
|
!
|
|
! * K_TH : De Broglie momentum
|
|
! * V_TH : thermal velocity
|
|
! * L_TH : Landau length
|
|
! * CV : electron specific heat
|
|
! * P : electron pressure
|
|
!
|
|
!
|
|
! Author : D. Sébilleau
|
|
!
|
|
! Last modified : 28 Jul 2020
|
|
!
|
|
!
|
|
USE REAL_NUMBERS, ONLY : ONE,TWO,THREE,FIVE,SIX, &
|
|
HALF,THIRD
|
|
USE CONSTANTS_P1, ONLY : H_BAR,M_E,E,COULOMB,K_B
|
|
USE FERMI_SI, ONLY : EF_SI,TF_SI
|
|
USE PI_ETC, ONLY : PI,PI2,PI3
|
|
USE UTILITIES_1, ONLY : RS_TO_N0
|
|
!
|
|
IMPLICIT NONE
|
|
!
|
|
CHARACTER (LEN = 2) :: DMN
|
|
!
|
|
REAL (WP) :: RS,T,BETA,RAT
|
|
REAL (WP) :: T_F,K_TH,V_TH,L_TH,CV,P
|
|
REAL (WP) :: N0
|
|
!
|
|
N0=RS_TO_N0(DMN,RS) !
|
|
!
|
|
BETA=ONE/(K_B*T)
|
|
!
|
|
RAT=T/TF_SI ! T / T_F ratio
|
|
!
|
|
K_TH=ONE/DSQRT(TWO*PI*H_BAR*H_BAR*BETA/M_E) ! De Broglie momentum
|
|
V_TH=DSQRT(ONE/(M_E*BETA)) ! thermal velocity
|
|
L_TH=E*E*COULOMB*BETA ! Landau length
|
|
!
|
|
IF(DMN == '3D') THEN
|
|
CV=K_B*N0 * ( HALF*PI2*RAT - & ! ref. 2 eq. 31
|
|
THREE*PI2*PI2*RAT*RAT*RAT / 20.0E0_WP - & !
|
|
247.0E0_WP*PI3*PI3*RAT*RAT*RAT*RAT*RAT / & !
|
|
2016.0E0_WP & !
|
|
) !
|
|
P=TWO*THIRD*EF_SI*N0 * (ONE + FIVE*PI2*RAT*RAT/12.0E0_WP -& ! ref. 1 eq. (23)
|
|
PI2*PI2*RAT*RAT*RAT*RAT/16.0E0_WP) !
|
|
ELSE IF(DMN == '2D') THEN !
|
|
CV=K_B*N0 * THIRD*PI2*RAT !
|
|
ELSE IF(DMN == '1D') THEN !
|
|
CV=K_B*N0 * (PI2*RAT/SIX) !
|
|
END IF !
|
|
!
|
|
END SUBROUTINE TH_PROP
|
|
|
|
!
|
|
END MODULE THERMAL_PROPERTIES
|