! !======================================================================= ! MODULE RELAXATION_TIME_STATIC ! USE ACCURACY_REAL ! CONTAINS ! !======================================================================= ! SUBROUTINE RELAXATION_TIME(X,TAU) ! ! This subroutine computes the rélaxation time ! ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Dec 2020 ! ! USE MATERIAL_PROP, ONLY : DMN,RS,MSOM,EPS_B USE EXT_FIELDS, ONLY : T USE MULTILAYER, ONLY : DL,H_TYPE USE LF_VALUES, ONLY : GQ_TYPE USE SF_VALUES, ONLY : SQ_TYPE USE DAMPING_VALUES ! USE EL_ELE_INTER USE EL_PHO_INTER USE EL_IMP_INTER ! USE REAL_NUMBERS, ONLY : ZERO,ONE,INF USE CONSTANTS_P1, ONLY : M_E USE ENE_CHANGE, ONLY : EV ! IMPLICIT NONE ! INTEGER :: I_ET INTEGER :: I_E,I_P,I_I ! REAL (WP), INTENT(IN) :: X REAL (WP), INTENT(OUT):: TAU ! REAL (WP) :: EK_SI REAL (WP) :: TAU_EE,TAU_EP,TAU_EI REAL (WP) :: INV_EE,INV_EP,INV_EI REAL (WP) :: SUM_INV REAL (WP) :: MASS_E,LR REAL (WP) :: TEI,TAU_E,S_L ! ! Kinetic energy of the electrin in SI ! EK_SI = EK * EV ! ! MASS_E = MSOM * M_E ! effective mass of electron LR = ZERO ! residual mfp (temporary) TEI = ZERO ! e-imp collision time (temporary) TAU_E = ZERO ! elastic scattering time (temporary) S_L = ZERO ! scattering length (temporary) ! I_E = 0 ! e-e calculation switch I_P = 0 ! e-p calculation switch I_I = 0 ! e-i calculation switch ! ! Relaxation time initialization ! IF(RT_TYPE == ' NO') THEN ! INV_EE = ZERO ! INV_EP = ZERO ! INV_EI = ZERO ! GO TO 10 ! ELSE IF(RT_TYPE == 'E-E') THEN ! INV_EP = ZERO ! INV_EI = ZERO ! I_E = 1 ! ELSE IF(RT_TYPE == 'E-P') THEN ! INV_EE = ZERO ! INV_EI = ZERO ! I_P = 1 ! ELSE IF(RT_TYPE == 'E-I') THEN ! INV_EE = ZERO ! INV_EP = ZERO ! I_I = 1 ! ELSE IF(RT_TYPE == 'ALL') THEN ! I_E = 1 ! I_P = 1 ! I_I = 1 ! END IF ! ! ! Computation of the electron-electron inverse relaxation time ! IF(EE_TYPE /= 'NONE' .AND. I_E == 1) THEN ! IF(DMN == '3D') THEN ! CALL EE_RT_3D(EE_TYPE,SQ_TYPE,GQ_TYPE,X,RS,T, & ! EK_SI,EI_C,TAU_EE) ! ELSE IF(DMN == '2D') THEN ! I_ET = 2 ! temporary CALL EE_RT_2D(EE_TYPE,RS,T,EK_SI,TAU_E,EPS_B,EI_C,DL, & ! I_ET,H_TYPE,TEI,TAU_EE) ! ELSE IF(DMN == '1D') THEN ! CALL EE_RT_1D(EE_TYPE,EK_SI,TEI,TAU_EE) ! END IF ! INV_EE = ONE / TAU_EE ! END IF ! ! ! Computation of the electron-phonon inverse relaxation time ! IF(EP_TYPE /= 'NONE' .AND. I_P == 1) THEN ! IF(DMN == '3D') THEN ! CALL EP_RT_3D(EP_TYPE,T,NA,MA,RA,DEBYE_T,EP_C,EK_SI, & ! RS,TAU_EP) ! ELSE IF(DMN == '2D') THEN ! INV_EP = ZERO ! not yet implemented ELSE IF(DMN == '1D') THEN ! INV_EP = ZERO ! not yet implemented END IF ! INV_EP = ONE / TAU_EP ! END IF ! ! ! Computation of the electron-impurity inverse relaxation time ! IF(EI_TYPE /= 'NONE' .AND. I_I == 1) THEN ! IF(DMN == '3D') THEN ! CALL EI_RT_3D(EI_TYPE,EK_SI,T,RS,NI,EPS_B,MASS_E,TAU_EI) ! ELSE IF(DMN == '2D') THEN ! INV_EI = ZERO ! not yet implemented ELSE IF(DMN == '1D') THEN ! INV_EI = ZERO ! not yet implemented END IF ! INV_EI = ONE / TAU_EI ! END IF ! ! 10 SUM_INV = INV_EE + INV_EP + INV_EI ! IF(SUM_INV /= ZERO) THEN ! TAU = ONE / SUM_INV ! ELSE ! TAU = INF ! END IF ! ! END SUBROUTINE RELAXATION_TIME ! ! Specific cases: ! !------ 1) electron-phonon case -------------------------------------------- ! !======================================================================= ! SUBROUTINE EP_RT_3D(EP_TYPE,T,NA,MA,RA,TH,CA,EE,RS,TAU) ! ! This subroutine computes the electron-phonon relaxation time ! in 3D systems ! ! ! Input parameters: ! ! * EP_TYPE : relaxation time functional for electron-phonon ! EP_TYPE = 'STEH' --> Steinberg high-T approximation ! EP_TYPE = 'STEL' --> Steinberg low-T approximation ! * T : temperature (in SI) ! * MA : mass of lattice atoms ! * RA : radius of atoms ! * TH : Debye temperature of the material in SI ! * CA : electron-phonon coupling ! * EE : energy of electron in SI ! * RS : Wigner-Seitz radius (in units of a_0) ! ! ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! IMPLICIT NONE ! CHARACTER (LEN = 4) :: EP_TYPE ! REAL (WP) :: T,NA,MA,RA,TH,CA,EE,RS REAL (WP) :: TAU ! IF(EP_TYPE == 'STEH') THEN ! TAU = STEH_RT_3D(T,MA,RA,TH,CA,EE,RS) ! ELSE IF(EP_TYPE == 'STEL') THEN ! TAU = STEL_RT_3D(T,MA,RA,TH,CA,RS) ! END IF ! ! END SUBROUTINE EP_RT_3D ! !======================================================================= ! FUNCTION STEH_RT_3D(T,MA,RA,TH,CA,EE,RS) ! ! This function computes Steinberg's high-temperature relaxation time. ! ! In this model; the electron interacts with acoustic lattice vibrations ! ! ! Reference: (1) M. S. Steinberg, Phys. Rev. 109, 1486 (1958) ! ! Input parameters: ! ! * T : temperature (in SI) ! * MA : mass of lattice atoms ! * RA : radius of atoms ! * TH : Debye temperature of the material in SI ! * CA : electron-phonon coupling ! * EE : energy of electron in SI ! * RS : Wigner-Seitz radius (in units of a_0) ! ! Output parameters: ! ! * STEH_RT_3D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 9 Oct 2020 ! ! USE REAL_NUMBERS, ONLY : TWO,THREE,FOUR,SIX,HALF,THIRD USE CONSTANTS_P1, ONLY : H_BAR,M_E,K_B USE PI_ETC, ONLY : PI,PI2 ! IMPLICIT NONE ! REAL (WP) :: T,NA,MA,RA,TH,CA,EE,RS REAL (WP) :: STEH_RT_3D REAL (WP) :: N0 REAL (WP) :: H,AL,GA,D REAL (WP) :: NUM,DEN1,DEN2 ! REAL (WP) :: SQRT ! AL = (FOUR * PI * THIRD)**THIRD ! (4 pi / 4)^{1/3} ! H = TWO * PI * H_BAR ! h = 2 pi * h_bar ! GA = AL * (FOUR * MA * RA * K_B * TH) / & ! (THREE * H * H * CA * CA) ! /\ ! D = (SIX * PI2)**(TWO * THIRD) * H_BAR * H_BAR / & ! D (FOUR * M_E * RA * RA) ! ! NUM = TWO * H_BAR * H_BAR * GA * TH * EE**1.5E0_WP ! DEN1 = D * SQRT(HALF * M_E) * T ! DEN2 = THREE - D / EE ! ! STEH_RT_3D = NUM / (DEN1 * DEN2) ! ref. 1 eq. (4.2) ! END FUNCTION STEH_RT_3D ! !======================================================================= ! FUNCTION STEL_RT_3D(T,MA,RA,TH,CA,RS) ! ! This function computes Steinberg's low-temperature relaxation time. ! ! In this model; the electron interacts with acoustic lattice vibrations ! ! ! Reference: (1) M. S. Steinberg, Phys. Rev. 109, 1486 (1958) ! ! Input parameters: ! ! * T : temperature (in SI) ! * MA : mass of lattice atoms ! * RA : radius of atoms ! * TH : Debye temperature of the material in SI ! * CA : electron-phonon coupling ! * RS : Wigner-Seitz radius (in units of a_0) ! ! Output parameters: ! ! * STEL_RT_3D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : ONE,TWO,THREE,FOUR,SIX,THIRD,LARGE USE CONSTANTS_P1, ONLY : H_BAR,M_E,K_B USE FERMI_SI, ONLY : EF_SI USE PI_ETC, ONLY : PI,PI2 USE SPECIFIC_INT_1, ONLY : STEI_INT ! IMPLICIT NONE ! REAL (WP) :: T,NA,MA,RA,TH,CA,RS REAL (WP) :: STEL_RT_3D REAL (WP) :: H,AL,GA,D,EF3,M3 REAL (WP) :: NUM,DEN1,DEN2 REAL (WP) :: X,J5,J7,X5 ! REAL (WP) :: SQRT ! AL = (FOUR * PI * THIRD)**THIRD ! (4 pi / 4)^{1/3} ! H = TWO * PI * H_BAR ! h = 2 pi * h_bar ! GA = AL * (FOUR * MA * RA * K_B * TH) / & ! (THREE * H * H * CA * CA) ! /\ ! D = (SIX * PI2)**(TWO * THIRD) * H_BAR * H_BAR / & ! D (FOUR * M_E * RA * RA) ! ! EF3 = EF_SI * EF_SI * EF_SI ! M3 = M_E * M_E * M_E ! ! ! Computation of the J_p(x) functions ! X = TH/T ! X5 = X * X * X * X * X ! ! NUM = H_BAR * H_BAR * GA * SQRT(EF3) * X5 ! DEN1 = THREE * SQRT(TWO * M3) * D ! ! ! Computation of the J_p(x) functions ! IF(T > ONE) THEN ! ! J5 = STEI_INT(X,5) ! J7 = STEI_INT(X,7) ! ! DEN2 = J5 - J7 / ( X*X / (TWO * EF_SI) ) ! ! ELSE ! ! J5 = STEI_INT(LARGE,5) ! ! DEN2 = J5 ! ! END IF ! ! STEL_RT_3D = NUM / (DEN1 * DEN2) ! ref. 1 eq. (4.9) ! ! ref. 1 eq. (4.10) END FUNCTION STEL_RT_3D ! !------ 2) electron-electron case -------------------------------------------- ! ! !======================================================================= ! SUBROUTINE EE_RT_3D(EE_TYPE,SQ_TYPE,GQ_TYPE,X,RS,T, & EK,U,TAU) ! ! This subroutine computes the electron-electron relaxation time ! in 3D systems ! ! ! Input parameters: ! ! * EE_TYPE : relaxation time functional for electron-phonon ! EE_TYPE = 'ALAR' --> Al'tshuler-Aronov approximation ! EE_TYPE = 'ALA2' --> Al'tshuler-Aronov approximation ! EE_TYPE = 'BACA' --> Barriga-Carrasco approximation ! EE_TYPE = 'FSTB' --> Fann et al approximation ! EE_TYPE = 'PIN1' --> Pines-Nozières 1st approximation ! EE_TYPE = 'PIN2' --> Pines-Nozières 2nd approximation ! EE_TYPE = 'QIV2' --> Qian-Vignale high-density limit ! EE_TYPE = 'QIVI' --> Qian-Vignale approximation ! EE_TYPE = 'RASM' --> Rammer-Smith approximation ! EE_TYPE = 'TAI0' --> Tanaka-Ichimaru approximation (q = 0) ! EE_TYPE = 'TAIQ' --> q-dependent Tanaka-Ichimaru approximation ! EE_TYPE = 'UTIC' --> Utsumi-Ichimaru approximation ! * SQ_TYPE : structure factor approximation (3D) ! * GQ_TYPE : local-field correction type (3D) ! * EC_TYPE : type of correlation energy functional (3D) ! * X : dimensionless factor --> X = q / (2 * k_F) ! * RS : Wigner-Seitz radius (in units of a_0) ! * T : temperature (SI) ! * EK : electron kinetic energy (SI) ! * U : strength of impurity scattering ! ! ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Dec 2020 ! IMPLICIT NONE ! CHARACTER (LEN = 4) :: EE_TYPE,GQ_TYPE CHARACTER (LEN = 3) :: SQ_TYPE ! REAL (WP) :: X,RS,T,EK,U,DC REAL (WP) :: TAU ! IF(EE_TYPE == 'ALAR') THEN ! TAU = ALAR_RT_3D(X,EK) ! ELSE IF(EE_TYPE == 'ALA2') THEN ! TAU = ALAR_RT_ND('3D',X,EK) ! ELSE IF(EE_TYPE == 'BACA') THEN ! TAU = BACA_RT_3D(RS,T) ! ELSE IF(EE_TYPE == 'FSTB') THEN ! TAU = FSTB_RT_3D(RS) ! ELSE IF(EE_TYPE == 'PIN1') THEN ! TAU = PIN1_RT_3D(EK,T) ! ELSE IF(EE_TYPE == 'PIN2') THEN ! TAU = PIN2_RT_3D(EK,T) ! ELSE IF(EE_TYPE == 'QIV2') THEN ! TAU = QIV2_RT_3D(EK,X,T) ! ELSE IF(EE_TYPE == 'QIVI') THEN ! TAU = QIVI_RT_3D(EK,X,T) ! ELSE IF(EE_TYPE == 'RASM') THEN ! TAU = RASM_RT_3D(EK,T,RS,U) ! ELSE IF(EE_TYPE == 'TAI0') THEN ! TAU = TAI0_RT_3D(RS,T) ! ELSE IF(EE_TYPE == 'TAIQ') THEN ! TAU = TAIQ_RT_3D(X,RS,T) ! ELSE IF(EE_TYPE == 'UTIC') THEN ! TAU = UTIC_RT_3D(X,RS,T,SQ_TYPE,GQ_TYPE) ! END IF ! ! END SUBROUTINE EE_RT_3D ! !======================================================================= ! FUNCTION ALAR_RT_3D(X,EK) ! ! This function computes Al'tshuler-Aronov approximation for ! the relaxation time in the presence of impurities for 3D systems ! ! Reference: (1) B. L. Al'tshuler and A. G. Aronov, JETP Lett. 30, ! 482-484 (1979) ! ! ! Input parameters: ! ! * X : dimensionless factor --> X = q / (2 * k_F) ! * EK : electron kinetic energy (SI) ! ! Output parameters: ! ! * ALAR_RT_3D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 30 Apr 2021 ! ! USE REAL_NUMBERS, ONLY : ONE,TWO,THREE,HALF,THIRD USE CONSTANTS_P1, ONLY : H_BAR USE FERMI_SI, ONLY : KF_SI,EF_SI,VF_SI USE PI_ETC, ONLY : PI2,PI3 USE SQUARE_ROOTS, ONLY : SQR2 USE SCREENING_VEC, ONLY : THOMAS_FERMI_VECTOR USE DAMPING_VALUES, ONLY : DC_TYPE,D_VALUE_1,POWER_1 USE DIFFUSION_COEFFICIENT USE EXTERNAL_DAMPING ! IMPLICIT NONE ! REAL (WP), INTENT(IN) :: X,EK REAL (WP) :: ALAR_RT_3D ! REAL (WP) :: ZK REAL (WP) :: D,L,TAU REAL (WP) :: POW REAL (WP) :: Q,NU0 REAL (WP) :: KS REAL (WP) :: NUM,DEN,XXX ! REAL (WP) :: SQRT ! ZK = EK - EF_SI ! xi_p in SI ! ! Computing the diffusion coefficient ! IF(DC_TYPE == 'EXTE') THEN ! CALL CALC_POWER(POWER_1,POW) ! D = D_VALUE_1 * POW ! ELSE ! CALL DIFFUSION_COEF(D) ! END IF ! ! L = THREE * D / VF_SI ! mean free path in SI TAU = L / VF_SI ! Q = X * TWO * KF_SI ! q in SI ! NU0 = HALF * KF_SI * KF_SI * KF_SI / (PI2 * EF_SI) ! DoS at Fermi level ! ! Computing the Thomas-Fermi screening vector ! CALL THOMAS_FERMI_VECTOR('3D',KS) ! ! IF( (Q < ONE / L) .AND. (KS * L > ONE) ) THEN ! ! NUM = ZK**1.5E0_WP ! DEN = 12.0E0_WP * SQR2 * PI3 * H_BAR * NU0 * & ! (H_BAR * D)**1.5E0_WP ! ! XXX = NUM / DEN ! ref. 1 eq. (8) ! ELSE ! ! NUM = PI2 * KS * ZK * ZK ! DEN = 64.0E0_WP * H_BAR * KF_SI * EF_SI ! ! XXX = NUM / DEN ! ref. 1 eq. (8) ! END IF ! ! ALAR_RT_3D = ONE / XXX ! ref. 1 eq. (8) ! END FUNCTION ALAR_RT_3D ! !======================================================================= ! FUNCTION ALAR_RT_ND(DMN,X,EK) ! ! This function computes Al'tshuler-Aronov approximation for ! the relaxation time in the presence of impurities ! ! Reference: (1) B. L. Al'tshuler and A. G. Aronov, in ! "Electron-Electron Interactions in Disordered ! Solids", A. L. Efros and M. Pollak eds. ! (North-Holland,1985) ! ! ! Input parameters: ! ! * DMN : system dimension ! * X : dimensionless factor --> X = q / (2 * k_F) ! * EK : electron kinetic energy (SI) ! ! Output parameters: ! ! * ALAR_RT_ND : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 30 Apr 2021 ! ! USE REAL_NUMBERS, ONLY : ONE,TWO,THREE,FOUR,HALF,FOURTH USE CONSTANTS_P1, ONLY : H_BAR USE FERMI_SI, ONLY : KF_SI,EF_SI USE PI_ETC, ONLY : PI,PI_INV USE SCREENING_VEC, ONLY : THOMAS_FERMI_VECTOR USE UTILITIES_1, ONLY : D,DOS_EF USE DAMPING_VALUES, ONLY : DC_TYPE,D_VALUE_1,POWER_1 USE DIFFUSION_COEFFICIENT USE EXTERNAL_DAMPING ! IMPLICIT NONE ! CHARACTER (LEN = 2) :: DMN ! REAL (WP), INTENT(IN) :: X,EK REAL (WP) :: ALAR_RT_ND ! REAL (WP) :: ZK REAL (WP) :: DC,POW,KS REAL (WP) :: NF,DI,DD REAL (WP) :: XX,DS,F,OD REAL (WP) :: K1,K2,NUM,DEN,XXX ! REAL (WP) :: SQRT,LOG,SIN ! ZK = EK - EF_SI ! xi_p in SI ! ! Computing the diffusion coefficient ! IF(DC_TYPE == 'EXTE') THEN ! CALL CALC_POWER(POWER_1,POW) ! DC = D_VALUE_1 * POW ! ELSE ! CALL DIFFUSION_COEF(DC) ! END IF ! ! ! Computing the Thomas-Fermi screening vector ! CALL THOMAS_FERMI_VECTOR(DMN,KS) ! ! ! Computing the density of state at Fermi level ! NF = DOS_EF(DMN) ! ! DI = D(DMN) ! DD = HALF * DI ! ! XX = TWO * KF_SI / KS ! ! IF(DMN == '2D') THEN ! DS = SQRT(XX * XX - ONE) ! F = PI_INV * LOG((XX + DS)/(XX - DS)) / DS ! ref. 1 eq. (3.36a) ELSE ! F= TWO * LOG(ONE + XX * XX)/(XX * XX) ! ref. 1 eq. (3.36b) END IF ! ! IF(DMN == '3D') THEN ! OD = FOURTH * PI_INV * PI_INV ! ELSE IF(DMN == '2D') THEN ! OD = HALF * PI_INV ! ELSE IF(DMN == '1D') THEN ! OD = PI_INV ! END IF ! ! K1 = ONE - THREE * F * ( ONE - (ONE + HALF * F)**DD ) & ! / (FOUR + F) ! K2 = OD / ( TWO * DI ** SIN(FOURTH * PI * DI) ) ! ! NUM = ZK**DD ! DEN = H_BAR * NF * (H_BAR * DC)**DD ! ! XXX = K1 * K2 * NUM / DEN ! ref. 1 eq. (4.4) ! ALAR_RT_ND = ONE / XXX ! ref. 1 eq. (4.4) ! END FUNCTION ALAR_RT_ND ! !======================================================================= ! FUNCTION BACA_RT_3D(RS,T) ! ! This function computes Barriga-Carrasco approximation for ! the relaxation time in the 3D case ! ! References: (1) M. D. Barriga-Carrasco, Phys. Rev. E 76, 016405 (2007) ! ! ! Input parameters: ! ! * RS : Wigner-Seitz radius (in units of a_0) ! * T : temperature (in SI) ! ! Output parameters: ! ! * BACA_RT_3D : relaxation time in seconds ! ! Note: result given in a.u. in ref. (1) eq. (17) --> h nu in Hartree ! ! --> h nu * Hartree in J ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : ONE,NINE USE PI_ETC, ONLY : PI,SQR_PI USE CONSTANTS_P2, ONLY : HARTREE USE CONSTANTS_P3, ONLY : PLANCK USE SQUARE_ROOTS, ONLY : SQR2 USE UTILITIES_1, ONLY : RS_TO_N0 USE PLASMON_SCALE_P, ONLY : NONID ! IMPLICIT NONE ! REAL (WP), INTENT(IN) :: RS,T REAL (WP) :: BACA_RT_3D ! REAL (WP) :: N0 REAL (WP) :: CL,NU ! REAL (WP) :: SQRT,LOG ! N0 = RS_TO_N0('3D',RS) ! ! CL = LOG(SQRT(N0)) / NONID**(1.5E0_WP) ! Coulomb logarithm ! NU = 16.0E0_WP * SQR2 * (NONID**(1.5E0_WP)) * CL / & ! ref. 1 eq. (17) (NINE * PI * SQR_PI) ! in a.u. ! BACA_RT_3D = ONE / (NU * HARTREE / PLANCK) ! in SI ! END FUNCTION BACA_RT_3D ! !======================================================================= ! FUNCTION FSTB_RT_3D(RS) ! ! This function computes Fann et al approximation for ! the relaxation time in the 3D case ! ! References: (1) W. S. Fann et al, Phys. Rev. B 46, 13592-13595 (1992) ! ! ! Input parameters: ! ! * RS : Wigner-Seitz radius (in units of a_0) ! ! Output parameters: ! ! * FSTB_RT : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE CONSTANTS_P1, ONLY : H_BAR USE PI_ETC, ONLY : PI2 USE SQUARE_ROOTS, ONLY : SQR3 USE PLASMON_ENE_SI ! IMPLICIT NONE ! REAL (WP), INTENT(IN) :: RS REAL (WP) :: FSTB_RT_3D ! FSTB_RT_3D = 128.0E0_WP * H_BAR / (PI2 * SQR3 * ENE_P_SI) ! ref. (1) eq. (2) ! END FUNCTION FSTB_RT_3D ! !======================================================================= ! FUNCTION PIN1_RT_3D(EK,T) ! ! This function computes Pines-Nozières approximation for ! the relaxation time in the 3D case ! ! Reference: (1) D. Pines and P. Nozi\`{e}res, ! "The Theory of Quantum Liquids -- Normal Fermi Liquids", ! (Benjamin, 1966) ! ! ! Input parameters: ! ! * EK : electron kinetic energy (SI) ! * T : temperature (SI) ! ! Output parameters: ! ! * PIN1_RT_3D : relaxation time in seconds ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Dec 2020 ! ! USE REAL_NUMBERS, ONLY : ONE,TWO,HALF USE PI_ETC, ONLY : PI2 USE CONSTANTS_P1, ONLY : H_BAR USE FERMI_SI, ONLY : KF_SI USE SQUARE_ROOTS, ONLY : SQR3 USE PLASMON_ENE_SI USE CHEMICAL_POTENTIAL, ONLY : MU ! IMPLICIT NONE ! REAL (WP), INTENT(IN) :: EK,T REAL (WP) :: PIN1_RT_3D ! REAL (WP) :: MM,ZK REAL (WP) :: OMP REAL (WP) :: XXX ! OMP = ENE_P_SI / H_BAR ! omega_p ! ! Computing the chemical potential ! MM = MU('3D',T) ! chemical potential is SI ! ZK = EK - MM ! xi_p in SI ! XXX = PI2 * SQR3 * OMP * (ZK / MM)**2 / 128.0E0_WP ! ! PIN1_RT_3D = ONE / XXX ! ref. (1) eq. (5.134c) ! END FUNCTION PIN1_RT_3D ! !======================================================================= ! FUNCTION PIN2_RT_3D(EK,T) ! ! This function computes Pines-Nozières approximation for ! the relaxation time in the 3D case ! ! Reference: (1) D. Pines and P. Nozi\`{e}res, ! "The Theory of Quantum Liquids -- Normal Fermi Liquids", ! (Benjamin, 1966) ! ! ! Input parameters: ! ! * EK : electron kinetic energy (SI) ! * T : temperature (SI) ! ! Output parameters: ! ! * PIN2_RT_3D : relaxation time in seconds ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Dec 2020 ! ! USE REAL_NUMBERS, ONLY : ONE,TWO,HALF USE PI_ETC, ONLY : PI_INV USE CONSTANTS_P1, ONLY : BOHR,H_BAR,E,M_E USE FERMI_SI, ONLY : KF_SI,VF_SI USE CHEMICAL_POTENTIAL, ONLY : MU USE SPECIFIC_INT_10 ! IMPLICIT NONE ! REAL (WP), INTENT(IN) :: EK,T REAL (WP) :: PIN2_RT_3D ! REAL (WP) :: MM,ZK,K REAL (WP) :: NUM,DEN,KOEF REAL (WP) :: INTG REAL (WP) :: XXX ! REAL (WP) :: SQRT ! ! Computing the chemical potential ! MM = MU('3D',T) ! chemical potential is SI ! ZK = EK - MM ! xi_p in SI K = SQRT(TWO * M_E * EK) / H_BAR ! k in SI ! NUM = TWO * PI_INV * E * E * KF_SI * ZK * ZK ! DEN = H_BAR * H_BAR * H_BAR * BOHR * VF_SI * VF_SI ! KOEF = NUM / DEN ! ! ! Computing the integral ! CALL INT_PINO(INTG) ! ! XXX = KOEF * INTG ! ! PIN2_RT_3D = ONE / XXX ! ref. (1) eq. (5.134b) ! END FUNCTION PIN2_RT_3D ! !======================================================================= ! FUNCTION QIVI_RT_3D(EK,X,T) ! ! This function computes Qian-Vignale approximation for ! the relaxation time in the 3D case ! ! Reference: (1) Z. Qian and G. Vignale, ! Phys. Rev. B 71, 075112 (2005) ! (2) J. Daligault, Phys. Rev. Lett. 119, 045002 (2017) ! ! ! Input parameters: ! ! * EK : electron kinetic energy (SI) ! * X : dimensionless factor --> X = q / (2 * k_F) ! * T : temperature (SI) ! ! Output parameters: ! ! * QIVI_RT_3D : relaxation time in seconds ! ! ! Note: There is a factor 1/ h_bar^6 missing in ref. (1) (see eq. (5) ref. (2)) ! ! In order to avoid dealing with too large or small numbers, we rewrite ! ! 3 4 ! m e m 1 ! ------- = -------- ------- ! 6 2 2 ! h_bar h_bar a ! 0 ! ! ! so that the first coefficient becomes ! ! 1 1 k 1 ! ------------ ---- ---- ------------- = K0 ! 2 pi h_bar EK KS (a_0 KS)^2 ! ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Dec 2020 ! ! USE MATERIAL_PROP, ONLY : RS USE REAL_NUMBERS, ONLY : ZERO,ONE,TWO,HALF,TTINY,INF USE CONSTANTS_P1, ONLY : BOHR,H_BAR,M_E,K_B USE FERMI_SI, ONLY : KF_SI USE PI_ETC, ONLY : PI,PI2,PI_INV USE SCREENING_TYPE USE SCREENING_VEC USE CHEMICAL_POTENTIAL, ONLY : MU ! IMPLICIT NONE ! REAL (WP), INTENT(IN) :: EK,X,T REAL (WP) :: QIVI_RT_3D ! REAL (WP) :: MM,ZK,K REAL (WP) :: KS,LD REAL (WP) :: ND,NE,BE REAL (WP) :: NUM,DEN,CC REAL (WP) :: R0,R1,R2 REAL (WP) :: K0,K1,K2 ! REAL (WP) :: SQRT,EXP,LOG,ATAN ! ! Computing the chemical potential ! MM = MU('3D',T) ! chemical potential is SI ! ZK = EK - MM ! xi_p in SI K = SQRT(TWO * M_E * EK) / H_BAR ! k in SI ! ! Pathological cases ! IF(EK <= MM) THEN ! QIVI_RT_3D = INF ! GO TO 10 ! END IF ! ! ! Computing the screening vector ! IF(SC_TYPE == 'NO') THEN ! CALL SCREENING_VECTOR('TF','3D',X,RS,T,KS) ! ELSE ! CALL SCREENING_VECTOR(SC_TYPE,'3D',X,RS,T,KS) ! in SI END IF ! ! R0 = HALF * PI_INV / H_BAR R1 = K / KS ! R2 = ONE / (BOHR * KS)**2 ! ! LD = TWO * KF_SI / KS ! lambda BE = ONE / (K_B * T) ! beta ! ! Direct contribution ND and exchange contribution NE ! IF(ZK < LOG(TTINY)/BE) THEN ! CC = EXP(- BE * ZK) ! ELSE ! <-- pathological CC = ZERO ! case END IF ! ! NUM = PI2 / (BE * BE) + ZK * ZK ! DEN = ONE + CC ! ! K0 = R0 * R1 * R2 / EK ! see Note K1 = NUM / DEN ! K2 = ONE / SQRT(LD * LD + TWO) ! ! ND = K0 * K1 * ( LD / (LD * LD + ONE) + ATAN(LD) ) ! ref. 1 eq. (29) NE = - K0 * K1 * K2 * ( HALF * PI - ATAN(SQRT(K2 / LD)) ) ! ref. 1 eq. (32) ! QIVI_RT_3D = ONE / (ND + NE) ! ref. 1 eq. (3) ! 10 RETURN ! END FUNCTION QIVI_RT_3D ! !======================================================================= ! FUNCTION QIV2_RT_3D(EK,X,T) ! ! This function computes the high-density limit Qian-Vignale approximation ! for the relaxation time in the 3D case (direct term onmy) ! ! Reference: (1) Z. Qian and G. Vignale, ! Phys. Rev. B 71, 075112 (2005) ! (2) J. Daligault, Phys. Rev. Lett. 119, 045002 (2017) ! ! ! Input parameters: ! ! * EK : electron kinetic energy (SI) ! * X : dimensionless factor --> X = q / (2 * k_F) ! * T : temperature (SI) ! ! Output parameters: ! ! * QIV2_RT_3D : relaxation time in seconds ! ! ! Note: There is a factor 1/ h_bar^6 missing in ref. (1) (see eq. (5) ref. (2)) ! ! In order to avoid dealing with too large or small numbers, we rewrite ! ! 3 4 ! m e m 1 ! ------- = -------- ------- ! 6 2 2 ! h_bar h_bar a ! 0 ! ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Dec 2020 ! ! USE MATERIAL_PROP, ONLY : RS USE REAL_NUMBERS, ONLY : ONE,TWO,HALF,FOURTH USE CONSTANTS_P1, ONLY : BOHR,H_BAR,M_E USE FERMI_SI, ONLY : KF_SI USE PI_ETC, ONLY : PI USE UTILITIES_1, ONLY : ALFA USE SCREENING_TYPE USE SCREENING_VEC USE CHEMICAL_POTENTIAL, ONLY : MU ! IMPLICIT NONE ! REAL (WP), INTENT(IN) :: EK,X,T REAL (WP) :: QIV2_RT_3D ! REAL (WP) :: MM,ZK,K REAL (WP) :: KS REAL (WP) :: R0,R1,R2,DEN ! REAL (WP) :: SQRT ! ! Computing the chemical potential ! MM = MU('3D',T) ! chemical potential is SI ! ZK = EK - MM ! xi_p in SI K = SQRT(TWO * M_E * EK) / H_BAR ! k in SI ! ! Computing the screening vector ! ! IF(SC_TYPE == 'NO') THEN ! CALL SCREENING_VECTOR('TF','3D',X,RS,T,KS) ! ELSE ! CALL SCREENING_VECTOR(SC_TYPE,'3D',X,RS,T,KS) ! in SI END IF ! ! R0 = FOURTH / H_BAR ! R1 = K / KS ! R2 = ONE / (BOHR * KS)**2 ! ! DEN = R0 * R1 * R2 * ZK * ZK / EK ! ! QIV2_RT_3D = ONE / DEN ! ! END FUNCTION QIV2_RT_3D ! !======================================================================= ! FUNCTION RASM_RT_3D(EK,T,RS,U) ! ! This function computes Rammer-Smith approximation for ! the e-e relaxation time in the 3D case ! ! Reference: (1) J. Rammer and H. Smith, Rev. Mod. Phys. 58, 323 (1986) ! ! Note: uses the e-impurity scattering time as a reference time ! ! ! Input parameters: ! ! * EK : electron energy (SI) ! * T : temperature (in SI) ! * RS : Wigner-Seitz radius (in units of a_0) ! * U : strength of impurity scattering ! ! Output parameters: ! ! * RASM_RT_3D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : ONE,THREE,FOUR,SIX,EIGHT USE CONSTANTS_P1, ONLY : E USE FERMI_SI, ONLY : KF_SI,VF_SI USE PI_ETC, ONLY : PI,PI2,PI3 USE SCREENING_VEC, ONLY : THOMAS_FERMI_VECTOR USE CHEMICAL_POTENTIAL, ONLY : MU USE UTILITIES_1, ONLY : DOS_EF ! IMPLICIT NONE ! REAL (WP) :: EK,T,RS,U REAL (WP) :: RASM_RT_3D REAL (WP) :: KS,IS,NF REAL (WP) :: MM,L,NUM,DEN REAL (WP) :: EPS,ZZ ! REAL (WP) :: SQRT ! EPS = 1.E-2_WP ! ZZ = 2.612375348685488343348567567924071630571E0_WP ! zeta(3/2) ! ! Computing the Thomas-Fermi screening vector ! CALL THOMAS_FERMI_VECTOR('3D',KS) ! ! ! Computing the chemical potential ! MM = MU('3D',T) ! ! ! Computing the density of states at Fermi level ! NF = DOS_EF('3D') ! ! ! Impurity scattering rate (1/tau) ! IS = PI * U * U * NF ! ref. 1 eq. (4.13) ! ! Mean free path ! L = VF_SI / IS ! ! IF(T < EPS) THEN ! zero temperature ! IF(EK < IS) THEN ! ! NUM = FOUR * SQRT(IS) * KF_SI * KF_SI * L * L ! DEN = EK * SQRT(SIX * EK) ! ! RASM_RT_3D = NUM / DEN ! ref. 1 eq. (4.73) ! ELSE ! ! IF(KS < KF_SI) THEN ! ! NUM = 64.0E0_WP * KF_SI * MM ! DEN = PI2 * KS * EK * EK ! ! RASM_RT_3D = NUM / DEN ! ref. 1 eq. (4.74) ! ELSE ! ! NUM = 16.0E0_WP * MM ! DEN = PI * EK * EK ! ! RASM_RT_3D = NUM / DEN ! ref. 1 eq. (4.74) ! END IF ! END IF ! ! ELSE ! ! IF(T < IS) THEN ! ! NUM = 16.0E0_WP * KF_SI * L * MM ! DEN = THREE * SQRT(THREE * PI) * ZZ * & ! (SQRT(EIGHT) - ONE) * SQRT(IS * T * T * T ) ! ! RASM_RT_3D = NUM / DEN ! ref. 1 eq. (4.76) ! ELSE ! ! IF(KS < KF_SI) THEN ! ! NUM = EIGHT * VF_SI * VF_SI * KS ! DEN = PI3 * E * E * T * T ! ! RASM_RT_3D = NUM / DEN ! ref. 1 eq. (4.77) ! ELSE ! ! NUM = 16.0E0_WP * MM ! DEN = PI3 * T * T ! ! RASM_RT_3D = NUM / DEN ! ref. 1 eq. (4.77) ! END IF ! END IF ! ! END IF ! ! END FUNCTION RASM_RT_3D ! !======================================================================= ! FUNCTION TAI0_RT_3D(RS,T) ! ! This function computes Tanaka-Ichimaru approximation for ! the relaxation time at q = 0 in the 3D case ! ! References: (1) S. Tanaka and S. Ichimaru, Phys. Rev. A 35, ! 4743-4754 (1987) ! (2) S. Ichimaru, Rev. Mod. Phys. 54, 1017-1059 (1982) ! ! ! Validity: This relaxation time is valid for strongly coupled, ! classical one-component plasma ! ! ! Input parameters: ! ! * RS : Wigner-Seitz radius (in units of a_0) ! * T : temperature (in SI) ! ! Output parameters: ! ! * TAI0_RT_3D : relaxation time in seconds ! ! ! Formula: Following the derivation in the user's guide, we obtain ! ! ! 1 ! TAU = ETA_L x --------------------------------------------------- ! n k_B T + 1 - n h_bar omega_p^2 Gamma_I ! ----- --------------------------- ! K_T omega_F ! ! ! ! Author : D. Sébilleau ! ! Last modified : 9 Dec 2020 ! ! USE REAL_NUMBERS, ONLY : ONE,TWO,FOUR,HALF,THIRD USE PI_ETC, ONLY : PI_INV USE CONSTANTS_P1, ONLY : H_BAR,K_B USE FERMI_SI, ONLY : EF_SI,KF_SI USE UTILITIES_1, ONLY : ALFA,RS_TO_N0 USE VISCOSITY, ONLY : LHPO_VISC_3D USE ASYMPT, ONLY : G0,GI USE PLASMON_ENE_SI ! IMPLICIT NONE ! REAL (WP), INTENT(IN) :: RS,T REAL (WP) :: TAI0_RT_3D ! REAL (WP) :: ETA,ETA_L REAL (WP) :: N0,ALPHA,KBT REAL (WP) :: OMP,OMF REAL (WP) :: E1,E2,E3 REAL (WP) :: NUM,DEN,TAU_0 ! ! Computing the viscosity (LHPO case only) ! ETA = LHPO_VISC_3D(RS,T) ! ! ETA_L = FOUR * THIRD * ETA ! longitudinal viscosity ! ! Computing the electron density ! N0 = RS_TO_N0('3D',RS) ! ! ALPHA = ALFA('3D') ! ! KBT = K_B * T ! OMP = ENE_P_SI / H_BAR ! OMF = EF_SI / H_BAR ! ! ! Computing the energies in the denominator ! E1 = KBT ! E2 = TWO * THIRD * EF_SI * (ONE - FOUR * PI_INV * & ! ALPHA * RS * G0) ! E3 = - HALF * ENE_P_SI * OMP * GI / OMF ! ! NUM = ETA_L ! DEN = N0 * (E1 + E2 + E3) ! ! TAI0_RT_3D = NUM / DEN ! ! END FUNCTION TAI0_RT_3D ! !======================================================================= ! FUNCTION TAIQ_RT_3D(X,RS,T) ! ! This function computes the relaxation time as a function of q ! ! References: (1) S. Tanaka and S. Ichimaru, Phys. Rev. A 35, ! 4743-4754 (1987) ! ! ! Validity: This relaxation time is valid for strongly coupled, ! classical one-component plasma ! ! ! Input parameters: ! ! * X : dimensionless factor --> X = q / (2 * k_F) ! * RS : Wigner-Seitz radius (in units of a_0) ! * T : temperature (SI) ! ! Output parameters: ! ! * TAIQ_RT_3D : relaxation time in seconds ! ! ! ! Author : D. Sébilleau ! ! Last modified : 9 Dec 2020 ! ! USE REAL_NUMBERS, ONLY : ONE,TWO USE FERMI_SI, ONLY : KF_SI USE CONSTANTS_P1, ONLY : BOHR USE DAMPING_VALUES, ONLY : QD_TYPE,ZETA ! IMPLICIT NONE ! REAL (WP), INTENT(IN) :: X,RS,T REAL (WP) :: Q_SI,Q_FACT,XX,X2,TAU_0 REAL (WP) :: TAIQ_RT_3D ! REAL (WP) :: EXP ! Q_SI = TWO * X * KF_SI ! q in SI ! XX = RS * BOHR * Q_SI / ZETA ! X2 = XX * XX ! ! ! Computing the q-dependent factor ! IF(QD_TYPE == 'NONE') THEN ! ! Q_FACT = ONE ! ! ELSE IF(QD_TYPE == 'GAUS') THEN ! ! Q_FACT = EXP(- X2) ! ! ELSE IF(QD_TYPE == 'LORE') THEN ! ! Q_FACT = ONE / (ONE + X2) ! ! END IF ! ! ! Computing the q = 0 value (TAIC case only) ! TAU_0 = TAI0_RT_3D(RS,T) ! ! TAIQ_RT_3D = TAU_0 * Q_FACT ! ! END FUNCTION TAIQ_RT_3D ! !======================================================================= ! FUNCTION UTIC_RT_3D(X,RS,T,SQ_TYPE,GQ_TYPE) ! ! This function computes low-q Utsumi-Ichimaru approximation for ! the relaxation time in the 3D case ! ! Reference: (1) K. Utsumi and S. Ichimaru, ! Phys. Rev. B 22, 1522-1533 (1980) ! ! ! Input parameters: ! ! * X : dimensionless factor --> X = q / (2 * k_F) ! * RS : Wigner-Seitz radius (in units of a_0) ! * T : temperature (in SI) ! * SQ_TYPE : structure factor approximation (3D) ! * GQ_TYPE : local-field correction type (3D) ! ! Output parameters: ! ! * UTIC_RT : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 2 Dec 2020 ! ! USE REAL_NUMBERS, ONLY : TWO,FOUR,HALF USE CONSTANTS_P1, ONLY : H_BAR,M_E USE FERMI_SI, ONLY : EF_SI,KF_SI USE PI_ETC, ONLY : PI USE SQUARE_ROOTS, ONLY : SQR3 USE SCREENING_VEC, ONLY : THOMAS_FERMI_VECTOR USE SPECIFIC_INT_2, ONLY : INT_SQM1 USE PLASMON_ENE_SI ! IMPLICIT NONE ! REAL (WP), INTENT(IN) :: X,RS,T REAL (WP) :: UTIC_RT_3D ! REAL (WP) :: MAX_X REAL (WP) :: Q_SI REAL (WP) :: OMQ,OMP,OMF REAL (WP) :: KS,X_TF REAL (WP) :: IN REAL (WP) :: NUM,DEN ! INTEGER :: IN_MODE,NSIZE,LL ! CHARACTER (LEN = 4) :: GQ_TYPE CHARACTER (LEN = 3) :: SQ_TYPE ! IN_MODE = 3 ! ! MAX_X = TWO ! integral upper bound NSIZE = 200 ! number of integration points LL = 0 ! unused parameter for INT_SQM1 ! Q_SI = TWO * X * KF_SI ! q in SI ! OMQ = HALF * H_BAR * Q_SI * Q_SI / M_E ! omega_q in SI OMP = ENE_P_SI / H_BAR ! omega_p in SI OMF = EF_SI / H_BAR ! omega_F in SI ! ! Computing Thomas-Fermi screening vector ! CALL THOMAS_FERMI_VECTOR('3D',KS) ! ! X_TF = KS / KF_SI ! q_{TF} / k_F ! ! Computing the integral ! CALL INT_SQM1(NSIZE,MAX_X,IN_MODE,RS,T,X_TF,LL,SQ_TYPE, &! GQ_TYPE,IN) ! ! NUM = - FOUR * SQR3 * OMF * KF_SI ! DEN = PI * OMQ * OMP * KS * IN ! ! UTIC_RT_3D = NUM / DEN ! ref. 1 eq. (5.4) ! END FUNCTION UTIC_RT_3D ! !======================================================================= ! SUBROUTINE EE_RT_2D(EE_TYPE,RS,T,EK,TAU_E,EPS,U,B,I_ET, & H_TYPE,TEI,TAU) ! ! This subroutine computes the electron-electron relaxation time ! in 2D systems ! ! ! Input parameters: ! ! * EE_TYPE : relaxation time functional for electron-phonon ! EE_TYPE = 'FUAB' --> Fukuyama-Abrahams approx. ! EE_TYPE = 'LUFO' --> Lucas-Fong approx. -graphene- ! EE_TYPE = 'QIVI' --> Quinn-Vignale approx. ! EE_TYPE = 'RASM' --> Rammer-Smith approx. ! EE_TYPE = 'REWI' --> Reizer-Wilkins approx. ! EE_TYPE = 'SHAS' --> Sharma-Ashraf approx. ! EE_TYPE = 'ZHDA' --> Zhang-Das Sarma approx. ! * RS : Wigner-Seitz radius (in units of a_0) ! * T : temperature (SI) ! * EK : electron kinetic energy (SI) ! * TAU_E : ELASTIC scattering time (SI) ! * EPS : substrate dielectric constant ! * U : strength of impurity scattering ! * B : interlayer distance (SI) ! * I_ET : switch ! I_ET = 1 --> relaxation time = f(T) ! I_ET = 2 --> relaxation time = f(EK) ! * H_TYPE : heterostructure type ! H_TYPE = 'SSL1' semiconductor superlattice of type I ! H_TYPE = 'SSL2' semiconductor superlattice of type II ! * TEI : electron-impurity collision time ! ! ! Internal parameter ! ! * I_F : switch for choice of formula (for 'LUFO') ! I_F = 1 --> eq. (4) ref. 1 graphene ! I_F = 2 --> eq. (20) ref. 1 2D Fermi liquid ! I_F = 3 --> eq. (129) ref. 1 collinear scattering ! I_F = 4 --> eq. (134) ref. 1 imbalance mode ! I_F = 5 --> eq. (143) ref. 1 graphene in Fermi liquid limit ! ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! IMPLICIT NONE ! CHARACTER (LEN = 4) :: EE_TYPE,H_TYPE ! REAL (WP) :: RS,T,EK,TAU_E,EPS,U,B,TEI REAL (WP) :: TAU ! INTEGER :: I_ET,I_F ! I_F=1 ! ! IF(EE_TYPE == 'FUAB') THEN ! TAU=FUAB_RT_2D(TAU_E,T) ! ELSE IF(EE_TYPE == 'LUFO') THEN ! TAU=LUFO_RT_2D(T,EPS,I_F) ! ELSE IF(EE_TYPE == 'QIVI') THEN ! TAU=QIVI_RT_2D(EK,T,RS) ! ELSE IF(EE_TYPE == 'RASM') THEN ! TAU=RASM_RT_2D(EK,T,RS,U) ! ELSE IF (EE_TYPE == 'REWI') THEN ! TAU=REWI_RT_2D(EK,T,RS,B,I_ET,H_TYPE) ! ELSE IF(EE_TYPE == 'SHAS') THEN ! TAU=SHAS_RT_2D(EK,TEI) ! ELSE IF(EE_TYPE == 'ZHDA') THEN ! TAU=ZHDA_RT_2D(EK,T) ! END IF ! ! END SUBROUTINE EE_RT_2D ! !======================================================================= ! FUNCTION FUAB_RT_2D(TAU,T) ! ! This function computes Fukuyama-Abrahams approximation for ! the INELASTIC scattering time in 2D disordered metals ! ! Reference: (1) H. Fukuyama and E. Abrahams, Phys. Rev. B 27, ! 5976-5980 (1983) ! ! ! Input parameters: ! ! * TAU : ELASTIC scattering time (SI) ! * T : temperature (SI) ! ! Output parameters: ! ! * FUAB_RT_2D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : TWO,FOUR,HALF USE CONSTANTS_P1, ONLY : H_BAR,M_E,E,K_B USE FERMI_SI, ONLY : EF_SI,VF_SI USE PI_ETC, ONLY : PI ! IMPLICIT NONE ! REAL (WP) :: TAU,T REAL (WP) :: FUAB_RT_2D REAL (WP) :: KBT,HBT,D,T1,KK ! REAL (WP) :: DLOG ! KBT=K_B*T ! HBT=H_BAR/TAU ! D=HALF*VF_SI*VF_SI*TAU ! diffusion coefficient KK=TWO*M_E*E*E ! T1=FOUR*EF_SI*EF_SI*TAU*TAU*D*KK*KK ! ref. 1 eq. (2.25) ! IF(KBT > HBT) THEN ! FUAB_RT_2D=HALF*PI*KBT*KBT*DLOG(EF_SI/KBT)/EF_SI ! ref. 1 eq. (3.1) ELSE ! FUAB_RT_2D=HALF*KBT*DLOG(T1/KBT)/(EF_SI*TAU) ! ref. 1 eq. (3.2) END IF ! ! END FUNCTION FUAB_RT_2D ! !======================================================================= ! FUNCTION LUFO_RT_2D(T,EPS,I_F) ! ! This function computes Lucas-Fong 2D relaxation time in graphene ! due to e-e interactions ! ! ! Reference: (1) A. Lucas and K. C. Fong, J. Phys.: Condens. Matter ! 30, 053001 (2018) ! ! Input parameters: ! ! * T : temperature (in SI) ! * EPS : substrate dielectric constant ! * I_F : switch for choice of formula ! I_F = 1 --> eq. (4) ref. 1 graphene ! I_F = 2 --> eq. (20) ref. 1 2D Fermi liquid ! I_F = 3 --> eq. (129) ref. 1 collinear scattering ! I_F = 4 --> eq. (134) ref. 1 imbalance mode ! I_F = 5 --> eq. (143) ref. 1 graphene in Fermi liquid limit ! ! Output parameters: ! ! * LUFO_RT_2D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 23 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : ONE USE CONSTANTS_P1, ONLY : H_BAR,E,K_B USE FERMI_SI, ONLY : EF_SI,VF_SI USE PI_ETC, ONLY : PI ! IMPLICIT NONE ! REAL (WP) :: T,EPS REAL (WP) :: LUFO_RT_2D REAL (WP) :: AL,NEE ! REAL (WP) :: MIN,DLOG ! INTEGER :: I_F ! AL=E*E/(EPS*H_BAR*VF_SI) ! eff. fine struct. const. ! IF(I_F == 1) THEN ! NEE=AL*AL*K_B*T*MIN(ONE,K_B*T/EF_SI)/H_BAR ! LUFO_RT_2D=ONE/NEE ! ref. 1 eq. (4) ELSE IF(I_F == 2) THEN ! LUFO_RT_2D=H_BAR*EF_SI/(AL*AL*K_B*T*K_B*T) ! ref. 1 eq. (20) ELSE IF(I_F == 3) THEN ! NEE=AL*AL*K_B*T/(H_BAR*DLOG(ONE/AL)) ! LUFO_RT_2D=ONE/NEE ! ref. 1 eq. (129) ELSE IF(I_F == 4) THEN ! NEE=AL*AL*AL*AL*K_B*T/H_BAR ! LUFO_RT_2D=ONE/NEE ! ref. 1 eq. (134) ELSE IF(I_F == 5) THEN ! NEE=T*T/DLOG(K_B*T/EF_SI) ! LUFO_RT_2D=ONE/NEE ! ref. 1 eq. (143) END IF ! ! END FUNCTION LUFO_RT_2D ! !======================================================================= ! FUNCTION QIVI_RT_2D(EK,T,RS) ! ! This function computes Qian-Vignale approximation for ! the relaxation time in the 2D case ! ! Reference: (1) Z. Qian and G. Vignale, ! Phys. Rev. B 71, 075112 (2005) ! ! ! Input parameters: ! ! * EK : electron energy (SI) ! * T : temperature (in SI) ! * RS : Wigner-Seitz radius (dimensionless factor) ! ! Output parameters: ! ! * QIVI_RT_2D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : ONE,TWO,HALF,FOURTH USE CONSTANTS_P1, ONLY : K_B USE FERMI_SI, ONLY : EF_SI USE PI_ETC, ONLY : PI,PI_INV USE SQUARE_ROOTS, ONLY : SQR2 USE SCREENING_VEC, ONLY : THOMAS_FERMI_VECTOR USE CHEMICAL_POTENTIAL, ONLY : MU ! IMPLICIT NONE ! REAL (WP) :: EK,T,RS REAL (WP) :: QIVI_RT_2D REAL (WP) :: MM,ZK,KS,KT REAL (WP) :: NN REAL (WP) :: K0,K1,K2 ! REAL (WP) :: DLOG ! ! Computing the chemical potential ! MM=MU('2D',T) ! ! ZK=EK-MM ! KT=K_B*T ! ! ! Computing the Thomas-Fermi screening vector ! CALL THOMAS_FERMI_VECTOR('2D',KS) ! ! K0=FOURTH*ZK*ZK*PI_INV/EF_SI ! K1=0.75E0_WP - ( RS/(SQR2 * (RS+SQR2)**2) ) ! ref. 1 eq. (61) ! IF(KT < ZK) THEN ! ! K0=FOURTH*ZK*ZK*PI_INV/EF_SI ! K2=TWO*EF_SI/ZK ! NN=K0*K1*DLOG(K2) ! ref. 1 eq. (60) ! ELSE ! ! K0=-0.125E0_WP*PI*KT*KT/EF_SI ! K2=HALF*KT/EF_SI ! NN=K0*K1*DLOG(K2) ! ref. 1 eq. (72) ! END IF ! ! QIVI_RT_2D=ONE/NN ! ! END FUNCTION QIVI_RT_2D ! !======================================================================= ! FUNCTION RASM_RT_2D(EK,T,RS,U) ! ! This function computes Rammer-Smith approximation for ! the e-e relaxation time in the 2D case ! ! Reference: (1) J. Rammer and H. Smith, Rev. Mod. Phys. 58, 323 (1986) ! ! Note: uses the e-impurity scattering time as a reference time ! ! ! Input parameters: ! ! * EK : electron energy (SI) ! * T : temperature (in SI) ! * RS : Wigner-Seitz radius (in units of a_0) ! * U : strength of impurity scattering ! ! Output parameters: ! ! * RASM_RT_3D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : TWO,EIGHT,HALF USE CONSTANTS_P1, ONLY : M_E USE FERMI_SI, ONLY : VF_SI USE PI_ETC, ONLY : PI,PI2 USE SCREENING_VEC, ONLY : THOMAS_FERMI_VECTOR USE CHEMICAL_POTENTIAL, ONLY : MU USE UTILITIES_1, ONLY : RS_TO_N0 ! IMPLICIT NONE ! REAL (WP) :: EK,T,RS,U REAL (WP) :: RASM_RT_2D REAL (WP) :: KS,IS,MM REAL (WP) :: N0,NUM,DEN REAL (WP) :: D,T1 REAL (WP) :: EPS ! REAL (WP) :: DLOG,DABS ! EPS=1.0E-2_WP ! ! ! Computing the Thomas-Fermi screening vector ! CALL THOMAS_FERMI_VECTOR('2D',KS) ! ! ! Computing the chemical potential ! MM=MU('2D',T) ! ! ! Computing the electron density ! N0=RS_TO_N0('2D',RS) ! ! ! Impurity scattering rate (1/tau) ! IS=PI*U*U*N0 ! ref. 1 eq. (4.13) ! ! 2D diffusion coefficient ! D=HALF*VF_SI*VF_SI/IS ! ! T1=(TWO*M_E*D)**2 * D*KS*KS ! ! IF(T < EPS) THEN ! zero temperature ! NUM=EIGHT*PI2*MM ! DEN=EK*EK*DLOG(DABS(EK/MM)) ! RASM_RT_2D=NUM/DEN ! ref. 1 eq. (4.81) ! ELSE ! IF(T < IS) THEN ! NUM=TWO*M_E*D ! DEN=T*DLOG(T1/T) ! RASM_RT_2D=NUM/DEN ! ref. 1 eq. (4.83) ELSE ! NUM=TWO*PI*MM ! DEN=T*T*DLOG(MM/T) ! RASM_RT_2D=NUM/DEN ! ref. 1 eq. (4.84) END IF ! ! END IF ! ! END FUNCTION RASM_RT_2D ! !======================================================================= ! FUNCTION REWI_RT_2D(EK,T,RS,B,I_ET,H_TYPE) ! ! This function computes Reizer-Wilkins approximation for ! the electron-electron relaxation time in heterostructures ! ! Reference: (1) M. Reizer and J. W. Wilkins, Phys. Rev. B 55, ! R7363-R7366 (1997) ! ! ! Input parameters: ! ! * EK : electron energy (SI) ! * T : temperature (SI) ! * RS : Wigner-Seitz radius (in units of a_0) ! * B : interlayer distance (SI) ! * I_ET : switch ! I_ET = 1 --> relaxation time = f(T) ! I_ET = 2 --> relaxation time = f(EK) ! * H_TYPE : heterostructure type ! H_TYPE = 'SSL1' semiconductor superlattice of type I ! H_TYPE = 'SSL2' semiconductor superlattice of type II ! ! Output parameters: ! ! * REWI_RT_2D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : ONE,TWO,FOUR USE CONSTANTS_P1, ONLY : K_B USE FERMI_SI, ONLY : EF_SI,KF_SI USE PI_ETC, ONLY : PI,PI_INV USE SCREENING_VEC, ONLY : DEBYE_VECTOR ! IMPLICIT NONE ! CHARACTER (LEN = 4) :: H_TYPE ! INTEGER :: I_ET,LOGF ! REAL (WP) :: EK,T,RS,B REAL (WP) :: REWI_RT_2D REAL (WP) :: K0,K1,KD,KBT,KDB,TKDB,PB REAL (WP) :: CF,NUM,DEN,NEE ! REAL (WP) :: DLOG ! LOGF=6 ! ! KBT=K_B*T ! K0=KBT/EF_SI ! K1=EK/EF_SI ! PB=MIN(TWO*KF_SI*B,ONE) ! ref. 1 eq. (19) ! ! Computing the Debye screening vector ! CALL DEBYE_VECTOR('2D',T,RS,KD) ! ! KDB=KD*B ! TKDB=KD*B+KD*B ! ! IF(H_TYPE == 'SSL1') THEN ! IF(I_ET == 1) THEN ! CF=0.125E0_WP*PI*KBT*KBT/EF_SI ! NUM=TWO*(TWO*KF_SI-K0)*KD ! DEN=(TWO*KF_SI+KD)*(KD+K0) ! NEE=CF*( DLOG(FOUR*EF_SI/KBT) - & ! DLOG(TWO*KF_SI/(KD+K0)) - NUM/DEN & ! ) ! ref. 1 eq. (13) ELSE IF(I_ET == 2) THEN ! CF=0.125E0_WP*EK*EK*PI_INV/EF_SI ! NUM=TWO*(TWO*KF_SI-K1)*KD ! DEN=(TWO*KF_SI+KD)*(KD+K1) ! NEE=CF*( DLOG(FOUR*EF_SI/KBT) - & ! ref. 1 eq. (14) DLOG(TWO*KF_SI/(KD+K1)) - NUM/DEN & ! ) ! END IF ! ELSE IF(H_TYPE == 'SSL2') THEN ! IF(I_ET == 1) THEN ! CF=PI*KBT*KBT/( 32.0E0_WP*EF_SI*(ONE+KDB)*(ONE+KDB) ) ! NUM=FOUR*(ONE+(ONE+TKDB)**2) * KDB * (PB-K0*B)*(ONE+KDB) ! DEN=(PB+TKDB*(ONE+KDB))*(K0*B+TKDB*(ONE+KDB)) ! NEE=CF*( ( TWO+(ONE+TKDB)**2 ) * & ! ( DLOG(TWO*EF_SI*PB/(KBT*KF_SI*B)) - & ! ref. 1 eq. (19) DLOG(PB+TKDB*(ONE+KDB)/(K0*B+TKDB*(ONE+KDB)))& ! ) - NUM/DEN & ! ) ! ELSE IF(I_ET == 2) THEN ! WRITE(LOGF,10) ! STOP ! END IF ! END IF ! ! REWI_RT_2D=ONE/NEE ! ! ! Format ! 10 FORMAT(//,5X,'<<<<< I_ET=2 not defined for SSL2 >>>>>',//) ! END FUNCTION REWI_RT_2D ! !======================================================================= ! FUNCTION SHAS_RT_2D(EK,TEI) ! ! This function computes Sharma-Ashraf approximation for ! the relaxation time in the presence of a random ! impurity potential for a quantum well ! ! Reference: (1) A. C. Sharma and S. S. Z. Ashraf, J. Phys.: ! Condens. Matter 16, 3117-3132 (2004) ! ! ! Input parameters: ! ! * EK : electron energy (SI) ! * TEI : electron-impurity collision time ! ! Output parameters: ! ! * SHAS_RT_2D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : FOUR USE CONSTANTS_P1, ONLY : H_BAR USE FERMI_SI, ONLY : EF_SI,KF_SI USE PI_ETC, ONLY : PI USE SCREENING_VEC, ONLY : THOMAS_FERMI_VECTOR ! IMPLICIT NONE ! REAL (WP) :: EK,TEI REAL (WP) :: SHAS_RT_2D REAL (WP) :: KS,K,X,S,K2,S2,X2,NN REAL (WP) :: NU1,NU2,DE1,DE2 ! REAL (WP) :: DLOG ! ! Computing the Thomas-Fermi screening vector ! CALL THOMAS_FERMI_VECTOR('2D',KS) ! ! ! Dimensionless variables ! K=KS/KF_SI ! X=EK/EF_SI ! S=H_BAR/(TEI*EF_SI) ! K2=K*K ! S2=S*S ! X2=X*X ! ! NU1=FOUR*K2+S2 ! DE1=NU1-X2 ! NU2=NU1-X2 ! DE2=S2+S2 ! NN=NU1*DLOG(NU1/DE1) + X2*DLOG(NU2/DE2) - X2 ! ! SHAS_RT_2D=16.0E0_WP*PI*H_BAR/(NN*EF_SI) ! ref. 1 eq. (17) ! END FUNCTION SHAS_RT_2D ! !======================================================================= ! FUNCTION ZHDA_RT_2D(EK,T) ! ! This function computes Zhang-Das Sarma approximation for ! the relaxation time in the 2D case ! ! References: (1) L. Zhang and S. Das Sarma, Phys. Rev. B 53, ! 9964-9967 (1996) ! ! Input parameters: ! ! * EK : electron energy in J ! * T : temperature (in SI) ! ! Output parameters: ! ! * ZHDA_RT_2D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : TWO,FOURTH USE CONSTANTS_P1, ONLY : H_BAR,K_B USE FERMI_SI, ONLY : EF_SI USE PI_ETC, ONLY : PI,PI_INV ! IMPLICIT NONE ! REAL (WP) :: EK,T REAL (WP) :: ZHDA_RT_2D REAL (WP) :: R1,R2,R3,DE REAL (WP) :: GAMMA ! REAL (WP) :: DLOG ! DE=EK-EF_SI ! energy with respect to E_F R1=K_B*T/EF_SI ! R2=DE/EF_SI ! R3=K_B*T/DE ! ! IF(R3 > DE) THEN ! GAMMA=-FOURTH*PI*EF_SI*R1*R1*DLOG(R1)/H_BAR ! ref. (1) eq. (7) ELSE ! GAMMA=-FOURTH*PI_INV*EF_SI*R2*R2*DLOG(R2)/H_BAR ! ref. (1) eq. (8) END IF ! ! ZHDA_RT_2D=TWO/GAMMA ! ! END FUNCTION ZHDA_RT_2D ! !======================================================================= ! SUBROUTINE EE_RT_1D(EE_TYPE,EK,TEI,TAU) ! ! This subroutine computes the electron-electron relaxation time ! in 1D systems ! ! ! Input parameters: ! ! * EE_TYPE : relaxation time functional for electron-phonon ! EE_TYPE = 'SHAS' --> Sharma-Ashraf approx. ! ! * EK : electron energy (SI) ! * TEI : electron-impurity collision time ! ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! IMPLICIT NONE ! CHARACTER (LEN = 4) :: EE_TYPE ! REAL (WP) :: EK,TEI REAL (WP) :: TAU ! IF(EE_TYPE == 'SHAS') THEN ! TAU=SHAS_RT_1D(EK,TEI) ! END IF ! ! END SUBROUTINE EE_RT_1D ! !======================================================================= ! FUNCTION SHAS_RT_1D(EK,TEI) ! ! This function computes Sharma-Ashraf approximation for ! the relaxation time in the presence of a random ! impurity potential for a quantum wire ! ! Reference: (1) A. C. Sharma and S. S. Z. Ashraf, J. Phys.: ! Condens. Matter 16, 3117-3132 (2004) ! ! ! Input parameters: ! ! * EK : electron energy (SI) ! * TEI : electron-impurity collision time ! ! Output parameters: ! ! * QIVI_RT_1D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : TWO USE CONSTANTS_P1, ONLY : H_BAR USE FERMI_SI, ONLY : EF_SI USE PI_ETC, ONLY : PI,PI_INV ! IMPLICIT NONE ! REAL (WP) :: EK,TEI REAL (WP) :: SHAS_RT_1D REAL (WP) :: X,S,S2,X2,NN REAL (WP) :: NU1,NU2,DE1,DE2 ! REAL (WP) :: DSQRT,DLOG ! ! Dimensionless variables ! X=EK/EF_SI ! S=H_BAR/(TEI*EF_SI) ! S2=S*S ! X2=X*X ! ! NU1=S2 ! DE1=TWO*PI*DSQRT(S2+X2) ! NU2=DSQRT(S2+X2) - X ! DE2=DSQRT(S2+X2)+ X ! NN=X*PI_INV + NU1*DLOG(NU2/DE2)/DE1 ! ! SHAS_RT_1D=H_BAR/(NN*EF_SI) ! ref. 1 eq. (33) ! END FUNCTION SHAS_RT_1D ! !------ 3) electron-impurity case -------------------------------------------- ! ! !======================================================================= ! SUBROUTINE EI_RT_3D(EI_TYPE,EK,T,RS,NI,EPS_B,MASS_E,TAU) ! ! This subroutine computes the electron-impurity relaxation time ! in 3D systems ! ! ! Input parameters: ! ! * EI_TYPE : relaxation time functional for electron-impurity ! EI_TYPE = 'HEAP' --> Hertel-Appel approximation ! * EK : electron energy ! * T : temperature (in SI) ! * RS : Wigner-Seitz radius (in units of a_0) ! * NI : impurity concentration (SI) ! * EPS_B : background dielectric constant ! * MASS_E : electron effective mass ! ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! IMPLICIT NONE ! CHARACTER (LEN = 4) :: EI_TYPE ! REAL (WP) :: EK,T,RS,NI REAL (WP) :: EPS_B,MASS_E REAL (WP) :: TAU ! IF(EI_TYPE == 'HEAP') THEN ! TAU=HEAP_RT_3D(EK,T,RS,NI,EPS_B,MASS_E) ! END IF ! ! END SUBROUTINE EI_RT_3D ! !======================================================================= ! FUNCTION HEAP_RT_3D(EK,T,RS,NI,EPS_B,MASS_E) ! ! This function computes Hertel and Appel approximation for ! the electron-impurity relaxation time in the 3D case ! ! References: (1) P. Hertel and J. Appel, Phys. Rev. B 26, 5730-5742 (1982) ! ! ! Input parameters: ! ! * EK : electron energy ! * T : temperature (in SI) ! * RS : Wigner-Seitz radius (in units of a_0) ! * NI : impurity concentration (SI) ! * EPS_B : background dielectric constant ! * MASS_E : electron effective mass ! ! Output parameters: ! ! * HEAP_RT_3D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : ONE,TWO USE CONSTANTS_P1, ONLY : E USE PI_ETC, ONLY : PI USE SQUARE_ROOTS, ONLY : SQR2 USE UTILITIES_1, ONLY : RS_TO_N0 USE PLASMON_ENE_SI ! IMPLICIT NONE ! REAL (WP) :: EK,T,RS,NI REAL (WP) :: EPS_B,MASS_E REAL (WP) :: HEAP_RT_3D REAL (WP) :: B,NU,E2,E4 REAL (WP) :: EPS_INF REAL (WP) :: N0 ! REAL (WP) :: DSQRT,DLOG ! E2=E*E ! E4=E2*E2 ! ! ! Computing the electron density ! N0=RS_TO_N0('3D',RS) ! ! B=TWO*EPS_B*MASS_E*T/(PI*E2*N0) ! ref. (1) eq. (41) NU=PI*NI*E4*(DLOG(ONE+B*EK) - B*EK/(ONE+B*EK))/ & ! (SQR2*EPS_INF*EPS_INF*DSQRT(MASS_E)*(EK**(1.5E0_WP))) ! ! HEAP_RT_3D=ONE/NU ! ! END FUNCTION HEAP_RT_3D ! !------ 4) ion-plasma case -------------------------------------------- ! ! !======================================================================= ! SUBROUTINE IP_RT_3D(IP_TYPE,RS,T,TAU) ! ! This subroutine computes the ion plasma relaxation time ! in 3D systems ! ! ! Input parameters: ! ! * IP_TYPE : relaxation time functional for ion plasma ! IP_TYPE = 'SEMO' --> Selchow-Morawetz ! IP_TYPE = 'SPIT' --> Spitzer ! * RS : Wigner-Seitz radius (in units of a_0) ! * T : temperature (in SI) ! ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! IMPLICIT NONE ! CHARACTER (LEN = 4) :: IP_TYPE ! REAL (WP) :: RS,T REAL (WP) :: TAU ! IF(IP_TYPE == 'SEMO') THEN ! TAU=SEMO_RT_3D(RS,T) ! ELSE IF(IP_TYPE == 'BLAN') THEN ! TAU=SPIT_RT_3D(RS,T) ! END IF ! ! END SUBROUTINE IP_RT_3D ! !======================================================================= ! FUNCTION SEMO_RT_3D(RS,T) ! ! This function computes Selchow-Morawetz approximation for ! the relaxation time in the 3D case ! ! References: (1) A. Selchow and K. Morawetz, Phys. Rev. E 59, 1015-1023 (1999) ! ! ! Input parameters: ! ! * RS : Wigner-Seitz radius (in units of a_0) ! * T : temperature (in SI) ! ! Output parameters: ! ! * SEMO_RT : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : ONE,TWO,THIRD USE CONSTANTS_P1, ONLY : M_E,E,EPS_0,K_B USE PI_ETC, ONLY : PI USE UTILITIES_1, ONLY : RS_TO_N0 USE COULOMB_LOG, ONLY : COU_LOG USE PLASMON_ENE_SI ! IMPLICIT NONE ! REAL (WP) :: T REAL (WP) :: SEMO_RT_3D REAL (WP) :: E2,G,BETA,V_TH REAL (WP) :: RS,N0 ! REAL (WP) :: DSQRT,DEXP ! INTEGER :: ICL ! ICL=1 ! choice of Coulomb ! ! logarithm BETA=ONE/(K_B*T) ! V_TH=DSQRT(TWO/(BETA*M_E)) ! thermal velocity E2=E*E ! ! N0=RS_TO_N0('3D',RS) ! ! G=DEXP(COU_LOG(ICL,'3D',T,RS)) ! ! SEMO_RT_3D=ONE/(N0*TWO*THIRD*PI*E2*G*BETA*V_TH/EPS_0) ! ref. (1) eq. (7) ! END FUNCTION SEMO_RT_3D ! !======================================================================= ! FUNCTION SPIT_RT_3D(RS,T) ! ! This function computes Spitzer approximation for ! the relaxation time in the 3D case ! ! References: (1) A. Selchow, G. Röpke and A. Wierling, ! Contrib. Plasma Phys. 42, 43-54 (2002) ! ! ! Input parameters: ! ! * RS : Wigner-Seitz radius (in units of a_0) ! * T : temperature (in SI) ! ! Output parameters: ! ! * SPIT_RT : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 23 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : ONE,HALF USE CONSTANTS_P1, ONLY : M_E,E,COULOMB,K_B USE UTILITIES_1, ONLY : RS_TO_N0 USE PLASMA, ONLY : ZION USE PLASMA_SCALE ! IMPLICIT NONE ! REAL (WP) :: T REAL (WP) :: SPIT_RT_3D REAL (WP) :: BETA,M_EI,E2,E4 REAL (WP) :: NONID,DEGEN REAL (WP) :: RS,N0 ! REAL (WP) :: DSQRT,DLOG ! M_EI=M_E ! BETA=ONE/(K_B*T) ! E2=E*E ! E4=E2*E2 ! ! N0=RS_TO_N0('3D',RS) ! ! ! Computing the plasmon scales ! CALL PLASMON_SCALE(RS,T,ZION,NONID,DEGEN) ! SPIT_RT_3D=0.591E0_WP*DSQRT(M_EI)/(COULOMB*COULOMB*N0* & ! ref. (1) eq. (30) (BETA**1.5E0_WP)*E4*HALF*DLOG(1.5E0_WP/(NONID**3)))! ! END FUNCTION SPIT_RT_3D ! !------ 5) phase-breaking case -------------------------------------------- ! ! !======================================================================= ! SUBROUTINE PB_RT_3D(PB_TYPE,T,D,DC,A,TAU) ! ! This subroutine computes the phase-breaking relaxation time ! in 3D systems ! ! ! Input parameters: ! ! * PB_TYPE : relaxation time functional for phase_breaking ! PB_TYPE = 'ALAR' --> Al'tshuler-Aronov ! PB_TYPE = 'BLAN' --> Blanter ! ! * T : temperature (SI) ! * D : diffusion coefficient (SI) ! * DC : diffusion constant (due to imputities) ! * A : width of 2D systems (SI) (unused) ! ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! IMPLICIT NONE ! CHARACTER (LEN = 4) :: PB_TYPE ! REAL (WP) :: T,D,DC,A REAL (WP) :: TAU ! IF(PB_TYPE.EQ.'ALAR') THEN ! TAU=ALAR_PB_ND(T,DC,A,'3D') ! ELSE IF(PB_TYPE.EQ.'BLAN') THEN ! TAU=BLAN_PB_3D(T,D) ! END IF ! ! END SUBROUTINE PB_RT_3D ! !======================================================================= ! FUNCTION ALAR_PB_ND(T,DC,A,DMN) ! ! This function computes Al'tshuler-Aronov approximation for ! the phase relaxation time in the presence of impurities ! ! Reference: (1) B. L. Al'tshuler and A. G. Aronov, in ! "Electron-Electron Interactions in Disordered ! Solids", A. L. Efros and M. Pollak eds. ! (North-Holland,1985) ! ! ! Input parameters: ! ! * T : temperature (SI) ! * DC : diffusion constant (due to imputities) ! * A : width of 2D systems (SI) ! * DMN : system dimension ! ! Output parameters: ! ! * ARAL_PB_ND : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : ZERO,ONE,TWO,FOUR,HALF USE CONSTANTS_P1, ONLY : H_BAR,M_E,E,COULOMB USE FERMI_SI, ONLY : KF_SI,VF_SI USE PI_ETC, ONLY : PI USE UTILITIES_1, ONLY : D,DOS_EF,KF_TO_N0 ! IMPLICIT NONE ! CHARACTER (LEN = 2) :: DMN ! REAL (WP) :: T,DC,A REAL (WP) :: ALAR_PB_ND REAL (WP) :: N0,DD,L,EX,TS,SG REAL (WP) :: N,TAU REAL (WP) :: K1,NUM,DEN ! REAL (WP) :: DLOG,DSQRT ! DD=HALF*D(DMN) ! ! ! Computing the density of state at Fermi level ! N0=DOS_EF(DMN) ! ! EX=TWO/(FOUR-D(DMN)) ! ! ! Computing the elastic mean free path from: ! ! D = l^2 /(tau*d) and D = v_F^2 * tau / d ! L=DC*D(DMN)/VF_SI ! ! ! Computing the electron density ! N=KF_TO_N0(DMN,KF_SI) ! ! TAU=L/VF_SI ! ! ! Computing the Drude conductivity: ! ! sigma = e^2 tau * N / m ! SG=E*E*TAU*N/M_E ! ! IF(DMN == '1D') THEN ! TS=ZERO ! K1=ONE ! NUM=T**EX ! DEN=(DC**DD * N0 * H_BAR*H_BAR)**EX ! ELSE IF(DMN == '2D') THEN ! TS=ZERO ! K1=DLOG( KF_SI*KF_SI*L*A/(H_BAR*H_BAR) ) ! NUM=T**EX ! DEN=(DC**DD * N0 * H_BAR*H_BAR)**EX ! ELSE IF(DMN == '3D') THEN ! TS=(KF_SI*L)**2 / (DSQRT(L/VF_SI) * T**1.5E0_WP) ! tau* K1=-TS*DLOG(T*TS/H_BAR) ! NUM=E*E*COULOMB*T*DSQRT(TS) ! DEN=TWO*PI*SG*DSQRT(DC)*H_BAR*H_BAR ! END IF ! ! ALAR_PB_ND=TS+K1*NUM/DEN ! ref. 1 eq. (4.9) ! END FUNCTION ALAR_PB_ND ! !======================================================================= ! FUNCTION BLAN_PB_3D(T,D) ! ! This function computes Blanter approximation for phase-breaking ! relaxation time in 3D. ! ! Reference: (1) Ya. M. Blanter, Phys. Rev. B 54, 12807 (1996) ! ! ! Input parameters: ! ! * T : temperature (SI) ! * D : diffusion coefficient (SI) ! ! Output parameters: ! ! * BLAN_PB_3D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE CONSTANTS_P1, ONLY : H_BAR,M_E USE FERMI_SI, ONLY : KF_SI USE PI_ETC, ONLY : PI2 ! IMPLICIT NONE ! REAL (WP) :: T,D REAL (WP) :: BLAN_PB_3D REAL (WP) :: N3 ! N3=M_E*KF_SI/(PI2*H_BAR*H_BAR) ! ! BLAN_PB_3D=(D/T)**1.5E0_WP * N3 ! ref. 1 eq. (1) ! RETURN ! END FUNCTION BLAN_PB_3D ! !======================================================================= ! SUBROUTINE PB_RT_2D(PB_TYPE,T,D,DC,A,DMN,TAU) ! ! This subroutine computes the phase-breaking relaxation time ! in 2D systems ! ! ! Input parameters: ! ! * PB_TYPE : relaxation time functional for phase-breaking ! PB_TYPE = 'ALAR' --> Al'tshuler-Aronov ! PB_TYPE = 'BLAN' --> Blanter ! ! * T : temperature (SI) ! * D : diffusion coefficient (SI) ! * DC : diffusion constant (due to imputities) ! * A : width of 2D systems (SI) ! * DMN : dimension of the system ! DMN = '3D' ! DMN = '2D' ! DMN = 'Q2' quasi-2D ! DMN = '1D' ! DMN = 'Q1' quasi-1D ! DMN = 'Q0' quasi-0D ! ! ! ! Author : D. Sébilleau ! ! Last modified : 22 May 2020 ! IMPLICIT NONE ! CHARACTER (LEN = 2) :: DMN CHARACTER (LEN = 4) :: PB_TYPE ! REAL (WP) :: T,D,DC,A REAL (WP) :: TAU ! IF(PB_TYPE == 'ALAR') THEN ! TAU=ALAR_PB_ND(T,DC,A,'2D') ! ELSE IF(PB_TYPE == 'BLAN') THEN ! TAU=BLAN_PB_2D(T,D,DMN,A) ! END IF ! ! END SUBROUTINE PB_RT_2D ! !======================================================================= ! FUNCTION BLAN_PB_2D(T,D,DMN,A) ! ! This function computes Blanter approximation for phase-breaking ! relaxation time in 2D. ! ! Reference: (1) Ya. M. Blanter, Phys. Rev. B 54, 12807 (1996) ! ! ! Input parameters: ! ! * T : temperature (SI) ! * D : diffusion coefficient (SI) ! * DMN : dimension of the system ! * A : length of confined direction (SI) ! ! Output parameters: ! ! * BLAN_PB_2D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : TWO USE FERMI_SI, ONLY : EF_SI,KF_SI,VF_SI USE PI_ETC, ONLY : PI ! IMPLICIT NONE ! CHARACTER (LEN = 2) :: DMN ! REAL (WP) :: T,D,A REAL (WP) :: BLAN_PB_2D REAL (WP) :: N2,TAU,L ! REAL (WP) :: DLOG,DSQRT ! N2=KF_SI*KF_SI/(TWO*PI*EF_SI) ! TAU=TWO*D / (VF_SI*VF_SI) ! elastic scattering time L=DSQRT(TWO*D*TAU) ! mean free path ! IF(DMN == '2D') THEN ! BLAN_PB_2D=N2*D/T / DLOG(KF_SI*L) ! ref. 1 eq. (10) ELSE IF(DMN == 'Q2') THEN ! BLAN_PB_2D=N2*D/T * KF_SI*A / DLOG(KF_SI*KF_SI*L*A) ! ref. 1 eq. (10) END IF ! ! END FUNCTION BLAN_PB_2D ! !======================================================================= ! SUBROUTINE PB_RT_1D(PB_TYPE,T,D,DC,A,TAU) ! ! This subroutine computes the phase-breaking relaxation time ! in 1D systems ! ! ! Input parameters: ! ! * PB_TYPE : relaxation time functional for phase breaking ! PB_TYPE = 'ALAR' --> Al'tshuler-Aronov ! PB_TYPE = 'BLAN' --> Blanter ! ! * T : temperature (SI) ! * D : diffusion coefficient (SI) ! * DC : diffusion constant (due to imputities) ! * A : length of confined direction (SI) ! ! ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! IMPLICIT NONE ! CHARACTER (LEN = 4) :: PB_TYPE ! REAL (WP) :: T,D,DC,A REAL (WP) :: TAU ! IF(PB_TYPE == 'ALAR') THEN ! TAU=ALAR_PB_ND(T,DC,A,'1D') ! ELSE IF(PB_TYPE == 'BLAN') THEN ! TAU=BLAN_PB_1D(T,D,A) ! END IF ! ! END SUBROUTINE PB_RT_1D ! !======================================================================= ! FUNCTION BLAN_PB_1D(T,D,A) ! ! This function computes Blanter approximation for phase-breaking ! relaxation time in 1D. ! ! Reference: (1) Ya. M. Blanter, Phys. Rev. B 54, 12807 (1996) ! ! ! Input parameters: ! ! * T : temperature (SI) ! * D : diffusion coefficient (SI) ! * A : length of confined direction (SI) ! ! Output parameters: ! ! * BLAN_PB_1D : relaxation time in seconds ! ! Author : D. Sébilleau ! ! Last modified : 11 Jun 2020 ! ! USE REAL_NUMBERS, ONLY : TWO,FOUR,THIRD USE FERMI_SI, ONLY : KF_SI,VF_SI ! IMPLICIT NONE ! REAL (WP) :: T,D,A REAL (WP) :: BLAN_PB_1D REAL (WP) :: TAU ! TAU=TWO*D / (VF_SI*VF_SI) ! elastic scattering time ! BLAN_PB_1D=TAU**THIRD * (KF_SI*A)**(FOUR*THIRD) / & ! T**(TWO*THIRD) ! ref. 1 eq. (13) ! END FUNCTION BLAN_PB_1D ! END MODULE RELAXATION_TIME_STATIC