Changeset 4780
- Timestamp:
- Dec 21, 2023, 10:17:25 PM (11 months ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lmdz_atke_exchange_coeff.F90
r4777 r4780 25 25 26 26 27 USE lmdz_atke_turbulence_ini, ONLY : iflag_atke, kappa, l0, ric, cinf, rpi, rcpd, atke_ok_virtual 27 USE lmdz_atke_turbulence_ini, ONLY : iflag_atke, kappa, l0, ric, cinf, rpi, rcpd, atke_ok_virtual, ri0, ri1 28 28 USE lmdz_atke_turbulence_ini, ONLY : cepsilon, pr_slope, pr_asym, pr_neut, ctkes, rg, rd, rv, atke_ok_vdiff 29 USE lmdz_atke_turbulence_ini, ONLY : viscom, viscoh, clmix, clmixshear, iflag_atke_lmix, lmin, smmin 29 USE lmdz_atke_turbulence_ini, ONLY : viscom, viscoh, clmix, clmixshear, iflag_atke_lmix, lmin, smmin, cn 30 30 31 31 implicit none … … 69 69 70 70 INTEGER :: igrid,ilay ! horizontal,vertical index (flat grid) 71 REAL :: cn,Ri0,Ri1 ! parameter for Sm stability function and Prandlt72 71 REAL :: preff ! reference pressure for potential temperature calculations 73 72 REAL :: thetam ! mean potential temperature at interface … … 132 131 ! Computes the gradient Richardson's number and stability functions: 133 132 !=================================================================== 134 135 ! calculation of cn = Sm value at Ri=0136 ! direct dependance on cepsilon to guarantee Fm=1 (first-order like stability function) at Ri=0137 cn=(1./sqrt(cepsilon))**(2/3)138 ! calculation of Ri0 such that continuity in slope of Sm at Ri=0139 Ri0=2./rpi*(cinf - cn)*ric/cn140 ! calculation of Ri1 to guarantee continuity in slope of Prandlt number at Ri=0141 Ri1 = -2./rpi * (pr_asym - pr_neut)142 143 133 144 134 DO ilay=2,nlay … … 176 166 177 167 IF (iflag_atke_lmix .EQ. 1 ) THEN 178 168 ! Blackadar formulation (~kappa l) + buoyancy length scale (Deardoff 1980) for very stable conditions 179 169 DO ilay=2,nlay 180 170 DO igrid=1,ngrid … … 223 213 224 214 ELSE 225 ! default : neglect effect of local stratification and shear215 ! default Blackadar formulation: neglect effect of local stratification and shear 226 216 227 217 DO ilay=2,nlay+1 … … 250 240 251 241 ! full implicit scheme resolved with a second order polynomial equation 252 242 ! default solution which shows fair convergence properties 253 243 DO ilay=2,nlay 254 244 DO igrid=1,ngrid -
LMDZ6/trunk/libf/phylmd/lmdz_atke_turbulence_ini.F90
r4745 r4780 10 10 real :: kappa = 0.4 ! Von Karman constant 11 11 !$OMP THREADPRIVATE(kappa) 12 real :: l0,ric,ri0,cinf,cepsilon,pr_slope,pr_asym,pr_neut,clmix,clmixshear,smmin,ctkes,cke 13 !$OMP THREADPRIVATE(l0,ric,cinf,cepsilon,pr_slope,pr_asym,pr_neut,clmix,clmixshear,smmin,ctkes,cke) 12 real :: cinffac 13 !$OMP THREADPRIVATE(cinffac) 14 real :: l0,ric,ri0,ri1,cinf,cn,cepsilon,pr_slope,pr_asym,pr_neut,clmix,clmixshear,smmin,ctkes,cke 15 !$OMP THREADPRIVATE(l0,ri0,ri1,ric,cinf,cn,cepsilon,pr_slope,pr_asym,pr_neut,clmix,clmixshear,smmin,ctkes,cke) 14 16 integer :: lunout,prt_level 15 17 !$OMP THREADPRIVATE(lunout,prt_level) … … 18 20 real :: viscom, viscoh 19 21 !$OMP THREADPRIVATE(viscom,viscoh) 20 real :: lmin=0.01 ! minimum mixing length 22 real :: lmin=0.01 ! minimum mixing length corresponding to the Kolmogov dissipation scale 23 ! in planetary atmospheres (Chen et al 2016, JGR Atmos) 21 24 !$OMP THREADPRIVATE(lmin) 22 25 logical :: atke_ok_vdiff, atke_ok_virtual … … 89 92 ! Sun et al 2011, JAMC 90 93 ! between 10 and 40 91 92 94 l0=15.0 93 95 CALL getin_p('atke_l0',l0) … … 97 99 CALL getin_p('atke_ric',ric) 98 100 99 ! asymptotic value of Sm for Ri=-Inf100 cinf=1.5101 CALL getin_p('atke_cinf',cinf)102 101 103 102 ! constant for tke dissipation calculation 104 103 cepsilon=5.87 ! default value as in yamada4 105 104 CALL getin_p('atke_cepsilon',cepsilon) 105 106 107 ! calculation of cn = Sm value at Ri=0 108 ! direct dependance on cepsilon to guarantee Fm=1 (first-order like stability function) at Ri=0 109 cn=(1./sqrt(cepsilon))**(2/3) 110 111 ! asymptotic value of Sm for Ri=-Inf 112 cinffac=2.0 113 CALL getin_p('atke_cinffac',cinffac) 114 cinf=cinffac*cn 115 if (cinf .le. cn) then 116 call abort_physic("atke_turbulence_ini", & 117 'cinf cannot be lower than cn', 1) 118 endif 106 119 107 120 … … 119 132 endif 120 133 121 ! asymptotic turbulent prandt number value for Ri=-Inf122 pr_asym=0.4123 CALL getin_p('atke_pr_asym',pr_asym)124 125 134 ! value of turbulent prandtl number in neutral conditions (Ri=0) 126 135 pr_neut=0.8 127 136 CALL getin_p('atke_pr_neut',pr_neut) 137 138 139 ! asymptotic turbulent prandt number value for Ri=-Inf 140 pr_asym=0.4 141 CALL getin_p('atke_pr_asym',pr_asym) 142 if (pr_asym .le. pr_neut) then 143 call abort_physic("atke_turbulence_ini", & 144 'pr_asym must be be greater than pr_neut', 1) 145 endif 146 147 128 148 129 149 ! coefficient for mixing length depending on local stratification … … 147 167 CALL getin_p('atke_cke',cke) 148 168 169 170 ! calculation of Ri0 such that continuity in slope of Sm at Ri=0 171 ri0=2./rpi*(cinf - cn)*ric/cn 172 173 ! calculation of Ri1 to guarantee continuity in slope of Prandlt number at Ri=0 174 ri1 = -2./rpi * (pr_asym - pr_neut) 175 176 149 177 RETURN 150 178
Note: See TracChangeset
for help on using the changeset viewer.