38   INTEGER, 
INTENT(IN)              :: nd
 
   39   INTEGER, 
INTENT(IN)              :: k_upper
 
   40   REAL, 
INTENT(IN)                 :: delt 
 
   44   CHARACTER (LEN=20) :: modname = 
'cv3_param' 
   45   CHARACTER (LEN=80) :: abort_message
 
   47   LOGICAL, 
SAVE :: first = .
true.
 
   58   noff = min(max(nd-k_upper, 1), (nd+1)/2)
 
  104     OPEN (99, file=
'conv_param.data', status=
'old', form=
'formatted', 
err=9999)
 
  105     READ (99, *, end=9998) 
dpbase 
  106     READ (99, *, end=9998) 
pbcrit 
  107     READ (99, *, end=9998) 
ptcrit 
  108     READ (99, *, end=9998) 
sigdz 
  109     READ (99, *, end=9998) spfac
 
  110     READ (99, *, end=9998) tau
 
  111     READ (99, *, end=9998) flag_wb
 
  112     READ (99, *, end=9998) wbmax
 
  116     WRITE (*, *) 
'dpbase=', 
dpbase 
  117     WRITE (*, *) 
'pbcrit=', 
pbcrit 
  118     WRITE (*, *) 
'ptcrit=', 
ptcrit 
  119     WRITE (*, *) 
'sigdz=', 
sigdz 
  120     WRITE (*, *) 
'spfac=', spfac
 
  121     WRITE (*, *) 
'tau=', tau
 
  122     WRITE (*, *) 
'flag_wb =', flag_wb
 
  123     WRITE (*, *) 
'wbmax =', wbmax
 
  126     OPEN (79, file=
'ep_param.data', status=
'old', form=
'formatted', 
err=7999)
 
  127     READ (79, *, end=7998) flag_epkeorig
 
  128     READ (79, *, end=7998) 
elcrit 
  129     READ (79, *, end=7998) tlcrit
 
  133     WRITE (*, *) 
'flag_epKEorig', flag_epkeorig
 
  134     WRITE (*, *) 
'elcrit=', 
elcrit 
  135     WRITE (*, *) 
'tlcrit=', tlcrit
 
  148    CALL bcast(flag_epkeorig)
 
  156   beta = 1.0 - delt/tau
 
  168 SUBROUTINE cv3_prelim(len, nd, ndp1, t, q, p, ph, &
 
  169                       lv, lf, cpn, tv, gz, h, hm, th)
 
  179   INTEGER len, nd, ndp1
 
  180   REAL t(len, nd), q(len, nd), p(len, nd), ph(len, ndp1)
 
  183   REAL lv(len, nd), lf(len, nd), cpn(len, nd), tv(len, nd)
 
  184   REAL gz(len, nd), h(len, nd), hm(len, nd)
 
  204       lf(i, k) = 
lf0 - 
clmci*(t(i,k)-273.15)
 
  205       cpn(i, k) = 
cpd*(1.0-q(i,k)) + 
cpv*q(i, k)
 
  206       cpx(i, k) = 
cpd*(1.0-q(i,k)) + 
cl*q(i, k)
 
  208       tv(i, k) = t(i, k)*(1.0+q(i,k)/
eps-q(i,k))
 
  209       rdcp = (
rrd*(1.-q(i,k))+q(i,k)*
rrv)/cpn(i, k)
 
  210       th(i, k) = t(i, k)*(1000.0/p(i,k))**rdcp
 
  222       tvx = t(i, k)*(1.+q(i,k)/
eps-q(i,k))         
 
  223       tvy = t(i, k-1)*(1.+q(i,k-1)/
eps-q(i,k-1))   
 
  224       gz(i, k) = gz(i, k-1) + 0.5*
rrd*(tvx+tvy)* & 
 
  225                  (p(i,k-1)-p(i,k))/ph(i, k)        
 
  240       h(i, k) = gz(i, k) + cpn(i, k)*t(i, k)
 
  241       hm(i, k) = gz(i, k) + cpx(i, k)*(t(i,k)-t(i,1)) + lv(i, k)*q(i, k)
 
  248 SUBROUTINE cv3_feed(len, nd, ok_conserv_q, &
 
  249                     t, q, 
u, v, p, ph, hm, gz, &
 
  250                     p1feed, p2feed, wght, &
 
  251                     wghti, tnk, thnk, qnk, qsnk, unk, vnk, &
 
  252                     cpnk, hnk, nk, icb, icbmax, iflag, gznk, plcl)
 
  273   INTEGER, 
INTENT (IN)                               :: len, nd
 
  274   LOGICAL, 
INTENT (IN)                               :: ok_conserv_q
 
  275   REAL, 
DIMENSION (len, nd), 
INTENT (IN)             :: t, q, p
 
  276   REAL, 
DIMENSION (len, nd), 
INTENT (IN)             :: u, v
 
  277   REAL, 
DIMENSION (len, nd), 
INTENT (IN)             :: hm, gz
 
  278   REAL, 
DIMENSION (len, nd+1), 
INTENT (IN)           :: ph
 
  279   REAL, 
DIMENSION (len), 
INTENT (IN)                 :: p1feed
 
  280   REAL, 
DIMENSION (nd), 
INTENT (IN)                  :: wght
 
  282   REAL, 
DIMENSION (len), 
INTENT (INOUT)              :: p2feed
 
  284   INTEGER, 
INTENT (OUT)                              :: icbmax
 
  285   INTEGER, 
DIMENSION (len), 
INTENT (OUT)             :: iflag, nk, icb
 
  286   REAL, 
DIMENSION (len, nd), 
INTENT (OUT)            :: wghti
 
  287   REAL, 
DIMENSION (len), 
INTENT (OUT)                :: tnk, thnk, qnk, qsnk
 
  288   REAL, 
DIMENSION (len), 
INTENT (OUT)                :: unk, vnk
 
  289   REAL, 
DIMENSION (len), 
INTENT (OUT)                :: cpnk, hnk, gznk
 
  290   REAL, 
DIMENSION (len), 
INTENT (OUT)                :: plcl
 
  293   INTEGER i, k, iter, niter
 
  296   REAL pup(len), plo(len), pfeed(len)
 
  297   REAL plclup(len), plcllo(len), plclfeed(len)
 
  304   LOGICAL, 
SAVE :: first
 
  305   LOGICAL, 
SAVE :: ok_new_feed
 
  306   REAL, 
SAVE :: dp_lcl_feed
 
  313     ok_new_feed = ok_conserv_q
 
  314     OPEN (98, file=
'cv3feed_param.data', status=
'old', form=
'formatted', iostat=iostat)
 
  316       READ (98, *, end=998) ok_new_feed
 
  320     print *, 
' ok_new_feed: ', ok_new_feed
 
  331     gznk(i) = gz(i, nk(i))
 
  347   CALL cv3_vertmix(len, nd, iflag, p1feed, pup, p, ph, &
 
  349                    wghti, nk, tnk, thnk, qnk, qsnk, unk, vnk, plclup)
 
  352     plo(i) = ph(i, nk(i)+1)
 
  354   CALL cv3_vertmix(len, nd, iflag, p1feed, plo, p, ph, &
 
  356                    wghti, nk, tnk, thnk, qnk, qsnk, unk, vnk, plcllo)
 
  361       plcllo(i) = min(plo(i), plcllo(i))
 
  362       plclup(i) = max(pup(i), plclup(i))
 
  363       nocond(i) = plclup(i) <= pup(i)
 
  370         IF (ok_new_feed) 
THEN 
  371           pfeed(i) = (pup(i)*(plo(i)-plcllo(i)-dp_lcl_feed)+  &
 
  372                       plo(i)*(plclup(i)-pup(i)+dp_lcl_feed))/ &
 
  373                      (plo(i)-plcllo(i)+plclup(i)-pup(i))
 
  375           pfeed(i) = (pup(i)*(plo(i)-plcllo(i))+  &
 
  376                       plo(i)*(plclup(i)-pup(i)))/ &
 
  377                      (plo(i)-plcllo(i)+plclup(i)-pup(i))
 
  385     IF (ok_new_feed) 
THEN 
  386       IF (iter==niter) 
THEN 
  389             IF (ph(i,k)>=plclfeed(i)) pfeedmin(i) = ph(i, k)
 
  393           pfeed(i) = max(pfeedmin(i), pfeed(i))
 
  399     CALL cv3_vertmix(len, nd, iflag, p1feed, pfeed, p, ph, &
 
  401                    wghti, nk, tnk, thnk, qnk, qsnk, unk, vnk, plclfeed)
 
  403     IF (ok_new_feed) 
THEN 
  405         posit(i) = (sign(1.,plclfeed(i)-pfeed(i)+dp_lcl_feed)+1.)*0.5
 
  406         IF (plclfeed(i)-pfeed(i)+dp_lcl_feed==0.) posit(i) = 1.
 
  410         posit(i) = (sign(1.,plclfeed(i)-pfeed(i))+1.)*0.5
 
  411         IF (plclfeed(i)==pfeed(i)) posit(i) = 1.
 
  420       pup(i) = posit(i)*pfeed(i) + (1.-posit(i))*pup(i)
 
  421       plo(i) = (1.-posit(i))*pfeed(i) + posit(i)*plo(i)
 
  422       plclup(i) = posit(i)*plclfeed(i) + (1.-posit(i))*plclup(i)
 
  423       plcllo(i) = (1.-posit(i))*plclfeed(i) + posit(i)*plcllo(i)
 
  428     plcl(i) = plclfeed(i)
 
  432     cpnk(i) = 
cpd*(1.0-qnk(i)) + 
cpv*qnk(i)
 
  433     hnk(i) = gz(i, 1) + cpnk(i)*tnk(i)
 
  441     IF (((tnk(i)<250.0) .OR. (qnk(i)<=0.0)) .AND. (iflag(i)==0)) iflag(i) = 7
 
  472       IF (ph(i,k)<plcl(i)) icb(i) = min(icb(i), k)
 
  483     IF ((icb(i)==nlm) .AND. (iflag(i)==0)) iflag(i) = 9
 
  495     IF (iflag(i)<7) icbmax = max(icbmax, icb(i))     
 
  501 SUBROUTINE cv3_undilute1(len, nd, t, qs, gz, plcl, p, icb, tnk, qnk, gznk, &
 
  522   INTEGER, 
INTENT (IN)                              :: len, nd
 
  523   INTEGER, 
DIMENSION (len), 
INTENT (IN)             :: icb
 
  524   REAL, 
DIMENSION (len, nd), 
INTENT (IN)            :: t, qs, gz
 
  525   REAL, 
DIMENSION (len), 
INTENT (IN)                :: tnk, qnk, gznk
 
  526   REAL, 
DIMENSION (len, nd), 
INTENT (IN)            :: p
 
  527   REAL, 
DIMENSION (len), 
INTENT (IN)                :: plcl              
 
  530   INTEGER, 
DIMENSION (len), 
INTENT (OUT)            :: icbs
 
  531   REAL, 
DIMENSION (len, nd), 
INTENT (OUT)           :: tp, tvp, clw
 
  535   INTEGER icb1(len), icbsmax2                                            
 
  536   REAL tg, qg, alv, s, ahg, tc, denom, es, rg
 
  537   REAL ah0(len), cpp(len)
 
  538   REAL ticb(len), gzicb(len)
 
  553     ah0(i) = (
cpd*(1.-qnk(i))+
cl*qnk(i))*tnk(i) + qnk(i)*(
lv0-
clmcpv*(tnk(i)-273.15)) + gznk(i)
 
  554     cpp(i) = 
cpd*(1.-qnk(i)) + qnk(i)*
cpv 
  561     icb1(i) = max(icb(i), 2)                              
 
  562     icb1(i) = min(icb(i), 
nl)                             
 
  566     IF (plcl(i)<p(i,icb1(i))) 
THEN 
  567       icbs(i) = min(icbs(i)+1, 
nl)                        
 
  572     ticb(i) = t(i, icbs(i))                               
 
  573     gzicb(i) = gz(i, icbs(i))                             
 
  574     qsicb(i) = qs(i, icbs(i))                             
 
  582     icbsmax2 = max(icbsmax2, icbs(i))                     
 
  599       tp(i, k) = tnk(i) - (gz(i,k)-gznk(i))*cpinv(i)
 
  600       tvp(i, k) = tp(i, k)*(1.+qnk(i)/
eps-qnk(i))        
 
  616     s = 
cpd*(1.-qnk(i)) + 
cl*qnk(i) + &                   
 
  617         alv*alv*qg/(
rrv*ticb(i)*ticb(i))                  
 
  620     ahg = 
cpd*tg + (
cl-
cpd)*qnk(i)*tg + alv*qg + gzicb(i) 
 
  621     tg = tg + s*(ah0(i)-ahg)
 
  626     denom = max(denom, 1.0) 
 
  628     es = 6.112*exp(17.67*tc/denom)
 
  633     qg = 
eps*es/(p(i,icbs(i))-es*(1.-
eps))
 
  641     ahg = 
cpd*tg + (
cl-
cpd)*qnk(i)*tg + alv*qg + gzicb(i) 
 
  642     tg = tg + s*(ah0(i)-ahg)
 
  647     denom = max(denom, 1.0)                               
 
  649     es = 6.112*exp(17.67*tc/denom)
 
  654     qg = 
eps*es/(p(i,icbs(i))-es*(1.-
eps))
 
  663     tp(i, icbs(i)) = (ah0(i)-gz(i,icbs(i))-alv*qg)/(
cpd+(
cl-
cpd)*qnk(i))
 
  667     clw(i, icbs(i)) = qnk(i) - qg
 
  668     clw(i, icbs(i)) = max(0.0, clw(i,icbs(i)))
 
  673     tvp(i, icbs(i)) = tp(i, icbs(i))*(1.+qg/
eps-qnk(i))   
 
  700     ticb(i) = t(i, icb(i)+1)
 
  701     gzicb(i) = gz(i, icb(i)+1)
 
  702     qsicb(i) = qs(i, icb(i)+1)
 
  714     s = 
cpd*(1.-qnk(i)) + 
cl*qnk(i) &                         
 
  715       +alv*alv*qg/(
rrv*ticb(i)*ticb(i))                       
 
  718     ahg = 
cpd*tg + (
cl-
cpd)*qnk(i)*tg + alv*qg + gzicb(i)     
 
  719     tg = tg + s*(ah0(i)-ahg)
 
  724     denom = max(denom, 1.0)                                   
 
  726     es = 6.112*exp(17.67*tc/denom)
 
  731     qg = 
eps*es/(p(i,icb(i)+1)-es*(1.-
eps))
 
  739     ahg = 
cpd*tg + (
cl-
cpd)*qnk(i)*tg + alv*qg + gzicb(i)     
 
  740     tg = tg + s*(ah0(i)-ahg)
 
  745     denom = max(denom, 1.0)                                   
 
  747     es = 6.112*exp(17.67*tc/denom)
 
  752     qg = 
eps*es/(p(i,icb(i)+1)-es*(1.-
eps))
 
  761     tp(i, icb(i)+1) = (ah0(i)-gz(i,icb(i)+1)-alv*qg)/(
cpd+(
cl-
cpd)*qnk(i))
 
  765     clw(i, icb(i)+1) = qnk(i) - qg
 
  766     clw(i, icb(i)+1) = max(0.0, clw(i,icb(i)+1))
 
  771     tvp(i, icb(i)+1) = tp(i, icb(i)+1)*(1.+qg/
eps-qnk(i))     
 
  778 SUBROUTINE cv3_trigger(len, nd, icb, plcl, p, th, tv, tvp, thnk, &
 
  779                        pbase, buoybase, iflag, sig, w0)
 
  802   REAL plcl(len), p(len, nd)
 
  803   REAL th(len, nd), tv(len, nd), tvp(len, nd)
 
  807   REAL pbase(len), buoybase(len)
 
  811   REAL sig(len, nd), w0(len, nd)
 
  815   REAL tvpbase, tvbase, tdif, ath, ath1
 
  821     pbase(i) = plcl(i) + 
dpbase 
  822     tvpbase = tvp(i, icb(i))  *(pbase(i)-p(i,icb(i)+1))/(p(i,icb(i))-p(i,icb(i)+1)) + &
 
  823               tvp(i, icb(i)+1)*(p(i,icb(i))-pbase(i))  /(p(i,icb(i))-p(i,icb(i)+1))
 
  824     tvbase = tv(i, icb(i))  *(pbase(i)-p(i,icb(i)+1))/(p(i,icb(i))-p(i,icb(i)+1)) + &
 
  825              tv(i, icb(i)+1)*(p(i,icb(i))-pbase(i))  /(p(i,icb(i))-p(i,icb(i)+1))
 
  826     buoybase(i) = tvpbase - tvbase
 
  863       ath = th(i, icb(i)-1) - dttrig
 
  865       IF (tdif<
dtcrit .OR. ath>ath1) 
THEN 
  866         sig(i, k) = 
beta*sig(i, k) - 2.*
alpha*tdif*tdif
 
  867         sig(i, k) = amax1(sig(i,k), 0.0)
 
  868         w0(i, k) = 
beta*w0(i, k)
 
  882                         iflag1, nk1, icb1, icbs1, &
 
  883                         plcl1, tnk1, qnk1, gznk1, pbase1, buoybase1, &
 
  884                         t1, q1, qs1, u1, v1, gz1, th1, &
 
  886                         h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, &
 
  888                         iflag, nk, icb, icbs, &
 
  889                         plcl, tnk, qnk, gznk, pbase, buoybase, &
 
  890                         t, q, qs, 
u, v, gz, th, &
 
  892                         h, lv, cpn, p, ph, tv, tp, tvp, clw, &
 
  900   INTEGER len, ncum, nd, ntra, nloc
 
  901   INTEGER iflag1(len), nk1(len), icb1(len), icbs1(len)
 
  902   REAL plcl1(len), tnk1(len), qnk1(len), gznk1(len)
 
  903   REAL pbase1(len), buoybase1(len)
 
  904   REAL t1(len, nd), q1(len, nd), qs1(len, nd), u1(len, nd), v1(len, nd)
 
  905   REAL gz1(len, nd), h1(len, nd), lv1(len, nd), cpn1(len, nd)
 
  906   REAL p1(len, nd), ph1(len, nd+1), tv1(len, nd), tp1(len, nd)
 
  907   REAL tvp1(len, nd), clw1(len, nd)
 
  909   REAL sig1(len, nd), w01(len, nd)
 
  910   REAL tra1(len, nd, ntra)
 
  914   INTEGER iflag(nloc), nk(nloc), icb(nloc), icbs(nloc)
 
  915   REAL plcl(nloc), tnk(nloc), qnk(nloc), gznk(nloc)
 
  916   REAL pbase(nloc), buoybase(nloc)
 
  917   REAL t(nloc, nd), q(nloc, nd), qs(nloc, nd), u(nloc, nd), v(nloc, nd)
 
  918   REAL gz(nloc, nd), h(nloc, nd), lv(nloc, nd), cpn(nloc, nd)
 
  919   REAL p(nloc, nd), ph(nloc, nd+1), tv(nloc, nd), tp(nloc, nd)
 
  920   REAL tvp(nloc, nd), clw(nloc, nd)
 
  922   REAL sig(nloc, nd), w0(nloc, nd)
 
  923   REAL tra(nloc, nd, ntra)
 
  928   CHARACTER (LEN=20) :: modname = 
'cv3_compress' 
  929   CHARACTER (LEN=80) :: abort_message
 
  934       IF (iflag1(i)==0) 
THEN 
  936         sig(nn, k) = sig1(i, k)
 
  937         w0(nn, k) = w01(i, k)
 
  940         qs(nn, k) = qs1(i, k)
 
  943         gz(nn, k) = gz1(i, k)
 
  945         lv(nn, k) = lv1(i, k)
 
  946         cpn(nn, k) = cpn1(i, k)
 
  948         ph(nn, k) = ph1(i, k)
 
  949         tv(nn, k) = tv1(i, k)
 
  950         tp(nn, k) = tp1(i, k)
 
  951         tvp(nn, k) = tvp1(i, k)
 
  952         clw(nn, k) = clw1(i, k)
 
  953         th(nn, k) = th1(i, k)
 
  972     WRITE (
lunout, *) 
'strange! nn not equal to ncum: ', nn, ncum
 
  979     IF (iflag1(i)==0) 
THEN 
  981       pbase(nn) = pbase1(i)
 
  982       buoybase(nn) = buoybase1(i)
 
  990       iflag(nn) = iflag1(i)
 
  997 SUBROUTINE icefrac(t, clw, qi, nl, len)
 
 1006   REAL t(len, nl), clw(len, nl)
 
 1012       IF (t(i,k)>263.15) 
THEN 
 1015         IF (t(i,k)<243.15) 
THEN 
 1016           qi(i, k) = clw(i, k)
 
 1018           fracg = (263.15-t(i,k))/20
 
 1019           qi(i, k) = clw(i, k)*fracg
 
 1031                          tnk, qnk, gznk, hnk, t, q, qs, gz, &
 
 1032                          p, h, tv, lv, lf, pbase, buoybase, plcl, &
 
 1033                          inb, tp, tvp, clw, hp, ep, sigp, buoy, frac)
 
 1054   include 
"cvthermo.h" 
 1055   include 
"cv3param.h" 
 1060   INTEGER, 
INTENT (IN)                               :: ncum, nd, nloc
 
 1061   INTEGER, 
DIMENSION (nloc), 
INTENT (IN)             :: icb, icbs, nk
 
 1062   REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: t, q, qs, gz
 
 1063   REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: p
 
 1064   REAL, 
DIMENSION (nloc), 
INTENT (IN)                :: tnk, qnk, gznk
 
 1065   REAL, 
DIMENSION (nloc), 
INTENT (IN)                :: hnk
 
 1066   REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: lv, lf, tv, h
 
 1067   REAL, 
DIMENSION (nloc), 
INTENT (IN)                :: pbase, buoybase, plcl
 
 1070   REAL, 
DIMENSION (nloc, nd), 
INTENT (INOUT)         :: tp, tvp, clw   
 
 1074   INTEGER, 
DIMENSION (nloc), 
INTENT (OUT)            :: inb
 
 1075   REAL, 
DIMENSION (nloc, nd), 
INTENT (OUT)           :: ep, sigp, hp
 
 1076   REAL, 
DIMENSION (nloc, nd), 
INTENT (OUT)           :: buoy
 
 1077   REAL, 
DIMENSION (nloc, nd), 
INTENT (OUT)           :: frac
 
 1081   REAL tg, qg, ahg, alv, alf, s, tc, es, esi, denom, rg, tca, elacrit
 
 1083   REAL qsat_new, snew, qi(nloc, nd)
 
 1084   REAL by, defrac, pden, tbis
 
 1085   REAL ah0(nloc), cape(nloc), capem(nloc), byp(nloc)
 
 1087   INTEGER iposit(nloc)
 
 1111     ah0(i) = (
cpd*(1.-qnk(i))+
cl*qnk(i))*tnk(i)+ & 
 
 1113              qnk(i)*(
lv0-
clmcpv*(tnk(i)-273.15)) + gznk(i)
 
 1123       IF (k>=(icbs(i)+1)) 
THEN                                 
 1132         s = 
cpd*(1.-qnk(i)) + 
cl*qnk(i) + &                   
 
 1133             alv*alv*qg/(
rrv*t(i,k)*t(i,k))                    
 
 1136         ahg = 
cpd*tg + (
cl-
cpd)*qnk(i)*tg + alv*qg + gz(i, k) 
 
 1137         tg = tg + s*(ah0(i)-ahg)
 
 1142         denom = max(denom, 1.0)                               
 
 1144         es = 6.112*exp(17.67*tc/denom)
 
 1148         qg = 
eps*es/(p(i,k)-es*(1.-
eps))
 
 1155         ahg = 
cpd*tg + (
cl-
cpd)*qnk(i)*tg + alv*qg + gz(i, k) 
 
 1156         tg = tg + s*(ah0(i)-ahg)
 
 1161         denom = max(denom, 1.0)                               
 
 1163         es = 6.112*exp(17.67*tc/denom)
 
 1167         qg = 
eps*es/(p(i,k)-es*(1.-
eps))
 
 1179         IF (cvflag_ice) 
THEN 
 1180           tp(i, k) = max(0., (ah0(i)-gz(i,k)-alv*qg)/(
cpd+(
cl-
cpd)*qnk(i)))
 
 1182           tp(i, k) = (ah0(i)-gz(i,k)-alv*qg)/(
cpd+(
cl-
cpd)*qnk(i))
 
 1185         clw(i, k) = qnk(i) - qg
 
 1186         clw(i, k) = max(0.0, clw(i,k))
 
 1190         tvp(i, k) = tp(i, k)*(1.+qg/
eps-qnk(i)) 
 
 1191         IF (cvflag_ice) 
THEN 
 1192           IF (clw(i,k)<1.e-11) 
THEN 
 1194             tvp(i, k) = tv(i, k)
 
 1201       IF (cvflag_ice) 
THEN 
 1204         IF (t(i,k)>263.15) 
THEN 
 1207           IF (t(i,k)<243.15) 
THEN 
 1208             qi(i, k) = clw(i, k)
 
 1210             fracg = (263.15-t(i,k))/20
 
 1211             qi(i, k) = clw(i, k)*fracg
 
 1215         IF (t(i,k)<263.15) 
THEN 
 1246             esi = exp(23.33086-(6111.72784/tp(i,k))+0.15215*log(tp(i,k)))
 
 1247             qsat_new = 
eps*esi/(p(i,k)-esi*(1.-
eps))
 
 1248             snew = 
cpd*(1.-qnk(i)) + 
cl*qnk(i) + alv*als*qsat_new/ &
 
 1249                                                  (
rrv*tp(i,k)*tp(i,k))
 
 1252             tp(i, k) = tp(i, k) + &
 
 1253                        ((
cpd*(1.-qnk(i))+
cl*qnk(i))*(tg-tp(i,k)) + &
 
 1254                         alv*(qg-qsat_new)+alf*qi(i,k))*snew
 
 1260           clw(i, k) = qnk(i) - qsat_new
 
 1261           clw(i, k) = max(0.0, clw(i,k))
 
 1262           tvp(i, k) = max(0., tp(i,k)*(1.+qsat_new/
eps-qnk(i)))
 
 1265         IF (clw(i,k)<1.e-11) 
THEN 
 1267           tvp(i, k) = tv(i, k)
 
 1291   IF (flag_epkeorig/=1) 
THEN 
 1299          ep(i, k) = max(ep(i,k), 0.0)
 
 1300          ep(i, k) = min(ep(i,k), 
epmax)
 
 1315             elacrit = 
elcrit*(1.0-tca/tlcrit)
 
 1317           elacrit = max(elacrit, 0.0)
 
 1318           ep(i, k) = 1.0 - elacrit/max(clw(i,k), 1.0e-8)
 
 1319           ep(i, k) = max(ep(i,k), 0.0)
 
 1320           ep(i, k) = min(ep(i,k), 
epmax)
 
 1350     tp(i, 
nlp) = tp(i, 
nl)                                 
 
 1364       buoy(i, k) = tvp(i, k) - tv(i, k)
 
 1374       IF ((k>=icb(i)) .AND. (k<=
nl) .AND. (p(i,k)>=pbase(i))) 
THEN 
 1375         buoy(i, k) = buoybase(i)
 
 1381     buoy(i, icb(i)) = buoybase(i)
 
 1402       IF (k>=icb(i) .AND. buoy(i,k)>0.) 
THEN 
 1403         iposit(i) = min(iposit(i), k)
 
 1409     IF (iposit(i)==
nl) 
THEN 
 1416       IF ((k>=iposit(i)) .AND. (buoy(i,k)<
dtovsh)) 
THEN 
 1417         inb(i) = min(inb(i), k)
 
 1526   IF (cvflag_ice) 
THEN 
 1530         IF ((k>=icb(i)) .AND. (k<=inb(i))) 
THEN 
 1531           frac(i, k) = 1. - (t(i,k)-243.15)/(263.15-243.15)
 
 1532           frac(i, k) = min(max(frac(i,k),0.0), 1.0)
 
 1533           hp(i, k) = hnk(i) + (lv(i,k)+(
cpd-
cpv)*t(i,k)+frac(i,k)*lf(i,k))* &
 
 1542           frac(i,k) = frac(i,icb(i))
 
 1551         IF ((k>=icb(i)) .AND. (k<=inb(i))) 
THEN 
 1552           hp(i, k) = hnk(i) + (lv(i,k)+(
cpd-
cpv)*t(i,k))*ep(i, k)*clw(i, k)
 
 1562 SUBROUTINE cv3_closure(nloc, ncum, nd, icb, inb, &
 
 1563                        pbase, p, ph, tv, buoy, &
 
 1564                        sig, w0, cape, m, iflag)
 
 1573   include 
"cvthermo.h" 
 1574   include 
"cv3param.h" 
 1577   INTEGER ncum, nd, nloc
 
 1578   INTEGER icb(nloc), inb(nloc)
 
 1580   REAL p(nloc, nd), ph(nloc, nd+1)
 
 1581   REAL tv(nloc, nd), buoy(nloc, nd)
 
 1584   REAL sig(nloc, nd), w0(nloc, nd)
 
 1592   INTEGER i, j, k, icbmax
 
 1593   REAL deltap, fac, w, amu
 
 1594   REAL dtmin(nloc, nd), sigold(nloc, nd)
 
 1616       IF ((inb(i)<(
nl-1)) .AND. (k>=(inb(i)+1))) 
THEN 
 1617         sig(i, k) = 
beta*sig(i, k) + &
 
 1618                     2.*
alpha*buoy(i, inb(i))*abs(buoy(i,inb(i)))
 
 1619         sig(i, k) = amax1(sig(i,k), 0.0)
 
 1620         w0(i, k) = 
beta*w0(i, k)
 
 1629     icbmax = max(icbmax, icb(i))
 
 1637         sig(i, k) = 
beta*sig(i, k) - &
 
 1638                     2.*
alpha*buoy(i, icb(i))*buoy(i, icb(i))
 
 1639         sig(i, k) = max(sig(i,k), 0.0)
 
 1640         w0(i, k) = 
beta*w0(i, k)
 
 1667       IF (sig(i,nd)<1.5 .OR. sig(i,nd)>12.0) 
THEN 
 1695         IF ((k>=(icb(i)+1)) .AND. (k<=inb(i)) .AND. (j>=icb(i)) .AND. (j<=(k-1))) 
THEN 
 1696           dtmin(i, k) = amin1(dtmin(i,k), buoy(i,j))
 
 1707       IF ((k>=(icb(i)+1)) .AND. (k<=inb(i))) 
THEN 
 1709         deltap = min(pbase(i), ph(i,k-1)) - min(pbase(i), ph(i,k))
 
 1710         cape(i) = cape(i) + 
rrd*buoy(i, k-1)*deltap/p(i, k-1)
 
 1711         cape(i) = amax1(0.0, cape(i))
 
 1712         sigold(i, k) = sig(i, k)
 
 1719         sig(i, k) = 
beta*sig(i, k) + 
alpha*dtmin(i, k)*abs(dtmin(i,k))
 
 1720         sig(i, k) = max(sig(i,k), 0.0)
 
 1721         sig(i, k) = amin1(sig(i,k), 0.01)
 
 1723         w = (1.-
beta)*fac*sqrt(cape(i)) + 
beta*w0(i, k)
 
 1724         amu = 0.5*(sig(i,k)+sigold(i,k))*w
 
 1725         m(i, k) = amu*0.007*p(i, k)*(ph(i,k)-ph(i,k+1))/tv(i, k)
 
 1733     w0(i, icb(i)) = 0.5*w0(i, icb(i)+1)
 
 1734     m(i, icb(i)) = 0.5*m(i, icb(i)+1)*(ph(i,icb(i))-ph(i,icb(i)+1))/(ph(i,icb(i)+1)-ph(i,icb(i)+2))
 
 1735     sig(i, icb(i)) = sig(i, icb(i)+1)
 
 1736     sig(i, icb(i)-1) = sig(i, icb(i))
 
 1803 SUBROUTINE cv3_mixing(nloc, ncum, nd, na, ntra, icb, nk, inb, &
 
 1804                       ph, t, 
rr, rs, 
u, v, tra, h, lv, lf, frac, qnk, &
 
 1805                       unk, vnk, hp, tv, tvp, ep, clw, m, sig, &
 
 1806                       ment, qent, uent, vent, nent, sij, elij, ments, qents, traent)
 
 1814   include 
"cvthermo.h" 
 1815   include 
"cv3param.h" 
 1819   INTEGER, 
INTENT (IN)                               :: ncum, nd, na, ntra, nloc
 
 1820   INTEGER, 
DIMENSION (nloc), 
INTENT (IN)             :: icb, inb, nk
 
 1821   REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: sig
 
 1822   REAL, 
DIMENSION (nloc), 
INTENT (IN)                :: qnk, unk, vnk
 
 1823   REAL, 
DIMENSION (nloc, nd+1), 
INTENT (IN)          :: ph
 
 1824   REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: t, rr, rs
 
 1825   REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: u, v
 
 1826   REAL, 
DIMENSION (nloc, nd, ntra), 
INTENT (IN)      :: tra               
 
 1827   REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: lv, h, hp
 
 1828   REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: lf, frac
 
 1829   REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: tv, tvp, ep, clw
 
 1830   REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: m                 
 
 1833   REAL, 
DIMENSION (nloc, na, na), 
INTENT (OUT)        :: ment, qent
 
 1834   REAL, 
DIMENSION (nloc, na, na), 
INTENT (OUT)        :: uent, vent
 
 1835   REAL, 
DIMENSION (nloc, na, na), 
INTENT (OUT)        :: sij, elij
 
 1836   REAL, 
DIMENSION (nloc, nd, nd, ntra), 
INTENT (OUT)  :: traent
 
 1837   REAL, 
DIMENSION (nloc, nd, nd), 
INTENT (OUT)        :: ments, qents
 
 1838   INTEGER, 
DIMENSION (nloc, nd), 
INTENT (OUT)         :: nent
 
 1841   INTEGER i, j, k, il, im, jm
 
 1843   REAL rti, bf2, anum, denom, dei, altem, cwat, stemp, qp
 
 1844   REAL alt, smid, sjmin, sjmax, delp, delm
 
 1845   REAL asij(nloc), smax(nloc), scrit(nloc)
 
 1846   REAL asum(nloc, nd), bsum(nloc, nd), csum(nloc, nd)
 
 1847   REAL sigij(nloc, nd, nd)
 
 1870         qent(i, k, j) = rr(i, j)
 
 1871         uent(i, k, j) = u(i, j)
 
 1872         vent(i, k, j) = v(i, j)
 
 1881   ment(1:ncum, 1:nd, 1:nd) = 0.0
 
 1882   sij(1:ncum, 1:nd, 1:nd) = 0.0
 
 1905         IF ((i>=icb(il)) .AND. (i<=inb(il)) .AND. (j>=(icb(il)-1)) .AND. (j<=inb(il))) 
THEN 
 1907           rti = qnk(il) - ep(il, i)*clw(il, i)
 
 1908           bf2 = 1. + lv(il, j)*lv(il, j)*rs(il, j)/(
rrv*t(il,j)*t(il,j)*
cpd)
 
 1911           IF (cvflag_ice) 
THEN 
 1913             IF (t(il,j)<=263.15) 
THEN 
 1914               bf2 = 1. + (lf(il,j)+lv(il,j))*(lv(il,j)+frac(il,j)* &
 
 1915                    lf(il,j))*rs(il, j)/(
rrv*t(il,j)*t(il,j)*
cpd)
 
 1919           anum = h(il, j) - hp(il, i) + (
cpv-
cpd)*t(il, j)*(rti-rr(il,j))
 
 1920           denom = h(il, i) - hp(il, i) + (
cpd-
cpv)*(rr(il,i)-rti)*t(il, j)
 
 1922           IF (abs(dei)<0.01) dei = 0.01
 
 1923           sij(il, i, j) = anum/dei
 
 1925           altem = sij(il, i, j)*rr(il, i) + (1.-sij(il,i,j))*rti - rs(il, j)
 
 1927           cwat = clw(il, j)*(1.-ep(il,j))
 
 1928           stemp = sij(il, i, j)
 
 1929           IF ((stemp<0.0 .OR. stemp>1.0 .OR. altem>cwat) .AND. j>i) 
THEN 
 1931             IF (cvflag_ice) 
THEN 
 1932               anum = anum - (lv(il,j)+frac(il,j)*lf(il,j))*(rti-rs(il,j)-cwat*bf2)
 
 1933               denom = denom + (lv(il,j)+frac(il,j)*lf(il,j))*(rr(il,i)-rti)
 
 1935               anum = anum - lv(il, j)*(rti-rs(il,j)-cwat*bf2)
 
 1936               denom = denom + lv(il, j)*(rr(il,i)-rti)
 
 1939             IF (abs(denom)<0.01) denom = 0.01
 
 1940             sij(il, i, j) = anum/denom
 
 1941             altem = sij(il, i, j)*rr(il, i) + (1.-sij(il,i,j))*rti - rs(il, j)
 
 1942             altem = altem - (bf2-1.)*cwat
 
 1944           IF (sij(il,i,j)>0.0 .AND. sij(il,i,j)<0.95) 
THEN 
 1945             qent(il, i, j) = sij(il, i, j)*rr(il, i) + (1.-sij(il,i,j))*rti
 
 1946             uent(il, i, j) = sij(il, i, j)*u(il, i) + (1.-sij(il,i,j))*unk(il)
 
 1947             vent(il, i, j) = sij(il, i, j)*v(il, i) + (1.-sij(il,i,j))*vnk(il)
 
 1952             elij(il, i, j) = altem
 
 1953             elij(il, i, j) = max(0.0, elij(il,i,j))
 
 1954             ment(il, i, j) = m(il, i)/(1.-sij(il,i,j))
 
 1955             nent(il, i) = nent(il, i) + 1
 
 1957           sij(il, i, j) = max(0.0, sij(il,i,j))
 
 1958           sij(il, i, j) = amin1(1.0, sij(il,i,j))
 
 1983       IF ((i>=icb(il)) .AND. (i<=inb(il)) .AND. (nent(il,i)==0)) 
THEN 
 1985         ment(il, i, i) = m(il, i)
 
 1986         qent(il, i, i) = qnk(il) - ep(il, i)*clw(il, i)
 
 1987         uent(il, i, i) = unk(il)
 
 1988         vent(il, i, i) = vnk(il)
 
 1989         elij(il, i, i) = clw(il, i)
 
 2009         IF ((j>=(icb(il)-1)) .AND. (j<=inb(il)) .AND. (i>=icb(il)) .AND. (i<=inb(il))) 
THEN 
 2010           sigij(il, i, j) = sij(il, i, j)
 
 2024   CALL zilch(asum, nloc*nd)
 
 2025   CALL zilch(csum, nloc*nd)
 
 2026   CALL zilch(csum, nloc*nd)
 
 2036       IF (i>=icb(il) .AND. i<=inb(il)) num1 = num1 + 1
 
 2038     IF (num1<=0) 
GO TO 789
 
 2042       IF (i>=icb(il) .AND. i<=inb(il)) 
THEN 
 2043         lwork(il) = (nent(il,i)/=0)
 
 2044         qp = qnk(il) - ep(il, i)*clw(il, i)
 
 2046         IF (cvflag_ice) 
THEN 
 2048           anum = h(il, i) - hp(il, i) - (lv(il,i)+frac(il,i)*lf(il,i))* &
 
 2049                        (qp-rs(il,i)) + (
cpv-
cpd)*t(il, i)*(qp-rr(il,i))
 
 2050           denom = h(il, i) - hp(il, i) + (lv(il,i)+frac(il,i)*lf(il,i))* &
 
 2051                        (rr(il,i)-qp) + (
cpd-
cpv)*t(il, i)*(rr(il,i)-qp)
 
 2054           anum = h(il, i) - hp(il, i) - lv(il, i)*(qp-rs(il,i)) + &
 
 2055                        (
cpv-
cpd)*t(il, i)*(qp-rr(il,i))
 
 2056           denom = h(il, i) - hp(il, i) + lv(il, i)*(rr(il,i)-qp) + &
 
 2057                        (
cpd-
cpv)*t(il, i)*(rr(il,i)-qp)
 
 2060         IF (abs(denom)<0.01) denom = 0.01
 
 2061         scrit(il) = anum/denom
 
 2062         alt = qp - rs(il, i) + scrit(il)*(rr(il,i)-qp)
 
 2063         IF (scrit(il)<=0.0 .OR. alt<=0.0) scrit(il) = 1.0
 
 2073         IF (i>=icb(il) .AND. i<=inb(il) .AND. &
 
 2074             j>=(icb(il)-1) .AND. j<=inb(il) .AND. &
 
 2075             lwork(il)) num2 = num2 + 1
 
 2077       IF (num2<=0) 
GO TO 175
 
 2080         IF (i>=icb(il) .AND. i<=inb(il) .AND. &
 
 2081             j>=(icb(il)-1) .AND. j<=inb(il) .AND. &
 
 2084           IF (sij(il,i,j)>1.0e-16 .AND. sij(il,i,j)<0.95) 
THEN 
 2087               sjmax = max(sij(il,i,j+1), smax(il))
 
 2088               sjmax = amin1(sjmax, scrit(il))
 
 2089               smax(il) = max(sij(il,i,j), smax(il))
 
 2090               sjmin = max(sij(il,i,j-1), smax(il))
 
 2091               sjmin = amin1(sjmin, scrit(il))
 
 2092               IF (sij(il,i,j)<(smax(il)-1.0e-16)) wgh = 0.0
 
 2093               smid = amin1(sij(il,i,j), scrit(il))
 
 2095               sjmax = max(sij(il,i,j+1), scrit(il))
 
 2096               smid = max(sij(il,i,j), scrit(il))
 
 2098               IF (j>1) sjmin = sij(il, i, j-1)
 
 2099               sjmin = max(sjmin, scrit(il))
 
 2101             delp = abs(sjmax-smid)
 
 2102             delm = abs(sjmin-smid)
 
 2103             asij(il) = asij(il) + wgh*(delp+delm)
 
 2104             ment(il, i, j) = ment(il, i, j)*(delp+delm)*wgh
 
 2112       IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il)) 
THEN 
 2113         asij(il) = max(1.0e-16, asij(il))
 
 2114         asij(il) = 1.0/asij(il)
 
 2123         IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il) .AND. &
 
 2124             j>=(icb(il)-1) .AND. j<=inb(il)) 
THEN 
 2125           ment(il, i, j) = ment(il, i, j)*asij(il)
 
 2132         IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il) .AND. &
 
 2133             j>=(icb(il)-1) .AND. j<=inb(il)) 
THEN 
 2134           asum(il, i) = asum(il, i) + ment(il, i, j)
 
 2135           ment(il, i, j) = ment(il, i, j)*sig(il, j)
 
 2136           bsum(il, i) = bsum(il, i) + ment(il, i, j)
 
 2142       IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il)) 
THEN 
 2143         bsum(il, i) = max(bsum(il,i), 1.0e-16)
 
 2144         bsum(il, i) = 1.0/bsum(il, i)
 
 2150         IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il) .AND. &
 
 2151             j>=(icb(il)-1) .AND. j<=inb(il)) 
THEN 
 2152           ment(il, i, j) = ment(il, i, j)*asum(il, i)*bsum(il, i)
 
 2159         IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il) .AND. &
 
 2160             j>=(icb(il)-1) .AND. j<=inb(il)) 
THEN 
 2161           csum(il, i) = csum(il, i) + ment(il, i, j)
 
 2167       IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il) .AND. &
 
 2168           csum(il,i)<m(il,i)) 
THEN 
 2170         ment(il, i, i) = m(il, i)
 
 2171         qent(il, i, i) = qnk(il) - ep(il, i)*clw(il, i)
 
 2172         uent(il, i, i) = unk(il)
 
 2173         vent(il, i, i) = vnk(il)
 
 2174         elij(il, i, i) = clw(il, i)
 
 2191   CALL zilch(zm, nloc*na)
 
 2195         zm(il, im) = zm(il, im) + (1.-sij(il,im,jm))*ment(il, im, jm)
 
 2203         IF (zm(il,im)/=0.) 
THEN 
 2204           ment(il, im, jm) = ment(il, im, jm)*m(il, im)/zm(il, im)
 
 2213         qents(il, im, jm) = qent(il, im, jm)
 
 2214         ments(il, im, jm) = ment(il, im, jm)
 
 2222 SUBROUTINE cv3_unsat(nloc, ncum, nd, na, ntra, icb, inb, iflag, &
 
 2223                      t, 
rr, rs, gz, 
u, v, tra, p, ph, &
 
 2224                      th, tv, lv, lf, cpn, ep, sigp, clw, &
 
 2225                      m, ment, elij, delt, plcl, coef_clos, &
 
 2226                      mp, rp, up, vp, trap, wt, water, evap, fondue, ice, &
 
 2233   include 
"cvthermo.h" 
 2234   include 
"cv3param.h" 
 2239   INTEGER, 
INTENT (IN)                               :: ncum, nd, na, ntra, nloc
 
 2240   INTEGER, 
DIMENSION (nloc), 
INTENT (IN)             :: icb, inb
 
 2241   REAL, 
INTENT(IN)                                   :: delt
 
 2242   REAL, 
DIMENSION (nloc), 
INTENT (IN)                :: plcl
 
 2243   REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: t, rr, rs
 
 2244   REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: gz
 
 2245   REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: u, v
 
 2246   REAL tra(nloc, nd, ntra)
 
 2247   REAL p(nloc, nd), ph(nloc, nd+1)
 
 2248   REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: ep, sigp, clw
 
 2249   REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: th, tv, lv, cpn
 
 2250   REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: lf
 
 2251   REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: m
 
 2252   REAL, 
DIMENSION (nloc, na, na), 
INTENT (IN)        :: ment, elij
 
 2253   REAL, 
DIMENSION (nloc), 
INTENT (IN)                :: coef_clos
 
 2256   INTEGER, 
DIMENSION (nloc), 
INTENT (INOUT)          :: iflag(nloc)
 
 2259   REAL, 
DIMENSION (nloc, na), 
INTENT (OUT)           :: mp, rp, up, vp
 
 2260   REAL, 
DIMENSION (nloc, na), 
INTENT (OUT)           :: water, evap, wt
 
 2261   REAL, 
DIMENSION (nloc, na), 
INTENT (OUT)           :: ice, fondue, faci
 
 2262   REAL, 
DIMENSION (nloc, na, ntra), 
INTENT (OUT)     :: trap
 
 2263   REAL, 
DIMENSION (nloc, na), 
INTENT (OUT)           :: b
 
 2264   REAL, 
DIMENSION (nloc), 
INTENT (OUT)               :: sigd
 
 2269   REAL, 
DIMENSION (nloc, na), 
INTENT (OUT)           :: wdtrainA, wdtrainM
 
 2272   INTEGER i, j, k, il, num1, ndp1
 
 2273   REAL tinv, delti, coef
 
 2274   REAL awat, afac, afac1, afac2, bfac
 
 2275   REAL pr1, pr2, sigt, b6, c6, d6, e6, f6, revap, delth
 
 2276   REAL amfac, amp2, xf, tf, fac2, ur, sru, fac, d, af, bf
 
 2279   REAL lvcp(nloc, na), lfcp(nloc, na)
 
 2280   REAL h(nloc, na), hm(nloc, na)
 
 2282   REAL fraci(nloc, na), prec(nloc, na)
 
 2284   LOGICAL lwork(nloc), mplus(nloc)
 
 2297       rp(il, i) = rr(il, i)
 
 2298       up(il, i) = u(il, i)
 
 2299       vp(il, i) = v(il, i)
 
 2312       wdtraina(il, i) = 0.0
 
 2313       wdtrainm(il, i) = 0.0
 
 2320     sigd(il) = 
sigdz*coef_clos(il)
 
 2336       lvcp(il, i) = lv(il, i)/cpn(il, i)
 
 2337       lfcp(il, i) = lf(il, i)/cpn(il, i)
 
 2356     lwork(il) = ep(il, inb(il)) >= 0.0001
 
 2366   DO i = 
nl + 1, 1, -1
 
 2370       IF (i<=inb(il) .AND. lwork(il)) num1 = num1 + 1
 
 2372     IF (num1<=0) 
GO TO 400
 
 2374     CALL zilch(wdtrain, ncum)
 
 2384       IF (i<=inb(il) .AND. lwork(il)) 
THEN 
 2386           wdtrain(il) = grav*ep(il, i)*m(il, i)*clw(il, i)
 
 2387           wdtraina(il, i) = wdtrain(il)/grav                        
 
 2389           wdtrain(il) = 10.0*ep(il, i)*m(il, i)*clw(il, i)
 
 2390           wdtraina(il, i) = wdtrain(il)/10.                         
 
 2398           IF (i<=inb(il) .AND. lwork(il)) 
THEN 
 2399             awat = elij(il, j, i) - (1.-ep(il,i))*clw(il, i)
 
 2400             awat = max(awat, 0.0)
 
 2402               wdtrain(il) = wdtrain(il) + grav*awat*ment(il, j, i)
 
 2403               wdtrainm(il, i) = wdtrain(il)/grav - wdtraina(il, i)  
 
 2405               wdtrain(il) = wdtrain(il) + 10.0*awat*ment(il, j, i)
 
 2406               wdtrainm(il, i) = wdtrain(il)/10. - wdtraina(il, i)   
 
 2419       IF (i<=inb(il) .AND. lwork(il)) 
THEN 
 2423         IF (cvflag_ice) 
THEN 
 2424           frac(il, inb(il)) = 1. - (t(il,inb(il))-243.15)/(263.15-243.15)
 
 2425           frac(il, inb(il)) = min(max(frac(il,inb(il)),0.), 1.)
 
 2426           fraci(il, inb(il)) = frac(il, inb(il))
 
 2433           IF (cvflag_ice) 
THEN 
 2435             thaw = (t(il,i)-273.15)/(tmax_fonte_cv-273.15)
 
 2436             thaw = min(max(thaw,0.0), 1.0)
 
 2437             frac(il, i) = frac(il, i)*(1.-thaw)
 
 2442           rp(il, i) = rp(il, i+1) + &
 
 2443                       (
cpd*(t(il,i+1)-t(il,i))+gz(il,i+1)-gz(il,i))/lv(il, i)
 
 2444           rp(il, i) = 0.5*(rp(il,i)+rr(il,i))
 
 2446         fraci(il, i) = 1. - (t(il,i)-243.15)/(263.15-243.15)
 
 2447         fraci(il, i) = min(max(fraci(il,i),0.0), 1.0)
 
 2448         rp(il, i) = max(rp(il,i), 0.0)
 
 2449         rp(il, i) = amin1(rp(il,i), rs(il,i))
 
 2450         rp(il, inb(il)) = rr(il, inb(il))
 
 2453           afac = p(il, 1)*(rs(il,1)-rp(il,1))/(1.0e4+2000.0*p(il,1)*rs(il,1))
 
 2454           IF (cvflag_ice) 
THEN 
 2455             afac1 = p(il, i)*(rs(il,1)-rp(il,1))/(1.0e4+2000.0*p(il,1)*rs(il,1))
 
 2458           rp(il, i-1) = rp(il, i) + (
cpd*(t(il,i)-t(il,i-1))+gz(il,i)-gz(il,i-1))/lv(il, i)
 
 2459           rp(il, i-1) = 0.5*(rp(il,i-1)+rr(il,i-1))
 
 2460           rp(il, i-1) = amin1(rp(il,i-1), rs(il,i-1))
 
 2461           rp(il, i-1) = max(rp(il,i-1), 0.0)
 
 2462           afac1 = p(il, i)*(rs(il,i)-rp(il,i))/(1.0e4+2000.0*p(il,i)*rs(il,i))
 
 2463           afac2 = p(il, i-1)*(rs(il,i-1)-rp(il,i-1))/(1.0e4+2000.0*p(il,i-1)*rs(il,i-1))
 
 2464           afac = 0.5*(afac1+afac2)
 
 2466         IF (i==inb(il)) afac = 0.0
 
 2467         afac = max(afac, 0.0)
 
 2468         bfac = 1./(sigd(il)*wt(il,i))
 
 2472       print*, 
'cv3_unsat after provisional rp estimate: rp, afac, bfac ', &
 
 2473           i, rp(1, i), afac,bfac
 
 2486         pr1 = (plcl(il)-ph(il,i+1))/(ph(il,i)-ph(il,i+1))
 
 2487         pr1 = max(0., min(1.,pr1))
 
 2488         pr2 = (ph(il,i)-plcl(il))/(ph(il,i)-ph(il,i+1))
 
 2489         pr2 = max(0., min(1.,pr2))
 
 2490         sigt = sigp(il, i)*pr1 + pr2
 
 2506         IF (cvflag_ice) 
THEN 
 2521           b6 = bfac*50.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac1
 
 2522           c6 = prec(il, i+1) + 0.5*bfac*wdtrain(il)
 
 2526           IF (c6>b6*b6+1.e-20) 
THEN 
 2527             revap = 2.*c6/(b6+sqrt(b6*b6+4.*c6))
 
 2529             revap = (-b6+sqrt(b6*b6+4.*c6))/2.
 
 2531           prec(il, i) = max(0., 2.*revap*revap-prec(il,i+1))
 
 2548           evap(il, i) = (wdtrain(il)+sigd(il)*wt(il,i)*(prec(il,i+1)-prec(il,i))) / &
 
 2549                         (sigd(il)*(ph(il,i)-ph(il,i+1))*100.)
 
 2552       print*, 
'cv3_unsat after evap computation: wdtrain, sigd, wt, prec(i+1),prec(i) ', &
 
 2553           i, wdtrain(1), sigd(1), wt(1,i), prec(1,i+1),prec(1,i)
 
 2557           d6 = bfac*wdtrain(il) - 100.*sigd(il)*bfac*(ph(il,i)-ph(il,i+1))*evap(il, i)
 
 2558           e6 = bfac*wdtrain(il)
 
 2559           f6 = -100.*sigd(il)*bfac*(ph(il,i)-ph(il,i+1))*evap(il, i)
 
 2562           thaw = (t(il,i)-273.15)/(tmax_fonte_cv-273.15)
 
 2563           thaw = min(max(thaw,0.0), 1.0)
 
 2564           water(il, i) = water(il, i+1) + (1-fraci(il,i))*d6
 
 2565           water(il, i) = max(water(il,i), 0.)
 
 2566           ice(il, i) = ice(il, i+1) + fraci(il, i)*d6
 
 2567           ice(il, i) = max(ice(il,i), 0.)
 
 2568           fondue(il, i) = ice(il, i)*thaw
 
 2569           water(il, i) = water(il, i) + fondue(il, i)
 
 2570           ice(il, i) = ice(il, i) - fondue(il, i)
 
 2572           IF (water(il,i)+ice(il,i)<1.e-30) 
THEN 
 2575             faci(il, i) = ice(il, i)/(water(il,i)+ice(il,i))
 
 2593           b6 = bfac*50.*sigd(il)*(ph(il,i)-ph(il,i+1))*sigt*afac
 
 2594           c6 = water(il, i+1) + bfac*wdtrain(il) - &
 
 2595                50.*sigd(il)*bfac*(ph(il,i)-ph(il,i+1))*evap(il, i+1)
 
 2597             revap = 0.5*(-b6+sqrt(b6*b6+4.*c6))
 
 2598             water(il, i) = revap*revap
 
 2603           evap(il, i) = (wdtrain(il)+sigd(il)*wt(il,i)*(water(il,i+1)-water(il,i)))/ &
 
 2604                         (sigd(il)*(ph(il,i)-ph(il,i+1))*100.)
 
 2616       IF (i<=inb(il) .AND. lwork(il) .AND. i/=1) 
THEN 
 2618         tevap(il) = max(0.0, evap(il,i))
 
 2619         delth = max(0.001, (th(il,i)-th(il,i-1)))
 
 2620         IF (cvflag_ice) 
THEN 
 2622             mp(il, i) = 100.*
ginv*(lvcp(il,i)*sigd(il)*tevap(il)* &
 
 2623                                                (p(il,i-1)-p(il,i))/delth + &
 
 2624                                    lfcp(il,i)*sigd(il)*faci(il,i)*tevap(il)* &
 
 2625                                                (p(il,i-1)-p(il,i))/delth + &
 
 2626                                    lfcp(il,i)*sigd(il)*wt(il,i)/100.*fondue(il,i)* &
 
 2627                                                (p(il,i-1)-p(il,i))/delth/(ph(il,i)-ph(il,i+1)))
 
 2629             mp(il, i) = 10.*(lvcp(il,i)*sigd(il)*tevap(il)* &
 
 2630                                                 (p(il,i-1)-p(il,i))/delth + &
 
 2631                              lfcp(il,i)*sigd(il)*faci(il,i)*tevap(il)* &
 
 2632                                                 (p(il,i-1)-p(il,i))/delth + &
 
 2633                              lfcp(il,i)*sigd(il)*wt(il,i)/100.*fondue(il,i)* &
 
 2634                                                 (p(il,i-1)-p(il,i))/delth/(ph(il,i)-ph(il,i+1)))
 
 2639             mp(il, i) = 100.*
ginv*lvcp(il, i)*sigd(il)*tevap(il)* &
 
 2640                                                 (p(il,i-1)-p(il,i))/delth
 
 2642             mp(il, i) = 10.*lvcp(il, i)*sigd(il)*tevap(il)* &
 
 2643                                                 (p(il,i-1)-p(il,i))/delth
 
 2657       IF (i<=inb(il) .AND. lwork(il) .AND. i/=1) 
THEN 
 2659         amfac = sigd(il)*sigd(il)*70.0*ph(il, i)*(p(il,i-1)-p(il,i))* &
 
 2660                          (th(il,i)-th(il,i-1))/(tv(il,i)*th(il,i))
 
 2661         amp2 = abs(mp(il,i+1)*mp(il,i+1)-mp(il,i)*mp(il,i))
 
 2663         IF (amp2>(0.1*amfac)) 
THEN 
 2664           xf = 100.0*sigd(il)*sigd(il)*sigd(il)*(ph(il,i)-ph(il,i+1))
 
 2665           tf = b(il, i) - 5.0*(th(il,i)-th(il,i-1))*t(il, i) / &
 
 2666                               (lvcp(il,i)*sigd(il)*th(il,i))
 
 2667           af = xf*tf + mp(il, i+1)*mp(il, i+1)*tinv
 
 2669           IF (cvflag_ice) 
THEN 
 2670             bf = 2.*(tinv*mp(il,i+1))**3 + tinv*mp(il, i+1)*xf*tf + &
 
 2671                  50.*(p(il,i-1)-p(il,i))*xf*(tevap(il)*(1.+(lf(il,i)/lv(il,i))*faci(il,i)) + &
 
 2672                 (lf(il,i)/lv(il,i))*wt(il,i)/100.*fondue(il,i)/(ph(il,i)-ph(il,i+1)))
 
 2675             bf = 2.*(tinv*mp(il,i+1))**3 + tinv*mp(il, i+1)*xf*tf + &
 
 2676                                            50.*(p(il,i-1)-p(il,i))*xf*tevap(il)
 
 2680           IF (bf<0.0) fac2 = -1.0
 
 2682           ur = 0.25*bf*bf - af*af*af*tinv*tinv*tinv
 
 2686             IF ((0.5*bf-sru)<0.0) fac = -1.0
 
 2687             mp(il, i) = mp(il, i+1)*tinv + (0.5*bf+sru)**tinv + &
 
 2688                                            fac*(abs(0.5*bf-sru))**tinv
 
 2690             d = atan(2.*sqrt(-ur)/(bf+1.0e-28))
 
 2691             IF (fac2<0.0) d = 3.14159 - d
 
 2692             mp(il, i) = mp(il, i+1)*tinv + 2.*sqrt(af*tinv)*cos(d*tinv)
 
 2694           mp(il, i) = max(0.0, mp(il,i))
 
 2696           IF (cvflag_ice) 
THEN 
 2701               b(il, i-1) = b(il, i) + 100.0*(p(il,i-1)-p(il,i))* &
 
 2702                            (tevap(il)*(1.+(lf(il,i)/lv(il,i))*faci(il,i)) + &
 
 2703                            (lf(il,i)/lv(il,i))*wt(il,i)/100.*fondue(il,i) / &
 
 2704                            (ph(il,i)-ph(il,i+1))) / &
 
 2705                            (mp(il,i)+sigd(il)*0.1) - &
 
 2706                            10.0*(th(il,i)-th(il,i-1))*t(il, i) / &
 
 2707                            (lvcp(il,i)*sigd(il)*th(il,i))
 
 2709               b(il, i-1) = b(il, i) + 100.0*(p(il,i-1)-p(il,i))*&
 
 2710                            (tevap(il)*(1.+(lf(il,i)/lv(il,i))*faci(il,i)) + &
 
 2711                            (lf(il,i)/lv(il,i))*wt(il,i)/100.*fondue(il,i) / &
 
 2712                            (ph(il,i)-ph(il,i+1))) / &
 
 2713                            (mp(il,i)+sigd(il)*0.1) - &
 
 2714                            10.0*(th(il,i)-th(il,i-1))*t(il, i) / &
 
 2715                            (lvcp(il,i)*sigd(il)*th(il,i))
 
 2719               b(il, i-1) = b(il, i) + 100.0*(p(il,i-1)-p(il,i))*tevap(il) / &
 
 2720                            (mp(il,i)+sigd(il)*0.1) - &
 
 2721                            10.0*(th(il,i)-th(il,i-1))*t(il, i) / &
 
 2722                            (lvcp(il,i)*sigd(il)*th(il,i))
 
 2724               b(il, i-1) = b(il, i) + 100.0*(p(il,i-1)-p(il,i))*tevap(il) / &
 
 2725                            (mp(il,i)+sigd(il)*0.1) - &
 
 2726                            10.0*(th(il,i)-th(il,i-1))*t(il, i) / &
 
 2727                            (lvcp(il,i)*sigd(il)*th(il,i))
 
 2730           b(il, i-1) = max(b(il,i-1), 0.0)
 
 2736         ampmax = 2.0*(ph(il,i)-ph(il,i+1))*delti
 
 2737         amp2 = 2.0*(ph(il,i-1)-ph(il,i))*delti
 
 2738         ampmax = min(ampmax, amp2)
 
 2739         mp(il, i) = min(mp(il,i), ampmax)
 
 2748         IF (ph(il,i)>0.9*plcl(il)) 
THEN 
 2749           mp(il, i) = mp(il, i)*(ph(il,1)-ph(il,i))/(ph(il,1)-0.9*plcl(il))
 
 2757       print*, 
'cv3_unsat after mp computation: mp, b(i), b(i-1) ', &
 
 2758           i, mp(1, i), b(1,i), b(1,max(i-1,1))
 
 2765       IF (i<inb(il) .AND. lwork(il)) 
THEN 
 2766         mplus(il) = mp(il, i) > mp(il, i+1)
 
 2771       IF (i<inb(il) .AND. lwork(il)) 
THEN 
 2773         rp(il, i) = rr(il, i)
 
 2778             rp(il, i) = rp(il, i+1)*mp(il, i+1) + rr(il, i)*(mp(il,i)-mp(il,i+1)) + &
 
 2779               100.*
ginv*0.5*sigd(il)*(ph(il,i)-ph(il,i+1))*(evap(il,i+1)+evap(il,i))
 
 2781             rp(il, i) = rp(il, i+1)*mp(il, i+1) + rr(il, i)*(mp(il,i)-mp(il,i+1)) + &
 
 2782               5.*sigd(il)*(ph(il,i)-ph(il,i+1))*(evap(il,i+1)+evap(il,i))
 
 2784           rp(il, i) = rp(il, i)/mp(il, i)
 
 2785           up(il, i) = up(il, i+1)*mp(il, i+1) + u(il, i)*(mp(il,i)-mp(il,i+1))
 
 2786           up(il, i) = up(il, i)/mp(il, i)
 
 2787           vp(il, i) = vp(il, i+1)*mp(il, i+1) + v(il, i)*(mp(il,i)-mp(il,i+1))
 
 2788           vp(il, i) = vp(il, i)/mp(il, i)
 
 2792           IF (mp(il,i+1)>1.0e-16) 
THEN 
 2794               rp(il, i) = rp(il,i+1) + 100.*
ginv*0.5*sigd(il)*(ph(il,i)-ph(il,i+1)) * &
 
 2795                                        (evap(il,i+1)+evap(il,i))/mp(il,i+1)
 
 2797               rp(il, i) = rp(il,i+1) + 5.*sigd(il)*(ph(il,i)-ph(il,i+1)) * &
 
 2798                                        (evap(il,i+1)+evap(il,i))/mp(il, i+1)
 
 2800             up(il, i) = up(il, i+1)
 
 2801             vp(il, i) = vp(il, i+1)
 
 2805         rp(il, i) = amin1(rp(il,i), rs(il,i))
 
 2806         rp(il, i) = max(rp(il,i), 0.0)
 
 2843 SUBROUTINE cv3_yield(nloc, ncum, nd, na, ntra, ok_conserv_q, &
 
 2845                      t, 
rr, t_wake, rr_wake, s_wake, 
u, v, tra, &
 
 2846                      gz, p, ph, h, hp, lv, lf, cpn, th, th_wake, &
 
 2847                      ep, clw, m, tp, mp, rp, up, vp, trap, &
 
 2848                      wt, water, ice, evap, fondue, faci, b, 
sigd, &
 
 2849                      ment, qent, hent, 
iflag_mix, uent, vent, &
 
 2850                      nent, elij, traent, sig, &
 
 2852                      iflag, precip, vprecip, vprecipi, &     
 
 2853                      ft, fr, fu, fv, ftra, &                 
 
 2854                      cbmf, upwd, dnwd, dnwd0, ma, mip, &
 
 2861   include 
"cvthermo.h" 
 2862   include 
"cv3param.h" 
 2867       INTEGER, 
INTENT (IN)                               :: iflag_mix
 
 2868       INTEGER, 
INTENT (IN)                               :: ncum, nd, na, ntra, nloc
 
 2869       LOGICAL, 
INTENT (IN)                               :: ok_conserv_q
 
 2870       INTEGER, 
DIMENSION (nloc), 
INTENT (IN)             :: icb, inb
 
 2871       REAL, 
INTENT (IN)                                  :: delt
 
 2872       REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: t, rr, u, v
 
 2873       REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: t_wake, rr_wake
 
 2874       REAL, 
DIMENSION (nloc), 
INTENT (IN)                :: s_wake
 
 2875       REAL, 
DIMENSION (nloc, nd, ntra), 
INTENT (IN)      :: tra
 
 2876       REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: p
 
 2877       REAL, 
DIMENSION (nloc, nd+1), 
INTENT (IN)          :: ph
 
 2878       REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: gz, h, hp
 
 2879       REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: th, tp
 
 2880       REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: lv, cpn, ep, clw
 
 2881       REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: lf
 
 2882       REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: rp, up
 
 2883       REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: vp
 
 2884       REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: wt
 
 2885       REAL, 
DIMENSION (nloc, nd, ntra), 
INTENT (IN)      :: trap
 
 2886       REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: water, evap, b
 
 2887       REAL, 
DIMENSION (nloc, na), 
INTENT (IN)            :: fondue, faci, ice
 
 2888       REAL, 
DIMENSION (nloc, na, na), 
INTENT (IN)        :: qent, uent
 
 2889       REAL, 
DIMENSION (nloc, na, na), 
INTENT (IN)        :: hent
 
 2890       REAL, 
DIMENSION (nloc, na, na), 
INTENT (IN)        :: vent, elij
 
 2891       INTEGER, 
DIMENSION (nloc, nd), 
INTENT (IN)         :: nent
 
 2892       REAL, 
DIMENSION (nloc, na, na, ntra), 
INTENT (IN)  :: traent
 
 2893       REAL, 
DIMENSION (nloc, nd), 
INTENT (IN)            :: tv, tvp, wghti
 
 2894       REAL,
INTENT(IN)                                    :: tau_cld_cv, coefw_cld_cv
 
 2897       REAL, 
DIMENSION (nloc, na), 
INTENT (INOUT)         :: m, mp
 
 2898       REAL, 
DIMENSION (nloc, na, na), 
INTENT (INOUT)     :: ment
 
 2899       INTEGER, 
DIMENSION (nloc), 
INTENT (INOUT)          :: iflag
 
 2900       REAL, 
DIMENSION (nloc, nd), 
INTENT (INOUT)         :: sig
 
 2901       REAL, 
DIMENSION (nloc), 
INTENT (INOUT)             :: sigd
 
 2904       REAL, 
DIMENSION (nloc), 
INTENT (OUT)               :: precip
 
 2905       REAL, 
DIMENSION (nloc, nd), 
INTENT (OUT)           :: ft, fr, fu, fv
 
 2906       REAL, 
DIMENSION (nloc, nd), 
INTENT (OUT)           :: ftd, fqd
 
 2907       REAL, 
DIMENSION (nloc, nd, ntra), 
INTENT (OUT)     :: ftra
 
 2908       REAL, 
DIMENSION (nloc, nd), 
INTENT (OUT)           :: upwd, dnwd, ma
 
 2909       REAL, 
DIMENSION (nloc, nd), 
INTENT (OUT)           :: dnwd0, mip
 
 2910       REAL, 
DIMENSION (nloc, nd+1), 
INTENT (OUT)         :: Vprecip
 
 2911       REAL, 
DIMENSION (nloc, nd+1), 
INTENT (OUT)         :: Vprecipi
 
 2913       REAL, 
DIMENSION (nloc, nd), 
INTENT (OUT)           :: qcondc                      
 
 2914       REAL, 
DIMENSION (nloc, nd), 
INTENT (OUT)           :: qtc, sigt                   
 
 2915       REAL, 
DIMENSION (nloc), 
INTENT (OUT)               :: wd                          
 
 2916       REAL, 
DIMENSION (nloc), 
INTENT (OUT)               :: cbmf
 
 2919       INTEGER i, k, il, n, j, num1
 
 2921       REAL ax, bx, cx, dx, ex
 
 2922       REAL cpinv, rdcp, dpinv
 
 2924       REAL lvcp(nloc, na), lfcp(nloc, na)                  
 
 2925       REAL am(nloc), work(nloc), ad(nloc), amp1(nloc)
 
 2927       REAL up1(nloc, nd, nd), dn1(nloc, nd, nd)
 
 2928       REAL asum(nloc), bsum(nloc), csum(nloc), dsum(nloc)
 
 2929       REAL esum(nloc), fsum(nloc), gsum(nloc), hsum(nloc)
 
 2930       REAL th_wake(nloc, nd)
 
 2931       REAL alpha_qpos(nloc), alpha_qpos1(nloc)
 
 2932       REAL qcond(nloc, nd), nqcond(nloc, nd), wa(nloc, nd) 
 
 2933       REAL siga(nloc, nd), sax(nloc, nd), mac(nloc, nd) 
 
 2934       REAL sument(nloc), sigment(nloc,nd), qtment(nloc,nd) 
 
 2953       vprecip(il, i) = 0.0
 
 2954       vprecipi(il, i) = 0.0                               
 
 2973       sigment(il, i) = 0.0 
 
 2989       lvcp(il, i) = lv(il, i)/cpn(il, i)
 
 2990       lfcp(il, i) = lf(il, i)/cpn(il, i)
 
 2999     IF (ep(il,inb(il))>=0.0001 .AND. iflag(il)<=1) 
THEN 
 3000       IF (cvflag_ice) 
THEN 
 3001         precip(il) = wt(il, 1)*sigd(il)*(water(il,1)+ice(il,1)) &
 
 3002                               *86400.*1000./(
rowl*grav)
 
 3004         precip(il) = wt(il, 1)*sigd(il)*water(il, 1) &
 
 3005                               *86400.*1000./(
rowl*grav)
 
 3016       IF (ep(il,inb(il))>=0.0001 .AND. i<=inb(il) .AND. iflag(il)<=1) 
THEN 
 3017         IF (cvflag_ice) 
THEN 
 3018           vprecip(il, i) = wt(il, i)*sigd(il)*(water(il,i)+ice(il,i))/grav
 
 3019           vprecipi(il, i) = wt(il, i)*sigd(il)*ice(il,i)/grav                   
 
 3021           vprecip(il, i) = wt(il, i)*sigd(il)*water(il, i)/grav
 
 3022           vprecipi(il, i) = 0.                                                  
 
 3042     work(il) = 1.0/(ph(il,1)-ph(il,2))
 
 3048       IF (k>=icb(il)) 
THEN 
 3049         cbmf(il) = cbmf(il) + m(il, k)
 
 3057     am(il) = cbmf(il)*wghti(il, 1)
 
 3061     IF (iflag(il)<=1) 
THEN 
 3065       IF (cvflag_ice) 
THEN 
 3066         ft(il, 1) = -lvcp(il, 1)*sigd(il)*evap(il, 1) - &
 
 3067                      lfcp(il, 1)*sigd(il)*evap(il, 1)*faci(il, 1) - &
 
 3068                      lfcp(il, 1)*sigd(il)*(fondue(il,1)*wt(il,1)) / &
 
 3069                        (100.*(ph(il,1)-ph(il,2)))                             
 
 3071         ft(il, 1) = -lvcp(il, 1)*sigd(il)*evap(il, 1)
 
 3074       ft(il, 1) = ft(il, 1) - 0.009*grav*sigd(il)*mp(il, 2)*t_wake(il, 1)*b(il, 1)*work(il)
 
 3076       IF (cvflag_ice) 
THEN 
 3077         ft(il, 1) = ft(il, 1) + 0.01*sigd(il)*wt(il, 1)*(
cl-
cpd)*water(il, 2) * &
 
 3078                                      (t_wake(il,2)-t_wake(il,1))*work(il)/cpn(il, 1) + &
 
 3079                                 0.01*sigd(il)*wt(il, 1)*(
ci-
cpd)*ice(il, 2) * &
 
 3080                                      (t_wake(il,2)-t_wake(il,1))*work(il)/cpn(il, 1)
 
 3082         ft(il, 1) = ft(il, 1) + 0.01*sigd(il)*wt(il, 1)*(
cl-
cpd)*water(il, 2) * &
 
 3083                                      (t_wake(il,2)-t_wake(il,1))*work(il)/cpn(il, 1)
 
 3086       ftd(il, 1) = ft(il, 1)                                                  
 
 3088       IF ((0.01*grav*work(il)*am(il))>=delti) iflag(il) = 1 
 
 3089       ft(il, 1) = ft(il, 1) + 0.01*grav*work(il)*am(il) * &
 
 3090                                    (t(il,2)-t(il,1)+(gz(il,2)-gz(il,1))/cpn(il,1))
 
 3096     IF (iflag_mix>0) 
THEN 
 3101         IF (j<=inb(il) .AND. iflag(il)<=1) 
THEN 
 3102           ft(il, 1) = ft(il, 1) + 0.01*grav*work(il)*ment(il, j, 1) * &
 
 3103                      (hent(il,j,1)-h(il,1)+t(il,1)*(
cpv-
cpd)*(rr(il,1)-qent(il,j,1)))*cpinv
 
 3112     IF (iflag(il)<=1) 
THEN 
 3114       fr(il, 1) = 0.01*grav*mp(il, 2)*(rp(il,2)-rr_wake(il,1))*work(il) + &
 
 3115                   sigd(il)*evap(il, 1)
 
 3118       fqd(il, 1) = fr(il, 1) 
 
 3120       fr(il, 1) = fr(il, 1) + 0.01*grav*am(il)*(rr(il,2)-rr(il,1))*work(il)        
 
 3122       fu(il, 1) = fu(il, 1) + 0.01*grav*work(il)*(mp(il,2)*(up(il,2)-u(il,1)) + &
 
 3123                                                   am(il)*(u(il,2)-u(il,1)))
 
 3124       fv(il, 1) = fv(il, 1) + 0.01*grav*work(il)*(mp(il,2)*(vp(il,2)-v(il,1)) + &
 
 3125                                                   am(il)*(v(il,2)-v(il,1)))
 
 3148       IF (j<=inb(il) .AND. iflag(il)<=1) 
THEN 
 3149         fr(il, 1) = fr(il, 1) + 0.01*grav*work(il)*ment(il, j, 1)*(qent(il,j,1)-rr(il,1))
 
 3150         fu(il, 1) = fu(il, 1) + 0.01*grav*work(il)*ment(il, j, 1)*(uent(il,j,1)-u(il,1))
 
 3151         fv(il, 1) = fv(il, 1) + 0.01*grav*work(il)*ment(il, j, 1)*(vent(il,j,1)-v(il,1))
 
 3186       IF (i<=inb(il) .AND. iflag(il)<=1) num1 = num1 + 1
 
 3188     IF (num1<=0) 
GO TO 500
 
 3201         IF (i>=icb(il)) 
THEN 
 3202           IF (k>=i+1 .AND. k<=(inb(il)+1)) 
THEN 
 3203             amp1(il) = amp1(il) + m(il, k)
 
 3208             amp1(il) = amp1(il) + cbmf(il)*wghti(il, k)
 
 3215       DO j = i + 1, 
nl + 1
 
 3217           IF (i<=inb(il) .AND. j<=(inb(il)+1)) 
THEN 
 3218             amp1(il) = amp1(il) + ment(il, k, j)
 
 3227           IF (i<=inb(il) .AND. j<=inb(il)) 
THEN 
 3228             ad(il) = ad(il) + ment(il, j, k)
 
 3235       IF (i<=inb(il) .AND. iflag(il)<=1) 
THEN 
 3236         dpinv = 1.0/(ph(il,i)-ph(il,i+1))
 
 3237         cpinv = 1.0/cpn(il, i)
 
 3240         IF ((0.01*grav*dpinv*amp1(il))>=delti) iflag(il) = 1 
 
 3244         IF (cvflag_ice) 
THEN 
 3245           ft(il, i) = -sigd(il)*lvcp(il, i)*evap(il, i) - &
 
 3246                        sigd(il)*lfcp(il, i)*evap(il, i)*faci(il, i) - &
 
 3247                        sigd(il)*lfcp(il, i)*fondue(il, i)*wt(il, i)/(100.*(p(il,i-1)-p(il,i)))
 
 3249           ft(il, i) = -sigd(il)*lvcp(il, i)*evap(il, i)
 
 3252         rat = cpn(il, i-1)*cpinv
 
 3254         ft(il, i) = ft(il, i) - 0.009*grav*sigd(il) * &
 
 3255                      (mp(il,i+1)*t_wake(il,i)*b(il,i)-mp(il,i)*t_wake(il,i-1)*rat*b(il,i-1))*dpinv
 
 3256         IF (cvflag_ice) 
THEN 
 3257           ft(il, i) = ft(il, i) + 0.01*sigd(il)*wt(il, i)*(
cl-
cpd)*water(il, i+1) * &
 
 3258                                        (t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv + &
 
 3259                                   0.01*sigd(il)*wt(il, i)*(
ci-
cpd)*ice(il, i+1) * &
 
 3260                                        (t_wake(il,i+1)-t_wake(il,i))*dpinv*cpinv
 
 3262           ft(il, i) = ft(il, i) + 0.01*sigd(il)*wt(il, i)*(
cl-
cpd)*water(il, i+1) * &
 
 3263                                        (t_wake(il,i+1)-t_wake(il,i))*dpinv* &
 
 3267         ftd(il, i) = ft(il, i)
 
 3271         ft(il, i) = ft(il, i) + 0.01*grav*dpinv * &
 
 3272                      (amp1(il)*(t(il,i+1)-t(il,i) + (gz(il,i+1)-gz(il,i))*cpinv) - &
 
 3273                       ad(il)*(t(il,i)-t(il,i-1)+(gz(il,i)-gz(il,i-1))*cpinv))
 
 3276         IF (iflag_mix==0) 
THEN 
 3277           ft(il, i) = ft(il, i) + 0.01*grav*dpinv*ment(il, i, i)*(hp(il,i)-h(il,i) + &
 
 3278                                     t(il,i)*(
cpv-
cpd)*(rr(il,i)-qent(il,i,i)))*cpinv
 
 3287         fr(il, i) = sigd(il)*evap(il, i) + 0.01*grav*(mp(il,i+1)*(rp(il,i+1)-rr_wake(il,i)) - &
 
 3288                                                       mp(il,i)*(rp(il,i)-rr_wake(il,i-1)))*dpinv
 
 3289         fqd(il, i) = fr(il, i)                                                                     
 
 3291         fu(il, i) = 0.01*grav*(mp(il,i+1)*(up(il,i+1)-u(il,i)) - &
 
 3292                                mp(il,i)*(up(il,i)-u(il,i-1)))*dpinv
 
 3293         fv(il, i) = 0.01*grav*(mp(il,i+1)*(vp(il,i+1)-v(il,i)) - &
 
 3294                                mp(il,i)*(vp(il,i)-v(il,i-1)))*dpinv
 
 3297         fr(il, i) = fr(il, i) + 0.01*grav*dpinv*(amp1(il)*(rr(il,i+1)-rr(il,i)) - &
 
 3298                                                  ad(il)*(rr(il,i)-rr(il,i-1)))
 
 3299         fu(il, i) = fu(il, i) + 0.01*grav*dpinv*(amp1(il)*(u(il,i+1)-u(il,i)) - &
 
 3300                                                  ad(il)*(u(il,i)-u(il,i-1)))
 
 3301         fv(il, i) = fv(il, i) + 0.01*grav*dpinv*(amp1(il)*(v(il,i+1)-v(il,i)) - &
 
 3302                                                  ad(il)*(v(il,i)-v(il,i-1)))
 
 3328         awat(il) = elij(il, k, i) - (1.-ep(il,i))*clw(il, i)
 
 3329         awat(il) = max(awat(il), 0.0)
 
 3332       IF (iflag_mix/=0) 
THEN 
 3334           IF (i<=inb(il) .AND. iflag(il)<=1) 
THEN 
 3335             dpinv = 1.0/(ph(il,i)-ph(il,i+1))
 
 3336             cpinv = 1.0/cpn(il, i)
 
 3337             ft(il, i) = ft(il, i) + 0.01*grav*dpinv*ment(il, k, i) * &
 
 3338                  (hent(il,k,i)-h(il,i)+t(il,i)*(
cpv-
cpd)*(rr(il,i)+awat(il)-qent(il,k,i)))*cpinv
 
 3346         IF (i<=inb(il) .AND. iflag(il)<=1) 
THEN 
 3347           dpinv = 1.0/(ph(il,i)-ph(il,i+1))
 
 3348           cpinv = 1.0/cpn(il, i)
 
 3349           fr(il, i) = fr(il, i) + 0.01*grav*dpinv*ment(il, k, i) * &
 
 3350                                                        (qent(il,k,i)-awat(il)-rr(il,i))
 
 3351           fu(il, i) = fu(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(uent(il,k,i)-u(il,i))
 
 3352           fv(il, i) = fv(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(vent(il,k,i)-v(il,i))
 
 3355           qcond(il, i) = qcond(il, i) + (elij(il,k,i)-awat(il))                
 
 3356           qtment(il, i) = qtment(il, i) + qent(il,k,i)                         
 
 3357           nqcond(il, i) = nqcond(il, i) + 1.                                   
 
 3382       IF (iflag_mix/=0) 
THEN 
 3384           IF (i<=inb(il) .AND. k<=inb(il) .AND. iflag(il)<=1) 
THEN 
 3385             dpinv = 1.0/(ph(il,i)-ph(il,i+1))
 
 3386             cpinv = 1.0/cpn(il, i)
 
 3387             ft(il, i) = ft(il, i) + 0.01*grav*dpinv*ment(il, k, i) * &
 
 3388                   (hent(il,k,i)-h(il,i)+t(il,i)*(
cpv-
cpd)*(rr(il,i)-qent(il,k,i)))*cpinv
 
 3396         IF (i<=inb(il) .AND. k<=inb(il) .AND. iflag(il)<=1) 
THEN 
 3397           dpinv = 1.0/(ph(il,i)-ph(il,i+1))
 
 3398           cpinv = 1.0/cpn(il, i)
 
 3400           fr(il, i) = fr(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(qent(il,k,i)-rr(il,i))
 
 3401           fu(il, i) = fu(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(uent(il,k,i)-u(il,i))
 
 3402           fv(il, i) = fv(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(vent(il,k,i)-v(il,i))
 
 3430         IF (k<=inb(il) .AND. i<=inb(il) .AND. iflag(il)<=1) 
THEN                
 3432           qcond(il, i) = qcond(il, i) + elij(il, k, i)                         
 
 3433           qtment(il, i) = qent(il,k,i) + qtment(il,i)                          
 
 3434           nqcond(il, i) = nqcond(il, i) + 1.                                   
 
 3441       IF (i<=inb(il) .AND. nent(il,i)==0 .AND. iflag(il)<=1) 
THEN               
 3442         qcond(il, i) = qcond(il, i) + (1.-ep(il,i))*clw(il, i)                 
 
 3443         qtment(il, i) = qent(il,k,i) + qtment(il,i)                          
 
 3444         nqcond(il, i) = nqcond(il, i) + 1.                                     
 
 3449       IF (i<=inb(il) .AND. nqcond(il,i)/=0 .AND. iflag(il)<=1) 
THEN             
 3450         qcond(il, i) = qcond(il, i)/nqcond(il, i)                              
 
 3451         qtment(il, i) = qtment(il,i)/nqcond(il, i)                             
 
 3491     IF (iflag(il)<=1) 
THEN 
 3492       ax = 0.01*grav*ment(il, inb(il), inb(il))* &
 
 3493            (hp(il,inb(il))-h(il,inb(il))+t(il,inb(il))*(
cpv-
cpd)*(rr(il,inb(il))-qent(il,inb(il),inb(il))))/ &
 
 3494                                 (cpn(il,inb(il))*(ph(il,inb(il))-ph(il,inb(il)+1)))
 
 3495       ft(il, inb(il)) = ft(il, inb(il)) - ax
 
 3496       ft(il, inb(il)-1) = ft(il, inb(il)-1) + ax*cpn(il, inb(il))*(ph(il,inb(il))-ph(il,inb(il)+1))/ &
 
 3497                               (cpn(il,inb(il)-1)*(ph(il,inb(il)-1)-ph(il,inb(il))))
 
 3499       bx = 0.01*grav*ment(il, inb(il), inb(il))*(qent(il,inb(il),inb(il))-rr(il,inb(il)))/ &
 
 3500                                                  (ph(il,inb(il))-ph(il,inb(il)+1))
 
 3501       fr(il, inb(il)) = fr(il, inb(il)) - bx
 
 3502       fr(il, inb(il)-1) = fr(il, inb(il)-1) + bx*(ph(il,inb(il))-ph(il,inb(il)+1))/ &
 
 3503                                                  (ph(il,inb(il)-1)-ph(il,inb(il)))
 
 3505       cx = 0.01*grav*ment(il, inb(il), inb(il))*(uent(il,inb(il),inb(il))-u(il,inb(il)))/ &
 
 3506                                                  (ph(il,inb(il))-ph(il,inb(il)+1))
 
 3507       fu(il, inb(il)) = fu(il, inb(il)) - cx
 
 3508       fu(il, inb(il)-1) = fu(il, inb(il)-1) + cx*(ph(il,inb(il))-ph(il,inb(il)+1))/ &
 
 3509                                                  (ph(il,inb(il)-1)-ph(il,inb(il)))
 
 3511       dx = 0.01*grav*ment(il, inb(il), inb(il))*(vent(il,inb(il),inb(il))-v(il,inb(il)))/ &
 
 3512                                                  (ph(il,inb(il))-ph(il,inb(il)+1))
 
 3513       fv(il, inb(il)) = fv(il, inb(il)) - dx
 
 3514       fv(il, inb(il)-1) = fv(il, inb(il)-1) + dx*(ph(il,inb(il))-ph(il,inb(il)+1))/ &
 
 3515                                                  (ph(il,inb(il)-1)-ph(il,inb(il)))
 
 3575       IF (i<=(icb(il)-1) .AND. iflag(il)<=1) 
THEN 
 3577         asum(il) = asum(il) + (ft(il,i)-ftd(il,i))*(ph(il,i)-ph(il,i+1))
 
 3580         IF (ok_conserv_q) 
THEN 
 3581           bsum(il) = bsum(il) + (fr(il,i)-fqd(il,i))*(ph(il,i)-ph(il,i+1))
 
 3582           csum(il) = csum(il) + (ph(il,i)-ph(il,i+1))
 
 3585           bsum(il)=bsum(il)+(fr(il,i)-fqd(il,i))*(lv(il,i)+(
cl-
cpd)*(t(il,i)-t(il,1)))* &
 
 3586                             (ph(il,i)-ph(il,i+1))
 
 3587           csum(il)=csum(il)+(lv(il,i)+(
cl-
cpd)*(t(il,i)-t(il,1)))* &
 
 3588                             (ph(il,i)-ph(il,i+1))
 
 3591         dsum(il) = dsum(il) + t(il, i)*(ph(il,i)-ph(il,i+1))/th(il, i)
 
 3593         esum(il) = esum(il) + ftd(il, i)*(ph(il,i)-ph(il,i+1))
 
 3596         IF (ok_conserv_q) 
THEN 
 3597           fsum(il) = fsum(il) + fqd(il, i)*(ph(il,i)-ph(il,i+1))
 
 3598           gsum(il) = gsum(il) + (ph(il,i)-ph(il,i+1))
 
 3600           fsum(il)=fsum(il)+fqd(il,i)*(lv(il,i)+(
cl-
cpd)*(t_wake(il,i)-t_wake(il,1)))* &
 
 3601                             (ph(il,i)-ph(il,i+1))
 
 3602           gsum(il)=gsum(il)+(lv(il,i)+(
cl-
cpd)*(t_wake(il,i)-t_wake(il,1)))* &
 
 3603                             (ph(il,i)-ph(il,i+1))
 
 3606         hsum(il) = hsum(il) + t_wake(il, i)*(ph(il,i)-ph(il,i+1))/th_wake(il, i)
 
 3614       IF (i<=(icb(il)-1) .AND. iflag(il)<=1) 
THEN 
 3615         ftd(il, i) = esum(il)*t_wake(il, i)/(th_wake(il,i)*hsum(il))
 
 3616         fqd(il, i) = fsum(il)/gsum(il)
 
 3617         ft(il, i) = ftd(il, i) + asum(il)*t(il, i)/(th(il,i)*dsum(il))
 
 3618         fr(il, i) = fqd(il, i) + bsum(il)/csum(il)
 
 3637     IF (iflag(il)<=1) 
THEN 
 3638       IF (fr(il,1)<=0.) 
THEN 
 3639         alpha_qpos(il) = max(alpha_qpos(il), (-delt*fr(il,1))/(s_wake(il)*rr_wake(il,1)+(1.-s_wake(il))*rr(il,1)))
 
 3645       IF (iflag(il)<=1) 
THEN 
 3646         IF (fr(il,i)<=0.) 
THEN 
 3647           alpha_qpos1(il) = max(1., (-delt*fr(il,i))/(s_wake(il)*rr_wake(il,i)+(1.-s_wake(il))*rr(il,i)))
 
 3648           IF (alpha_qpos1(il)>=alpha_qpos(il)) alpha_qpos(il) = alpha_qpos1(il)
 
 3654     IF (iflag(il)<=1 .AND. alpha_qpos(il)>1.001) 
THEN 
 3655       alpha_qpos(il) = alpha_qpos(il)*1.1
 
 3662     IF (iflag(il)<=1) 
THEN 
 3663       sigd(il) = sigd(il)/alpha_qpos(il)
 
 3664       precip(il) = precip(il)/alpha_qpos(il)
 
 3669       IF (iflag(il)<=1) 
THEN 
 3670         fr(il, i) = fr(il, i)/alpha_qpos(il)
 
 3671         ft(il, i) = ft(il, i)/alpha_qpos(il)
 
 3672         fqd(il, i) = fqd(il, i)/alpha_qpos(il)
 
 3673         ftd(il, i) = ftd(il, i)/alpha_qpos(il)
 
 3674         fu(il, i) = fu(il, i)/alpha_qpos(il)
 
 3675         fv(il, i) = fv(il, i)/alpha_qpos(il)
 
 3676         m(il, i) = m(il, i)/alpha_qpos(il)
 
 3677         mp(il, i) = mp(il, i)/alpha_qpos(il)
 
 3678         vprecip(il, i) = vprecip(il, i)/alpha_qpos(il)
 
 3679         vprecipi(il, i) = vprecipi(il, i)/alpha_qpos(il)                     
 
 3686         IF (iflag(il)<=1) 
THEN 
 3687           ment(il, i, j) = ment(il, i, j)/alpha_qpos(il)
 
 3710     IF (iflag(il) < 3) 
THEN 
 3725       dnwd0(il, i) = -mp(il, i)
 
 3739       IF (i>=icb(il) .AND. i<=inb(il)) 
THEN 
 3759           IF (i>=icb(il) .AND. i<=inb(il) .AND. k<=inb(il)) 
THEN 
 3760             up1(il, k, i) = up1(il, k, i) + ment(il, n, k)
 
 3761             dn1(il, k, i) = dn1(il, k, i) - ment(il, k, n)
 
 3771         IF (i>=icb(il)) 
THEN 
 3772           IF (k>=i .AND. k<=(inb(il))) 
THEN 
 3773             upwd(il, i) = upwd(il, i) + m(il, k)
 
 3777             upwd(il, i) = upwd(il, i) + cbmf(il)*wghti(il, k)
 
 3789         IF (i<=inb(il) .AND. k<=inb(il)) 
THEN 
 3790           upwd(il, i) = upwd(il, i) + up1(il, k, i)
 
 3791           dnwd(il, i) = dnwd(il, i) + dn1(il, k, i)
 
 3825       mip(il, i) = m(il, i)
 
 3846         ma(il, i) = ma(il, i) + m(il, j)
 
 3861       IF (i<=(icb(il)-1)) 
THEN 
 3901     DO k = i + 1, 
nl + 1                                             
 
 3903         IF (i<=inb(il) .AND. k<=(inb(il)+1) .AND. iflag(il)<=1) 
THEN  
 3904           mac(il, i) = mac(il, i) + m(il, k)                         
 
 3913         IF (i>=icb(il) .AND. i<=(inb(il)-1) &                        
 
 3914             .AND. j>=icb(il) .AND. iflag(il)<=1) 
THEN                 
 3915           sax(il, i) = sax(il, i) + 
rrd*(tvp(il,j)-tv(il,j)) &       
 
 3916             *(ph(il,j)-ph(il,j+1))/p(il, j)                          
 
 3924       IF (i>=icb(il) .AND. i<=(inb(il)-1) &                          
 
 3925           .AND. sax(il,i)>0.0 .AND. iflag(il)<=1) 
THEN                
 3926         wa(il, i) = sqrt(2.*sax(il,i))                               
 
 3944         IF  (k<=inb(il) .AND. i<=inb(il) .AND. iflag(il)<=1) 
THEN    
 3945           sument(il) =sument(il) + abs(ment(il,k,i))
 
 3952       IF (wa(il,i)>0.0 .AND. iflag(il)<=1) &                         
 
 3953         siga(il, i) = mac(il, i)/(coefw_cld_cv*wa(il, i)) &          
 
 3954         *
rrd*tvp(il, i)/p(il, i)/100.                                
 
 3956       siga(il, i) = min(siga(il,i), 1.0)                             
 
 3962         qcondc(il, i) = siga(il, i)*clw(il, i)*(1.-ep(il,i)) &       
 
 3963           +(1.-siga(il,i))*qcond(il, i)                              
 
 3966         sigment(il,i)=sument(il)*tau_cld_cv/(ph(il,i)-ph(il,i+1))    
 
 3967         sigment(il, i) = min(1.e-4+sigment(il,i), 1.0 - siga(il,i))  
 
 3968         qtc(il, i) = (siga(il,i)*qnk(il)+sigment(il,i)*qtment(il,i)) & 
 
 3969                      /(siga(il,i)+sigment(il,i))                     
 
 3970         sigt(il,i) = sigment(il, i) + siga(il, i)
 
 3976         qcondc(il, i) = qcond(il, i)                                 
 
 3977         qtc(il,i) = qtment(il,i)                                     
 
 3988 SUBROUTINE cv3_tracer(nloc, len, ncum, nd, na, &
 
 3989                       ment, sigij, da, phi, phi2, d1a, dam, &
 
 3990                       ep, vprecip, elij, clw, epmlmmm, eplamm, &
 
 3994   include 
"cv3param.h" 
 3997   INTEGER ncum, nd, na, nloc, len
 
 3998   REAL ment(nloc, na, na), sigij(nloc, na, na)
 
 3999   REAL clw(nloc, nd), elij(nloc, na, na)
 
 4001   INTEGER icb(nloc), inb(nloc)
 
 4002   REAL Vprecip(nloc, nd+1)
 
 4004   REAL da(nloc, na), phi(nloc, na, na)
 
 4005   REAL phi2(nloc, na, na)
 
 4006   REAL d1a(nloc, na), dam(nloc, na)
 
 4007   REAL epmlmMm(nloc, na, na), eplaMm(nloc, na)
 
 4011   REAL epm(nloc, na, na)
 
 4027   epmlmmm(:, :, :) = 0.
 
 4036         IF (k>=icb(i) .AND. k<=inb(i) .AND. & 
 
 4039             j>k .AND. j<=inb(i)) 
THEN 
 4040           epm(i, j, k) = 1. - (1.-ep(i,j))*clw(i, j)/max(elij(i,k,j), 1.e-16)
 
 4042           epm(i, j, k) = max(epm(i,j,k), 0.0)
 
 4052         IF (k>=icb(i) .AND. k<=inb(i)) 
THEN 
 4053           eplamm(i, j) = eplamm(i, j) + &
 
 4054                          ep(i, j)*clw(i, j)*ment(i, j, k)*(1.-sigij(i,j,k))
 
 4063         IF (k>=icb(i) .AND. k<=inb(i) .AND. j<=inb(i)) 
THEN 
 4064           epmlmmm(i, j, k) = epm(i, j, k)*elij(i, k, j)*ment(i, k, j)
 
 4074         da(i, j) = da(i, j) + (1.-sigij(i,k,j))*ment(i, k, j)
 
 4075         phi(i, j, k) = sigij(i, k, j)*ment(i, k, j)
 
 4076         d1a(i, j) = d1a(i, j) + ment(i, k, j)*ep(i, k)*(1.-sigij(i,k,j))
 
 4078           dam(i, j) = dam(i, j) + ment(i, k, j)*epm(i, k, j)*(1.-ep(i,k))*(1.-sigij(i,k,j))
 
 4079           phi2(i, j, k) = phi(i, j, k)*epm(i, j, k)
 
 4092                           ft, fq, fu, fv, ftra, &
 
 4093                           ma, upwd, dnwd, dnwd0, qcondc, wd, cape, &
 
 4095                           precip1, sig1, w01, &
 
 4096                           ft1, fq1, fu1, fv1, ftra1, &
 
 4097                           ma1, upwd1, dnwd1, dnwd01, qcondc1, wd1, cape1)
 
 4100   include 
"cv3param.h" 
 4103   INTEGER len, ncum, nd, ntra, nloc
 
 4107   REAL sig(nloc, nd), w0(nloc, nd)
 
 4108   REAL ft(nloc, nd), fq(nloc, nd), fu(nloc, nd), fv(nloc, nd)
 
 4109   REAL ftra(nloc, nd, ntra)
 
 4111   REAL upwd(nloc, nd), dnwd(nloc, nd), dnwd0(nloc, nd)
 
 4112   REAL qcondc(nloc, nd)
 
 4113   REAL wd(nloc), cape(nloc)
 
 4118   REAL sig1(len, nd), w01(len, nd)
 
 4119   REAL ft1(len, nd), fq1(len, nd), fu1(len, nd), fv1(len, nd)
 
 4120   REAL ftra1(len, nd, ntra)
 
 4122   REAL upwd1(len, nd), dnwd1(len, nd), dnwd01(len, nd)
 
 4123   REAL qcondc1(nloc, nd)
 
 4124   REAL wd1(nloc), cape1(nloc)
 
 4130     precip1(idcum(i)) = precip(i)
 
 4131     iflag1(idcum(i)) = iflag(i)
 
 4132     wd1(idcum(i)) = wd(i)
 
 4133     cape1(idcum(i)) = cape(i)
 
 4138       sig1(idcum(i), k) = sig(i, k)
 
 4139       w01(idcum(i), k) = w0(i, k)
 
 4140       ft1(idcum(i), k) = ft(i, k)
 
 4141       fq1(idcum(i), k) = fq(i, k)
 
 4142       fu1(idcum(i), k) = fu(i, k)
 
 4143       fv1(idcum(i), k) = fv(i, k)
 
 4144       ma1(idcum(i), k) = ma(i, k)
 
 4145       upwd1(idcum(i), k) = upwd(i, k)
 
 4146       dnwd1(idcum(i), k) = dnwd(i, k)
 
 4147       dnwd01(idcum(i), k) = dnwd0(i, k)
 
 4148       qcondc1(idcum(i), k) = qcondc(i, k)
 
 4153     sig1(idcum(i), nd) = sig(i, nd)
 
!IM Implemente en modes sequentiel et parallele CALL rlon_glo CALL bcast(rlon_glo)!$OMP MASTER if(is_mpi_root) then!zstophy
 
!$Id!Thermodynamical constants for t0 real clmcpv
 
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real hrd real grav COMMON cvthermo rowl t0
 
!$Id!Thermodynamical constants for cpv
 
!$Id!logical cvflag_grav logical cvflag_ice COMMON cvflag cvflag_grav
 
!$Id!Parameters for nlm real spfac!IM cf epmax real ptcrit real omtrain real dpbase
 
!$Id!Parameters for minorig
 
!$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 delta
 
subroutine cv3_prelim(len, nd, ndp1, t, q, p, ph, lv, lf, cpn, tv, gz, h, hm, th)
 
!$Id!Parameters for nlm real spfac!IM cf epmax real ptcrit real omtrain real dttrig real beta
 
!$Id!Parameters for nlm real spfac!IM cf ptcrit
 
!$Header!CDK comgeom COMMON comgeom && alpha1
 
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real hrd real grav COMMON cvthermo rowl cpvmcl clmci
 
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real ginv
 
subroutine cv3_feed(len, nd, ok_conserv_q, t, q, u, v, p, ph, hm, gz, p1feed, p2feed, wght, wghti, tnk, thnk, qnk, qsnk, unk, vnk, cpnk, hnk, nk, icb, icbmax, iflag, gznk, plcl)
 
!$Id!Thermodynamical constants for ci
 
!$Id!Thermodynamical constants for t0 real clmci real eps
 
subroutine cv3_unsat(nloc, ncum, nd, na, ntra, icb, inb, iflag, t, rr, rs, gz, u, v, tra, p, ph, th, tv, lv, lf, cpn, ep, sigp, clw, m, ment, elij, delt, plcl, coef_clos, mp, rp, up, vp, trap, wt, water, evap, fondue, ice, faci, b, sigd, wdtrainA, wdtrainM)
 
subroutine cv3_undilute1(len, nd, t, qs, gz, plcl, p, icb, tnk, qnk, gznk, tp, tvp, clw, icbs)
 
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real omtrain
 
subroutine cv3_compress(len, nloc, ncum, nd, ntra, iflag1, nk1, icb1, icbs1, plcl1, tnk1, qnk1, gznk1, pbase1, buoybase1, t1, q1, qs1, u1, v1, gz1, th1, tra1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, sig1, w01, iflag, nk, icb, icbs, plcl, tnk, qnk, gznk, pbase, buoybase, t, q, qs, u, v, gz, th, tra, h, lv, cpn, p, ph, tv, tp, tvp, clw, sig, w0)
 
subroutine err(ierr, typ, nam)
 
!$Id!Thermodynamical constants for rrd
 
!$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 cv3_mixing(nloc, ncum, nd, na, ntra, icb, nk, inb, ph, t, rr, rs, u, v, tra, h, lv, lf, frac, qnk, unk, vnk, hp, tv, tvp, ep, clw, m, sig, ment, qent, uent, vent, nent, sij, elij, ments, qents, traent)
 
!$Id!Thermodynamical constants for cl
 
!$Id!Parameters for nlm real spfac!IM cf epmax real pbcrit
 
subroutine cv3_closure(nloc, ncum, nd, icb, inb, pbase, p, ph, tv, buoy, sig, w0, cape, m, iflag)
 
!$Id!Parameters for nlm real spfac!IM cf epmax real ptcrit real omtrain real dttrig real alpha real delta real betad COMMON cv30param noff
 
!$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 betad
 
!$Id!Parameters for nlm real spfac!IM cf epmax real ptcrit real omtrain real dttrig real dtcrit
 
!Parameters for nlm real sigdz
 
INTEGER iflag_mix REAL scut REAL Supcrit2 REAL coef_clos_ls!COMMON YOMCST2 iflag_mix
 
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
 
subroutine cv3_tracer(nloc, len, ncum, nd, na, ment, sigij, da, phi, phi2, d1a, dam, ep, Vprecip, elij, clw, epmlmMm, eplaMm, icb, inb)
 
!Parameters for nlm real spfac integer flag_wb real ptcrit real elcrit
 
!$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)
 
subroutine cv3_trigger(len, nd, icb, plcl, p, th, tv, tvp, thnk, pbase, buoybase, iflag, sig, w0)
 
!$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 nlm real spfac!IM cf epmax real ptcrit real omtrain real dtovsh
 
!$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 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
 
subroutine cv3_undilute2(nloc, ncum, nd, icb, icbs, nk, tnk, qnk, gznk, hnk, t, q, qs, gz, p, h, tv, lv, lf, pbase, buoybase, plcl, inb, tp, tvp, clw, hp, ep, sigp, buoy, frac)
 
subroutine cv3_yield(nloc, ncum, nd, na, ntra, ok_conserv_q,icb, inb, delt,t, rr, t_wake, rr_wake, s_wake, u, v, tra,gz, p, ph, h, hp, lv, lf, cpn, th, th_wake,ep, clw, m, tp, mp, rp, up, vp, trap,wt, water, ice, evap, fondue, faci, b, sigd,ment, qent, hent, iflag_mix, uent, vent,nent, elij, traent, sig,tv, tvp, wghti,iflag, precip, Vprecip, Vprecipi,ft, fr, fu, fv, ftra,cbmf, upwd, dnwd, dnwd0, ma, mip,
 
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real hrd real grav COMMON cvthermo cpd
 
!$Id!Thermodynamical constants for rrv
 
subroutine abort_physic(modname, message, ierr)
 
!$Id!Thermodynamical constants for lv0
 
!$Id sig2feed!common comconema2 iflag_cvl_sigd common comconema1 epmax
 
subroutine icefrac(t, clw, qi, nl, len)
 
!$Id!Thermodynamical constants for rowl
 
subroutine cv3_vertmix(len, nd, iflag, plim1, plim2, p, ph, t, q, u, v, w, wi, nk, tmix, thmix, qmix, qsmix, umix, vmix, plcl)
 
!$Id!Parameters for nlm real sigd
 
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
 
!$Id!Thermodynamical constants for lf0
 
subroutine cv3_uncompress(nloc, len, ncum, nd, ntra, idcum, iflag, precip, sig, w0, ft, fq, fu, fv, ftra, Ma, upwd, dnwd, dnwd0, qcondc, wd, cape, iflag1, precip1, sig1, w01, ft1, fq1, fu1, fv1, ftra1, Ma1, upwd1, dnwd1, dnwd01, qcondc1, wd1, cape1)
 
subroutine cv3_param(nd, k_upper, delt)