Changeset 2093
- Timestamp:
- Feb 7, 2019, 12:01:36 PM (6 years ago)
- Location:
- trunk/LMDZ.GENERIC
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/README
r2092 r2093 1448 1448 - uncomment two "corrections" in thermcell_flux. They are used only if iflag_thermals_optflux is set to 0 1449 1449 - remove useless parameter fact_shell in thermcell_mod 1450 - now take d_temp into acocunt in thermcell_plume to trigger the plume and compute first unstable layer speed. -
trunk/LMDZ.GENERIC/libf/phystd/thermcell_alim.F90
r2069 r2093 2 2 ! 3 3 ! 4 SUBROUTINE thermcell_alim(ngrid,klev,ztv ,zlev,alim_star,lalim,lmin)4 SUBROUTINE thermcell_alim(ngrid,klev,ztv2,zlev,alim_star,lalim,lmin) 5 5 6 6 … … 27 27 INTEGER, INTENT(IN) :: lmin(ngrid) ! plume initial level 28 28 29 REAL, INTENT(IN) :: ztv(ngrid,klev) ! Large scale virtual potential temperature 30 ! Virtual potential temperature offset in linf layer 29 REAL, INTENT(IN) :: ztv2(ngrid,klev) ! Virtual potential temperature 31 30 REAL, INTENT(IN) :: zlev(ngrid,klev+1) ! levels altitude 32 31 … … 44 43 45 44 REAL :: alim_star_tot(ngrid) ! integrated alimentation 46 REAL :: ztv2(ngrid,klev) ! ztv + d_temp47 45 48 46 !============================================================================== … … 53 51 54 52 alim_star_tot(:) = 0. 55 56 ztv2(:,:) = ztv(:,:)57 ztv2(:,linf) = ztv2(:,linf) + d_temp58 53 59 54 !============================================================================== -
trunk/LMDZ.GENERIC/libf/phystd/thermcell_plume.F90
r2072 r2093 96 96 REAL zqsat(ngrid) ! saturation vapor pressure (before mixing) 97 97 REAL zdz ! layers height 98 REAL ztv2(ngrid,klev) ! ztv + d_temp * Dirac(l=lmin) 98 99 99 100 REAL zalpha ! … … 159 160 lmin(:) = linf 160 161 162 ztv2(:,:) = ztv(:,:) 163 ztv2(:,linf) = ztv2(:,linf) + d_temp 164 161 165 !============================================================================== 162 166 ! 0. Calcul de l'alimentation … … 175 179 l = linf 176 180 DO WHILE ((.not.active(ig)) .and. pplev(ig,l+1).gt.pres_limit .and. l.lt.klev) 177 IF (ztv (ig,l).gt.ztv(ig,l+1)) THEN181 IF (ztv2(ig,l).gt.ztv2(ig,l+1)) THEN 178 182 active(ig) = .true. 179 183 lmin(ig) = l … … 186 190 ! AB : On pourrait n'appeler thermcell_alim que si la plume est active 187 191 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 188 CALL thermcell_alim(ngrid,klev,ztv ,zlev,alim_star,lalim,lmin)192 CALL thermcell_alim(ngrid,klev,ztv2,zlev,alim_star,lalim,lmin) 189 193 190 194 !============================================================================== … … 208 212 209 213 zw2(ig,l+1) = 2. * RG * (zlev(ig,l+1) - zlev(ig,l)) & 210 & * (ztv (ig,l) - ztv(ig,l+1)) / ztv(ig,l+1)214 & * (ztv2(ig,l) - ztv2(ig,l+1)) / ztv2(ig,l+1) 211 215 212 216 w_est(ig,l+1) = zw2(ig,l+1) 213 214 217 ENDIF 215 218 ENDDO … … 488 491 ENDDO 489 492 490 #undef wrgrads_thermcell491 #ifdef wrgrads_thermcell492 call wrgradsfi(1,klev,entr_star(igout,1:klev),'esta ','esta ')493 call wrgradsfi(1,klev,detr_star(igout,1:klev),'dsta ','dsta ')494 call wrgradsfi(1,klev,zbuoy(igout,1:klev) ,'buoy ','buoy ')495 call wrgradsfi(1,klev,zdqt(igout,1:klev) ,'dqt ','dqt ')496 call wrgradsfi(1,klev,w_est(igout,1:klev) ,'w_est ','w_est ')497 call wrgradsfi(1,klev,w_est(igout,2:klev+1) ,'w_es2 ','w_es2 ')498 call wrgradsfi(1,klev,zw2(igout,1:klev) ,'zw2A ','zw2A ')499 #endif500 501 493 502 494 RETURN
Note: See TracChangeset
for help on using the changeset viewer.