1 SUBROUTINE concvl(iflag_clos, &
3 t, q, t_wake, q_wake, s_wake,
u, v, tra, ntra, &
5 d_t, d_q, d_u, d_v, d_tra, &
6 rain, snow, kbas, ktop,
sigd, &
7 cbmf, plcl, plfc, wbeff, upwd, dnwd, dnwdbis, &
9 cape, cin, tvp, tconv, iflag, &
10 pbase, bbase, dtvpdt1, dtvpdq1, dplcldt, dplcldr, &
11 qcondc, wd, pmflxr, pmflxs, &
14 da, phi, mp, phi2, d1a, dam, sij, clw, elij, &
15 dd_t, dd_q, lalim_conv, wght_th, &
16 evap, ep, epmlmmm, eplamm, &
17 wdtraina, wdtrainm, wght, qtc, sigt, &
127 INTEGER lalim_conv(
klon)
145 REAL supmax0(
klon), asupmaxmin(
klon)
148 REAL zx_t, zdelta, zx_qs, zcor
149 REAL tau_cld_cv, coefw_cld_cv
153 INTEGER noff, minorig
175 REAL,
SAVE,
ALLOCATABLE :: ql(:, :), q1(:, :), t1(:, :)
180 REAL h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, &
181 h_qs_tot, qw_tot, ql_tot, qs_tot, ec_tot
182 SAVE h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, &
183 h_qs_tot, qw_tot, ql_tot, qs_tot, ec_tot
186 REAL d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec
188 REAL fs_bound, fq_bound
207 LOGICAL,
SAVE :: first = .
true.
209 INTEGER,
SAVE :: itap, igout
237 tconv(i, k) = t(i, k)
276 IF (
prt_level>=10)
WRITE (
lunout, *)
'supcrit1, supcrit2', supcrit1, supcrit2
281 IF (if_ebil>=1) d_h_vcol_phy = 0.
297 em_ph(i, k) = paprs(i, k)/100.0
305 em_p(i, k) = pplay(i, k)/100.0
315 em_sig2feed = cvl_sig2feed
334 zdelta = max(0., sign(1.,rtt-zx_t))
335 zx_qs = min(0.5, r2es*foeew(zx_t,zdelta)/em_p(i,k)/100.0)
336 zcor = 1./(1.-retv*zx_qs)
337 qs(i, k) = zx_qs*zcor
341 zdelta = max(0., sign(1.,rtt-zx_t))
342 zx_qs = min(0.5, r2es*foeew(zx_t,zdelta)/em_p(i,k)/100.0)
343 zcor = 1./(1.-retv*zx_qs)
344 qs_wake(i, k) = zx_qs*zcor
351 zdelta = max(0., sign(1.,rtt-zx_t))
352 zx_qs = r2es*foeew(zx_t, zdelta)/em_p(i, k)/100.0
353 zx_qs = min(0.5, zx_qs)
354 zcor = 1./(1.-retv*zx_qs)
360 zdelta = max(0., sign(1.,rtt-zx_t))
361 zx_qs = r2es*foeew(zx_t, zdelta)/em_p(i, k)/100.0
362 zx_qs = min(0.5, zx_qs)
363 zcor = 1./(1.-retv*zx_qs)
365 qs_wake(i, k) = zx_qs
382 t, q, qs, u, v, tra, &
383 em_p, em_ph, iflag, &
384 d_t, d_q, d_u, d_v, d_tra, rain, &
385 vprecip, cbmf, sig1, w01, &
387 dtime, ma, upwd, dnwd, dnwdbis, qcondc, wd, cape, &
388 da, phi, mp, phi2, d1a, dam, sij, clw, elij, &
389 evap, ep, epmlmmm, eplamm, &
394 cbmf(i) = ma(i, kbas(i))
411 t, q, qs, t_wake, q_wake, qs_wake, s_wake, u, v, tra, &
414 em_sig1feed, em_sig2feed, em_wght, &
415 iflag, d_t, d_q, d_u, d_v, d_tra, rain, kbas, ktop, &
416 cbmf, plcl, plfc, wbeff, sig1, w01, ptop2, sigd, &
417 ma, mip, vprecip, vprecipi, upwd, dnwd, dnwdbis, qcondc, wd, &
419 dd_t, dd_q, plim1, plim2, asupmax, supmax0, &
420 asupmaxmin, lalim_conv, &
424 da, phi, mp, phi2, d1a, dam, sij, wght, &
425 clw, elij, evap, ep, epmlmmm, eplamm, &
426 wdtraina, wdtrainm, qtc, sigt, &
427 tau_cld_cv, coefw_cld_cv)
431 IF (
prt_level>=10)
WRITE (
lunout, *)
' cva_driver -> cbmf,plcl,plfc,wbeff ', &
432 cbmf(1), plcl(1), plfc(1), wbeff(1)
435 rain(i) = rain(i)/86400.
441 d_t(i, k) = dtime*d_t(i, k)
442 d_q(i, k) = dtime*d_q(i, k)
443 d_u(i, k) = dtime*d_u(i, k)
444 d_v(i, k) = dtime*d_v(i, k)
453 d_tra(i, k, itra) = 0.
465 d_tra(i, k, itra) = 0.
474 t1(i, k) = t(i, k) + d_t(i, k)
475 q1(i, k) = q(i, k) + d_q(i, k)
479 IF (
iflag_con == 30 .OR. iflag_ice_thermo ==0)
THEN
483 IF (t1(i,k)<rtt)
THEN
484 pmflxs(i, k) = vprecip(i, k)
486 pmflxr(i, k) = vprecip(i, k)
493 pmflxs(i, k) = vprecipi(i, k)
494 pmflxr(i, k) = vprecip(i, k)-vprecipi(i, k)
517 d_tra(i, k, itra) = 0.
!$Id ok_orolf LOGICAL ok_limitvrai LOGICAL ok_all_xml INTEGER iflag_con
subroutine cva_driver(len, nd, ndp1, ntra, nloc, k_upper,iflag_con, iflag_mix, iflag_ice_thermo, iflag_clos, ok_conserv_q,
!$Header!integer nvarmx dtime
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
subroutine cv_driver(len, nd, ndp1, ntra, iflag_con, t1, q1, qs1, u1, v1,tra1, p1, ph1, iflag1, ft1, fq1, fu1, fv1, ftra1, precip1, vprecip1,cbmf1, sig1, w01, icb1, inb1, delt, ma1, upwd1, dnwd1, dnwd01, qcondc1,wd1, cape1, da1, phi1, mp1, phi21, d1a1, dam1, sij1, clw1, elij1,
INTEGER iflag_mix REAL scut REAL Supcrit2 REAL coef_clos_ls!COMMON YOMCST2 iflag_mix
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL pplay
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le paprs
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm u(l)
!$Id sig2feed!common comconema2 iflag_cvl_sigd common comconema1 cvl_comp_threshold
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
!$Id t_glace_min REAL exposant_glace REAL rei_max REAL coefw_cld_cv REAL tmax_fonte_cv INTEGER iflag_cld_cv common nuagecom coefw_cld_cv
!$Id t_glace_min REAL exposant_glace REAL rei_max REAL tau_cld_cv
real, dimension(:,:), allocatable, save omega
subroutine concvl(iflag_clos,dtime, paprs, pplay, k_upper_cv,t, q, t_wake, q_wake, s_wake, u, v, tra, ntra,Ale, Alp, sig1, w01,d_t, d_q, d_u, d_v, d_tra,rain, snow, kbas, ktop, sigd,cbmf, plcl, plfc, wbeff, upwd, dnwd, dnwdbis,Ma, mip, Vprecip,cape, cin, tvp, Tconv, iflag,pbase, bbase, dtvpdt1, dtvpdq1, dplcldt, dplcldr,qcondc, wd, pmflxr, pmflxs,
!$Id!Parameters for nlm real sigd
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout