4 SUBROUTINE conflx(dtime, pres_h, pres_f, t, q, con_t, con_q, pqhfl, w, d_t, &
 
    5     d_q, rain, snow, pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, kcbot, kctop, &
 
  119       pt(i, k) = t(i, 
klev-k+1)
 
  120       pq(i, k) = q(i, 
klev-k+1)
 
  121       paprsf(i, k) = pres_f(i, 
klev-k+1)
 
  122       paprs(i, k) = pres_h(i, 
klev+1-k+1)
 
  123       pvervel(i, k) = w(i, 
klev+1-k)
 
  124       zcvgt(i, k) = con_t(i, 
klev-k+1)
 
  125       zcvgq(i, k) = con_q(i, 
klev-k+1)
 
  127       zdelta = max(0., sign(1.,rtt-pt(i,k)))
 
  128       zqsat = r2es*foeew(pt(i,k), zdelta)/paprsf(i, k)
 
  129       zqsat = min(0.5, zqsat)
 
  130       zqsat = zqsat/(1.-retv*zqsat)
 
  135     paprs(i, 
klev+1) = pres_h(i, 1)
 
  136     zgeom(i, 
klev) = rd*pt(i, 
klev)/(0.5*(paprs(i,
klev+1)+paprsf(i, &
 
  139   DO k = 
klev - 1, 1, -1
 
  141       zgeom(i, k) = zgeom(i, k+1) + rd*0.5*(pt(i,k+1)+pt(i,k))/paprs(i, k+1)* &
 
  142         (paprsf(i,k+1)-paprsf(i,k))
 
  148   CALL flxmain(dtime, pt, pq, pqs, pqhfl, paprsf, paprs, zgeom, land, zcvgt, &
 
  149     zcvgq, pvervel, rain, snow, kcbot, kctop, kdtop, zmfu, zmfd, zen_u, &
 
  150     zde_u, zen_d, zde_d, d_t_bis, d_q_bis, zmflxr, zmflxs)
 
  160       d_q(i, 
klev+1-k) = dtime*d_q_bis(i, k)
 
  161       d_t(i, 
klev+1-k) = dtime*d_t_bis(i, k)
 
  174       pmfu(i, 
klev+2-k) = zmfu(i, k)
 
  175       pmfd(i, 
klev+2-k) = zmfd(i, k)
 
  181       pen_u(i, 
klev+1-k) = zen_u(i, k)
 
  182       pde_u(i, 
klev+1-k) = zde_u(i, k)
 
  188       pen_d(i, 
klev+1-k) = -zen_d(i, k+1)
 
  189       pde_d(i, 
klev+1-k) = -zde_d(i, k+1)
 
  195       pmflxr(i, 
klev+2-k) = zmflxr(i, k)
 
  196       pmflxs(i, 
klev+2-k) = zmflxs(i, k)
 
  203 SUBROUTINE flxmain(pdtime, pten, pqen, pqsen, pqhfl, pap, paph, pgeo, ldland, &
 
  204     ptte, pqte, pvervel, prsfc, pssfc, kcbot, kctop, kdtop, & 
 
  206     pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, dt_con, dq_con, pmflxr, pmflxs)
 
  242   REAL pdtime, zqumqe, zdqmin, zalvdcp, zhsat, zzz
 
  243   REAL zhhat, zpbmpt, zgam, zeps, zfac
 
  244   INTEGER i, k, ikb, itopm2, kcum
 
  256   DATA firstcal/.
true./
 
  276   CALL flxini(pten, pqen, pqsen, pgeo, paph, zgeoh, ztenh, zqenh, zqsenh, &
 
  277     ptu, pqu, ptd, pqd, pmfd, zmfds, zmfdq, zdmfdp, pmfu, zmfus, zmfuq, &
 
  278     zdmfup, zdpmel, plu, plude, ilab, pen_u, pde_u, pen_d, pde_d)
 
  282   CALL flxbase(ztenh, zqenh, zgeoh, paph, ptu, pqu, plu, ldcum, kcbot, ilab)
 
  292     zdqcv(i) = pqte(i, k)*(paph(i,k+1)-paph(i,k))
 
  299       zdqcv(i) = zdqcv(i) + pqte(i, k)*(paph(i,k+1)-paph(i,k))
 
  300       IF (k>=kcbot(i)) 
THEN 
  301         zdqpbl(i) = zdqpbl(i) + pqte(i, k)*(paph(i,k+1)-paph(i,k))
 
  302         zdhpbl(i) = zdhpbl(i) + (rcpd*ptte(i,k)+rlvtt*pqte(i,k))*(paph(i,k+1) &
 
  310     IF (zdqcv(i)>max(0.,-1.5*pqhfl(i)*
rg)) ktype(i) = 1
 
  320     zqumqe = pqu(i, ikb) + plu(i, ikb) - zqenh(i, ikb)
 
  321     zdqmin = max(0.01*zqenh(i,ikb), 1.e-10)
 
  322     IF (zdqpbl(i)>0. .AND. zqumqe>zdqmin .AND. ldcum(i)) 
THEN 
  323       zmfub(i) = zdqpbl(i)/(
rg*max(zqumqe,zdqmin))
 
  328     IF (ktype(i)==2) 
THEN 
  329       zdh = rcpd*(ptu(i,ikb)-ztenh(i,ikb)) + rlvtt*zqumqe
 
  330       zdh = 
rg*max(zdh, 1.0e5*zdqmin)
 
  331       IF (zdhpbl(i)>0. .AND. ldcum(i)) zmfub(i) = zdhpbl(i)/zdh
 
  333     zmfmax = (paph(i,ikb)-paph(i,ikb-1))/(
rg*pdtime)
 
  334     zmfub(i) = min(zmfub(i), zmfmax)
 
  336     IF (ktype(i)==1) zentr(i) = entrpen
 
  347     zhcbase(i) = rcpd*ptu(i, ikb) + zgeoh(i, ikb) + rlvtt*pqu(i, ikb)
 
  348     ictop0(i) = kcbot(i) - 1
 
  352   DO k = 
klev - 1, 3, -1
 
  354       zhsat = rcpd*ztenh(i, k) + zgeoh(i, k) + rlvtt*zqsenh(i, k)
 
  355       zgam = r5les*zalvdcp*zqsenh(i, k)/((1.-retv*zqsenh(i,k))*(ztenh(i, &
 
  357       zzz = rcpd*ztenh(i, k)*0.608
 
  358       zhhat = zhsat - (zzz+zgam*zzz)/(1.+zgam*zzz/rlvtt)*max(zqsenh(i,k)- &
 
  360       IF (k<ictop0(i) .AND. zhcbase(i)>zhhat) ictop0(i) = k
 
  366   CALL flxasc(pdtime, ztenh, zqenh, pten, pqen, pqsen, pgeo, zgeoh, pap, &
 
  367     paph, pqte, pvervel, ldland, ldcum, ktype, ilab, ptu, pqu, plu, pmfu, &
 
  368     zmfub, zentr, zmfus, zmfuq, zmful, plude, zdmfup, kcbot, kctop, ictop0, &
 
  370   IF (kcum==0) 
GO TO 1000
 
  376     zpbmpt = paph(i, kcbot(i)) - paph(i, kctop(i))
 
  377     IF (ldcum(i) .AND. ktype(i)==1 .AND. zpbmpt<2.e4) ktype(i) = 2
 
  378     IF (ldcum(i)) ictop0(i) = kctop(i)
 
  379     IF (ktype(i)==2) zentr(i) = entrscv
 
  387       zrfl(i) = zdmfup(i, 1)
 
  391         zrfl(i) = zrfl(i) + zdmfup(i, k)
 
  396     CALL flxdlfs(ztenh, zqenh, zgeoh, paph, ptu, pqu, ldcum, kcbot, kctop, &
 
  397       zmfub, zrfl, ptd, pqd, pmfd, zmfds, zmfdq, zdmfdp, kdtop, lddraf)
 
  400     CALL flxddraf(ztenh, zqenh, zgeoh, paph, zrfl, ptd, pqd, pmfd, zmfds, &
 
  401       zmfdq, zdmfdp, lddraf, pen_d, pde_d)
 
  409         llo1 = pmfd(i, ikb) < 0.
 
  411         IF (llo1) zeps = cmfdeps
 
  412         zqumqe = pqu(i, ikb) + plu(i, ikb) - zeps*pqd(i, ikb) - &
 
  413           (1.-zeps)*zqenh(i, ikb)
 
  414         zdqmin = max(0.01*zqenh(i,ikb), 1.e-10)
 
  415         zmfmax = (paph(i,ikb)-paph(i,ikb-1))/(
rg*pdtime)
 
  416         IF (zdqpbl(i)>0. .AND. zqumqe>zdqmin .AND. ldcum(i) .AND. &
 
  417             zmfub(i)<zmfmax) 
THEN 
  418           zmfub1(i) = zdqpbl(i)/(
rg*max(zqumqe,zdqmin))
 
  422         IF (ktype(i)==2) 
THEN 
  423           zdh = rcpd*(ptu(i,ikb)-zeps*ptd(i,ikb)-(1.-zeps)*ztenh(i,ikb)) + &
 
  425           zdh = 
rg*max(zdh, 1.0e5*zdqmin)
 
  426           IF (zdhpbl(i)>0. .AND. ldcum(i)) zmfub1(i) = zdhpbl(i)/zdh
 
  428         IF (.NOT. ((ktype(i)==1 .OR. ktype(i)==2) .AND. abs(zmfub1(i)-zmfub(i &
 
  429           ))<0.2*zmfub(i))) zmfub1(i) = zmfub(i)
 
  435           zfac = zmfub1(i)/max(zmfub(i), 1.e-10)
 
  436           pmfd(i, k) = pmfd(i, k)*zfac
 
  437           zmfds(i, k) = zmfds(i, k)*zfac
 
  438           zmfdq(i, k) = zmfdq(i, k)*zfac
 
  439           zdmfdp(i, k) = zdmfdp(i, k)*zfac
 
  440           pen_d(i, k) = pen_d(i, k)*zfac
 
  441           pde_d(i, k) = pde_d(i, k)*zfac
 
  446       IF (lddraf(i)) zmfub(i) = zmfub1(i)
 
  454   CALL flxasc(pdtime, ztenh, zqenh, pten, pqen, pqsen, pgeo, zgeoh, pap, &
 
  455     paph, pqte, pvervel, ldland, ldcum, ktype, ilab, ptu, pqu, plu, pmfu, &
 
  456     zmfub, zentr, zmfus, zmfuq, zmful, plude, zdmfup, kcbot, kctop, ictop0, &
 
  463   CALL flxflux(pdtime, pqen, pqsen, ztenh, zqenh, pap, paph, ldland, zgeoh, &
 
  464     kcbot, kctop, lddraf, kdtop, ktype, ldcum, pmfu, pmfd, zmfus, zmfds, &
 
  465     zmfuq, zmfdq, zmful, plude, zdmfup, zdmfdp, pten, prsfc, pssfc, zdpmel, &
 
  466     itopm2, pmflxr, pmflxs)
 
  471   CALL flxdtdq(pdtime, itopm2, paph, ldcum, pten, zmfus, zmfds, zmfuq, zmfdq, &
 
  472     zmful, zdmfup, zdmfdp, zdpmel, dt_con, dq_con)
 
  477 SUBROUTINE flxini(pten, pqen, pqsen, pgeo, paph, pgeoh, ptenh, pqenh, pqsenh, &
 
  478     ptu, pqu, ptd, pqd, pmfd, pmfds, pmfdq, pdmfdp, pmfu, pmfus, pmfuq, &
 
  479     pdmfup, pdpmel, plu, plude, klab, pen_u, pde_u, pen_d, pde_d)
 
  534       pgeoh(i, k) = pgeo(i, k) + (pgeo(i,k-1)-pgeo(i,k))*0.5
 
  535       ptenh(i, k) = (max(rcpd*pten(i,k-1)+pgeo(i,k-1),rcpd*pten(i,k)+pgeo(i, &
 
  537       pqsenh(i, k) = pqsen(i, k-1)
 
  542     CALL flxadjtq(paph(1,k), ptenh(1,k), pqsenh(1,k), llflag, icall)
 
  545       pqenh(i, k) = min(pqen(i,k-1), pqsen(i,k-1)) + &
 
  546         (pqsenh(i,k)-pqsen(i,k-1))
 
  547       pqenh(i, k) = max(pqenh(i,k), 0.)
 
  555     ptenh(i, 1) = pten(i, 1)
 
  556     pqenh(i, 1) = pqen(i, 1)
 
  557     pgeoh(i, 1) = pgeo(i, 1)
 
  560   DO k = 
klev - 1, 2, -1
 
  562       zzs = max(rcpd*ptenh(i,k)+pgeoh(i,k), rcpd*ptenh(i,k+1)+pgeoh(i,k+1))
 
  563       ptenh(i, k) = (zzs-pgeoh(i,k))/rcpd
 
  572       ptu(i, k) = ptenh(i, k)
 
  573       pqu(i, k) = pqenh(i, k)
 
  584       ptd(i, k) = ptenh(i, k)
 
  585       pqd(i, k) = pqenh(i, k)
 
  600 SUBROUTINE flxbase(ptenh, pqenh, pgeoh, paph, ptu, pqu, plu, ldcum, kcbot, &
 
  625   INTEGER i, k, icall, is
 
  626   REAL zbuo, zqold(
klon)
 
  641   DO k = 
klev - 1, 2, -1
 
  645       IF (klab(i,k+1)==1) is = is + 1
 
  647       IF (klab(i,k+1)==1) llflag(i) = .
true.
 
  653         pqu(i, k) = pqu(i, k+1)
 
  654         ptu(i, k) = ptu(i, k+1) + (pgeoh(i,k+1)-pgeoh(i,k))/rcpd
 
  655         zbuo = ptu(i, k)*(1.+retv*pqu(i,k)) - ptenh(i, k)*(1.+retv*pqenh(i,k) &
 
  657         IF (zbuo>0.) klab(i, k) = 1
 
  663     CALL flxadjtq(paph(1,k), ptu(1,k), pqu(1,k), llflag, icall)
 
  666       IF (llflag(i) .AND. pqu(i,k)/=zqold(i)) 
THEN 
  668         plu(i, k) = plu(i, k) + zqold(i) - pqu(i, k)
 
  669         zbuo = ptu(i, k)*(1.+retv*pqu(i,k)) - ptenh(i, k)*(1.+retv*pqenh(i,k) &
 
  671         IF (zbuo>0.) kcbot(i) = k
 
  672         IF (zbuo>0.) ldcum(i) = .
true.
 
  680 SUBROUTINE flxasc(pdtime, ptenh, pqenh, pten, pqen, pqsen, pgeo, pgeoh, pap, &
 
  681     paph, pqte, pvervel, ldland, ldcum, ktype, klab, ptu, pqu, plu, pmfu, &
 
  682     pmfub, pentr, pmfus, pmfuq, pmful, plude, pdmfup, kcbot, kctop, kctop0, &
 
  716   INTEGER k, i, is, icall, kcum
 
  717   REAL ztglace, zdphi, zqeen, zseen, zscde, zqude
 
  718   REAL zmfusk, zmfuqk, zmfulk, zbuo, zdnoprc, zprcon, zlnew
 
  721   REAL zdprho, zentr, zpmid, zmftest, zmfmax
 
  724   REAL zwmax(
klon), zzzmb
 
  737       IF (pvervel(i,k)<zwmax(i)) 
THEN 
  738         zwmax(i) = pvervel(i, k)
 
  747     IF (.NOT. ldcum(i)) ktype(i) = 0
 
  759       IF (.NOT. ldcum(i) .OR. ktype(i)==3) klab(i, k) = 0
 
  760       IF (.NOT. ldcum(i) .AND. paph(i,k)<4.e4) kctop0(i) = k
 
  767       zdphi = pgeoh(i, kctop0(i)) - pgeoh(i, kcbot(i))
 
  768       IF (ptu(i,kctop0(i))>=ztglace) zdland(i) = zdphi
 
  769       zdland(i) = max(3.0e4, zdland(i))
 
  770       zdland(i) = min(5.0e4, zdland(i))
 
  778     IF (.NOT. ldcum(i)) 
THEN 
  783     pmfu(i, 
klev) = pmfub(i)
 
  784     pmfus(i, 
klev) = pmfub(i)*(rcpd*ptu(i,
klev)+pgeoh(i,
klev))
 
  785     pmfuq(i, 
klev) = pmfub(i)*pqu(i, 
klev)
 
  797   DO k = 
klev - 1, 3, -1
 
  799     IF (lmfmid .AND. k<
klev-1) 
THEN 
  801         IF (.NOT. ldcum(i) .AND. klab(i,k+1)==0 .AND. &
 
  802             pqen(i,k)>0.9*pqsen(i,k) .AND. pap(i,k)/paph(i,
klev+1)>0.4) 
THEN 
  803           ptu(i, k+1) = pten(i, k) + (pgeo(i,k)-pgeoh(i,k+1))/rcpd
 
  804           pqu(i, k+1) = pqen(i, k)
 
  806           zzzmb = max(cmfcmin, -pvervel(i,k)/
rg)
 
  807           zmfmax = (paph(i,k)-paph(i,k-1))/(
rg*pdtime)
 
  808           pmfub(i) = min(zzzmb, zmfmax)
 
  809           pmfu(i, k+1) = pmfub(i)
 
  810           pmfus(i, k+1) = pmfub(i)*(rcpd*ptu(i,k+1)+pgeoh(i,k+1))
 
  811           pmfuq(i, k+1) = pmfub(i)*pqu(i, k+1)
 
  824       is = is + klab(i, k+1)
 
  825       IF (klab(i,k+1)==0) klab(i, k) = 0
 
  827       IF (klab(i,k+1)>0) llflag(i) = .
true.
 
  836       zrho(i) = paph(i, k+1)/(rd*ptenh(i,k+1))
 
  837       zpbot(i) = paph(i, kcbot(i))
 
  838       zptop(i) = paph(i, kctop0(i))
 
  843         zdprho = (paph(i,k+1)-paph(i,k))/(
rg*zrho(i))
 
  844         zentr = pentr(i)*pmfu(i, k+1)*zdprho
 
  846         IF (llo1) pde_u(i, k) = zentr
 
  847         zpmid = 0.5*(zpbot(i)+zptop(i))
 
  848         llo2 = llo1 .AND. ktype(i) == 2 .AND. (zpbot(i)-paph(i,k)<0.2e5 .OR. &
 
  850         IF (llo2) pen_u(i, k) = zentr
 
  851         llo2 = llo1 .AND. (ktype(i)==1 .OR. ktype(i)==3) .AND. &
 
  852           (k>=max(klwmin(i),kctop0(i)+2) .OR. pap(i,k)>zpmid)
 
  853         IF (llo2) pen_u(i, k) = zentr
 
  854         llo1 = pen_u(i, k) > 0. .AND. (ktype(i)==1 .OR. ktype(i)==2)
 
  856           fact = 1. + 3.*(1.-min(1.,(zpbot(i)-pap(i,k))/1.5e4))
 
  858           pen_u(i, k) = pen_u(i, k)*fact
 
  859           pde_u(i, k) = pde_u(i, k)*fact
 
  861         IF (llo2 .AND. pqenh(i,k+1)>1.e-5) pen_u(i, k) = zentr + &
 
  862           max(pqte(i,k), 0.)/pqenh(i, k+1)*zrho(i)*zdprho
 
  873           zmftest = pmfu(i, k+1) + pen_u(i, k) - pde_u(i, k)
 
  874           zmfmax = min(zmftest, (paph(i,k)-paph(i,k-1))/(
rg*pdtime))
 
  875           pen_u(i, k) = max(pen_u(i,k)-max(0.0,zmftest-zmfmax), 0.0)
 
  877         pde_u(i, k) = min(pde_u(i,k), 0.75*pmfu(i,k+1))
 
  879         pmfu(i, k) = pmfu(i, k+1) + pen_u(i, k) - pde_u(i, k)
 
  882         zqeen = pqenh(i, k+1)*pen_u(i, k)
 
  883         zseen = (rcpd*ptenh(i,k+1)+pgeoh(i,k+1))*pen_u(i, k)
 
  884         zscde = (rcpd*ptu(i,k+1)+pgeoh(i,k+1))*pde_u(i, k)
 
  885         zqude = pqu(i, k+1)*pde_u(i, k)
 
  886         plude(i, k) = plu(i, k+1)*pde_u(i, k)
 
  887         zmfusk = pmfus(i, k+1) + zseen - zscde
 
  888         zmfuqk = pmfuq(i, k+1) + zqeen - zqude
 
  889         zmfulk = pmful(i, k+1) - plude(i, k)
 
  890         plu(i, k) = zmfulk*(1./max(cmfcmin,pmfu(i,k)))
 
  891         pqu(i, k) = zmfuqk*(1./max(cmfcmin,pmfu(i,k)))
 
  892         ptu(i, k) = (zmfusk*(1./max(cmfcmin,pmfu(i,k)))-pgeoh(i,k))/rcpd
 
  893         ptu(i, k) = max(100., ptu(i,k))
 
  894         ptu(i, k) = min(400., ptu(i,k))
 
  906     CALL flxadjtq(paph(1,k), ptu(1,k), pqu(1,k), llflag, icall)
 
  909       IF (llflag(i) .AND. pqu(i,k)/=zqold(i)) 
THEN 
  911         plu(i, k) = plu(i, k) + zqold(i) - pqu(i, k)
 
  912         zbuo = ptu(i, k)*(1.+retv*pqu(i,k)) - ptenh(i, k)*(1.+retv*pqenh(i,k) &
 
  914         IF (klab(i,k+1)==1) zbuo = zbuo + 0.5
 
  915         IF (zbuo>0. .AND. pmfu(i,k)>=0.1*pmfub(i)) 
THEN 
  919           IF (ldland(i)) zdnoprc = zdland(i)
 
  921           IF ((zpbot(i)-paph(i,k))<zdnoprc) zprcon = 0.0
 
  922           zlnew = plu(i, k)/(1.+zprcon*(pgeoh(i,k)-pgeoh(i,k+1)))
 
  923           pdmfup(i, k) = max(0., (plu(i,k)-zlnew)*pmfu(i,k))
 
  933         pmful(i, k) = plu(i, k)*pmfu(i, k)
 
  934         pmfus(i, k) = (rcpd*ptu(i,k)+pgeoh(i,k))*pmfu(i, k)
 
  935         pmfuq(i, k) = pqu(i, k)*pmfu(i, k)
 
  948     kcbot(i) = max(kcbot(i), kctop(i))
 
  955     IF (ldcum(i)) is = is + 1
 
  963       pde_u(i, k) = (1.-cmfctop)*pmfu(i, k+1)
 
  964       plude(i, k) = pde_u(i, k)*plu(i, k+1)
 
  965       pmfu(i, k) = pmfu(i, k+1) - pde_u(i, k)
 
  967       pdmfup(i, k) = max(0., (plu(i,k)-zlnew)*pmfu(i,k))
 
  969       pmfus(i, k) = (rcpd*ptu(i,k)+pgeoh(i,k))*pmfu(i, k)
 
  970       pmfuq(i, k) = pqu(i, k)*pmfu(i, k)
 
  971       pmful(i, k) = plu(i, k)*pmfu(i, k)
 
  972       plude(i, k-1) = pmful(i, k)
 
  979 SUBROUTINE flxflux(pdtime, pqen, pqsen, ptenh, pqenh, pap, paph, ldland, &
 
  980     pgeoh, kcbot, kctop, lddraf, kdtop, ktype, ldcum, pmfu, pmfd, pmfus, &
 
  981     pmfds, pmfuq, pmfdq, pmful, plude, pdmfup, pdmfdp, pten, prfl, psfl, &
 
  982     pdpmel, ktopm2, pmflxr, pmflxs)
 
 1001   REAL ztmsmlt, zdelta, zqsat
 
 1017   REAL zcons1, zcons2, zcucov, ztmelp2
 
 1018   REAL pdtime, zdp, zzp, zfac, zsnmlt, zrfl, zrnew
 
 1019   REAL zrmin, zrfln, zdrfl
 
 1020   REAL zpds, zpdr, zdenom
 
 1021   INTEGER ktopm2, itop, ikb
 
 1023   LOGICAL lddraf(
klon)
 
 1030       cevapcu(i, k) = 1.93e-6*261.*sqrt(1.e3/(38.3*0.293)*sqrt(0.5*(paph(i,k) &
 
 1031         +paph(i,k+1))/paph(i,
klev+1)))*0.5/
rg 
 1037   zcons1 = rcpd/(rlmlt*
rg*pdtime)
 
 1038   zcons2 = 1./(
rg*pdtime)
 
 1046     itop = min(itop, kctop(i))
 
 1047     IF (.NOT. ldcum(i) .OR. kdtop(i)<kctop(i)) lddraf(i) = .
false.
 
 1048     IF (.NOT. ldcum(i)) ktype(i) = 0
 
 1054       IF (ldcum(i) .AND. k>=kctop(i)-1) 
THEN 
 1055         pmfus(i, k) = pmfus(i, k) - pmfu(i, k)*(rcpd*ptenh(i,k)+pgeoh(i,k))
 
 1056         pmfuq(i, k) = pmfuq(i, k) - pmfu(i, k)*pqenh(i, k)
 
 1058         IF (ldland(i)) zdp = 3.e4
 
 1064         IF (paph(i,kcbot(i))-paph(i,kctop(i))>=zdp .AND. pqen(i,k-1)>0.8* &
 
 1065           pqsen(i,k-1)) pdmfup(i, k-1) = pdmfup(i, k-1) + plude(i, k-1)
 
 1067         IF (lddraf(i) .AND. k>=kdtop(i)) 
THEN 
 1068           pmfds(i, k) = pmfds(i, k) - pmfd(i, k)*(rcpd*ptenh(i,k)+pgeoh(i,k))
 
 1069           pmfdq(i, k) = pmfdq(i, k) - pmfd(i, k)*pqenh(i, k)
 
 1093       IF (ldcum(i) .AND. k>kcbot(i)) 
THEN 
 1095         zzp = ((paph(i,
klev+1)-paph(i,k))/(paph(i,
klev+1)-paph(i,ikb)))
 
 1096         IF (ktype(i)==3) zzp = zzp**2
 
 1097         pmfu(i, k) = pmfu(i, ikb)*zzp
 
 1098         pmfus(i, k) = pmfus(i, ikb)*zzp
 
 1099         pmfuq(i, k) = pmfuq(i, ikb)*zzp
 
 1100         pmful(i, k) = pmful(i, ikb)*zzp
 
 1118         IF (pmflxs(i,k)>0.0 .AND. pten(i,k)>ztmelp2) 
THEN 
 1119           zfac = zcons1*(paph(i,k+1)-paph(i,k))
 
 1120           zsnmlt = min(pmflxs(i,k), zfac*(pten(i,k)-ztmelp2))
 
 1121           pdpmel(i, k) = zsnmlt
 
 1122           ztmsmlt = pten(i, k) - zsnmlt/zfac
 
 1123           zdelta = max(0., sign(1.,rtt-ztmsmlt))
 
 1124           zqsat = r2es*foeew(ztmsmlt, zdelta)/pap(i, k)
 
 1125           zqsat = min(0.5, zqsat)
 
 1126           zqsat = zqsat/(1.-retv*zqsat)
 
 1129         IF (pten(i,k)>rtt) 
THEN 
 1130           pmflxr(i, k+1) = pmflxr(i, k) + pdmfup(i, k) + pdmfdp(i, k) + &
 
 1132           pmflxs(i, k+1) = pmflxs(i, k) - pdpmel(i, k)
 
 1134           pmflxs(i, k+1) = pmflxs(i, k) + pdmfup(i, k) + pdmfdp(i, k)
 
 1135           pmflxr(i, k+1) = pmflxr(i, k)
 
 1139         IF ((pmflxr(i,k+1)+pmflxs(i,k+1))<0.0) 
THEN 
 1140           pdmfdp(i, k) = -pmflxr(i, k) - pmflxs(i, k) - pdmfup(i, k)
 
 1141           pmflxr(i, k+1) = 0.0
 
 1142           pmflxs(i, k+1) = 0.0
 
 1159       maxpdmfdp(i, k) = 0.0
 
 1165         maxpdmfdp(i, k) = maxpdmfdp(i, k) + pdmfdp(i, kp)
 
 1173       IF (ldcum(i) .AND. k>=kcbot(i)) 
THEN 
 1174         zrfl = pmflxr(i, k) + pmflxs(i, k)
 
 1175         IF (zrfl>1.0e-20) 
THEN 
 1176           zrnew = (max(0.,sqrt(zrfl/zcucov)-cevapcu(i, &
 
 1177             k)*(paph(i,k+1)-paph(i,k))*max(0.,pqsen(i,k)-pqen(i,k))))**2* &
 
 1179           zrmin = zrfl - zcucov*max(0., 0.8*pqsen(i,k)-pqen(i,k))*zcons2*( &
 
 1180             paph(i,k+1)-paph(i,k))
 
 1181           zrnew = max(zrnew, zrmin)
 
 1182           zrfln = max(zrnew, 0.)
 
 1183           zdrfl = min(0., zrfln-zrfl)
 
 1189           zdrfl = max(zdrfl, min(-pmflxr(i,k)-pmflxs(i,k)-maxpdmfdp(i, &
 
 1193           zdenom = 1.0/max(1.0e-20, pmflxr(i,k)+pmflxs(i,k))
 
 1194           IF (pten(i,k)>rtt) 
THEN 
 1201           pmflxr(i, k+1) = pmflxr(i, k) + zpdr + pdpmel(i, k) + &
 
 1202             zdrfl*pmflxr(i, k)*zdenom
 
 1203           pmflxs(i, k+1) = pmflxs(i, k) + zpds - pdpmel(i, k) + &
 
 1204             zdrfl*pmflxs(i, k)*zdenom
 
 1205           pdmfup(i, k) = pdmfup(i, k) + zdrfl
 
 1207           pmflxr(i, k+1) = 0.0
 
 1208           pmflxs(i, k+1) = 0.0
 
 1212         IF (pmflxr(i,k)+pmflxs(i,k)<-1.e-26 .AND. 
prt_level>=1) 
WRITE (*, *) &
 
 1213           'precip. < 1e-16 ', pmflxr(i, k) + pmflxs(i, k)
 
 1219     prfl(i) = pmflxr(i, 
klev+1)
 
 1220     psfl(i) = pmflxs(i, 
klev+1)
 
 1225 SUBROUTINE flxdtdq(pdtime, ktopm2, paph, ldcum, pten, pmfus, pmfds, pmfuq, &
 
 1226     pmfdq, pmful, pdmfup, pdmfdp, pdpmel, dt_con, dq_con)
 
 1251   REAL zalv, zdtdt, zdqdt
 
 1253   DO k = ktopm2, 
klev - 1
 
 1256         llo1 = (pten(i,k)-rtt) > 0.
 
 1258         IF (llo1) zalv = rlvtt
 
 1259         zdtdt = 
rg/(paph(i,k+1)-paph(i,k))/rcpd*(pmfus(i,k+1)-pmfus(i,k)+ &
 
 1260           pmfds(i,k+1)-pmfds(i,k)-rlmlt*pdpmel(i,k)-zalv*(pmful(i, &
 
 1261           k+1)-pmful(i,k)-pdmfup(i,k)-pdmfdp(i,k)))
 
 1262         dt_con(i, k) = zdtdt
 
 1263         zdqdt = 
rg/(paph(i,k+1)-paph(i,k))*(pmfuq(i,k+1)-pmfuq(i,k)+pmfdq(i,k &
 
 1264           +1)-pmfdq(i,k)+pmful(i,k+1)-pmful(i,k)-pdmfup(i,k)-pdmfdp(i,k))
 
 1265         dq_con(i, k) = zdqdt
 
 1273       llo1 = (pten(i,k)-rtt) > 0.
 
 1275       IF (llo1) zalv = rlvtt
 
 1276       zdtdt = -
rg/(paph(i,k+1)-paph(i,k))/rcpd*(pmfus(i,k)+pmfds(i,k)+rlmlt* &
 
 1277         pdpmel(i,k)-zalv*(pmful(i,k)+pdmfup(i,k)+pdmfdp(i,k)))
 
 1278       dt_con(i, k) = zdtdt
 
 1279       zdqdt = -
rg/(paph(i,k+1)-paph(i,k))*(pmfuq(i,k)+pmfdq(i,k)+pmful(i,k)+ &
 
 1280         pdmfup(i,k)+pdmfdp(i,k))
 
 1281       dq_con(i, k) = zdqdt
 
 1287 SUBROUTINE flxdlfs(ptenh, pqenh, pgeoh, paph, ptu, pqu, ldcum, kcbot, kctop, &
 
 1288     pmfub, prfl, ptd, pqd, pmfd, pmfds, pmfdq, pdmfdp, kdtop, lddraf)
 
 1325   REAL zttest, zqtest, zbuo, zmftop
 
 1327   INTEGER i, k, is, icall
 
 1353       ztenwb(i, k) = ptenh(i, k)
 
 1354       zqenwb(i, k) = pqenh(i, k)
 
 1355       llo2(i) = ldcum(i) .AND. prfl(i) > 0. .AND. .NOT. lddraf(i) .AND. &
 
 1356         (k<kcbot(i) .AND. k>kctop(i))
 
 1357       IF (llo2(i)) is = is + 1
 
 1359     IF (is==0) 
GO TO 290
 
 1362     CALL flxadjtq(paph(1,k), ztenwb(1,k), zqenwb(1,k), llo2, icall)
 
 1371         zttest = 0.5*(ptu(i,k)+ztenwb(i,k))
 
 1372         zqtest = 0.5*(pqu(i,k)+zqenwb(i,k))
 
 1373         zbuo = zttest*(1.+retv*zqtest) - ptenh(i, k)*(1.+retv*pqenh(i,k))
 
 1374         zcond(i) = pqenh(i, k) - zqenwb(i, k)
 
 1375         zmftop = -cmfdeps*pmfub(i)
 
 1376         IF (zbuo<0. .AND. prfl(i)>10.*zmftop*zcond(i)) 
THEN 
 1382           pmfds(i, k) = pmfd(i, k)*(rcpd*ptd(i,k)+pgeoh(i,k))
 
 1383           pmfdq(i, k) = pmfd(i, k)*pqd(i, k)
 
 1384           pdmfdp(i, k-1) = -0.5*pmfd(i, k)*zcond(i)
 
 1385           prfl(i) = prfl(i) + pdmfdp(i, k-1)
 
 1394 SUBROUTINE flxddraf(ptenh, pqenh, pgeoh, paph, prfl, ptd, pqd, pmfd, pmfds, &
 
 1395     pmfdq, pdmfdp, lddraf, pen_d, pde_d)
 
 1425   LOGICAL lddraf(
klon)
 
 1428   LOGICAL llo2(
klon), llo1
 
 1429   INTEGER i, k, is, icall, itopde
 
 1430   REAL zentr, zseen, zqeen, zsdde, zqdde, zmfdsk, zmfdqk, zdmfdp
 
 1445       llo2(i) = lddraf(i) .AND. pmfd(i, k-1) < 0.
 
 1446       IF (llo2(i)) is = is + 1
 
 1448     IF (is==0) 
GO TO 180
 
 1452         zentr = entrdd*pmfd(i, k-1)*rd*ptenh(i, k-1)/(
rg*paph(i,k-1))* &
 
 1453           (paph(i,k)-paph(i,k-1))
 
 1464           pde_d(i, k) = pmfd(i, itopde)*(paph(i,k)-paph(i,k-1))/ &
 
 1465             (paph(i,
klev+1)-paph(i,itopde))
 
 1472         pmfd(i, k) = pmfd(i, k-1) + pen_d(i, k) - pde_d(i, k)
 
 1473         zseen = (rcpd*ptenh(i,k-1)+pgeoh(i,k-1))*pen_d(i, k)
 
 1474         zqeen = pqenh(i, k-1)*pen_d(i, k)
 
 1475         zsdde = (rcpd*ptd(i,k-1)+pgeoh(i,k-1))*pde_d(i, k)
 
 1476         zqdde = pqd(i, k-1)*pde_d(i, k)
 
 1477         zmfdsk = pmfds(i, k-1) + zseen - zsdde
 
 1478         zmfdqk = pmfdq(i, k-1) + zqeen - zqdde
 
 1479         pqd(i, k) = zmfdqk*(1./min(-cmfcmin,pmfd(i,k)))
 
 1480         ptd(i, k) = (zmfdsk*(1./min(-cmfcmin,pmfd(i,k)))-pgeoh(i,k))/rcpd
 
 1481         ptd(i, k) = min(400., ptd(i,k))
 
 1482         ptd(i, k) = max(100., ptd(i,k))
 
 1483         zcond(i) = pqd(i, k)
 
 1488     CALL flxadjtq(paph(1,k), ptd(1,k), pqd(1,k), llo2, icall)
 
 1492         zcond(i) = zcond(i) - pqd(i, k)
 
 1493         zbuo = ptd(i, k)*(1.+retv*pqd(i,k)) - ptenh(i, k)*(1.+retv*pqenh(i,k) &
 
 1495         llo1 = zbuo < 0. .AND. (prfl(i)-pmfd(i,k)*zcond(i)>0.)
 
 1496         IF (.NOT. llo1) pmfd(i, k) = 0.0
 
 1497         pmfds(i, k) = (rcpd*ptd(i,k)+pgeoh(i,k))*pmfd(i, k)
 
 1498         pmfdq(i, k) = pqd(i, k)*pmfd(i, k)
 
 1499         zdmfdp = -pmfd(i, k)*zcond(i)
 
 1500         pdmfdp(i, k-1) = zdmfdp
 
 1501         prfl(i) = prfl(i) + zdmfdp
 
 1508 SUBROUTINE flxadjtq(pp, pt, pq, ldflag, kcall)
 
 1522   LOGICAL ldflag(
klon)
 
 1525   REAL zcond(
klon), zcond1
 
 1526   REAL z5alvcp, z5alscp, zalvdcp, zalsdcp
 
 1527   REAL zdelta, zcvm5, zldcp, zqsat, zcor
 
 1532   z5alvcp = r5les*rlvtt/rcpd
 
 1533   z5alscp = r5ies*rlstt/rcpd
 
 1534   zalvdcp = rlvtt/rcpd
 
 1535   zalsdcp = rlstt/rcpd
 
 1544       zdelta = max(0., sign(1.,rtt-pt(i)))
 
 1545       zcvm5 = z5alvcp*(1.-zdelta) + zdelta*z5alscp
 
 1546       zldcp = zalvdcp*(1.-zdelta) + zdelta*zalsdcp
 
 1547       zqsat = r2es*foeew(pt(i), zdelta)/pp(i)
 
 1548       zqsat = min(0.5, zqsat)
 
 1549       zcor = 1./(1.-retv*zqsat)
 
 1551       zcond(i) = (pq(i)-zqsat)/(1.+foede(pt(i),zdelta,zcvm5,zqsat,zcor))
 
 1552       IF (kcall==1) zcond(i) = max(zcond(i), 0.)
 
 1553       IF (kcall==2) zcond(i) = min(zcond(i), 0.)
 
 1554       pt(i) = pt(i) + zldcp*zcond(i)
 
 1555       pq(i) = pq(i) - zcond(i)
 
 1561     IF (zcond(i)/=0.) is = is + 1
 
 1563   IF (is==0) 
GO TO 230
 
 1566     IF (ldflag(i) .AND. zcond(i)/=0.) 
THEN 
 1567       zdelta = max(0., sign(1.,rtt-pt(i)))
 
 1568       zcvm5 = z5alvcp*(1.-zdelta) + zdelta*z5alscp
 
 1569       zldcp = zalvdcp*(1.-zdelta) + zdelta*zalsdcp
 
 1570       zqsat = r2es*foeew(pt(i), zdelta)/pp(i)
 
 1571       zqsat = min(0.5, zqsat)
 
 1572       zcor = 1./(1.-retv*zqsat)
 
 1574       zcond1 = (pq(i)-zqsat)/(1.+foede(pt(i),zdelta,zcvm5,zqsat,zcor))
 
 1575       pt(i) = pt(i) + zldcp*zcond1
 
 1576       pq(i) = pq(i) - zcond1
 
subroutine flxasc(pdtime, ptenh, pqenh, pten, pqen, pqsen, pgeo, pgeoh, pap, paph, pqte, pvervel, ldland, ldcum, ktype, klab, ptu, pqu, plu, pmfu, pmfub, pentr, pmfus, pmfuq, pmful, plude, pdmfup, kcbot, kctop, kctop0, kcum, pen_u, pde_u)
 
subroutine flxflux(pdtime, pqen, pqsen, ptenh, pqenh, pap, paph, ldland, pgeoh, kcbot, kctop, lddraf, kdtop, ktype, ldcum, pmfu, pmfd, pmfus, pmfds, pmfuq, pmfdq, pmful, plude, pdmfup, pdmfdp, pten, prfl, psfl, pdpmel, ktopm2, pmflxr, pmflxs)
 
subroutine flxddraf(ptenh, pqenh, pgeoh, paph, prfl, ptd, pqd, pmfd, pmfds, pmfdq, pdmfdp, lddraf, pen_d, pde_d)
 
subroutine flxbase(ptenh, pqenh, pgeoh, paph, ptu, pqu, plu, ldcum, kcbot, klab)
 
subroutine flxdtdq(pdtime, ktopm2, paph, ldcum, pten, pmfus, pmfds, pmfuq, pmfdq, pmful, pdmfup, pdmfdp, pdpmel, dt_con, dq_con)
 
!$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
 
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
 
subroutine flxadjtq(pp, pt, pq, ldflag, kcall)
 
!$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
 
INTERFACE SUBROUTINE RRTM_ECRT_140GP paph
 
subroutine flxmain(pdtime, pten, pqen, pqsen, pqhfl, pap, paph, pgeo, ldland,ptte, pqte, pvervel, prsfc, pssfc, kcbot, kctop, kdtop,
 
subroutine flxini(pten, pqen, pqsen, pgeo, paph, pgeoh, ptenh, pqenh, pqsenh, ptu, pqu, ptd, pqd, pmfd, pmfds, pmfdq, pdmfdp, pmfu, pmfus, pmfuq, pdmfup, pdpmel, plu, plude, klab, pen_u, pde_u, pen_d, pde_d)
 
subroutine conflx(dtime, pres_h, pres_f, t, q, con_t, con_q, pqhfl, w, d_t, d_q, rain, snow, pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, kcbot, kctop, kdtop, pmflxr, pmflxs)
 
subroutine flxdlfs(ptenh, pqenh, pgeoh, paph, ptu, pqu, ldcum, kcbot, kctop, pmfub, prfl, ptd, pqd, pmfd, pmfds, pmfdq, pdmfdp, kdtop, lddraf)