MsSpec-DFM/New_libraries/DFM_library/DAMPING_LIBRARY/viscosity.f90

938 lines
34 KiB
Fortran

!
!=======================================================================
!
MODULE VISCOSITY
!
USE ACCURACY_REAL
!
!
CONTAINS
!
!=======================================================================
!
SUBROUTINE VISCOSITY_COEF(X,ETA)
!
! This subroutine computes the shear viscosity
!
!
!
! Author : D. Sébilleau
!
! Last modified : 23 Oct 2020
!
!
USE MATERIAL_PROP, ONLY : DMN,RS
USE EXT_FIELDS, ONLY : T
USE PLASMA, ONLY : ZION
!
USE SCREENING_VEC, ONLY : DEBYE_VECTOR
USE DAMPING_VALUES, ONLY : VI_TYPE
!
USE EL_PHO_INTER, ONLY : NA,MA,RA,DEBYE_T,EP_C
!
USE REAL_NUMBERS, ONLY : ZERO
!
IMPLICIT NONE
!
REAL (WP), INTENT(IN) :: X
REAL (WP), INTENT(OUT) :: ETA
REAL (WP) :: LR,S_L
REAL (WP) :: KD_SI
!
LR = ZERO ! residual mfp (temporary)
S_L = ZERO ! scattering length (temporary)
!
! Computing the Debye momentum
!
CALL DEBYE_VECTOR('3D',T,RS,KD_SI) !
!
IF(DMN == '3D') THEN !
CALL VISCOSITY_3D(RS,T,ZION,KD_SI,X,ZERO,NA,MA,RA, & !
DEBYE_T,EP_C,LR,VI_TYPE,ETA) !
ELSE IF(DMN == '2D') THEN !
CALL VISCOSITY_2D(T,S_L,VI_TYPE,ETA) !
ELSE IF(DMN == '1D') THEN !
ETA = ZERO ! not yet implemented
END IF !
!
END SUBROUTINE VISCOSITY_COEF
!
!=======================================================================
!
SUBROUTINE VISCOSITY_3D(RS,T,ZION,K_SC,X,Z,NA,MA,RA,TH,CA,LR, &
VI_TYPE,ETA)
!
! This subroutine computes the shear viscosity for 3D electron gas
! at a given value of the temperature T
!
!
! Input parameters:
!
! * RS : Wigner-Seitz radius (in units of a_0)
! * T : temperature (SI)
! * ZION : atomic number of the ions of the plasma
! * K_SC : screening vector in SI
! * X : dimensionless factor --> X = q / (2 * k_F)
! * Z : omega / omega_q --> dimensionless
! * NA : number of atoms per unit volume
! * MA : mass of lattice atoms
! * RA : radius of atoms
! * TH : Debye temperature of the material in SI
! * CA : electron-phonon coupling
! * LR : residual mean free path
! * VI_TYPE : viscosity in 3D
! VI_TYPE = 'AMPP' Angilella et al hard-sphere fluid --> T-dependent
! VI_TYPE = 'DRBA' Daligault-Rasmussen-Baalrud (plasmas) --> T-dependent
! VI_TYPE = 'KHRA' Khrapak for Yukawa fluid --> T-dependent
! VI_TYPE = 'LHPO' Longuet-Higgins-Pope --> T-dependent
! VI_TYPE = 'LLPA' Landau-Lifshitz-Pitaevskii--> T-dependent
! VI_TYPE = 'SCHA' Schäfer --> T-dependent
! VI_TYPE = 'SCHD' Schäfer (dynamic) --> T-dependent
! VI_TYPE = 'SHTE' Shternin --> T-dependent
! VI_TYPE = 'STEI' Steinberg low-temperature --> T-dependent
!
!
! Output parameters:
!
! * ETA : shear viscosity in SI
!
!
! Internal parameters:
!
! * I_F : switch for choice of formula
! I_F = 1 --> eq. (31) ref. 1
! I_F = 2 --> eq. (32) ref. 1 Landau-Spitzer formula
! I_F = 3 --> eq. (34) ref. 1
! I_F = 4 --> after eq. (34) ref. 1 Bastea formula
! I_F = 5 --> eq. (38) ref. 1 Braun formula
! I_F = 6 --> eq. (36)-(40) ref. 1 Tanaka-Ichimaru formula
!
! Author : D. Sébilleau
!
! Last modified : 11 Jun 2020
!
IMPLICIT NONE
!
CHARACTER (LEN = 4) :: VI_TYPE
!
REAL (WP) :: RS,T,ZION,K_SC,X,Z,NA,MA,RA,TH,CA,LR
REAL (WP) :: ETA
!
INTEGER :: I_F
!
IF(VI_TYPE == 'AMPP') THEN !
ETA=AMPP_VISC_3D(RS,T) !
ELSE IF(VI_TYPE == 'DRBA') THEN !
ETA=DRBA_VISC_3D(RS,T,ZION,I_F) !
ELSE IF(VI_TYPE == 'KHRA') THEN !
ETA=KHRA_VISC_3D(RS,T,ZION,K_SC,I_F) !
ELSE IF(VI_TYPE == 'LHPO') THEN !
ETA=LHPO_VISC_3D(RS,T) !
ELSE IF(VI_TYPE == 'SCHA') THEN !
ETA=SCHA_VISC_3D(T) !
ELSE IF(VI_TYPE == 'SCHD') THEN !
ETA=SCHA_VISC_3D_D(X,Z,T) !
ELSE IF(VI_TYPE == 'SHTE') THEN !
ETA=SHTE_VISC_3D(RS,T) !
ELSE IF(VI_TYPE == 'STEI') THEN !
ETA=STEI_VISC_LT_3D(RS,T,NA,MA,RA,TH,CA,LR) !
END IF !
!
END SUBROUTINE VISCOSITY_3D
!
!=======================================================================
!
FUNCTION AMPP_VISC_3D(RS,T)
!
! This function computes the Angilella shear viscosity
! for 3D hard-sphere fluid at a given value of the temperature T
!
! References: (1) G. G. N. Angilella et al, Phys. Lett. A, 992-998 (2009)
!
!
! Input parameters:
!
! * RS : Wigner-Seitz radius (in units of a_0)
! * T : temperature (SI)
!
!
! Output parameters:
!
! * AMPP_VISC_3D
!
! Author : D. Sébilleau
!
! Last modified : 11 Jun 2020
!
!
USE REAL_NUMBERS, ONLY : ONE,TWO,THREE,FIVE,HALF,THIRD
USE CONSTANTS_P1, ONLY : BOHR,M_E,K_B
USE PI_ETC, ONLY : PI
USE UTILITIES_1, ONLY : RS_TO_N0
!
IMPLICIT NONE
!
REAL (WP) :: T,RS
REAL (WP) :: AMPP_VISC_3D
REAL (WP) :: N0
REAL (WP) :: SI,PF,D0,D,X,X4,NUM,DEN
!
REAL (WP) :: DSQRT
!
! Computing the electron density
!
N0=RS_TO_N0('3D',RS) !
!
! Hard-sphere diameter
!
SI=TWO*RS*BOHR ! sigma
!
! Computing the packing fraction PF
!
PF=HALF*THIRD*PI*N0 * SI**3 !
!
D0=(THREE*0.125E0_WP*SI/N0) * DSQRT(K_B*T/(PI*M_E)) ! ref. 1 eq. (9)
!
! Speedy diffusion coefficient
!
X=N0*SI*SI*SI !
X4=X*X*X*X ! x^4
D=D0*(ONE - X/1.09E0_WP) * (ONE + X4*(0.4E0_WP-0.83E0_WP*X4)) ! ref. 1 eq. (8)
!
NUM=D0*THREE*PF*K_B*T !
DEN=D*FIVE*PI*SI*D0 !
AMPP_VISC_3D=NUM/DEN ! ref. 1 eq. (A5)
!
END FUNCTION AMPP_VISC_3D
!
!=======================================================================
!
FUNCTION DRBA_VISC_3D(RS,T,ZION,I_F)
!
! This function computes the Daligault-Rasmussen_Baalrud shear viscosity
! for 3D plasmas at a given value of the temperature T
!
! References: (1) J. Daligault, K. O. Rasmussen and S. D. Baalrud,
! Phys. Rev. E 90, 033105 (2014)
!
!
! Input parameters:
!
! * RS : Wigner-Seitz radius (in units of a_0)
! * T : temperature (SI)
! * ZION : atomic number of the ions of the plasma
! * I_F : switch for choice of formula
! I_F = 1 --> eq. (31) ref. 1
! I_F = 2 --> eq. (32) ref. 1 Landau-Spitzer formula
! I_F = 3 --> eq. (34) ref. 1
! I_F = 4 --> after eq. (34) ref. 1 Bastea formula
! I_F = 5 --> eq. (38) ref. 1 Braun formula
! I_F = 6 --> eq. (36)-(40) ref. 1 Tanaka-Ichimaru formula
!
!
! Output parameters:
!
! * DRBA_VISC_3D
!
! Author : D. Sébilleau
!
! Last modified : 11 Jun 2020
!
!
USE REAL_NUMBERS, ONLY : ONE,HALF
USE COMPLEX_NUMBERS, ONLY : IC
USE CONSTANTS_P1, ONLY : H_BAR,M_E,E,COULOMB,K_B
USE PI_ETC, ONLY : PI
USE SCREENING_VEC, ONLY : DEBYE_VECTOR
USE UTILITIES_1, ONLY : RS_TO_N0
USE EXT_FUNCTIONS, ONLY : E1Z ! Exponential integral
USE PLASMON_ENE_SI
USE PLASMA_SCALE
!
IMPLICIT NONE
!
REAL (WP) :: T,RS,ZION
REAL (WP) :: DRBA_VISC_3D
REAL (WP) :: N0
REAL (WP) :: NONID,DEGEN
REAL (WP) :: KD_SI,ETA_0,DELTA,C,LD,RL,Q2
REAL (WP) :: G1,G2,G3,G4,OP
REAL (WP) :: A,B,A1,A2,A3,B1,B2,B3,B4,K
REAL (WP) :: TTI,GG
REAL (WP) :: NUM,DEN
!
REAL (WP) :: DLOG,DSQRT,DREAL
!
INTEGER :: I_F
!
COMPLEX (WP) :: CE1,CE2
!
! Computing the electron density and plasmon properties
!
IF( (I_F == 3) .OR. (I_F == 4) ) THEN !
CALL PLASMON_SCALE(RS,T,ZION,NONID,DEGEN) !
N0=RS_TO_N0('3D',RS) !
G1=DEGEN ! Gamma
G2=G1*G1 !
G3=G2*G1 ! powers of Gamma
G4=G3*G1 !
OP=ENE_P_SI/H_BAR ! omega_p
A=0.794811E0_WP !
B=0.862151E0_WP !
A1=0.0425698E0_WP !
A2=0.00205782E0_WP !
A3=7.03658E-5_WP ! ref. 1 table IV
B1=0.0429942E0_WP !
B2=-0.000270798E0_WP !
B3=3.25441E-6_WP !
B4=-1.15019E-8_WP !
K=G1**2.5E0_WP * DLOG(ONE + B / G1**1.5E0_WP) !
END IF !
!
! Computing the Debye vector
!
CALL DEBYE_VECTOR('3D',T,RS,KD_SI) !
!
LD=ONE/KD_SI ! Debye length
DELTA=0.466E0_WP !
C=1.493E0_WP !
Q2=E*E*COULOMB !
RL=Q2/(K_B*T) !
ETA_0=1.25E0_WP*DSQRT(M_E/PI)* (K_B*T)**2.5E0_WP / (Q2*Q2) !
GG=LD/RL !
!
IF(I_F == 1) THEN !
DRBA_VISC_3D=ETA_0*DELTA / DLOG(ONE + C*GG) ! ref. 1 eq. (31)
ELSE IF(I_F == 2) THEN !
DRBA_VISC_3D=ETA_0/DLOG(GG) ! ref. 1 eq. (32)
ELSE IF(I_F == 3) THEN !
NUM=A*(ONE+A1*G1+A2*G2+A3*G3) !
DEN=K*(ONE+B1*G1+B2*G2+B3*G3+B4*G4) !
DRBA_VISC_3D=M_E*N0*A*A*OP*NUM/DEN !
ELSE IF(I_F == 4) THEN !
DRBA_VISC_3D=M_E*N0*A*A*OP* ( & !
0.482E0_WP/G2 + 0.629E0_WP/(G1**0.878E0_WP) & !
) !
ELSE IF(I_F == 6) THEN !
DRBA_VISC_3D=ETA_0/DLOG(LD/RL) / & ! ref. 1 eq. (38)
(ONE + 0.346E0_WP/DLOG(GG)) !
ELSE IF(I_F == 5) THEN !
CALL E1Z( IC/GG,CE1) !
CALL E1Z(-IC/GG,CE2) !
TTI=HALF*DREAL( CE1*CDEXP( IC/GG) + & ! ref. 1 eq. (40)
CE2*CDEXP(-IC/GG) & !
) !
DRBA_VISC_3D=ETA_0/TTI !
END IF !
!
END FUNCTION DRBA_VISC_3D
!
!=======================================================================
!
FUNCTION KHRA_VISC_3D(RS,T,ZION,K_SC,I_F)
!
! This function computes the Khrapak shear viscosity
! for 3D Yukawa fluid at a given value of the temperature T
!
! References: (1) S. Khrapak, AIP Advances 8, 105226 (2018)
!
!
! Input parameters:
!
! * RS : Wigner-Seitz radius (in units of a_0)
! * T : temperature (SI)
! * ZION : atomic number of the ions of the plasma
! * K_SC : screening vector in SI
! * I_F : switch for choice of formula
! I_F = 1 --> eq. (7) ref. 1
! I_F = 2 --> eq. (8) ref. 1
!
!
! Output parameters:
!
! * KHRA_VISC_3D
!
! Author : D. Sébilleau
!
! Last modified : 11 Jun 2020
!
!
USE REAL_NUMBERS, ONLY : ONE,HALF,FOUR,THIRD,FOURTH
USE CONSTANTS_P1, ONLY : BOHR,M_E,K_B
USE UTILITIES_1, ONLY : ALFA
USE PLASMA_SCALE
!
IMPLICIT NONE
!
REAL (WP) :: RS,T,ZION,K_SC
REAL (WP) :: KHRA_VISC_3D
REAL (WP) :: AL,GA,GA_M,KA,X,ETA_R
REAL (WP) :: NONID,DEGEN
REAL (WP) :: BETA,V_TH,F1,F2
!
REAL (WP) :: DSQRT,DEXP
!
INTEGER :: I_F
!
AL=ALFA('3D') ! parameter alpha
!
! Computing the plasma degeneracy
!
CALL PLASMON_SCALE(RS,T,ZION,NONID,DEGEN) !
!
! Computing the thermal velocity
!
BETA=ONE/(K_B*T) !
V_TH=DSQRT(M_E/BETA) ! thermal velocity
!
KA=K_SC*RS*BOHR ! parameter kappa
!
! Coupling parameters
!
GA=DEGEN ! ref. 1 notation
GA_M=(172.0E0_WP*DEXP(AL*KA))/(ONE+AL*KA+HALF*AL*AL*KA*KA) ! ref. 1 eq. (2)
X=GA/GA_M !
!
IF(I_F == 1) THEN !
F1=0.104E0_WP / X**0.4E0_WP ! ref. 1 eq. (5)
F2=0.126E0_WP * DEXP(3.64E0_WP*DSQRT(X)) ! ref. 1 eq. (6)
ETA_R=(F1**FOUR + F2**FOUR)**FOURTH ! ref. 1 eq. (7)
ELSE IF(I_F == 2) THEN !
ETA_R=0.00022E0_WP / X**1.5E0_WP + & !
0.096E0_WP / X**0.378E0_WP + & ! ref. 1 eq. (8)
4.68E0_WP * X**1.5E0_WP !
END IF !
!
KHRA_VISC_3D=ETA_R*M_E*V_TH*( AL*AL*RS*RS*BOHR*BOHR ) ! ref. 1 eq. (4)
!
END FUNCTION KHRA_VISC_3D
!
!=======================================================================
!
FUNCTION LHPO_VISC_3D(RS,T)
!
! This function computes the Longuet-Higgins and Pope shear viscosity
! for 3D hard-sphere fluid at a given value of the temperature T
!
! References: (1) G. G. N. Angilella et al, Phys. Lett. A, 992-998 (2009)
!
!
! Input parameters:
!
! * RS : Wigner-Seitz radius (in units of a_0)
! * T : temperature (SI)
!
!
! Output parameters:
!
! * LHPO_VISC_3D
!
! Author : D. Sébilleau
!
! Last modified : 9 Dec 2020
!
!
USE REAL_NUMBERS, ONLY : ONE,TWO,HALF,THIRD
USE CONSTANTS_P1, ONLY : BOHR,M_E,K_B
USE PI_ETC, ONLY : PI
USE UTILITIES_1, ONLY : RS_TO_N0
USE PACKING_FRACTION
!
IMPLICIT NONE
!
REAL (WP), INTENT(IN) :: RS,T
REAL (WP) :: LHPO_VISC_3D
!
REAL (WP) :: N0
REAL (WP) :: COEF
REAL (WP) :: PF,PF2,PF3,PR,SI
!
REAL (WP) :: SQRT
!
! Computing the electron density
!
N0 = RS_TO_N0('3D',RS) !
!
COEF = SQRT(M_E * K_B * T / PI) !
!
! Hard-sphere diameter
!
SI = TWO * RS * BOHR ! sigma
!
! Computing the packing fraction PF
!
PF = PACK_FRAC_2D(N0,SI,'HSM') !
PF2 = PF * PF !
PF3 = PF2 * PF !
!
PR = (ONE + PF + PF2 - PF3) / (ONE - PF)**3 - ONE ! ref. 1 eq. (2)
!
LHPO_VISC_3D = 0.40E0_WP * N0 * SI * COEF * PR ! ref. 1 eq. (1)
!
END FUNCTION LHPO_VISC_3D
!
!=======================================================================
!
FUNCTION LLPA_VISC_3D(X,RS,T)
!
! This function computes the Landau-Lifschitz-Pitaevskii shear viscosity
! for 3D hard-sphere fluid at a given value of the temperature T
!
! Reference: (1) J. Daligault, Phys. Rev. Lett. 119, 045002 (2017)
!
!
! Input parameters:
!
! * X : dimensionless factor --> X = q / (2 * k_F)
! * RS : Wigner-Seitz radius (in units of a_0)
! * T : temperature (SI)
!
!
! Output parameters:
!
! * LLPA_VISC_3D
!
!
! Note: we find that the average over solid angles in note [13] ref. (1) is
!
! _ _
! | 2 |
! e^2 | 2 1 ( k_s ) | 1
! / __ \ = ----------- | --- + --- ( ----- ) | -------
! \ / epsilon_0 | 3 2 ( k_F ) | k_F^2
! |_ _|
!
!
!
! Author : D. Sébilleau
!
! Last modified : 12 Oct 2020
!
!
USE REAL_NUMBERS, ONLY : ONE,TWO,FOUR,FIVE,EIGHT, &
HALF,THIRD,EIGHTH
USE FERMI_SI, ONLY : EF_SI,KF_SI
USE CONSTANTS_P1, ONLY : BOHR,H_BAR,M_E,K_B,EPS_0
USE PI_ETC, ONLY : PI,PI3,PI_INV
!
USE PLASMON_SCALE_P, ONLY : NONID
USE COULOMB_LOG, ONLY : DALI_CL_3D
USE SCREENING_TYPE
USE SCREENING_VEC
!
IMPLICIT NONE
!
REAL (WP), INTENT(IN) :: X,T,RS
REAL (WP) :: LLPA_VISC_3D
REAL (WP) :: Y,Q,Q2,Q4
REAL (WP) :: CL,KBT,KS,TH
REAL (WP) :: NUM,DEN,BRA
!
REAL (WP) :: SQRT
!
TH = ONE / NONID ! Theta
!
Y = X + X ! q / k_F
!
Q = Y * KF_SI ! q in SI
Q2 = Q * Q ! q^2 in SI
Q4 = Q2 * Q2 ! q^4 in SI
!
KBT = K_B * T !
!
! 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 !
!
! Computing the Coulomb logarithm
!
CL = DALI_CL_3D(X) !
!
IF(TH >= ONE) THEN !
NUM = FIVE * EIGHTH * SQRT(PI * M_E) * KBT**2.5E0_WP ! \
DEN = Q4 * CL ! > ref. (1) note [13]
LLPA_VISC_3D = NUM / DEN ! /
ELSE !
NUM = 16.0E0_WP * EF_SI * BOHR * KF_SI ! \
DEN = 45.0E0_WP * TH * TH * EIGHT * PI3 * Q4 ! \
BRA = TWO * THIRD + HALF * (KS / KF_SI)**2 ! /
LLPA_VISC_3D = NUM / (DEN + BRA) ! /
END IF !
!
END FUNCTION LLPA_VISC_3D
!
!=======================================================================
!
FUNCTION SCHA_VISC_3D(T)
!
! This function computes the Schäfer shear viscosity for
! 3D systems at a given value of the temperature T
!
! References: (1) T. Schäfer, Phys. Rev. A 85, 033623 (2012)
!
!
! Input parameters:
!
! * T : temperature (SI)
!
!
! Output parameters:
!
! * SCHA_VISC_3D
!
! Author : D. Sébilleau
!
! Last modified : 11 Jun 2020
!
!
USE CONSTANTS_P1, ONLY : M_E
USE PI_ETC, ONLY : SQR_PI
!
IMPLICIT NONE
!
REAL (WP) :: T
REAL (WP) :: SCHA_VISC_3D
!
SCHA_VISC_3D=15.0E0_WP*(M_E*T)**1.5E0_WP / (32.0E0_WP*SQR_PI) ! ref. 1 eq. (14)
!
END FUNCTION SCHA_VISC_3D
!
!=======================================================================
!
FUNCTION SCHA_VISC_3D_D(X,Z,T)
!
! This function computes the dynamic Schäfer shear viscosity for
! 3D systems at a given value of the low temperature T
!
! References: (2) C. Chafin and T. Schäfer, Phys. Rev. A 87, 023629 (2013)
!
!
! Input parameters:
!
! * X : dimensionless factor --> X = q / (2 * k_F)
! * Z : omega / omega_q --> dimensionless
! * T : temperature (SI)
!
!
! Output parameters:
!
! * SCHA_VISC_3D
!
! Author : D. Sébilleau
!
! Last modified : 11 Jun 2020
!
!
USE REAL_NUMBERS, ONLY : SEVEN,HALF
USE CONSTANTS_P1, ONLY : H_BAR,M_E
USE FERMI_SI, ONLY : KF_SI
USE PI_ETC, ONLY : PI
USE UTILITIES_1, ONLY : KF_TO_N0
!
IMPLICIT NONE
!
REAL (WP) :: X,Y,Y2,Z,V,T
REAL (WP) :: SCHA_VISC_3D_D
REAL (WP) :: OMEGA,ETA,D_ETA
REAL (WP) :: N0
REAL (WP) :: NUM,DEN
!
REAL (WP) :: DSQRT
!
Y=X+X ! Y = q / k_F
Y2=Y*Y !
V=Z*Y2 ! omega / omega_{k_F}
OMEGA=V*HALF*H_BAR*KF_SI*KF_SI/M_E ! omega
!
! Computing the static Schäfer viscosity
!
ETA=SCHA_VISC_3D(T) !
!
! Computing the electron density
!
N0=KF_TO_N0('3D',KF_SI) !
!
D_ETA=ETA/N0 ! momentum diffusion constant
NUM=SEVEN + (1.5E0_WP)**1.5E0_WP !
DEN=240.0E0_WP*PI * D_ETA**1.5E0_WP !
!
SCHA_VISC_3D_D=ETA - DSQRT(OMEGA)*T * NUM/DEN ! ref. 1 eq. (33)
!
END FUNCTION SCHA_VISC_3D_D
!
!=======================================================================
!
FUNCTION SHTE_VISC_3D(RS,T)
!
! This function computes the Shternin shear viscosity
! for 3D electron gas at a given value of the temperature T
!
! References: (1) P. S. Shternin, J. Phys. A: Math. Theor. 41 205501 (2008)
!
!
! Input parameters:
!
! * RS : Wigner-Seitz radius (in units of a_0)
! * T : temperature (SI)
!
!
! Output parameters:
!
! * SHTE_VISC_3D
!
! Author : D. Sébilleau
!
! Last modified : 11 Jun 2020
!
!
USE REAL_NUMBERS, ONLY : ONE,TWO,SIX,EIGHT,TEN,THIRD
USE CONSTANTS_P1, ONLY : H_BAR,K_B
USE CONSTANTS_P2, ONLY : ALPHA
USE CONSTANTS_P3, ONLY : C
USE FERMI_SI, ONLY : KF_SI,VF_SI
USE PI_ETC, ONLY : PI,PI3
USE SQUARE_ROOTS, ONLY : SQR3
USE UTILITIES_1, ONLY : KF_TO_N0
USE SCREENING_VEC, ONLY : THOMAS_FERMI_VECTOR
!
IMPLICIT NONE
!
REAL (WP) :: RS,T
REAL (WP) :: SHTE_VISC_3D
REAL (WP) :: N0
REAL (WP) :: NUM,DEN
REAL (WP) :: K_TF_SI
REAL (WP) :: I_ETA,I_L,I_T,I_TL
REAL (WP) :: TH,T_TPE,U,SCF
REAL (WP) :: XI
!
REAL (WP) :: DLOG
!
INTEGER :: REGIME
!
SCF=1.0E-2_WP ! <<
XI=1.813174518048293088675271480395889E0_WP ! xi ref. 1 eq. (15)
!
! Computing the electron density
!
N0=KF_TO_N0('3D',KF_SI) !
!
! Computing the Thomas-Fermi screening verctor
!
CALL THOMAS_FERMI_VECTOR('3D',K_TF_SI) !
!
! Computing TH, T_TPE and U
!
TH=H_BAR*VF_SI*K_TF_SI/(K_B*T) ! ref. 1 eq. (11)
T_TPE=SQR3/TH ! T / T_pe (idem)
U=VF_SI/C ! idem
!
! Checking the regime
!
IF(U < SCF) THEN !
IF(T_TPE < SCF) THEN !
REGIME=2 !
ELSE !
REGIME=1 !
END IF ! ref. 1 table 1.
ELSE !
IF(T_TPE < SCF) THEN !
REGIME=4 !
ELSE !
REGIME=3 !
END IF !
END IF !
!
! Calculation of the integral I_ETA
!
IF(REGIME == 1) THEN !
I_L=TWO*THIRD*(DLOG(ONE/TH)+1.919E0_WP) !
I_T=EIGHT*U*U*U*U*(DLOG(ONE/(U*TH))+3.413E0_WP)/35.0E0_WP ! ref. 1 eq. (13)
I_TL=EIGHT*U*U*(DLOG(ONE/TH)+2.512E0_WP)/15.0E0_WP !
ELSE IF(REGIME == 3) THEN !
I_L=TWO*THIRD*(DLOG(ONE/TH)+1.919E0_WP) !
I_T=THIRD*(DLOG(ONE/TH)+2.742E0_WP) ! ref. 1 eq. (14)
I_TL=TWO*THIRD*(DLOG(ONE/TH)+2.052E0_WP) !
ELSE !
I_L=PI3 / (12.0E0_WP*TH) !
I_T=XI * U**(TEN*THIRD) / (TH*TH)**THIRD ! ref. 1 eq. (15)
I_TL=PI3 * U*U / (SIX*TH) !
END IF !
!
I_ETA=I_L+I_T+I_TL ! ref. 1 eq. (12)
!
NUM=PI*H_BAR*H_BAR*N0*KF_SI*VF_SI*VF_SI*VF_SI !
DEN=60.0E0_WP*ALPHA*ALPHA*C*C*K_B*T*I_ETA !
!
SHTE_VISC_3D=NUM/DEN ! ref. 1 eq. (9)
!
END FUNCTION SHTE_VISC_3D
!
!=======================================================================
!
FUNCTION STEI_VISC_LT_3D(RS,T,NA,MA,RA,TH,CA,LR)
!
! This function computes Steinberg's low-temperature viscosity.
!
! In this model; the electron interacts with acoustic lattice vibrations
!
!
! Reference: (1) M. S. Steinberg, Phys. Rev. 109, 1486 (1958)
!
! Input parameters:
!
! * RS : Wigner-Seitz radius (in units of a_0)
! * T : temperature (in SI)
! * NA : number of atoms per unit volume
! * MA : mass of lattice atoms
! * RA : radius of atoms
! * TH : Debye temperature of the material in SI
! * CA : electron-phonon coupling
! * LR : residual mean free path
!
! Output parameters:
!
! * STEI_VISC_LT_3D : relaxation time in seconds
!
! Author : D. Sébilleau
!
! Last modified : 11 Jun 2020
!
!
USE REAL_NUMBERS, ONLY : TWO,THREE,FOUR,FIVE,HALF,THIRD
USE CONSTANTS_P1, ONLY : H_BAR,M_E,K_B
USE FERMI_SI, ONLY : EF_SI
USE PI_ETC, ONLY : PI,PI2
USE UTILITIES_1, ONLY : ALFA,RS_TO_N0
USE SPECIFIC_INT_1, ONLY : STEI_INT
!
IMPLICIT NONE
!
REAL (WP) :: T,NA,MA,RA,TH,CA,RS
REAL (WP) :: STEI_VISC_LT_3D
REAL (WP) :: N0
REAL (WP) :: H,AL,GA,D
REAL (WP) :: NUM,DEN,NU1,DE1,DE2,A02,D00
REAL (WP) :: X,J5,J7,X5,LR
!
REAL (WP) :: DSQRT
!
! Computation of the electron density
!
N0=RS_TO_N0('3D',RS) !
!
AL=ALFA('3D') !
H=TWO*PI*H_BAR !
GA=AL * (FOUR*MA*RA*K_B*TH) / (THREE*H*H*CA*CA) !
D=EF_SI / ( TWO**THIRD * (N0/NA)**(TWO*THIRD) ) !
!
! Computation of the J_p(x) functions
!
X=TH/T !
J5=STEI_INT(X,5) !
J7=STEI_INT(X,7) !
!
X5=X*X*X*X*X !
!
NUM=FOUR*DSQRT(TWO*M_E* M_E*M_E) !
DEN=15.0E0_WP*PI2* H_BAR*H_BAR*H_BAR !
A02=EF_SI**FIVE !
NU1=THREE*DSQRT(M_E+M_E)*D*EF_SI !
DE1=H_BAR*H_BAR*GA*X5 !
DE2=J5 - J7/(X*X* 16.0E0_WP**THIRD * (N0/NA)**(TWO*THIRD) ) !
D00=NU1/(DE1*DE2) + & !
TWO*EF_SI*EF_SI*EF_SI/(DSQRT(HALF*M_E)*LR) !
!
STEI_VISC_LT_3D=NUM*A02 / (DEN*D00) ! ref. 1 eq. (7.13)
!
END FUNCTION STEI_VISC_LT_3D
!
!=======================================================================
!
SUBROUTINE VISCOSITY_2D(T,S_L,VI_TYPE,ETA)
!
! This subroutine computes the shear viscosity for 2D electron gas
! at a given value of the temperature T
!
!
! Input parameters:
!
! * T : temperature (SI)
! * S_L : scattering length (SI)
! * VI_TYPE : viscosity in 2D
! VI_TYPE = 'SCHA' Schäfer --> T-dependent
!
!
! Output parameters:
!
! * ETA : shear viscosity in SI
!
!
! Author : D. Sébilleau
!
! Last modified : 11 Jun 2020
!
IMPLICIT NONE
!
CHARACTER (LEN = 4) :: VI_TYPE
!
REAL (WP) :: T,S_L
REAL (WP) :: ETA
!
IF(VI_TYPE == 'SCHA') THEN !
ETA=SCHA_VISC_2D(T,S_L) !
END IF !
!
END SUBROUTINE VISCOSITY_2D
!
!=======================================================================
!
FUNCTION SCHA_VISC_2D(T,S_L)
!
! This function computes the Schäfer shear viscosity for
! 2D systems at a given value of the temperature T
!
! References: (1) T. Schäfer, Phys. Rev. A 85, 033623 (2012)
!
!
! Input parameters:
!
! * T : temperature (SI)
! * S_L : scattering length (SI)
!
!
! Output parameters:
!
! * SCHA_VISC_2D
!
! Author : D. Sébilleau
!
! Last modified : 11 Jun 2020
!
!
USE REAL_NUMBERS, ONLY : ONE,TWO
USE CONSTANTS_P1, ONLY : M_E
USE PI_ETC, ONLY : PI2
!
IMPLICIT NONE
!
REAL (WP) :: T,S_L
REAL (WP) :: SCHA_VISC_2D
REAL (WP) :: T_A2D
!
REAL (WP) :: DLOG
!
T_A2D=ONE/(M_E*M_E*S_L*S_L) !
!
SCHA_VISC_2D=M_E*T* ( & !
DLOG(2.5E0_WP*T/T_A2D)**2 + PI2 & ! ref. 1 eq. (10)
) / (TWO*PI2) !
!
END FUNCTION SCHA_VISC_2D
!
END MODULE VISCOSITY