Changeset 5995
- Timestamp:
- Jan 5, 2026, 5:09:54 PM (7 days ago)
- Location:
- LMDZ6/trunk/libf
- Files:
-
- 5 edited
-
phylmd/lmdz_lscp_ini.f90 (modified) (2 diffs)
-
phylmd/lmdz_ratqs_main.f90 (modified) (8 diffs)
-
phylmd/lmdz_ratqs_multi.f90 (modified) (5 diffs)
-
phylmd/physiq_mod.F90 (modified) (1 diff)
-
phylmdiso/physiq_mod.F90 (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lmdz_lscp_ini.f90
r5727 r5995 1 1 MODULE lmdz_lscp_ini 2 2 3 !---------------------------------------------------------- 4 ! This module initializes all the parameters needed for the 5 ! lscp (large scale clouds and precipitation) routines. 6 !---------------------------------------------------------- 7 3 8 IMPLICIT NONE 4 9 5 ! PARAMETERS for lscp :6 !-------------------- 10 ! PARAMETERS for lscp_main: 11 !------------------------- 7 12 8 13 REAL RCPD, RLSTT, RLVTT, RLMLT, RVTMP2, RTT, RD, RV, RG, RPI, EPS_W … … 339 344 !$OMP THREADPRIVATE(vert_alpha_th) 340 345 ! End of parameters for cloudth routines 346 347 ! parameters for subgrid variability (ratqs) routines 348 349 350 341 351 342 352 ! Two parameters used for lmdz_lscp_old only -
LMDZ6/trunk/libf/phylmd/lmdz_ratqs_main.f90
r5831 r5995 37 37 paprs,pplay,t_seri,q_seri, & 38 38 qtc_cv, sigt_cv,detrain_cv,fm_cv,fqd,fqcomp,sigd,zqsat, & 39 omega, tke,tke_dissip,lmix,wprime,&39 omega, & 40 40 t2m,q2m,fm_therm,entr_therm,detr_therm,cell_area,& 41 41 ratqs,ratqsc,ratqs_inter_,sigma_qtherm) … … 43 43 44 44 USE clouds_gno_mod, ONLY: clouds_gno 45 USE lmdz_ratqs_multi, ONLY: ratqs_inter, ratqs_oro, ratqs_hetero , ratqs_tke45 USE lmdz_ratqs_multi, ONLY: ratqs_inter, ratqs_oro, ratqs_hetero 46 46 47 47 implicit none … … 62 62 real,intent(in) :: ratqsp0, ratqsdp 63 63 real, dimension(klon,klev),intent(in) :: omega 64 real, dimension(klon,klev+1),intent(in) :: paprs ,tke,tke_dissip,lmix,wprime64 real, dimension(klon,klev+1),intent(in) :: paprs 65 65 real, dimension(klon,klev),intent(in) :: pplay,t_seri,q_seri,zqsat 66 66 real, dimension(klon,klev),intent(in) :: entr_therm,detr_therm,qtc_cv, sigt_cv … … 88 88 real, dimension(klon,klev) :: ratqss 89 89 real facteur,zfratqs1,zfratqs2 90 real, dimension(klon,klev) :: ratqs_hetero_,ratqs_oro_ ,ratqs_tke_90 real, dimension(klon,klev) :: ratqs_hetero_,ratqs_oro_ 91 91 real :: resol, fact 92 92 … … 215 215 ratqs_hetero_(i,k)=0. 216 216 ratqs_oro_(i,k)=0. 217 ratqs_tke_(i,k)=0.218 217 ratqs_inter_(i,k)=0 219 218 enddo … … 221 220 222 221 if (iflag_ratqs .EQ. 10) then 223 print*,'avant ratqs_inter'224 222 ! interactive ratqs with several sources 225 223 call ratqs_inter(klon,klev,iflag_ratqs,pdtphys,paprs, & … … 229 227 ratqss=ratqss+ratqs_inter_ 230 228 else if (iflag_ratqs .EQ. 11) then 231 print*,'avant ratqs_inter'232 229 ! interactive ratqs with several sources 233 230 call ratqs_inter(klon,klev,iflag_ratqs,pdtphys,paprs, & … … 244 241 call ratqs_oro(klon,klev,pctsrf,zstd,zqsat,t_seri,pplay,paprs,ratqs_oro_) 245 242 ratqss=ratqss+ratqs_oro_ 246 else if (iflag_ratqs .EQ. 14) then247 ! effect of subgrid-scale TKE on ratqs (in development)248 call ratqs_tke(klon,klev,pdtphys,t_seri,q_seri,zqsat,pplay,paprs,omega,tke,tke_dissip,lmix,wprime,ratqs_tke_)249 ratqss=ratqss+ratqs_tke_250 243 endif 251 244 -
LMDZ6/trunk/libf/phylmd/lmdz_ratqs_multi.f90
r5820 r5995 38 38 39 39 !======================================================================== 40 ! L. d'Alen ??on, 25/02/202140 ! L. d'Alencon, 25/02/2021 41 41 ! Cette subroutine calcule une valeur de ratqsbas interactive 42 42 ! Elle est appel??e par la subroutine ratqs lorsque iflag_ratqs = 11. … … 84 84 enddo 85 85 !------------------------------------------------------------------------- 86 ! Caclul du terme de d ??trainement de la variance pour les thermiques86 ! Caclul du terme de detrainement de la variance pour les thermiques 87 87 !------------------------------------------------------------------------- 88 88 … … 102 102 detr0(:,:) = detr_therm(:,:) 103 103 104 ! calcul du carr ?? de l'humidit?? sp??cifique et circulation dans les thermiques104 ! calcul du carre de l'humidite specifique et circulation dans les thermiques 105 105 po(:,:) = q_seri(:,:) 106 106 call thermcell_dq(klon,klev,dqimpl,pdtphys,fm0,entr0,zmasse, & … … 115 115 116 116 117 ! variance de l'humidit?? sp ??cifique totale dans les thermiques117 ! variance de l'humidit?? specifique totale dans les thermiques 118 118 do k=1,klev 119 119 do i=1,klon … … 364 364 !============================================= 365 365 366 SUBROUTINE ratqs_tke(klon,klev,pdtphys,temp,q,qsat,pplay,paprs,omega,tke,tke_dissip,lmix,wprime,ratqs_tke_)367 368 ! References:369 !370 ! Etienne Vignon: effect of subgrid turbulence on ratqs371 !372 ! Field, P.R., Hill, A., Furtado, K., Korolev, A., 2014b. Mixed-phase clouds in a turbulent environment. Part373 ! 2: analytic treatment. Q. J. R. Meteorol. Soc. 21, 2651???2663. https://doi.org/10.1002/qj.2175.374 !375 ! Furtado, K., Field, P.R., Boutle, I.A., Morcrette, C.R., Wilkinson, J., 2016. A physically-based, subgrid376 ! parametrization for the production and maintenance of mixed-phase clouds in a general circulation377 ! model. J. Atmos. Sci. 73, 279???291. https://doi.org/10.1175/JAS-D-15-0021.378 379 USE lmdz_ratqs_ini, ONLY : RG,RV,RD,RCPD,RLSTT,RLVTT,RTT380 381 IMPLICIT NONE382 383 ! INPUTS384 385 INTEGER, INTENT(IN) :: klon ! number of horizontal grid points386 INTEGER, INTENT(IN) :: klev ! number of vertical layers387 REAL, INTENT(IN) :: pdtphys ! physics time step [s]388 REAL, DIMENSION(klon,klev), INTENT(IN) :: temp ! air temperature [K]389 REAL, DIMENSION(klon,klev), INTENT(IN) :: q ! specific humidity [kg/kg]390 REAL, DIMENSION(klon,klev), INTENT(IN) :: qsat ! saturation specific humidity [kg/kg]391 REAL, DIMENSION(klon,klev), INTENT(IN) :: pplay ! air pressure, layer's center [Pa]392 REAL, DIMENSION(klon,klev+1), INTENT(IN) :: paprs ! air pressure, lower inteface [Pa]393 REAL, DIMENSION(klon,klev), INTENT(IN) :: omega ! air pressure, lower inteface [Pa]394 REAL, DIMENSION(klon,klev+1), INTENT(IN) :: tke ! Turbulent Kinetic Energy [m2/s2]395 REAL, DIMENSION(klon,klev+1), INTENT(IN) :: tke_dissip ! Turbulent Kinetic Energy Dissipation rate [m2/s3]396 REAL, DIMENSION(klon,klev+1), INTENT(IN) :: lmix ! Turbulent mixing length397 REAL, DIMENSION(klon,klev+1), INTENT(IN) :: wprime ! Turbulent vertical velocity scale [m/s]398 399 ! OUTPUTS400 401 REAL, DIMENSION(klon,klev), INTENT(out) :: ratqs_tke_ ! ratsq profile due to subgrid TKE402 403 ! LOCAL404 INTEGER :: i, k405 REAL :: AA, DD, NW, AAprime, VARLOG,rho,Lvs,taue,lhomo,dissmin,maxvarlog406 REAL, DIMENSION(klon,klev) :: sigmaw,w407 REAL, PARAMETER :: C0=10.0408 REAL, PARAMETER :: lmin=0.001409 REAL, PARAMETER :: ratqsmin=1E-6410 REAL, PARAMETER :: ratqsmax=0.5411 412 413 ! Calculation of large scale and turbulent vertical velocities414 !---------------------------------------------------------------415 416 DO k=1,klev417 DO i=1,klon418 rho=pplay(i,k)/temp(i,k)/RD419 w(i,k)=-rho*RG*omega(i,k)420 sigmaw(i,k)=0.5*(wprime(i,k+1)+wprime(i,k)) ! turbulent vertical velocity at the middle of model layers.421 END DO422 END DO423 424 ! Calculation of ratqs425 !---------------------------------------------------------------426 ratqs_tke_(:,1)=ratqsmin ! set to a very low value to avoid division by 0 in order parts427 ! of the code428 DO k=2,klev ! we start from second model level since TKE is not defined at k=1429 DO i=1,klon430 431 IF (temp(i,k) .LT. RTT) THEN432 Lvs=RLSTT433 ELSE434 Lvs=RLVTT435 ENDIF436 dissmin=0.01*(0.5*(tke(i,k)+tke(i,k+1))/pdtphys)437 maxvarlog=LOG(1.0+ratqsmax**2)! to prevent ratqs from exceeding an arbitrary threshold value438 AA=RG*(Lvs/(RCPD*temp(i,k)*temp(i,k)*RV) - 1./(RD*temp(i,k)))439 lhomo=MAX(0.5*(lmix(i,k)+lmix(i,k+1)),lmin)440 taue=(lhomo*lhomo/MAX(0.5*(tke_dissip(i,k)+tke_dissip(i,k+1)),dissmin))**(1./3) ! Fields et al. 2014441 DD=1.0/taue442 NW=(sigmaw(i,k)**2)*SQRT(2./(C0*MAX(0.5*(tke_dissip(i,k)+tke_dissip(i,k+1)),dissmin)))443 AAprime=AA*NW444 VARLOG=AAprime/2./DD445 VARLOG=MIN(VARLOG,maxvarlog)446 ratqs_tke_(i,k)=SQRT(MAX(EXP(VARLOG)-1.0,ratqsmin))447 END DO448 END DO449 END SUBROUTINE ratqs_tke450 451 366 END MODULE lmdz_ratqs_multi -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r5942 r5995 3965 3965 paprs,pplay,t_seri,q_seri, & 3966 3966 qtc_cv, sigt_cv,detrain_cv,fm_cv,fqd,fqcomp,sigd,zqsat, & 3967 omega, pbl_tke(:,:,is_ave),pbl_eps(:,:,is_ave),l_mix_ave,wprime_ave,&3967 omega, & 3968 3968 t2m,q2m,fm_therm,entr_therm,detr_therm,cell_area, & 3969 3969 ratqs,ratqsc,ratqs_inter_,sigma_qtherm) -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r5927 r5995 5125 5125 paprs,pplay,t_seri,q_seri, & 5126 5126 qtc_cv, sigt_cv,detrain_cv,fm_cv,fqd,fqcomp,sigd,zqsat, & 5127 omega, pbl_tke(:,:,is_ave),pbl_eps(:,:,is_ave),l_mix_ave,wprime_ave,&5127 omega, & 5128 5128 t2m,q2m,fm_therm,entr_therm,detr_therm,cell_area, & 5129 5129 ratqs,ratqsc,ratqs_inter_,sigma_qtherm)
Note: See TracChangeset
for help on using the changeset viewer.
