! !======================================================================= ! 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