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