Changeset 3219 for trunk/LMDZ.MARS
- Timestamp:
- Feb 16, 2024, 10:23:53 AM (9 months ago)
- Location:
- trunk/LMDZ.MARS
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/changelog.txt
r3217 r3219 4496 4496 == 13/02/2024 == EM 4497 4497 Move "Martian nogcm" from common dynamics to Mars dynamics-physics interface. 4498 4499 == 16/02/2024 == LL 4500 Small correction for the surface layer scheme: the value of the critical Richardson varys if one used the classic yamada scheme (0.2 in this case) or can be a tunning parameter if one uses the atke scheme 4501 Also add the possibily to write the tke in the diagfi.nc when calling pbl_parameter -
trunk/LMDZ.MARS/libf/phymars/pbl_parameters_mod.F90
r3167 r3219 19 19 CONTAINS 20 20 21 SUBROUTINE pbl_parameters(ngrid,nlay,ps,pplay,pz0,pg,zzlay,zzlev,pu,pv,wstar_in,hfmax,zmax, pts,ph,z_out,n_out, &21 SUBROUTINE pbl_parameters(ngrid,nlay,ps,pplay,pz0,pg,zzlay,zzlev,pu,pv,wstar_in,hfmax,zmax,tke,pts,ph,z_out,n_out, & 22 22 T_out,u_out,ustar,tstar,vhf,vvv) 23 23 … … 25 25 use write_output_mod, only: write_output 26 26 use turb_mod, only: turb_resolved 27 use lmdz_atke_turbulence_ini, only : smmin, cinf, cepsilon, pr_slope, pr_asym, pr_neut, ri0, ri1, cn, rpi27 use lmdz_atke_turbulence_ini, only : smmin, ric, cinf, cepsilon, pr_slope, pr_asym, pr_neut, ri0, ri1, cn, rpi 28 28 29 29 IMPLICIT NONE … … 57 57 ! hfmax(ngrid) maximum vertical turbulent heat flux in thermals (W/m^2) 58 58 ! zmax(ngrid) height reached by the thermals (pbl height) (m) 59 ! tke(ngrid,nlay+1) turbulent kinetic energy (J/kg) 59 60 ! pts(ngrid) surface temperature (K) 60 61 ! ph(ngrid,nlay) potential temperature T*(p/ps)^kappa (k) … … 88 89 REAL, INTENT(IN) :: pu(ngrid,nlay),pv(ngrid,nlay) ! winds 89 90 REAL, INTENT(IN) :: wstar_in(ngrid),hfmax(ngrid),zmax(ngrid) ! free convection velocity , vertical turbulent heat, pbl height 91 REAL, INTENT(IN) :: tke(ngrid,nlay+1) ! Turbulent kinetic energy 90 92 REAL, INTENT(IN) :: pts(ngrid),ph(ngrid,nlay) ! surface temperature, potentiel temperature 91 93 REAL, INTENT(IN) :: z_out(n_out) ! altitudes of the interpolation in the surface layer … … 123 125 REAL cdn(ngrid),chn(ngrid) ! neutral momentum and heat drag coefficient (1) 124 126 REAL pz0t ! initial thermal roughness length z0t for the iterative scheme (m) 125 REAL ric 127 REAL ric_colaitis ! critical richardson number (1) 126 128 REAL reynolds(ngrid) ! Reynolds number (1) 127 129 REAL prandtl(ngrid) ! Prandtl number (1) … … 139 141 REAL sm ! Stability function computed with the ATKE scheme 140 142 REAL f_ri_cd_min ! minimum of the stability function with the ATKE scheme 141 143 REAL ric_4interp ! critical richardson number which is either the one from Colaitis et al. (2013) or ATKE (1) 142 144 ! Code: 143 145 ! -------- … … 173 175 betah = 5. 174 176 lambda = (sqrt(bh/bm))/alphah 175 176 ric = betah/(betam**2) 177 ric_colaitis = betah/(betam**2) 178 179 if(callatke) then 180 ric_4interp = ric 181 else 182 ric_4interp = ric_colaitis 183 endif 184 177 185 178 186 DO ig=1,ngrid … … 195 203 print*,'warning, infinite Richardson at surface' 196 204 print*,pu(ig,1),pv(ig,1) 197 rib(ig) = ric 205 rib(ig) = ric_colaitis 198 206 ENDIF 199 207 … … 221 229 ! STABLE BOUNDARY LAYER : 222 230 prandtl(ig) = 1. 223 IF(rib(ig) .lt. ric ) THEN231 IF(rib(ig) .lt. ric_colaitis) THEN 224 232 ! Assuming alphah=1. and bh=bm for stable conditions : 225 fm(ig) = ((ric -rib(ig))/ric)**2226 fh(ig) = ((ric -rib(ig))/ric)**2233 fm(ig) = ((ric_colaitis-rib(ig))/ric_colaitis)**2 234 fh(ig) = ((ric_colaitis-rib(ig))/ric_colaitis)**2 227 235 ELSE 228 236 ! For Ri>Ric, we consider Ri->Infinity => no turbulent mixing at surface … … 259 267 zout = z_out(n) 260 268 DO ig=1,ngrid 261 IF (rib(ig) .ge. ric ) THEN !stable case, no turbulence269 IF (rib(ig) .ge. ric_4interp) THEN !stable case, no turbulence 262 270 ustar(ig) = 0. 263 271 tstar(ig) = 0. … … 275 283 u_out(ig,n) = 0. 276 284 ELSE 277 IF (rib(ig) .ge. ric ) THEN ! ustar=tstar=0 (and fm=fh=0) because no turbulence285 IF (rib(ig) .ge. ric_4interp) THEN ! ustar=tstar=0 (and fm=fh=0) because no turbulence 278 286 u_out(ig,n) = 0 279 287 Teta_out(ig,n) = pts(ig) … … 346 354 347 355 #ifndef MESOSCALE 356 call write_output('tke_pbl','Tke in the pbl after physic','J/kg',tke(:,:)) 348 357 call write_output('rib_pbl','Richardson in pbl parameter','m/s',rib(:)) 349 358 call write_output('cdn_pbl','neutral momentum coef','m/s',cdn(:)) -
trunk/LMDZ.MARS/libf/phymars/physiq_mod.F
r3207 r3219 2581 2581 2582 2582 call pbl_parameters(ngrid,nlayer,ps,zplay,z0, 2583 & g,zzlay,zzlev,zu,zv,wstar,hfmax_th,zmax_th, tsurf(:,iflat),2583 & g,zzlay,zzlev,zu,zv,wstar,hfmax_th,zmax_th,q2,tsurf(:,iflat), 2584 2584 & zh,z_out,n_out,T_out,u_out,ustar,tstar,vhf,vvv) 2585 2585 ! pourquoi ustar recalcule ici? fait dans vdifc. -
trunk/LMDZ.MARS/libf/phymars/vdif_cd_mod.F90
r3167 r3219 1 1 MODULE vdif_cd_mod 2 2 3 3 !======================================================================================================================! … … 21 21 use turb_mod, only: turb_resolved 22 22 use watersat_mod, only: watersat 23 use lmdz_atke_turbulence_ini, only : smmin, cinf, cepsilon, pr_slope, pr_asym, pr_neut, ri0, ri1, cn, rpi23 use lmdz_atke_turbulence_ini, only : smmin, ric, cinf, cepsilon, pr_slope, pr_asym, pr_neut, ri0, ri1, cn, rpi 24 24 25 25 IMPLICIT NONE … … 112 112 113 113 REAL pz0t ! initial thermal roughness length z0t for the iterative scheme (m) 114 REAL ric 114 REAL ric_colaitis ! critical richardson number (1) 115 115 REAL reynolds(ngrid) ! Reynolds number (1) 116 116 REAL prandtl(ngrid) ! Prandtl number (1) … … 160 160 lambda = (sqrt(bh/bm))/alphah 161 161 162 ric = betah/(betam**2)162 ric_colaitis = betah/(betam**2) 163 163 164 164 IF(virtual) then … … 214 214 print*,'warning, infinite Richardson at surface' 215 215 print*,pu(ig,1),pv(ig,1) 216 rib(ig) = ric 216 rib(ig) = ric_colaitis 217 217 ENDIF 218 218 … … 240 240 ! STABLE BOUNDARY LAYER : 241 241 prandtl(ig) = 1. 242 IF(rib(ig) .lt. ric ) THEN242 IF(rib(ig) .lt. ric_colaitis) THEN 243 243 ! Assuming alphah=1. and bh=bm for stable conditions : 244 fm(ig) = ((ric -rib(ig))/ric)**2245 fh(ig) = ((ric -rib(ig))/ric)**2244 fm(ig) = ((ric_colaitis-rib(ig))/ric_colaitis)**2 245 fh(ig) = ((ric_colaitis-rib(ig))/ric_colaitis)**2 246 246 ELSE 247 247 ! For Ri>Ric, we consider Ri->Infinity => no turbulent mixing at surface … … 284 284 285 285 286 287 286 288 287 289
Note: See TracChangeset
for help on using the changeset viewer.