Changeset 5995 for LMDZ6/trunk/libf/phylmd/lmdz_ratqs_multi.f90
- Timestamp:
- Jan 5, 2026, 5:09:54 PM (8 days ago)
- File:
-
- 1 edited
-
LMDZ6/trunk/libf/phylmd/lmdz_ratqs_multi.f90 (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
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
Note: See TracChangeset
for help on using the changeset viewer.
