4 SUBROUTINE convect2(ncum, idcum, len, nd, ndp1, nl, minorig, nk1, icb1, t1, &
 
    5     q1, qs1, u1, v1, gz1, tv1, tp1, tvp1, clw1, h1, lv1, cpn1, p1, ph1, ft1, &
 
    6     fq1, fu1, fv1, tnk1, qnk1, gznk1, plcl1, precip1, cbmf1, iflag1, delt, &
 
    7     cpd, 
cpv, 
cl, rv, rd, 
lv0, 
g, 
sigs, 
sigd, 
elcrit, tlcrit, 
omtsnow, 
dtmax, &
 
  153   INTEGER kmax2, imax2, kmin2, imin2
 
  155   INTEGER kmax, imax, kmin, imin
 
  282   REAL sigp(ncum, 
klev)
 
  283   INTEGER nent(ncum, 
klev)
 
  284   REAL water(ncum, 
klev)
 
  285   REAL evap(ncum, 
klev)
 
  291   REAL lvcp(ncum, 
klev)
 
  321   INTEGER nn, i, k, n, icbmax, nlp, j
 
  331   REAL tg, qg, s, alv, tc, ahg, denom, es, rg, ginv, rowl
 
  339   REAL bf2, anum, dei, altem, cwat, stemp
 
  340   REAL alt, qp1, smid, sjmax, sjmin
 
  342   REAL awat, coeff, afac, revap, dhdp, fac, qstm, rat
 
  343   REAL qsm, sigt, b6, c6
 
  345   REAL fqold, ftold, fuold, fvold
 
  346   REAL wdtrain(ncum), xxx
 
  347   REAL bsum(ncum, 
klev)
 
  352   REAL amp1(ncum), ad(ncum)
 
  378       IF (iflag1(i)==0) 
THEN 
  382         qs(nn, k) = qs1(i, k)
 
  385         gz(nn, k) = gz1(i, k)
 
  387         lv(nn, k) = lv1(i, k)
 
  388         cpn(nn, k) = cpn1(i, k)
 
  390         ph(nn, k) = ph1(i, k)
 
  391         tv(nn, k) = tv1(i, k)
 
  392         tp(nn, k) = tp1(i, k)
 
  393         tvp(nn, k) = tvp1(i, k)
 
  394         clw(nn, k) = clw1(i, k)
 
  401     IF (iflag1(i)==0) 
THEN 
  410       iflag(nn) = iflag1(i)
 
  424       dph(i, k) = ph(i, k) - ph(i, k+1)
 
  444     icbmax = max(icbmax, icb(i))
 
  459     ah0(i) = (cpd*(1.-qnk(i))+cl*qnk(i))*tnk(i) + qnk(i)*(lv0-clmcpv*(tnk(i)- &
 
  467   DO k = minorig + 1, nl
 
  469       IF (k>=(icb(i)+1)) 
THEN 
  472         alv = lv0 - clmcpv*(t(i,k)-273.15)
 
  476         s = cpd + alv*alv*qg/(rv*t(i,k)*t(i,k))
 
  478         ahg = cpd*tg + (cl-cpd)*qnk(i)*t(i, k) + alv*qg + gz(i, k)
 
  479         tg = tg + s*(ah0(i)-ahg)
 
  484           es = 6.112*exp(17.67*tc/denom)
 
  486           es = exp(23.33086-6111.72784/tg+0.15215*log(tg))
 
  488         qg = eps*es/(p(i,k)-es*(1.-eps))
 
  492         s = cpd + alv*alv*qg/(rv*t(i,k)*t(i,k))
 
  494         ahg = cpd*tg + (cl-cpd)*qnk(i)*t(i, k) + alv*qg + gz(i, k)
 
  495         tg = tg + s*(ah0(i)-ahg)
 
  500           es = 6.112*exp(17.67*tc/denom)
 
  502           es = exp(23.33086-6111.72784/tg+0.15215*log(tg))
 
  504         qg = eps*es/(p(i,k)-es*(1.-eps))
 
  506         alv = lv0 - clmcpv*(t(i,k)-273.15)
 
  510         tp(i, k) = (ah0(i)-(cl-cpd)*qnk(i)*t(i,k)-gz(i,k)-alv*qg)/cpd
 
  515         clw(i, k) = qnk(i) - qg
 
  516         clw(i, k) = max(0.0, clw(i,k))
 
  518         tvp(i, k) = tp(i, k)*(1.+rg*epsi)
 
  529   DO k = minorig + 1, nl
 
  531       IF (k>=(nk(i)+1)) 
THEN 
  532         tca = tp(i, k) - 273.15
 
  536           elacrit = elcrit*(1.0-tca/tlcrit)
 
  538         elacrit = max(elacrit, 0.0)
 
  539         ep(i, k) = 1.0 - elacrit/max(clw(i,k), 1.0e-8)
 
  540         ep(i, k) = max(ep(i,k), 0.0)
 
  541         ep(i, k) = min(ep(i,k), 1.0)
 
  552   DO k = minorig + 1, nl
 
  554       IF (k>=(icb(i)+1)) 
THEN 
  555         tvp(i, k) = tvp(i, k)*(1.0-qnk(i)+ep(i,k)*clw(i,k))
 
  562     tvp(i, nlp) = tvp(i, nl) - (gz(i,nlp)-gz(i,nl))/cpd
 
  585     lvcp(i, 1) = lv(i, 1)/cpn(i, 1)
 
  588   DO i = 1, ncum*nlp*nlp
 
  597         qent(i, k, j) = q(i, j)
 
  598         uent(i, k, j) = u(i, j)
 
  599         vent(i, k, j) = v(i, j)
 
  685   CALL zilch(byp, ncum)
 
  689   DO k = minorig + 1, nl - 1
 
  691       IF (cape(i)<0.0) lcape(i) = .
false.
 
  692       IF ((k>=(icb(i)+1)) .AND. lcape(i)) 
THEN 
  693         by = (tvp(i,k)-tv(i,k))*dph(i, k)/p(i, k)
 
  694         byp(i) = (tvp(i,k+1)-tv(i,k+1))*dph(i, k+1)/p(i, k+1)
 
  695         cape(i) = cape(i) + by
 
  696         IF (by>=0.0) inb1(i) = k + 1
 
  697         IF (cape(i)>0.0) 
THEN 
  705     cape(i) = capem(i) + byp(i)
 
  706     defrac = capem(i) - cape(i)
 
  707     defrac = max(defrac, 0.001)
 
  708     frac(i) = -cape(i)/defrac
 
  709     frac(i) = min(frac(i), 1.0)
 
  710     frac(i) = max(frac(i), 0.0)
 
  717   DO k = minorig + 1, nl
 
  719       IF ((k>=icb(i)) .AND. (k<=inb(i))) 
THEN 
  720         hp(i, k) = h(i, nk(i)) + (lv(i,k)+(cpd-cpv)*t(i,k))*ep(i, k)*clw(i, k &
 
  737     tvpplcl(i) = tvp(i, icb(i)-1) - rd*tvp(i, icb(i)-1)*(p(i,icb(i)-1)-plcl(i &
 
  738       ))/(cpn(i,icb(i)-1)*p(i,icb(i)-1))
 
  739     tvaplcl(i) = tv(i, icb(i)) + (tvp(i,icb(i))-tvp(i,icb(i)+1))*(plcl(i)-p(i &
 
  740       ,icb(i)))/(p(i,icb(i))-p(i,icb(i)+1))
 
  750   DO k = minorig, icbmax
 
  752       IF ((k>=nk(i)) .AND. (k<=(icb(i)-1))) 
THEN 
  753         dtpbl(i) = dtpbl(i) + (tvp(i,k)-tv(i,k))*dph(i, k)
 
  758     dtpbl(i) = dtpbl(i)/(ph(i,nk(i))-ph(i,icb(i)))
 
  759     dtmin(i) = tvpplcl(i) - tvaplcl(i) + dtmax + dtpbl(i)
 
  768     cbmf(i) = max(0.0, (1.0-damp)*cbmf(i)+0.1*alpha*dtmin(i))
 
  769     IF ((work(i)==0.0) .AND. (cbmf(i)==0.0)) 
THEN 
  778   CALL zilch(work, ncum)
 
  780   DO j = minorig + 1, nl
 
  782       IF ((j>=(icb(i)+1)) .AND. (j<=inb(i))) 
THEN 
  784         dbo = abs(tv(i,k+1)-tvp(i,k+1)-tv(i,k-1)+tvp(i,k-1)) + &
 
  785           entp*0.04*(ph(i,k)-ph(i,k+1))
 
  786         work(i) = work(i) + dbo
 
  787         m(i, j) = cbmf(i)*dbo
 
  791   DO k = minorig + 1, nl
 
  793       IF ((k>=(icb(i)+1)) .AND. (k<=inb(i))) 
THEN 
  794         m(i, k) = m(i, k)/work(i)
 
  807   DO i = minorig + 1, nl
 
  808     DO j = minorig + 1, nl
 
  810         IF ((i>=(icb(ij)+1)) .AND. (j>=icb(ij)) .AND. (i<=inb(ij)) .AND. (j<= &
 
  812           qti = qnk(ij) - ep(ij, i)*clw(ij, i)
 
  813           bf2 = 1. + lv(ij, j)*lv(ij, j)*qs(ij, j)/(rv*t(ij,j)*t(ij,j)*cpd)
 
  814           anum = h(ij, j) - hp(ij, i) + (cpv-cpd)*t(ij, j)*(qti-q(ij,j))
 
  815           denom = h(ij, i) - hp(ij, i) + (cpd-cpv)*(q(ij,i)-qti)*t(ij, j)
 
  817           IF (abs(dei)<0.01) dei = 0.01
 
  818           sij(ij, i, j) = anum/dei
 
  820           altem = sij(ij, i, j)*q(ij, i) + (1.-sij(ij,i,j))*qti - qs(ij, j)
 
  822           cwat = clw(ij, j)*(1.-ep(ij,j))
 
  823           stemp = sij(ij, i, j)
 
  824           IF ((stemp<0.0 .OR. stemp>1.0 .OR. altem>cwat) .AND. j>i) 
THEN 
  825             anum = anum - lv(ij, j)*(qti-qs(ij,j)-cwat*bf2)
 
  826             denom = denom + lv(ij, j)*(q(ij,i)-qti)
 
  827             IF (abs(denom)<0.01) denom = 0.01
 
  828             sij(ij, i, j) = anum/denom
 
  829             altem = sij(ij, i, j)*q(ij, i) + (1.-sij(ij,i,j))*qti - qs(ij, j)
 
  830             altem = altem - (bf2-1.)*cwat
 
  832           IF (sij(ij,i,j)>0.0 .AND. sij(ij,i,j)<0.9) 
THEN 
  833             qent(ij, i, j) = sij(ij, i, j)*q(ij, i) + (1.-sij(ij,i,j))*qti
 
  834             uent(ij, i, j) = sij(ij, i, j)*u(ij, i) + &
 
  835               (1.-sij(ij,i,j))*u(ij, nk(ij))
 
  836             vent(ij, i, j) = sij(ij, i, j)*v(ij, i) + &
 
  837               (1.-sij(ij,i,j))*v(ij, nk(ij))
 
  838             elij(ij, i, j) = altem
 
  839             elij(ij, i, j) = max(0.0, elij(ij,i,j))
 
  840             ment(ij, i, j) = m(ij, i)/(1.-sij(ij,i,j))
 
  841             nent(ij, i) = nent(ij, i) + 1
 
  843           sij(ij, i, j) = max(0.0, sij(ij,i,j))
 
  844           sij(ij, i, j) = min(1.0, sij(ij,i,j))
 
  855       IF ((i>=(icb(ij)+1)) .AND. (i<=inb(ij)) .AND. (nent(ij,i)==0)) 
THEN 
  856         ment(ij, i, i) = m(ij, i)
 
  857         qent(ij, i, i) = q(ij, nk(ij)) - ep(ij, i)*clw(ij, i)
 
  858         uent(ij, i, i) = u(ij, nk(ij))
 
  859         vent(ij, i, i) = v(ij, nk(ij))
 
  860         elij(ij, i, i) = clw(ij, i)
 
  867     sij(i, inb(i), inb(i)) = 1.0
 
  876   CALL zilch(bsum, ncum*nlp)
 
  880   DO i = minorig + 1, nl
 
  884       IF ((i>=icb(ij)+1) .AND. (i<=inb(ij))) num1 = num1 + 1
 
  886     IF (num1<=0) 
GO TO 789
 
  889       IF ((i>=icb(ij)+1) .AND. (i<=inb(ij))) 
THEN 
  890         lwork(ij) = (nent(ij,i)/=0)
 
  891         qp1 = q(ij, nk(ij)) - ep(ij, i)*clw(ij, i)
 
  892         anum = h(ij, i) - hp(ij, i) - lv(ij, i)*(qp1-qs(ij,i))
 
  893         denom = h(ij, i) - hp(ij, i) + lv(ij, i)*(q(ij,i)-qp1)
 
  894         IF (abs(denom)<0.01) denom = 0.01
 
  895         scrit(ij) = anum/denom
 
  896         alt = qp1 - qs(ij, i) + scrit(ij)*(q(ij,i)-qp1)
 
  897         IF (scrit(ij)<0.0 .OR. alt<0.0) scrit(ij) = 1.0
 
  906         IF ((i>=icb(ij)+1) .AND. (i<=inb(ij)) .AND. (j>=icb( &
 
  907           ij)) .AND. (j<=inb(ij)) .AND. lwork(ij)) num2 = num2 + 1
 
  909       IF (num2<=0) 
GO TO 783
 
  912         IF ((i>=icb(ij)+1) .AND. (i<=inb(ij)) .AND. (j>=icb( &
 
  913             ij)) .AND. (j<=inb(ij)) .AND. lwork(ij)) 
THEN 
  914           IF (sij(ij,i,j)>0.0 .AND. sij(ij,i,j)<0.9) 
THEN 
  916               smid = min(sij(ij,i,j), scrit(ij))
 
  919               IF (smid<smin(ij) .AND. sij(ij,i,j+1)<smid) 
THEN 
  921                 sjmax = min(sij(ij,i,j+1), sij(ij,i,j), scrit(ij))
 
  922                 sjmin = max(sij(ij,i,j-1), sij(ij,i,j))
 
  923                 sjmin = min(sjmin, scrit(ij))
 
  926               sjmax = max(sij(ij,i,j+1), scrit(ij))
 
  927               smid = max(sij(ij,i,j), scrit(ij))
 
  929               IF (j>1) sjmin = sij(ij, i, j-1)
 
  930               sjmin = max(sjmin, scrit(ij))
 
  932             delp = abs(sjmax-smid)
 
  933             delm = abs(sjmin-smid)
 
  934             asij(ij) = asij(ij) + (delp+delm)*(ph(ij,j)-ph(ij,j+1))
 
  935             ment(ij, i, j) = ment(ij, i, j)*(delp+delm)*(ph(ij,j)-ph(ij,j+1))
 
  941       IF ((i>=icb(ij)+1) .AND. (i<=inb(ij)) .AND. lwork(ij)) 
THEN 
  942         asij(ij) = max(1.0e-21, asij(ij))
 
  943         asij(ij) = 1.0/asij(ij)
 
  947     DO j = minorig, nl + 1
 
  949         IF ((i>=icb(ij)+1) .AND. (i<=inb(ij)) .AND. (j>=icb( &
 
  950             ij)) .AND. (j<=inb(ij)) .AND. lwork(ij)) 
THEN 
  951           ment(ij, i, j) = ment(ij, i, j)*asij(ij)
 
  952           bsum(ij, i) = bsum(ij, i) + ment(ij, i, j)
 
  957       IF ((i>=icb(ij)+1) .AND. (i<=inb(ij)) .AND. (bsum(ij, &
 
  958           i)<1.0e-18) .AND. lwork(ij)) 
THEN 
  960         ment(ij, i, i) = m(ij, i)
 
  961         qent(ij, i, i) = q(ij, nk(ij)) - ep(ij, i)*clw(ij, i)
 
  962         uent(ij, i, i) = u(ij, nk(ij))
 
  963         vent(ij, i, i) = v(ij, nk(ij))
 
  964         elij(ij, i, i) = clw(ij, i)
 
  984     IF (ep(i,inb(i))<=0.0001) iflag(i) = 2
 
  985     IF (iflag(i)==0) 
THEN 
  995   CALL zilch(wdtrain, ncum)
 
 1000       IF ((i<=inb(ij)) .AND. lwork(ij)) num1 = num1 + 1
 
 1002     IF (num1<=0) 
GO TO 899
 
 1008       IF ((i<=inb(ij)) .AND. (lwork(ij))) 
THEN 
 1009         wdtrain(ij) = g*ep(ij, i)*m(ij, i)*clw(ij, i)
 
 1016           IF ((i<=inb(ij)) .AND. (lwork(ij))) 
THEN 
 1017             awat = elij(ij, j, i) - (1.-ep(ij,i))*clw(ij, i)
 
 1018             awat = max(0.0, awat)
 
 1019             wdtrain(ij) = wdtrain(ij) + g*awat*ment(ij, j, i)
 
 1033       IF ((i<=inb(ij)) .AND. (lwork(ij))) 
THEN 
 1040         IF (t(ij,i)>273.0) 
THEN 
 1044         qsm = 0.5*(q(ij,i)+qp(ij,i+1))
 
 1045         afac = coeff*ph(ij, i)*(qs(ij,i)-qsm)/(1.0e4+2.0e3*ph(ij,i)*qs(ij,i))
 
 1046         afac = max(afac, 0.0)
 
 1048         sigt = max(0.0, sigt)
 
 1049         sigt = min(1.0, sigt)
 
 1050         b6 = 100.*(ph(ij,i)-ph(ij,i+1))*sigt*afac/wt(ij, i)
 
 1051         c6 = (water(ij,i+1)*wt(ij,i+1)+wdtrain(ij)/sigd)/wt(ij, i)
 
 1052         revap = 0.5*(-b6+sqrt(b6*b6+4.*c6))
 
 1053         evap(ij, i) = sigt*afac*revap
 
 1054         water(ij, i) = revap*revap
 
 1060           dhdp = (h(ij,i)-h(ij,i-1))/(p(ij,i-1)-p(ij,i))
 
 1061           dhdp = max(dhdp, 10.0)
 
 1062           mp(ij, i) = 100.*ginv*lv(ij, i)*sigd*evap(ij, i)/dhdp
 
 1063           mp(ij, i) = max(mp(ij,i), 0.0)
 
 1067           fac = 20.0/(ph(ij,i-1)-ph(ij,i))
 
 1068           mp(ij, i) = (fac*mp(ij,i+1)+mp(ij,i))/(1.+fac)
 
 1075           IF (p(ij,i)>(0.949*p(ij,1))) 
THEN 
 1076             jtt(ij) = max(jtt(ij), i)
 
 1077             mp(ij, i) = mp(ij, jtt(ij))*(p(ij,1)-p(ij,i))/ &
 
 1078               (p(ij,1)-p(ij,jtt(ij)))
 
 1084         IF (i/=inb(ij)) 
THEN 
 1090           IF (mp(ij,i)>mp(ij,i+1)) 
THEN 
 1091             rat = mp(ij, i+1)/mp(ij, i)
 
 1092             qp(ij, i) = qp(ij, i+1)*rat + q(ij, i)*(1.0-rat) + &
 
 1093               100.*ginv*sigd*(ph(ij,i)-ph(ij,i+1))*(evap(ij,i)/mp(ij,i))
 
 1094             up(ij, i) = up(ij, i+1)*rat + u(ij, i)*(1.-rat)
 
 1095             vp(ij, i) = vp(ij, i+1)*rat + v(ij, i)*(1.-rat)
 
 1097             IF (mp(ij,i+1)>0.0) 
THEN 
 1098               qp(ij, i) = (gz(ij,i+1)-gz(ij,i)+qp(ij,i+1)*(lv(ij,i+1)+t(ij, &
 
 1099                 i+1)*(cl-cpd))+cpd*(t(ij,i+1)-t(ij, &
 
 1100                 i)))/(lv(ij,i)+t(ij,i)*(cl-cpd))
 
 1101               up(ij, i) = up(ij, i+1)
 
 1102               vp(ij, i) = vp(ij, i+1)
 
 1105           qp(ij, i) = min(qp(ij,i), qstm)
 
 1106           qp(ij, i) = max(qp(ij,i), 0.0)
 
 1115     IF (iflag(i)<=1) 
THEN 
 1119       precip(i) = wt(i, 1)*sigd*water(i, 1)*86400/g
 
 1135     work(i) = 0.01/(ph(i,1)-ph(i,2))
 
 1140       IF ((nk(i)==1) .AND. (k<=inb(i)) .AND. (nk(i)==1)) 
THEN 
 1141         am(i) = am(i) + m(i, k)
 
 1146     IF ((g*work(i)*am(i))>=delti) iflag(i) = 1
 
 1147     ft(i, 1) = ft(i, 1) + g*work(i)*am(i)*(t(i,2)-t(i,1)+(gz(i,2)-gz(i, &
 
 1149     ft(i, 1) = ft(i, 1) - lvcp(i, 1)*sigd*evap(i, 1)
 
 1150     ft(i, 1) = ft(i, 1) + sigd*wt(i, 2)*(cl-cpd)*water(i, 2)*(t(i,2)-t(i,1))* &
 
 1152     fq(i, 1) = fq(i, 1) + g*mp(i, 2)*(qp(i,2)-q(i,1))*work(i) + &
 
 1154     fq(i, 1) = fq(i, 1) + g*am(i)*(q(i,2)-q(i,1))*work(i)
 
 1155     fu(i, 1) = fu(i, 1) + g*work(i)*(mp(i,2)*(up(i,2)-u(i,1))+am(i)*(u(i, &
 
 1157     fv(i, 1) = fv(i, 1) + g*work(i)*(mp(i,2)*(vp(i,2)-v(i,1))+am(i)*(v(i, &
 
 1163         fq(i, 1) = fq(i, 1) + g*work(i)*ment(i, j, 1)*(qent(i,j,1)-q(i,1))
 
 1164         fu(i, 1) = fu(i, 1) + g*work(i)*ment(i, j, 1)*(uent(i,j,1)-u(i,1))
 
 1165         fv(i, 1) = fv(i, 1) + g*work(i)*ment(i, j, 1)*(vent(i,j,1)-v(i,1))
 
 1180       IF (i<=inb(ij)) num1 = num1 + 1
 
 1182     IF (num1<=0) 
GO TO 1500
 
 1184     CALL zilch(amp1, ncum)
 
 1185     CALL zilch(ad, ncum)
 
 1187     DO k = i + 1, nl + 1
 
 1189         IF ((i>=nk(ij)) .AND. (i<=inb(ij)) .AND. (k<=(inb(ij)+1))) 
THEN 
 1190           amp1(ij) = amp1(ij) + m(ij, k)
 
 1196       DO j = i + 1, nl + 1
 
 1198           IF ((j<=(inb(ij)+1)) .AND. (i<=inb(ij))) 
THEN 
 1199             amp1(ij) = amp1(ij) + ment(ij, k, j)
 
 1207           IF ((i<=inb(ij)) .AND. (j<=inb(ij))) 
THEN 
 1208             ad(ij) = ad(ij) + ment(ij, j, k)
 
 1215       IF (i<=inb(ij)) 
THEN 
 1216         dpinv = 0.01/(ph(ij,i)-ph(ij,i+1))
 
 1217         cpinv = 1.0/cpn(ij, i)
 
 1219         ft(ij, i) = ft(ij, i) + g*dpinv*(amp1(ij)*(t(ij,i+1)-t(ij, &
 
 1220           i)+(gz(ij,i+1)-gz(ij,i))*cpinv)-ad(ij)*(t(ij,i)-t(ij, &
 
 1221           i-1)+(gz(ij,i)-gz(ij,i-1))*cpinv)) - sigd*lvcp(ij, i)*evap(ij, i)
 
 1222         ft(ij, i) = ft(ij, i) + g*dpinv*ment(ij, i, i)*(hp(ij,i)-h(ij,i)+t(ij &
 
 1223           ,i)*(cpv-cpd)*(q(ij,i)-qent(ij,i,i)))*cpinv
 
 1224         ft(ij, i) = ft(ij, i) + sigd*wt(ij, i+1)*(cl-cpd)*water(ij, i+1)*(t( &
 
 1225           ij,i+1)-t(ij,i))*dpinv*cpinv
 
 1226         fq(ij, i) = fq(ij, i) + g*dpinv*(amp1(ij)*(q(ij,i+1)-q(ij, &
 
 1227           i))-ad(ij)*(q(ij,i)-q(ij,i-1)))
 
 1228         fu(ij, i) = fu(ij, i) + g*dpinv*(amp1(ij)*(u(ij,i+1)-u(ij, &
 
 1229           i))-ad(ij)*(u(ij,i)-u(ij,i-1)))
 
 1230         fv(ij, i) = fv(ij, i) + g*dpinv*(amp1(ij)*(v(ij,i+1)-v(ij, &
 
 1231           i))-ad(ij)*(v(ij,i)-v(ij,i-1)))
 
 1236         IF (i<=inb(ij)) 
THEN 
 1237           awat = elij(ij, k, i) - (1.-ep(ij,i))*clw(ij, i)
 
 1238           awat = max(awat, 0.0)
 
 1239           fq(ij, i) = fq(ij, i) + g*dpinv*ment(ij, k, i)*(qent(ij,k,i)-awat-q &
 
 1241           fu(ij, i) = fu(ij, i) + g*dpinv*ment(ij, k, i)*(uent(ij,k,i)-u(ij,i &
 
 1243           fv(ij, i) = fv(ij, i) + g*dpinv*ment(ij, k, i)*(vent(ij,k,i)-v(ij,i &
 
 1250         IF ((i<=inb(ij)) .AND. (k<=inb(ij))) 
THEN 
 1251           fq(ij, i) = fq(ij, i) + g*dpinv*ment(ij, k, i)*(qent(ij,k,i)-q(ij,i &
 
 1253           fu(ij, i) = fu(ij, i) + g*dpinv*ment(ij, k, i)*(uent(ij,k,i)-u(ij,i &
 
 1255           fv(ij, i) = fv(ij, i) + g*dpinv*ment(ij, k, i)*(vent(ij,k,i)-v(ij,i &
 
 1261       IF (i<=inb(ij)) 
THEN 
 1262         fq(ij, i) = fq(ij, i) + sigd*evap(ij, i) + g*(mp(ij,i+1)*(qp(ij, &
 
 1263           i+1)-q(ij,i))-mp(ij,i)*(qp(ij,i)-q(ij,i-1)))*dpinv
 
 1264         fu(ij, i) = fu(ij, i) + g*(mp(ij,i+1)*(up(ij,i+1)-u(ij, &
 
 1265           i))-mp(ij,i)*(up(ij,i)-u(ij,i-1)))*dpinv
 
 1266         fv(ij, i) = fv(ij, i) + g*(mp(ij,i+1)*(vp(ij,i+1)-v(ij, &
 
 1267           i))-mp(ij,i)*(vp(ij,i)-v(ij,i-1)))*dpinv
 
 1276     fqold = fq(ij, inb(ij))
 
 1277     fq(ij, inb(ij)) = fq(ij, inb(ij))*(1.-frac(ij))
 
 1278     fq(ij, inb(ij)-1) = fq(ij, inb(ij)-1) + frac(ij)*fqold*((ph(ij, &
 
 1279       inb(ij))-ph(ij,inb(ij)+1))/(ph(ij,inb(ij)-1)-ph(ij, &
 
 1280       inb(ij))))*lv(ij, inb(ij))/lv(ij, inb(ij)-1)
 
 1281     ftold = ft(ij, inb(ij))
 
 1282     ft(ij, inb(ij)) = ft(ij, inb(ij))*(1.-frac(ij))
 
 1283     ft(ij, inb(ij)-1) = ft(ij, inb(ij)-1) + frac(ij)*ftold*((ph(ij, &
 
 1284       inb(ij))-ph(ij,inb(ij)+1))/(ph(ij,inb(ij)-1)-ph(ij, &
 
 1285       inb(ij))))*cpn(ij, inb(ij))/cpn(ij, inb(ij)-1)
 
 1286     fuold = fu(ij, inb(ij))
 
 1287     fu(ij, inb(ij)) = fu(ij, inb(ij))*(1.-frac(ij))
 
 1288     fu(ij, inb(ij)-1) = fu(ij, inb(ij)-1) + frac(ij)*fuold*((ph(ij, &
 
 1289       inb(ij))-ph(ij,inb(ij)+1))/(ph(ij,inb(ij)-1)-ph(ij,inb(ij))))
 
 1290     fvold = fv(ij, inb(ij))
 
 1291     fv(ij, inb(ij)) = fv(ij, inb(ij))*(1.-frac(ij))
 
 1292     fv(ij, inb(ij)-1) = fv(ij, inb(ij)-1) + frac(ij)*fvold*((ph(ij, &
 
 1293       inb(ij))-ph(ij,inb(ij)+1))/(ph(ij,inb(ij)-1)-ph(ij,inb(ij))))
 
 1304       ents(ij) = ents(ij) + (cpn(ij,i)*ft(ij,i)+lv(ij,i)*fq(ij,i))*(ph(ij,i)- &
 
 1306       uav(ij) = uav(ij) + fu(ij, i)*(ph(ij,i)-ph(ij,i+1))
 
 1307       vav(ij) = vav(ij) + fv(ij, i)*(ph(ij,i)-ph(ij,i+1))
 
 1311     ents(ij) = ents(ij)/(ph(ij,1)-ph(ij,inb(ij)+1))
 
 1312     uav(ij) = uav(ij)/(ph(ij,1)-ph(ij,inb(ij)+1))
 
 1313     vav(ij) = vav(ij)/(ph(ij,1)-ph(ij,inb(ij)+1))
 
 1317       ft(ij, i) = ft(ij, i) - ents(ij)/cpn(ij, i)
 
 1318       fu(ij, i) = (1.-cu)*(fu(ij,i)-uav(ij))
 
 1319       fv(ij, i) = (1.-cu)*(fv(ij,i)-vav(ij))
 
 1325       IF ((q(i,k)+delt*fq(i,k))<0.0) iflag(i) = 10
 
 1331     IF (iflag(i)>2) 
THEN 
 1338       IF (iflag(i)>2) 
THEN 
 1347     precip1(idcum(i)) = precip(i)
 
 1348     cbmf1(idcum(i)) = cbmf(i)
 
 1349     iflag1(idcum(i)) = iflag(i)
 
 1353       ft1(idcum(i), k) = ft(i, k)
 
 1354       fq1(idcum(i), k) = fq(i, k)
 
 1355       fu1(idcum(i), k) = fu(i, k)
 
 1356       fv1(idcum(i), k) = fv(i, k)
 
 1367       ma(i, k) = ma(i, k+1) + m(i, k)
 
!$Id!Thermodynamical constants for cpv
 
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffs real dtmax real cu real betad real damp real delta COMMON cvparam nlm tlcrit sigd coeffs damp
 
!$Id mode_top_bound COMMON comconstr g
 
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffs real dtmax real cu real betad real damp real delta COMMON cvparam nlm tlcrit sigd coeffs dtmax
 
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigs
 
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real omtrain
 
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real omtsnow
 
!$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
 
!$Id!Thermodynamical constants for cl
 
!Parameters for nlm real spfac integer flag_wb real ptcrit real elcrit
 
subroutine convect2(ncum, idcum, len, nd, ndp1, nl, minorig, nk1, icb1, t1, q1, qs1, u1, v1, gz1, tv1, tp1, tvp1, clw1, h1, lv1, cpn1, p1, ph1, ft1, fq1, fu1, fv1, tnk1, qnk1, gznk1, plcl1, precip1, cbmf1, iflag1, delt, cpd, cpv, cl, rv, rd, lv0, g, sigs, sigd, elcrit, tlcrit, omtsnow, dtmax, damp, alpha, entp, coeffs, coeffr, omtrain, cu, ma)
 
!$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!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffs real dtmax real cu real betad real damp real delta COMMON cvparam nlm tlcrit sigd coeffs cu
 
!$Id!Parameters for nlm real spfac!IM cf epmax real ptcrit real omtrain real dttrig real alpha real delta real betad COMMON cv30param nlm spfac &!IM cf ptcrit omtrain dttrig alpha
 
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real hrd real grav COMMON cvthermo cpd
 
!$Id!Thermodynamical constants for lv0
 
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffs real dtmax real cu real betad real damp real delta COMMON cvparam nlm tlcrit entp
 
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffr
 
!$Id!Parameters for nlm real sigd