70 alpha = 1.5e-3*delt/tau
85 SUBROUTINE cv30_prelim(len, nd, ndp1, t, q, p, ph, lv, cpn, tv, gz, h, hm, &
97 REAL t(len, nd), q(len, nd), p(len, nd), ph(len, ndp1)
100 REAL lv(len, nd), cpn(len, nd), tv(len, nd)
101 REAL gz(len, nd), h(len, nd), hm(len, nd)
111 include
"cv30param.h"
119 cpn(i, k) =
cpd*(1.0-q(i,k)) +
cpv*q(i, k)
120 cpx(i, k) =
cpd*(1.0-q(i,k)) +
cl*q(i, k)
122 tv(i, k) = t(i, k)*(1.0+q(i,k)/
eps-q(i,k))
123 rdcp = (
rrd*(1.-q(i,k))+q(i,k)*
rrv)/cpn(i, k)
124 th(i, k) = t(i, k)*(1000.0/p(i,k))**rdcp
136 tvx = t(i, k)*(1.+q(i,k)/
eps-q(i,k))
137 tvy = t(i, k-1)*(1.+q(i,k-1)/
eps-q(i,k-1))
138 gz(i, k) = gz(i, k-1) + 0.5*
rrd*(tvx+tvy) &
139 *(p(i,k-1)-p(i,k))/ph(i, k)
152 h(i, k) = gz(i, k) + cpn(i, k)*t(i, k)
153 hm(i, k) = gz(i, k) + cpx(i, k)*(t(i,k)-t(i,1)) + lv(i, k)*q(i, k)
160 SUBROUTINE cv30_feed(len, nd, t, q, qs, p, ph, hm, gz, nk, icb, icbmax, &
161 iflag, tnk, qnk, gznk, plcl)
178 include
"cv30param.h"
182 REAL t(len, nd), q(len, nd), qs(len, nd), p(len, nd)
183 REAL hm(len, nd), gz(len, nd)
187 INTEGER iflag(len), nk(len), icb(len), icbmax
188 REAL tnk(len), qnk(len), gznk(len), plcl(len)
194 REAL pnk(len), qsnk(len), rh(len), chi(len)
256 IF (((t(i,nk(i))<250.0) .OR. (q(i,nk(i))<=0.0)) &
259 .AND. (iflag(i)==0)) iflag(i) = 7
271 IF (iflag(i)/=7)
THEN
275 gznk(i) = gz(i, nk(i))
277 qsnk(i) = qs(i, nk(i))
279 rh(i) = qnk(i)/qsnk(i)
282 chi(i) = tnk(i)/(a-b*rh(i)-tnk(i))
283 plcl(i) = pnk(i)*(rh(i)**chi(i))
284 IF (((plcl(i)<200.0) .OR. (plcl(i)>=2000.0)) .AND. (iflag(i)==0)) iflag &
319 IF (ph(i,k)<plcl(i)) icb(i) = min(icb(i), k)
325 IF ((icb(i)==nlm) .AND. (iflag(i)==0)) iflag(i) = 9
337 IF (iflag(i)<7) icbmax = max(icbmax, icb(i))
343 SUBROUTINE cv30_undilute1(len, nd, t, q, qs, gz, plcl, p, nk, icb, tp, tvp, &
361 include
"cv30param.h"
365 INTEGER nk(len), icb(len)
366 REAL t(len, nd), q(len, nd), qs(len, nd), gz(len, nd)
371 REAL tp(len, nd), tvp(len, nd), clw(len, nd)
375 INTEGER icb1(len), icbs(len), icbsmax2
376 REAL tg, qg, alv, s, ahg, tc, denom, es, rg
377 REAL ah0(len), cpp(len)
378 REAL tnk(len), qnk(len), gznk(len), ticb(len), gzicb(len)
392 gznk(i) = gz(i, nk(i))
400 ah0(i) = (
cpd*(1.-qnk(i))+
cl*qnk(i))*tnk(i) + qnk(i)*(
lv0-
clmcpv*(tnk(i)- &
402 cpp(i) =
cpd*(1.-qnk(i)) + qnk(i)*
cpv
409 icb1(i) = max(icb(i), 2)
410 icb1(i) = min(icb(i),
nl)
414 IF (plcl(i)<p(i,icb1(i)))
THEN
415 icbs(i) = min(icbs(i)+1,
nl)
420 ticb(i) = t(i, icbs(i))
421 gzicb(i) = gz(i, icbs(i))
422 qsicb(i) = qs(i, icbs(i))
430 icbsmax2 = max(icbsmax2, icbs(i))
447 tp(i, k) = tnk(i) - (gz(i,k)-gznk(i))*cpinv(i)
448 tvp(i, k) = tp(i, k)*(1.+qnk(i)/
eps-qnk(i))
464 s =
cpd*(1.-qnk(i)) +
cl*qnk(i) &
465 +alv*alv*qg/(
rrv*ticb(i)*ticb(i))
468 ahg =
cpd*tg + (
cl-
cpd)*qnk(i)*tg + alv*qg + gzicb(i)
469 tg = tg + s*(ah0(i)-ahg)
474 denom = max(denom, 1.0)
476 es = 6.112*exp(17.67*tc/denom)
481 qg =
eps*es/(p(i,icbs(i))-es*(1.-
eps))
489 ahg =
cpd*tg + (
cl-
cpd)*qnk(i)*tg + alv*qg + gzicb(i)
490 tg = tg + s*(ah0(i)-ahg)
495 denom = max(denom, 1.0)
497 es = 6.112*exp(17.67*tc/denom)
502 qg =
eps*es/(p(i,icbs(i))-es*(1.-
eps))
511 tp(i, icbs(i)) = (ah0(i)-gz(i,icbs(i))-alv*qg)/(
cpd+(
cl-
cpd)*qnk(i))
515 clw(i, icbs(i)) = qnk(i) - qg
516 clw(i, icbs(i)) = max(0.0, clw(i,icbs(i)))
521 tvp(i, icbs(i)) = tp(i, icbs(i))*(1.+qg/
eps-qnk(i))
548 ticb(i) = t(i, icb(i)+1)
549 gzicb(i) = gz(i, icb(i)+1)
550 qsicb(i) = qs(i, icb(i)+1)
562 s =
cpd*(1.-qnk(i)) +
cl*qnk(i) &
563 +alv*alv*qg/(
rrv*ticb(i)*ticb(i))
566 ahg =
cpd*tg + (
cl-
cpd)*qnk(i)*tg + alv*qg + gzicb(i)
567 tg = tg + s*(ah0(i)-ahg)
572 denom = max(denom, 1.0)
574 es = 6.112*exp(17.67*tc/denom)
579 qg =
eps*es/(p(i,icb(i)+1)-es*(1.-
eps))
587 ahg =
cpd*tg + (
cl-
cpd)*qnk(i)*tg + alv*qg + gzicb(i)
588 tg = tg + s*(ah0(i)-ahg)
593 denom = max(denom, 1.0)
595 es = 6.112*exp(17.67*tc/denom)
600 qg =
eps*es/(p(i,icb(i)+1)-es*(1.-
eps))
609 tp(i, icb(i)+1) = (ah0(i)-gz(i,icb(i)+1)-alv*qg)/(
cpd+(
cl-
cpd)*qnk(i))
613 clw(i, icb(i)+1) = qnk(i) - qg
614 clw(i, icb(i)+1) = max(0.0, clw(i,icb(i)+1))
619 tvp(i, icb(i)+1) = tp(i, icb(i)+1)*(1.+qg/
eps-qnk(i))
626 SUBROUTINE cv30_trigger(len, nd, icb, plcl, p, th, tv, tvp, pbase, buoybase, &
645 include
"cv30param.h"
650 REAL plcl(len), p(len, nd)
651 REAL th(len, nd), tv(len, nd), tvp(len, nd)
654 REAL pbase(len), buoybase(len)
658 REAL sig(len, nd), w0(len, nd)
662 REAL tvpbase, tvbase, tdif, ath, ath1
668 pbase(i) = plcl(i) +
dpbase
669 tvpbase = tvp(i, icb(i))*(pbase(i)-p(i,icb(i)+1))/ &
670 (p(i,icb(i))-p(i,icb(i)+1)) + tvp(i, icb(i)+1)*(p(i,icb(i))-pbase(i))/( &
671 p(i,icb(i))-p(i,icb(i)+1))
672 tvbase = tv(i, icb(i))*(pbase(i)-p(i,icb(i)+1))/ &
673 (p(i,icb(i))-p(i,icb(i)+1)) + tv(i, icb(i)+1)*(p(i,icb(i))-pbase(i))/(p &
674 (i,icb(i))-p(i,icb(i)+1))
675 buoybase(i) = tvpbase - tvbase
712 ath = th(i, icb(i)-1) - dttrig
714 IF (tdif<
dtcrit .OR. ath>ath1)
THEN
715 sig(i, k) =
beta*sig(i, k) - 2.*
alpha*tdif*tdif
716 sig(i, k) = amax1(sig(i,k), 0.0)
717 w0(i, k) =
beta*w0(i, k)
730 SUBROUTINE cv30_compress(len, nloc, ncum, nd, ntra, iflag1, nk1, icb1, icbs1, &
731 plcl1, tnk1, qnk1, gznk1, pbase1, buoybase1, t1, q1, qs1, u1, v1, gz1, &
732 th1, tra1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, sig1, w01, &
733 iflag, nk, icb, icbs, plcl, tnk, qnk, gznk, pbase, buoybase, t, q, qs,
u, &
734 v, gz, th, tra, h, lv, cpn, p, ph, tv, tp, tvp, clw, sig, w0)
738 include
"cv30param.h"
741 INTEGER len, ncum, nd, ntra, nloc
742 INTEGER iflag1(len), nk1(len), icb1(len), icbs1(len)
743 REAL plcl1(len), tnk1(len), qnk1(len), gznk1(len)
744 REAL pbase1(len), buoybase1(len)
745 REAL t1(len, nd), q1(len, nd), qs1(len, nd), u1(len, nd), v1(len, nd)
746 REAL gz1(len, nd), h1(len, nd), lv1(len, nd), cpn1(len, nd)
747 REAL p1(len, nd), ph1(len, nd+1), tv1(len, nd), tp1(len, nd)
748 REAL tvp1(len, nd), clw1(len, nd)
750 REAL sig1(len, nd), w01(len, nd)
751 REAL tra1(len, nd, ntra)
755 INTEGER iflag(nloc), nk(nloc), icb(nloc), icbs(nloc)
756 REAL plcl(nloc), tnk(nloc), qnk(nloc), gznk(nloc)
757 REAL pbase(nloc), buoybase(nloc)
758 REAL t(nloc, nd), q(nloc, nd), qs(nloc, nd), u(nloc, nd), v(nloc, nd)
759 REAL gz(nloc, nd), h(nloc, nd), lv(nloc, nd), cpn(nloc, nd)
760 REAL p(nloc, nd), ph(nloc, nd+1), tv(nloc, nd), tp(nloc, nd)
761 REAL tvp(nloc, nd), clw(nloc, nd)
763 REAL sig(nloc, nd), w0(nloc, nd)
764 REAL tra(nloc, nd, ntra)
769 CHARACTER (LEN=20) :: modname =
'cv30_compress'
770 CHARACTER (LEN=80) :: abort_message
776 IF (iflag1(i)==0)
THEN
778 sig(nn, k) = sig1(i, k)
779 w0(nn, k) = w01(i, k)
782 qs(nn, k) = qs1(i, k)
785 gz(nn, k) = gz1(i, k)
787 lv(nn, k) = lv1(i, k)
788 cpn(nn, k) = cpn1(i, k)
790 ph(nn, k) = ph1(i, k)
791 tv(nn, k) = tv1(i, k)
792 tp(nn, k) = tp1(i, k)
793 tvp(nn, k) = tvp1(i, k)
794 clw(nn, k) = clw1(i, k)
795 th(nn, k) = th1(i, k)
813 WRITE (
lunout, *)
'strange! nn not equal to ncum: ', nn, ncum
820 IF (iflag1(i)==0)
THEN
822 pbase(nn) = pbase1(i)
823 buoybase(nn) = buoybase1(i)
831 iflag(nn) = iflag1(i)
838 SUBROUTINE cv30_undilute2(nloc, ncum, nd, icb, icbs, nk, tnk, qnk, gznk, t, &
839 q, qs, gz, p, h, tv, lv, pbase, buoybase, plcl, inb, tp, tvp, clw, hp, &
862 include
"cv30param.h"
866 INTEGER ncum, nd, nloc
867 INTEGER icb(nloc), icbs(nloc), nk(nloc)
868 REAL t(nloc, nd), q(nloc, nd), qs(nloc, nd), gz(nloc, nd)
870 REAL tnk(nloc), qnk(nloc), gznk(nloc)
871 REAL lv(nloc, nd), tv(nloc, nd), h(nloc, nd)
872 REAL pbase(nloc), buoybase(nloc), plcl(nloc)
876 REAL tp(nloc, nd), tvp(nloc, nd), clw(nloc, nd)
877 REAL ep(nloc, nd), sigp(nloc, nd), hp(nloc, nd)
882 REAL tg, qg, ahg, alv, s, tc, es, denom, rg, tca, elacrit
883 REAL by, defrac, pden
884 REAL ah0(nloc), cape(nloc), capem(nloc), byp(nloc)
909 ah0(i) = (
cpd*(1.-qnk(i))+
cl*qnk(i))*tnk(i) &
911 +qnk(i)*(
lv0-
clmcpv*(tnk(i)-273.15)) + gznk(i)
921 IF (k>=(icbs(i)+1))
THEN
930 s =
cpd*(1.-qnk(i)) +
cl*qnk(i) &
931 +alv*alv*qg/(
rrv*t(i,k)*t(i,k))
934 ahg =
cpd*tg + (
cl-
cpd)*qnk(i)*tg + alv*qg + gz(i, k)
935 tg = tg + s*(ah0(i)-ahg)
940 denom = max(denom, 1.0)
942 es = 6.112*exp(17.67*tc/denom)
946 qg =
eps*es/(p(i,k)-es*(1.-
eps))
953 ahg =
cpd*tg + (
cl-
cpd)*qnk(i)*tg + alv*qg + gz(i, k)
954 tg = tg + s*(ah0(i)-ahg)
959 denom = max(denom, 1.0)
961 es = 6.112*exp(17.67*tc/denom)
965 qg =
eps*es/(p(i,k)-es*(1.-
eps))
978 tp(i, k) = (ah0(i)-gz(i,k)-alv*qg)/(
cpd+(
cl-
cpd)*qnk(i))
980 clw(i, k) = qnk(i) - qg
981 clw(i, k) = max(0.0, clw(i,k))
985 tvp(i, k) = tp(i, k)*(1.+qg/
eps-qnk(i))
1001 ep(i, k) = amax1(ep(i,k), 0.0)
1002 ep(i, k) = amin1(ep(i,k),
epmax)
1043 tp(i,
nlp) = tp(i,
nl)
1056 buoy(i, k) = tvp(i, k) - tv(i, k)
1065 IF ((k>=icb(i)) .AND. (k<=
nl) .AND. (p(i,k)>=pbase(i)))
THEN
1066 buoy(i, k) = buoybase(i)
1070 buoy(i, icb(i)) = buoybase(i)
1088 IF ((k>=icb(i)) .AND. (buoy(i,k)<
dtovsh))
THEN
1089 inb(i) = min(inb(i), k)
1202 IF ((k>=icb(i)) .AND. (k<=inb(i)))
THEN
1203 hp(i, k) = h(i, nk(i)) + (lv(i,k)+(
cpd-
cpv)*t(i,k))*ep(i, k)*clw(i, k &
1212 SUBROUTINE cv30_closure(nloc, ncum, nd, icb, inb, pbase, p, ph, tv, buoy, &
1222 include
"cvthermo.h"
1223 include
"cv30param.h"
1226 INTEGER ncum, nd, nloc
1227 INTEGER icb(nloc), inb(nloc)
1229 REAL p(nloc, nd), ph(nloc, nd+1)
1230 REAL tv(nloc, nd), buoy(nloc, nd)
1233 REAL sig(nloc, nd), w0(nloc, nd)
1240 INTEGER i, j, k, icbmax
1241 REAL deltap, fac, w, amu
1242 REAL dtmin(nloc, nd), sigold(nloc, nd)
1263 IF ((inb(i)<(
nl-1)) .AND. (k>=(inb(i)+1)))
THEN
1264 sig(i, k) =
beta*sig(i, k) + 2.*
alpha*buoy(i, inb(i))*abs(buoy(i,inb( &
1266 sig(i, k) = amax1(sig(i,k), 0.0)
1267 w0(i, k) =
beta*w0(i, k)
1276 icbmax = max(icbmax, icb(i))
1284 sig(i, k) =
beta*sig(i, k) - 2.*
alpha*buoy(i, icb(i))*buoy(i, icb(i))
1285 sig(i, k) = amax1(sig(i,k), 0.0)
1286 w0(i, k) =
beta*w0(i, k)
1313 IF (sig(i,nd)<1.5 .OR. sig(i,nd)>12.0)
THEN
1341 IF ((k>=(icb(i)+1)) .AND. (k<=inb(i)) .AND. (j>=icb(i)) .AND. (j<=(k- &
1343 dtmin(i, k) = amin1(dtmin(i,k), buoy(i,j))
1354 IF ((k>=(icb(i)+1)) .AND. (k<=inb(i)))
THEN
1356 deltap = min(pbase(i), ph(i,k-1)) - min(pbase(i), ph(i,k))
1357 cape(i) = cape(i) +
rrd*buoy(i, k-1)*deltap/p(i, k-1)
1358 cape(i) = amax1(0.0, cape(i))
1359 sigold(i, k) = sig(i, k)
1366 sig(i, k) =
beta*sig(i, k) +
alpha*dtmin(i, k)*abs(dtmin(i,k))
1367 sig(i, k) = amax1(sig(i,k), 0.0)
1368 sig(i, k) = amin1(sig(i,k), 0.01)
1370 w = (1.-
beta)*fac*sqrt(cape(i)) +
beta*w0(i, k)
1371 amu = 0.5*(sig(i,k)+sigold(i,k))*w
1372 m(i, k) = amu*0.007*p(i, k)*(ph(i,k)-ph(i,k+1))/tv(i, k)
1380 w0(i, icb(i)) = 0.5*w0(i, icb(i)+1)
1381 m(i, icb(i)) = 0.5*m(i, icb(i)+1)*(ph(i,icb(i))-ph(i,icb(i)+1))/ &
1382 (ph(i,icb(i)+1)-ph(i,icb(i)+2))
1383 sig(i, icb(i)) = sig(i, icb(i)+1)
1384 sig(i, icb(i)-1) = sig(i, icb(i))
1419 SUBROUTINE cv30_mixing(nloc, ncum, nd, na, ntra, icb, nk, inb, ph, t, rr, rs, &
1420 u, v, tra, h, lv, qnk, hp, tv, tvp, ep, clw, m, sig, ment, qent, uent, &
1421 vent, sij, elij, ments, qents, traent)
1430 include
"cvthermo.h"
1431 include
"cv30param.h"
1434 INTEGER ncum, nd, na, ntra, nloc
1435 INTEGER icb(nloc), inb(nloc), nk(nloc)
1439 REAL t(nloc, nd), rr(nloc, nd), rs(nloc, nd)
1440 REAL u(nloc, nd), v(nloc, nd)
1441 REAL tra(nloc, nd, ntra)
1442 REAL lv(nloc, na), h(nloc, na), hp(nloc, na)
1443 REAL tv(nloc, na), tvp(nloc, na), ep(nloc, na), clw(nloc, na)
1447 REAL ment(nloc, na, na), qent(nloc, na, na)
1448 REAL uent(nloc, na, na), vent(nloc, na, na)
1449 REAL sij(nloc, na, na), elij(nloc, na, na)
1450 REAL traent(nloc, nd, nd, ntra)
1451 REAL ments(nloc, nd, nd), qents(nloc, nd, nd)
1452 REAL sigij(nloc, nd, nd)
1455 INTEGER i, j, k, il, im, jm
1457 INTEGER nent(nloc, na)
1458 REAL rti, bf2, anum, denom, dei, altem, cwat, stemp, qp
1459 REAL alt, smid, sjmin, sjmax, delp, delm
1460 REAL asij(nloc), smax(nloc), scrit(nloc)
1461 REAL asum(nloc, nd), bsum(nloc, nd), csum(nloc, nd)
1484 qent(i, k, j) = rr(i, j)
1485 uent(i, k, j) = u(i, j)
1486 vent(i, k, j) = v(i, j)
1495 ment(1:ncum, 1:nd, 1:nd) = 0.0
1496 sij(1:ncum, 1:nd, 1:nd) = 0.0
1519 IF ((i>=icb(il)) .AND. (i<=inb(il)) .AND. (j>=(icb(il)- &
1520 1)) .AND. (j<=inb(il)))
THEN
1522 rti = rr(il, 1) - ep(il, i)*clw(il, i)
1523 bf2 = 1. + lv(il, j)*lv(il, j)*rs(il, j)/(
rrv*t(il,j)*t(il,j)*
cpd)
1524 anum = h(il, j) - hp(il, i) + (
cpv-
cpd)*t(il, j)*(rti-rr(il,j))
1525 denom = h(il, i) - hp(il, i) + (
cpd-
cpv)*(rr(il,i)-rti)*t(il, j)
1527 IF (abs(dei)<0.01) dei = 0.01
1528 sij(il, i, j) = anum/dei
1530 altem = sij(il, i, j)*rr(il, i) + (1.-sij(il,i,j))*rti - rs(il, j)
1532 cwat = clw(il, j)*(1.-ep(il,j))
1533 stemp = sij(il, i, j)
1534 IF ((stemp<0.0 .OR. stemp>1.0 .OR. altem>cwat) .AND. j>i)
THEN
1535 anum = anum - lv(il, j)*(rti-rs(il,j)-cwat*bf2)
1536 denom = denom + lv(il, j)*(rr(il,i)-rti)
1537 IF (abs(denom)<0.01) denom = 0.01
1538 sij(il, i, j) = anum/denom
1539 altem = sij(il, i, j)*rr(il, i) + (1.-sij(il,i,j))*rti - &
1541 altem = altem - (bf2-1.)*cwat
1543 IF (sij(il,i,j)>0.0 .AND. sij(il,i,j)<0.95)
THEN
1544 qent(il, i, j) = sij(il, i, j)*rr(il, i) + (1.-sij(il,i,j))*rti
1545 uent(il, i, j) = sij(il, i, j)*u(il, i) + &
1546 (1.-sij(il,i,j))*u(il, nk(il))
1547 vent(il, i, j) = sij(il, i, j)*v(il, i) + &
1548 (1.-sij(il,i,j))*v(il, nk(il))
1553 elij(il, i, j) = altem
1554 elij(il, i, j) = amax1(0.0, elij(il,i,j))
1555 ment(il, i, j) = m(il, i)/(1.-sij(il,i,j))
1556 nent(il, i) = nent(il, i) + 1
1558 sij(il, i, j) = amax1(0.0, sij(il,i,j))
1559 sij(il, i, j) = amin1(1.0, sij(il,i,j))
1586 IF ((i>=icb(il)) .AND. (i<=inb(il)) .AND. (nent(il,i)==0))
THEN
1588 ment(il, i, i) = m(il, i)
1589 qent(il, i, i) = rr(il, nk(il)) - ep(il, i)*clw(il, i)
1590 uent(il, i, i) = u(il, nk(il))
1591 vent(il, i, i) = v(il, nk(il))
1592 elij(il, i, i) = clw(il, i)
1612 IF ((j>=(icb(il)-1)) .AND. (j<=inb(il)) .AND. (i>=icb(il)) .AND. (i<= &
1614 sigij(il, i, j) = sij(il, i, j)
1631 CALL zilch(asum, nloc*nd)
1632 CALL zilch(csum, nloc*nd)
1633 CALL zilch(csum, nloc*nd)
1643 IF (i>=icb(il) .AND. i<=inb(il)) num1 = num1 + 1
1645 IF (num1<=0)
GO TO 789
1649 IF (i>=icb(il) .AND. i<=inb(il))
THEN
1650 lwork(il) = (nent(il,i)/=0)
1651 qp = rr(il, 1) - ep(il, i)*clw(il, i)
1652 anum = h(il, i) - hp(il, i) - lv(il, i)*(qp-rs(il,i)) + &
1653 (
cpv-
cpd)*t(il, i)*(qp-rr(il,i))
1654 denom = h(il, i) - hp(il, i) + lv(il, i)*(rr(il,i)-qp) + &
1655 (
cpd-
cpv)*t(il, i)*(rr(il,i)-qp)
1656 IF (abs(denom)<0.01) denom = 0.01
1657 scrit(il) = anum/denom
1658 alt = qp - rs(il, i) + scrit(il)*(rr(il,i)-qp)
1659 IF (scrit(il)<=0.0 .OR. alt<=0.0) scrit(il) = 1.0
1669 IF (i>=icb(il) .AND. i<=inb(il) .AND. j>=(icb( &
1670 il)-1) .AND. j<=inb(il) .AND. lwork(il)) num2 = num2 + 1
1672 IF (num2<=0)
GO TO 175
1675 IF (i>=icb(il) .AND. i<=inb(il) .AND. j>=(icb( &
1676 il)-1) .AND. j<=inb(il) .AND. lwork(il))
THEN
1678 IF (sij(il,i,j)>1.0e-16 .AND. sij(il,i,j)<0.95)
THEN
1681 sjmax = amax1(sij(il,i,j+1), smax(il))
1682 sjmax = amin1(sjmax, scrit(il))
1683 smax(il) = amax1(sij(il,i,j), smax(il))
1684 sjmin = amax1(sij(il,i,j-1), smax(il))
1685 sjmin = amin1(sjmin, scrit(il))
1686 IF (sij(il,i,j)<(smax(il)-1.0e-16)) wgh = 0.0
1687 smid = amin1(sij(il,i,j), scrit(il))
1689 sjmax = amax1(sij(il,i,j+1), scrit(il))
1690 smid = amax1(sij(il,i,j), scrit(il))
1692 IF (j>1) sjmin = sij(il, i, j-1)
1693 sjmin = amax1(sjmin, scrit(il))
1695 delp = abs(sjmax-smid)
1696 delm = abs(sjmin-smid)
1697 asij(il) = asij(il) + wgh*(delp+delm)
1698 ment(il, i, j) = ment(il, i, j)*(delp+delm)*wgh
1706 IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il))
THEN
1707 asij(il) = amax1(1.0e-16, asij(il))
1708 asij(il) = 1.0/asij(il)
1717 IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il) .AND. j>=(icb( &
1718 il)-1) .AND. j<=inb(il))
THEN
1719 ment(il, i, j) = ment(il, i, j)*asij(il)
1726 IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il) .AND. j>=(icb( &
1727 il)-1) .AND. j<=inb(il))
THEN
1728 asum(il, i) = asum(il, i) + ment(il, i, j)
1729 ment(il, i, j) = ment(il, i, j)*sig(il, j)
1730 bsum(il, i) = bsum(il, i) + ment(il, i, j)
1736 IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il))
THEN
1737 bsum(il, i) = amax1(bsum(il,i), 1.0e-16)
1738 bsum(il, i) = 1.0/bsum(il, i)
1744 IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il) .AND. j>=(icb( &
1745 il)-1) .AND. j<=inb(il))
THEN
1746 ment(il, i, j) = ment(il, i, j)*asum(il, i)*bsum(il, i)
1753 IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il) .AND. j>=(icb( &
1754 il)-1) .AND. j<=inb(il))
THEN
1755 csum(il, i) = csum(il, i) + ment(il, i, j)
1761 IF (i>=icb(il) .AND. i<=inb(il) .AND. lwork(il) .AND. &
1762 csum(il,i)<m(il,i))
THEN
1764 ment(il, i, i) = m(il, i)
1765 qent(il, i, i) = rr(il, 1) - ep(il, i)*clw(il, i)
1766 uent(il, i, i) = u(il, nk(il))
1767 vent(il, i, i) = v(il, nk(il))
1768 elij(il, i, i) = clw(il, i)
1788 zm(il, im) = zm(il, im) + (1.-sij(il,im,jm))*ment(il, im, jm)
1796 IF (zm(il,im)/=0.)
THEN
1797 ment(il, im, jm) = ment(il, im, jm)*m(il, im)/zm(il, im)
1806 qents(il, im, jm) = qent(il, im, jm)
1807 ments(il, im, jm) = ment(il, im, jm)
1816 SUBROUTINE cv30_unsat(nloc, ncum, nd, na, ntra, icb, inb, t, rr, rs, gz, u, &
1817 v, tra, p, ph, th, tv, lv, cpn, ep, sigp, clw, m, ment, elij, delt, plcl, &
1818 mp, rp, up, vp, trap, wt, water, evap, b &
1819 , wdtraina, wdtrainm)
1823 include
"cvthermo.h"
1824 include
"cv30param.h"
1828 INTEGER ncum, nd, na, ntra, nloc
1829 INTEGER icb(nloc), inb(nloc)
1830 REAL delt, plcl(nloc)
1831 REAL t(nloc, nd), rr(nloc, nd), rs(nloc, nd)
1832 REAL u(nloc, nd), v(nloc, nd)
1833 REAL tra(nloc, nd, ntra)
1834 REAL p(nloc, nd), ph(nloc, nd+1)
1835 REAL th(nloc, na), gz(nloc, na)
1836 REAL lv(nloc, na), ep(nloc, na), sigp(nloc, na), clw(nloc, na)
1837 REAL cpn(nloc, na), tv(nloc, na)
1838 REAL m(nloc, na), ment(nloc, na, na), elij(nloc, na, na)
1841 REAL mp(nloc, na), rp(nloc, na), up(nloc, na), vp(nloc, na)
1842 REAL water(nloc, na), evap(nloc, na), wt(nloc, na)
1843 REAL trap(nloc, na, ntra)
1849 REAL wdtraina(nloc, na), wdtrainm(nloc, na)
1852 INTEGER i, j, k, il, num1
1854 REAL awat, afac, afac1, afac2, bfac
1855 REAL pr1, pr2, sigt, b6, c6, revap, tevap, delth
1856 REAL amfac, amp2, xf, tf, fac2, ur, sru, fac, d, af, bf
1873 rp(il, i) = rr(il, i)
1874 up(il, i) = u(il, i)
1875 vp(il, i) = v(il, i)
1880 lvcp(il, i) = lv(il, i)/cpn(il, i)
1894 wdtraina(il, i) = 0.0
1895 wdtrainm(il, i) = 0.0
1906 IF (ep(il,inb(il))<0.0001) lwork(il) = .
false.
1909 CALL zilch(wdtrain, ncum)
1911 DO i =
nl + 1, 1, -1
1915 IF (i<=inb(il) .AND. lwork(il)) num1 = num1 + 1
1917 IF (num1<=0)
GO TO 400
1932 IF (i<=inb(il) .AND. lwork(il))
THEN
1934 wdtrain(il) = grav*ep(il, i)*m(il, i)*clw(il, i)
1935 wdtraina(il, i) = wdtrain(il)/grav
1937 wdtrain(il) = 10.0*ep(il, i)*m(il, i)*clw(il, i)
1938 wdtraina(il, i) = wdtrain(il)/10.
1947 IF (i<=inb(il) .AND. lwork(il))
THEN
1948 awat = elij(il, j, i) - (1.-ep(il,i))*clw(il, i)
1949 awat = amax1(awat, 0.0)
1951 wdtrain(il) = wdtrain(il) + grav*awat*ment(il, j, i)
1953 wdtrain(il) = wdtrain(il) + 10.0*awat*ment(il, j, i)
1960 wdtrainm(il, i) = wdtrain(il)/grav - wdtraina(il, i)
1962 wdtrainm(il, i) = wdtrain(il)/10. - wdtraina(il, i)
1975 IF (i<=inb(il) .AND. lwork(il))
THEN
1980 rp(il, i) = rp(il, i+1) + (
cpd*(t(il,i+1)-t(il, &
1981 i))+gz(il,i+1)-gz(il,i))/lv(il, i)
1982 rp(il, i) = 0.5*(rp(il,i)+rr(il,i))
1984 rp(il, i) = amax1(rp(il,i), 0.0)
1985 rp(il, i) = amin1(rp(il,i), rs(il,i))
1986 rp(il, inb(il)) = rr(il, inb(il))
1989 afac = p(il, 1)*(rs(il,1)-rp(il,1))/(1.0e4+2000.0*p(il,1)*rs(il,1))
1991 rp(il, i-1) = rp(il, i) + (
cpd*(t(il,i)-t(il, &
1992 i-1))+gz(il,i)-gz(il,i-1))/lv(il, i)
1993 rp(il, i-1) = 0.5*(rp(il,i-1)+rr(il,i-1))
1994 rp(il, i-1) = amin1(rp(il,i-1), rs(il,i-1))
1995 rp(il, i-1) = amax1(rp(il,i-1), 0.0)
1996 afac1 = p(il, i)*(rs(il,i)-rp(il,i))/(1.0e4+2000.0*p(il,i)*rs(il,i) &
1998 afac2 = p(il, i-1)*(rs(il,i-1)-rp(il,i-1))/ &
1999 (1.0e4+2000.0*p(il,i-1)*rs(il,i-1))
2000 afac = 0.5*(afac1+afac2)
2002 IF (i==inb(il)) afac = 0.0
2003 afac = amax1(afac, 0.0)
2004 bfac = 1./(
sigd*wt(il,i))
2016 pr1 = (plcl(il)-ph(il,i+1))/(ph(il,i)-ph(il,i+1))
2017 pr1 = max(0., min(1.,pr1))
2018 pr2 = (ph(il,i)-plcl(il))/(ph(il,i)-ph(il,i+1))
2019 pr2 = max(0., min(1.,pr2))
2020 sigt = sigp(il, i)*pr1 + pr2
2023 b6 = bfac*50.*
sigd*(ph(il,i)-ph(il,i+1))*sigt*afac
2024 c6 = water(il, i+1) + bfac*wdtrain(il) - 50.*
sigd*bfac*(ph(il,i)-ph( &
2025 il,i+1))*evap(il, i+1)
2027 revap = 0.5*(-b6+sqrt(b6*b6+4.*c6))
2028 evap(il, i) = sigt*afac*revap
2029 water(il, i) = revap*revap
2031 evap(il, i) = -evap(il, i+1) + 0.02*(wdtrain(il)+
sigd*wt(il,i)* &
2032 water(il,i+1))/(
sigd*(ph(il,i)-ph(il,i+1)))
2040 tevap = amax1(0.0, evap(il,i))
2041 delth = amax1(0.001, (th(il,i)-th(il,i-1)))
2043 mp(il, i) = 100.*
ginv*lvcp(il, i)*
sigd*tevap*(p(il,i-1)-p(il,i))/ &
2046 mp(il, i) = 10.*lvcp(il, i)*
sigd*tevap*(p(il,i-1)-p(il,i))/delth
2053 amfac =
sigd*
sigd*70.0*ph(il, i)*(p(il,i-1)-p(il,i))* &
2054 (th(il,i)-th(il,i-1))/(tv(il,i)*th(il,i))
2055 amp2 = abs(mp(il,i+1)*mp(il,i+1)-mp(il,i)*mp(il,i))
2056 IF (amp2>(0.1*amfac))
THEN
2058 tf = b(il, i) - 5.0*(th(il,i)-th(il,i-1))*t(il, i)/(lvcp(il,i)* &
2060 af = xf*tf + mp(il, i+1)*mp(il, i+1)*tinv
2061 bf = 2.*(tinv*mp(il,i+1))**3 + tinv*mp(il, i+1)*xf*tf + &
2062 50.*(p(il,i-1)-p(il,i))*xf*tevap
2064 IF (bf<0.0) fac2 = -1.0
2066 ur = 0.25*bf*bf - af*af*af*tinv*tinv*tinv
2070 IF ((0.5*bf-sru)<0.0) fac = -1.0
2071 mp(il, i) = mp(il, i+1)*tinv + (0.5*bf+sru)**tinv + &
2072 fac*(abs(0.5*bf-sru))**tinv
2074 d = atan(2.*sqrt(-ur)/(bf+1.0e-28))
2075 IF (fac2<0.0) d = 3.14159 - d
2076 mp(il, i) = mp(il, i+1)*tinv + 2.*sqrt(af*tinv)*cos(d*tinv)
2078 mp(il, i) = amax1(0.0, mp(il,i))
2086 b(il, i-1) = b(il, i) + 100.0*(p(il,i-1)-p(il,i))*tevap/(mp(il, &
2087 i)+
sigd*0.1) - 10.0*(th(il,i)-th(il,i-1))*t(il, i)/(lvcp(il,i &
2090 b(il, i-1) = b(il, i) + 100.0*(p(il,i-1)-p(il,i))*tevap/(mp(il, &
2091 i)+
sigd*0.1) - 10.0*(th(il,i)-th(il,i-1))*t(il, i)/(lvcp(il,i &
2094 b(il, i-1) = amax1(b(il,i-1), 0.0)
2100 ampmax = 2.0*(ph(il,i)-ph(il,i+1))*delti
2101 amp2 = 2.0*(ph(il,i-1)-ph(il,i))*delti
2102 ampmax = amin1(ampmax, amp2)
2103 mp(il, i) = amin1(mp(il,i), ampmax)
2110 IF (p(il,i)>p(il,icb(il)))
THEN
2111 mp(il, i) = mp(il, icb(il))*(p(il,1)-p(il,i))/ &
2112 (p(il,1)-p(il,icb(il)))
2120 IF (i/=inb(il))
THEN
2122 rp(il, i) = rr(il, i)
2124 IF (mp(il,i)>mp(il,i+1))
THEN
2127 rp(il, i) = rp(il, i+1)*mp(il, i+1) + &
2128 rr(il, i)*(mp(il,i)-mp(il,i+1)) + 100.*
ginv*0.5*
sigd*(ph(il,i &
2129 )-ph(il,i+1))*(evap(il,i+1)+evap(il,i))
2131 rp(il, i) = rp(il, i+1)*mp(il, i+1) + &
2132 rr(il, i)*(mp(il,i)-mp(il,i+1)) + 5.*
sigd*(ph(il,i)-ph(il,i+1 &
2133 ))*(evap(il,i+1)+evap(il,i))
2135 rp(il, i) = rp(il, i)/mp(il, i)
2136 up(il, i) = up(il, i+1)*mp(il, i+1) + u(il, i)*(mp(il,i)-mp(il,i+ &
2138 up(il, i) = up(il, i)/mp(il, i)
2139 vp(il, i) = vp(il, i+1)*mp(il, i+1) + v(il, i)*(mp(il,i)-mp(il,i+ &
2141 vp(il, i) = vp(il, i)/mp(il, i)
2152 IF (mp(il,i+1)>1.0e-16)
THEN
2154 rp(il, i) = rp(il, i+1) + 100.*
ginv*0.5*
sigd*(ph(il,i)-ph(il, &
2155 i+1))*(evap(il,i+1)+evap(il,i))/mp(il, i+1)
2157 rp(il, i) = rp(il, i+1) + 5.*
sigd*(ph(il,i)-ph(il,i+1))*(evap &
2158 (il,i+1)+evap(il,i))/mp(il, i+1)
2160 up(il, i) = up(il, i+1)
2161 vp(il, i) = vp(il, i+1)
2169 rp(il, i) = amin1(rp(il,i), rs(il,i))
2170 rp(il, i) = amax1(rp(il,i), 0.0)
2181 SUBROUTINE cv30_yield(nloc, ncum, nd, na, ntra, icb, inb, delt, t, rr, u, v, &
2182 tra, gz, p, ph, h, hp, lv, cpn, th, ep, clw, m, tp, mp, rp, up, vp, trap, &
2183 wt, water, evap, b, ment, qent, uent, vent, nent, elij, traent, sig, tv, &
2184 tvp, iflag, precip, vprecip, ft, fr, fu, fv, ftra, upwd, dnwd, dnwd0, ma, &
2185 mike, tls, tps, qcondc, wd)
2188 include
"cvthermo.h"
2189 include
"cv30param.h"
2194 INTEGER ncum, nd, na, ntra, nloc
2195 INTEGER icb(nloc), inb(nloc)
2197 REAL t(nloc, nd), rr(nloc, nd), u(nloc, nd), v(nloc, nd)
2198 REAL tra(nloc, nd, ntra), sig(nloc, nd)
2199 REAL gz(nloc, na), ph(nloc, nd+1), h(nloc, na), hp(nloc, na)
2200 REAL th(nloc, na), p(nloc, nd), tp(nloc, na)
2201 REAL lv(nloc, na), cpn(nloc, na), ep(nloc, na), clw(nloc, na)
2202 REAL m(nloc, na), mp(nloc, na), rp(nloc, na), up(nloc, na)
2203 REAL vp(nloc, na), wt(nloc, nd), trap(nloc, nd, ntra)
2204 REAL water(nloc, na), evap(nloc, na), b(nloc, na)
2205 REAL ment(nloc, na, na), qent(nloc, na, na), uent(nloc, na, na)
2207 REAL vent(nloc, na, na), elij(nloc, na, na)
2208 INTEGER nent(nloc, na)
2209 REAL traent(nloc, na, na, ntra)
2210 REAL tv(nloc, nd), tvp(nloc, nd)
2217 REAL vprecip(nloc, nd+1)
2218 REAL ft(nloc, nd), fr(nloc, nd), fu(nloc, nd), fv(nloc, nd)
2219 REAL ftra(nloc, nd, ntra)
2220 REAL upwd(nloc, nd), dnwd(nloc, nd), ma(nloc, nd)
2221 REAL dnwd0(nloc, nd), mike(nloc, nd)
2222 REAL tls(nloc, nd), tps(nloc, nd)
2223 REAL qcondc(nloc, nd)
2227 INTEGER i, k, il, n, j, num1
2228 REAL rat, awat, delti
2229 REAL ax, bx, cx, dx, ex
2230 REAL cpinv, rdcp, dpinv
2231 REAL lvcp(nloc, na), mke(nloc, na)
2232 REAL am(nloc), work(nloc), ad(nloc), amp1(nloc)
2234 REAL up1(nloc, nd, nd), dn1(nloc, nd, nd)
2235 REAL asum(nloc), bsum(nloc), csum(nloc), dsum(nloc)
2236 REAL qcond(nloc, nd), nqcond(nloc, nd), wa(nloc, nd)
2237 REAL siga(nloc, nd), sax(nloc, nd), mac(nloc, nd)
2249 vprecip(il, nd+1) = 0.
2254 vprecip(il, i) = 0.0
2275 lvcp(il, i) = lv(il, i)/cpn(il, i)
2284 IF (ep(il,inb(il))>=0.0001)
THEN
2286 precip(il) = wt(il, 1)*
sigd*water(il, 1)*86400.*1000./(
rowl*grav)
2288 precip(il) = wt(il, 1)*
sigd*water(il, 1)*8640.
2298 IF (k<=inb(il))
THEN
2300 vprecip(il, k) = wt(il, k)*
sigd*water(il, k)/grav
2302 vprecip(il, k) = wt(il, k)*
sigd*water(il, k)/10.
2322 work(il) = 1.0/(ph(il,1)-ph(il,2))
2328 IF (k<=inb(il))
THEN
2329 am(il) = am(il) + m(il, k)
2338 IF ((0.01*grav*work(il)*am(il))>=delti) iflag(il) = 1
2339 ft(il, 1) = 0.01*grav*work(il)*am(il)*(t(il,2)-t(il,1)+(gz(il,2)-gz(il, &
2342 IF ((0.1*work(il)*am(il))>=delti) iflag(il) = 1
2343 ft(il, 1) = 0.1*work(il)*am(il)*(t(il,2)-t(il,1)+(gz(il,2)-gz(il, &
2347 ft(il, 1) = ft(il, 1) - 0.5*lvcp(il, 1)*
sigd*(evap(il,1)+evap(il,2))
2350 ft(il, 1) = ft(il, 1) - 0.009*grav*
sigd*mp(il, 2)*t(il, 1)*b(il, 1)* &
2353 ft(il, 1) = ft(il, 1) - 0.09*
sigd*mp(il, 2)*t(il, 1)*b(il, 1)*work(il)
2356 ft(il, 1) = ft(il, 1) + 0.01*
sigd*wt(il, 1)*(
cl-
cpd)*water(il, 2)*(t(il,2 &
2357 )-t(il,1))*work(il)/cpn(il, 1)
2364 fr(il, 1) = 0.01*grav*mp(il, 2)*(rp(il,2)-rr(il,1))*work(il) + &
2365 sigd*0.5*(evap(il,1)+evap(il,2))
2368 fr(il, 1) = fr(il, 1) + 0.01*grav*am(il)*(rr(il,2)-rr(il,1))*work(il)
2370 fu(il, 1) = fu(il, 1) + 0.01*grav*work(il)*(mp(il,2)*(up(il,2)-u(il, &
2371 1))+am(il)*(u(il,2)-u(il,1)))
2372 fv(il, 1) = fv(il, 1) + 0.01*grav*work(il)*(mp(il,2)*(vp(il,2)-v(il, &
2373 1))+am(il)*(v(il,2)-v(il,1)))
2375 fr(il, 1) = 0.1*mp(il, 2)*(rp(il,2)-rr(il,1))*work(il) + &
2376 sigd*0.5*(evap(il,1)+evap(il,2))
2377 fr(il, 1) = fr(il, 1) + 0.1*am(il)*(rr(il,2)-rr(il,1))*work(il)
2378 fu(il, 1) = fu(il, 1) + 0.1*work(il)*(mp(il,2)*(up(il,2)-u(il, &
2379 1))+am(il)*(u(il,2)-u(il,1)))
2380 fv(il, 1) = fv(il, 1) + 0.1*work(il)*(mp(il,2)*(vp(il,2)-v(il, &
2381 1))+am(il)*(v(il,2)-v(il,1)))
2402 IF (j<=inb(il))
THEN
2404 fr(il, 1) = fr(il, 1) + 0.01*grav*work(il)*ment(il, j, 1)*(qent(il, &
2406 fu(il, 1) = fu(il, 1) + 0.01*grav*work(il)*ment(il, j, 1)*(uent(il, &
2408 fv(il, 1) = fv(il, 1) + 0.01*grav*work(il)*ment(il, j, 1)*(vent(il, &
2411 fr(il, 1) = fr(il, 1) + 0.1*work(il)*ment(il, j, 1)*(qent(il,j,1)- &
2413 fu(il, 1) = fu(il, 1) + 0.1*work(il)*ment(il, j, 1)*(uent(il,j,1)-u &
2415 fv(il, 1) = fv(il, 1) + 0.1*work(il)*ment(il, j, 1)*(vent(il,j,1)-v &
2452 IF (i<=inb(il)) num1 = num1 + 1
2454 IF (num1<=0)
GO TO 500
2456 CALL zilch(amp1, ncum)
2457 CALL zilch(ad, ncum)
2459 DO k = i + 1,
nl + 1
2461 IF (i<=inb(il) .AND. k<=(inb(il)+1))
THEN
2462 amp1(il) = amp1(il) + m(il, k)
2468 DO j = i + 1,
nl + 1
2470 IF (i<=inb(il) .AND. j<=(inb(il)+1))
THEN
2471 amp1(il) = amp1(il) + ment(il, k, j)
2480 IF (i<=inb(il) .AND. j<=inb(il))
THEN
2481 ad(il) = ad(il) + ment(il, j, k)
2488 IF (i<=inb(il))
THEN
2489 dpinv = 1.0/(ph(il,i)-ph(il,i+1))
2490 cpinv = 1.0/cpn(il, i)
2494 IF ((0.01*grav*dpinv*amp1(il))>=delti) iflag(il) = 1
2496 IF ((0.1*dpinv*amp1(il))>=delti) iflag(il) = 1
2500 ft(il, i) = 0.01*grav*dpinv*(amp1(il)*(t(il,i+1)-t(il, &
2501 i)+(gz(il,i+1)-gz(il,i))*cpinv)-ad(il)*(t(il,i)-t(il, &
2502 i-1)+(gz(il,i)-gz(il,i-1))*cpinv)) - 0.5*
sigd*lvcp(il, i)*(evap( &
2504 rat = cpn(il, i-1)*cpinv
2505 ft(il, i) = ft(il, i) - 0.009*grav*
sigd*(mp(il,i+1)*t(il,i)*b(il,i) &
2506 -mp(il,i)*t(il,i-1)*rat*b(il,i-1))*dpinv
2507 ft(il, i) = ft(il, i) + 0.01*grav*dpinv*ment(il, i, i)*(hp(il,i)-h( &
2508 il,i)+t(il,i)*(
cpv-
cpd)*(rr(il,i)-qent(il,i,i)))*cpinv
2510 ft(il, i) = 0.1*dpinv*(amp1(il)*(t(il,i+1)-t(il, &
2511 i)+(gz(il,i+1)-gz(il,i))*cpinv)-ad(il)*(t(il,i)-t(il, &
2512 i-1)+(gz(il,i)-gz(il,i-1))*cpinv)) - 0.5*
sigd*lvcp(il, i)*(evap( &
2514 rat = cpn(il, i-1)*cpinv
2515 ft(il, i) = ft(il, i) - 0.09*
sigd*(mp(il,i+1)*t(il,i)*b(il,i)-mp(il &
2516 ,i)*t(il,i-1)*rat*b(il,i-1))*dpinv
2517 ft(il, i) = ft(il, i) + 0.1*dpinv*ment(il, i, i)*(hp(il,i)-h(il,i)+ &
2518 t(il,i)*(
cpv-
cpd)*(rr(il,i)-qent(il,i,i)))*cpinv
2522 ft(il, i) = ft(il, i) + 0.01*
sigd*wt(il, i)*(
cl-
cpd)*water(il, i+1)*( &
2523 t(il,i+1)-t(il,i))*dpinv*cpinv
2526 fr(il, i) = 0.01*grav*dpinv*(amp1(il)*(rr(il,i+1)-rr(il, &
2527 i))-ad(il)*(rr(il,i)-rr(il,i-1)))
2528 fu(il, i) = fu(il, i) + 0.01*grav*dpinv*(amp1(il)*(u(il,i+1)-u(il, &
2529 i))-ad(il)*(u(il,i)-u(il,i-1)))
2530 fv(il, i) = fv(il, i) + 0.01*grav*dpinv*(amp1(il)*(v(il,i+1)-v(il, &
2531 i))-ad(il)*(v(il,i)-v(il,i-1)))
2533 fr(il, i) = 0.1*dpinv*(amp1(il)*(rr(il,i+1)-rr(il, &
2534 i))-ad(il)*(rr(il,i)-rr(il,i-1)))
2535 fu(il, i) = fu(il, i) + 0.1*dpinv*(amp1(il)*(u(il,i+1)-u(il, &
2536 i))-ad(il)*(u(il,i)-u(il,i-1)))
2537 fv(il, i) = fv(il, i) + 0.1*dpinv*(amp1(il)*(v(il,i+1)-v(il, &
2538 i))-ad(il)*(v(il,i)-v(il,i-1)))
2564 IF (i<=inb(il))
THEN
2565 dpinv = 1.0/(ph(il,i)-ph(il,i+1))
2566 cpinv = 1.0/cpn(il, i)
2568 awat = elij(il, k, i) - (1.-ep(il,i))*clw(il, i)
2569 awat = amax1(awat, 0.0)
2572 fr(il, i) = fr(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(qent(il,k &
2574 fu(il, i) = fu(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(uent(il,k &
2576 fv(il, i) = fv(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(vent(il,k &
2579 fr(il, i) = fr(il, i) + 0.1*dpinv*ment(il, k, i)*(qent(il,k,i)- &
2581 fu(il, i) = fu(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(uent(il,k &
2583 fv(il, i) = fv(il, i) + 0.1*dpinv*ment(il, k, i)*(vent(il,k,i)-v( &
2588 qcond(il, i) = qcond(il, i) + (elij(il,k,i)-awat)
2589 nqcond(il, i) = nqcond(il, i) + 1.
2614 IF (i<=inb(il) .AND. k<=inb(il))
THEN
2615 dpinv = 1.0/(ph(il,i)-ph(il,i+1))
2616 cpinv = 1.0/cpn(il, i)
2619 fr(il, i) = fr(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(qent(il,k &
2621 fu(il, i) = fu(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(uent(il,k &
2623 fv(il, i) = fv(il, i) + 0.01*grav*dpinv*ment(il, k, i)*(vent(il,k &
2626 fr(il, i) = fr(il, i) + 0.1*dpinv*ment(il, k, i)*(qent(il,k,i)-rr &
2628 fu(il, i) = fu(il, i) + 0.1*dpinv*ment(il, k, i)*(uent(il,k,i)-u( &
2630 fv(il, i) = fv(il, i) + 0.1*dpinv*ment(il, k, i)*(vent(il,k,i)-v( &
2656 IF (i<=inb(il))
THEN
2657 dpinv = 1.0/(ph(il,i)-ph(il,i+1))
2658 cpinv = 1.0/cpn(il, i)
2663 fr(il, i) = fr(il, i) + 0.5*
sigd*(evap(il,i)+evap(il,i+1)) + &
2664 0.01*grav*(mp(il,i+1)*(rp(il,i+1)-rr(il,i))-mp(il,i)*(rp(il, &
2665 i)-rr(il,i-1)))*dpinv
2667 fu(il, i) = fu(il, i) + 0.01*grav*(mp(il,i+1)*(up(il,i+1)-u(il, &
2668 i))-mp(il,i)*(up(il,i)-u(il,i-1)))*dpinv
2669 fv(il, i) = fv(il, i) + 0.01*grav*(mp(il,i+1)*(vp(il,i+1)-v(il, &
2670 i))-mp(il,i)*(vp(il,i)-v(il,i-1)))*dpinv
2672 fr(il, i) = fr(il, i) + 0.5*
sigd*(evap(il,i)+evap(il,i+1)) + &
2673 0.1*(mp(il,i+1)*(rp(il,i+1)-rr(il,i))-mp(il,i)*(rp(il,i)-rr(il, &
2675 fu(il, i) = fu(il, i) + 0.1*(mp(il,i+1)*(up(il,i+1)-u(il, &
2676 i))-mp(il,i)*(up(il,i)-u(il,i-1)))*dpinv
2677 fv(il, i) = fv(il, i) + 0.1*(mp(il,i+1)*(vp(il,i+1)-v(il, &
2678 i))-mp(il,i)*(vp(il,i)-v(il,i-1)))*dpinv
2688 IF (k<=inb(il) .AND. i<=inb(il))
THEN
2690 qcond(il, i) = qcond(il, i) + elij(il, k, i)
2691 nqcond(il, i) = nqcond(il, i) + 1.
2698 IF (i<=inb(il) .AND. nent(il,i)==0)
THEN
2699 qcond(il, i) = qcond(il, i) + (1.-ep(il,i))*clw(il, i)
2700 nqcond(il, i) = nqcond(il, i) + 1.
2705 IF (i<=inb(il) .AND. nqcond(il,i)/=0.)
THEN
2706 qcond(il, i) = qcond(il, i)/nqcond(il, i)
2738 ax = 0.1*ment(il, inb(il), inb(il))*(hp(il,inb(il))-h(il,inb(il))+t(il, &
2739 inb(il))*(
cpv-
cpd)*(rr(il,inb(il))-qent(il,inb(il), &
2740 inb(il))))/(cpn(il,inb(il))*(ph(il,inb(il))-ph(il,inb(il)+1)))
2741 ft(il, inb(il)) = ft(il, inb(il)) - ax
2742 ft(il, inb(il)-1) = ft(il, inb(il)-1) + ax*cpn(il, inb(il))*(ph(il,inb(il &
2743 ))-ph(il,inb(il)+1))/(cpn(il,inb(il)-1)*(ph(il,inb(il)-1)-ph(il, &
2746 bx = 0.1*ment(il, inb(il), inb(il))*(qent(il,inb(il),inb(il))-rr(il,inb( &
2747 il)))/(ph(il,inb(il))-ph(il,inb(il)+1))
2748 fr(il, inb(il)) = fr(il, inb(il)) - bx
2749 fr(il, inb(il)-1) = fr(il, inb(il)-1) + bx*(ph(il,inb(il))-ph(il,inb(il)+ &
2750 1))/(ph(il,inb(il)-1)-ph(il,inb(il)))
2752 cx = 0.1*ment(il, inb(il), inb(il))*(uent(il,inb(il),inb(il))-u(il,inb(il &
2753 )))/(ph(il,inb(il))-ph(il,inb(il)+1))
2754 fu(il, inb(il)) = fu(il, inb(il)) - cx
2755 fu(il, inb(il)-1) = fu(il, inb(il)-1) + cx*(ph(il,inb(il))-ph(il,inb(il)+ &
2756 1))/(ph(il,inb(il)-1)-ph(il,inb(il)))
2758 dx = 0.1*ment(il, inb(il), inb(il))*(vent(il,inb(il),inb(il))-v(il,inb(il &
2759 )))/(ph(il,inb(il))-ph(il,inb(il)+1))
2760 fv(il, inb(il)) = fv(il, inb(il)) - dx
2761 fv(il, inb(il)-1) = fv(il, inb(il)-1) + dx*(ph(il,inb(il))-ph(il,inb(il)+ &
2762 1))/(ph(il,inb(il)-1)-ph(il,inb(il)))
2791 IF (i<=(icb(il)-1))
THEN
2792 asum(il) = asum(il) + ft(il, i)*(ph(il,i)-ph(il,i+1))
2793 bsum(il) = bsum(il) + fr(il, i)*(lv(il,i)+(
cl-
cpd)*(t(il,i)-t(il, &
2794 1)))*(ph(il,i)-ph(il,i+1))
2795 csum(il) = csum(il) + (lv(il,i)+(
cl-
cpd)*(t(il,i)-t(il, &
2796 1)))*(ph(il,i)-ph(il,i+1))
2797 dsum(il) = dsum(il) + t(il, i)*(ph(il,i)-ph(il,i+1))/th(il, i)
2805 IF (i<=(icb(il)-1))
THEN
2806 ft(il, i) = asum(il)*t(il, i)/(th(il,i)*dsum(il))
2807 fr(il, i) = bsum(il)/csum(il)
2829 dnwd0(il, i) = -mp(il, i)
2841 IF (i>=icb(il) .AND. i<=inb(il))
THEN
2861 IF (i>=icb(il) .AND. i<=inb(il) .AND. k<=inb(il))
THEN
2862 up1(il, k, i) = up1(il, k, i) + ment(il, n, k)
2863 dn1(il, k, i) = dn1(il, k, i) - ment(il, k, n)
2875 IF (i<=inb(il) .AND. k<=inb(il))
THEN
2876 upwd(il, i) = upwd(il, i) + m(il, k) + up1(il, k, i)
2877 dnwd(il, i) = dnwd(il, i) + dn1(il, k, i)
2910 mike(il, i) = m(il, i)
2929 ma(il, i) = ma(il, i) + m(il, j)
2942 IF (i<=(icb(il)-1))
THEN
2955 mke(il, i) = upwd(il, i) + dnwd(il, i)
2961 rdcp = (
rrd*(1.-rr(il,i))-rr(il,i)*
rrv)/(
cpd*(1.-rr(il, &
2963 tls(il, i) = t(il, i)*(1000.0/p(il,i))**rdcp
2964 tps(il, i) = tp(il, i)
2983 DO k = i + 1,
nl + 1
2985 IF (i<=inb(il) .AND. k<=(inb(il)+1))
THEN
2986 mac(il, i) = mac(il, i) + m(il, k)
2995 IF (i>=icb(il) .AND. i<=(inb(il)-1) &
2996 .AND. j>=icb(il))
THEN
2997 sax(il, i) = sax(il, i) +
rrd*(tvp(il,j)-tv(il,j)) &
2998 *(ph(il,j)-ph(il,j+1))/p(il, j)
3006 IF (i>=icb(il) .AND. i<=(inb(il)-1) &
3007 .AND. sax(il,i)>0.0)
THEN
3008 wa(il, i) = sqrt(2.*sax(il,i))
3016 siga(il, i) = mac(il, i)/wa(il, i) &
3017 *
rrd*tvp(il, i)/p(il, i)/100./
delta
3018 siga(il, i) = min(siga(il,i), 1.0)
3021 qcondc(il, i) = siga(il, i)*clw(il, i)*(1.-ep(il,i)) &
3022 +(1.-siga(il,i))*qcond(il, i)
3024 qcondc(il, i) = qcond(il, i)
3034 SUBROUTINE cv30_tracer(nloc, len, ncum, nd, na, ment, sij, da, phi, phi2, &
3035 d1a, dam, ep, vprecip, elij, clw, epmlmmm, eplamm, icb, inb)
3038 include
"cv30param.h"
3041 INTEGER ncum, nd, na, nloc, len
3042 REAL ment(nloc, na, na), sij(nloc, na, na)
3043 REAL clw(nloc, nd), elij(nloc, na, na)
3045 INTEGER icb(nloc), inb(nloc)
3046 REAL vprecip(nloc, nd+1)
3048 REAL da(nloc, na), phi(nloc, na, na)
3049 REAL phi2(nloc, na, na)
3050 REAL d1a(nloc, na), dam(nloc, na)
3051 REAL epmlmmm(nloc, na, na), eplamm(nloc, na)
3055 REAL epm(nloc, na, na)
3077 epmlmmm(i, j, k) = 0.
3089 IF (k>=icb(i) .AND. k<=inb(i) .AND. j<=inb(i))
THEN
3091 epm(i, j, k) = 1. - (1.-ep(i,j))*clw(i, j)/max(elij(i,k,j), 1.e-16)
3093 epm(i, j, k) = max(epm(i,j,k), 0.0)
3102 IF (k>=icb(i) .AND. k<=inb(i))
THEN
3103 eplamm(i, j) = eplamm(i, j) + ep(i, j)*clw(i, j)*ment(i, j, k)*(1.- &
3113 IF (k>=icb(i) .AND. k<=inb(i) .AND. j<=inb(i))
THEN
3114 epmlmmm(i, j, k) = epm(i, j, k)*elij(i, k, j)*ment(i, k, j)
3124 da(i, j) = da(i, j) + (1.-sij(i,k,j))*ment(i, k, j)
3125 phi(i, j, k) = sij(i, k, j)*ment(i, k, j)
3126 d1a(i, j) = d1a(i, j) + ment(i, k, j)*ep(i, k)*(1.-sij(i,k,j))
3134 dam(i, j) = dam(i, j) + ment(i, k, j)*epm(i, j, k)*(1.-ep(i,k))*(1.- &
3136 phi2(i, j, k) = phi(i, j, k)*epm(i, j, k)
3145 SUBROUTINE cv30_uncompress(nloc, len, ncum, nd, ntra, idcum, iflag, precip, &
3146 vprecip, evap, ep, sig, w0, ft, fq, fu, fv, ftra, inb, ma, upwd, dnwd, &
3147 dnwd0, qcondc, wd, cape, da, phi, mp, phi2, d1a, dam, sij, elij, clw, &
3148 epmlmmm, eplamm, wdtraina, wdtrainm, iflag1, precip1, vprecip1, evap1, &
3149 ep1, sig1, w01, ft1, fq1, fu1, fv1, ftra1, inb1, ma1, upwd1, dnwd1, &
3150 dnwd01, qcondc1, wd1, cape1, da1, phi1, mp1, phi21, d1a1, dam1, sij1, &
3151 elij1, clw1, epmlmmm1, eplamm1, wdtraina1, wdtrainm1)
3154 include
"cv30param.h"
3157 INTEGER len, ncum, nd, ntra, nloc
3162 REAL vprecip(nloc, nd+1), evap(nloc, nd)
3164 REAL sig(nloc, nd), w0(nloc, nd)
3165 REAL ft(nloc, nd), fq(nloc, nd), fu(nloc, nd), fv(nloc, nd)
3166 REAL ftra(nloc, nd, ntra)
3168 REAL upwd(nloc, nd), dnwd(nloc, nd), dnwd0(nloc, nd)
3169 REAL qcondc(nloc, nd)
3170 REAL wd(nloc), cape(nloc)
3171 REAL da(nloc, nd), phi(nloc, nd, nd), mp(nloc, nd)
3173 REAL phi2(nloc, nd, nd)
3174 REAL d1a(nloc, nd), dam(nloc, nd)
3175 REAL wdtraina(nloc, nd), wdtrainm(nloc, nd)
3176 REAL sij(nloc, nd, nd)
3177 REAL elij(nloc, nd, nd), clw(nloc, nd)
3178 REAL epmlmmm(nloc, nd, nd), eplamm(nloc, nd)
3185 REAL vprecip1(len, nd+1), evap1(len, nd)
3187 REAL sig1(len, nd), w01(len, nd)
3188 REAL ft1(len, nd), fq1(len, nd), fu1(len, nd), fv1(len, nd)
3189 REAL ftra1(len, nd, ntra)
3191 REAL upwd1(len, nd), dnwd1(len, nd), dnwd01(len, nd)
3192 REAL qcondc1(nloc, nd)
3193 REAL wd1(nloc), cape1(nloc)
3194 REAL da1(nloc, nd), phi1(nloc, nd, nd), mp1(nloc, nd)
3196 REAL phi21(len, nd, nd)
3197 REAL d1a1(len, nd), dam1(len, nd)
3198 REAL wdtraina1(len, nd), wdtrainm1(len, nd)
3199 REAL sij1(len, nd, nd)
3200 REAL elij1(len, nd, nd), clw1(len, nd)
3201 REAL epmlmmm1(len, nd, nd), eplamm1(len, nd)
3208 precip1(idcum(i)) = precip(i)
3209 iflag1(idcum(i)) = iflag(i)
3210 wd1(idcum(i)) = wd(i)
3211 inb1(idcum(i)) = inb(i)
3212 cape1(idcum(i)) = cape(i)
3217 vprecip1(idcum(i), k) = vprecip(i, k)
3218 evap1(idcum(i), k) = evap(i, k)
3219 sig1(idcum(i), k) = sig(i, k)
3220 w01(idcum(i), k) = w0(i, k)
3221 ft1(idcum(i), k) = ft(i, k)
3222 fq1(idcum(i), k) = fq(i, k)
3223 fu1(idcum(i), k) = fu(i, k)
3224 fv1(idcum(i), k) = fv(i, k)
3225 ma1(idcum(i), k) = ma(i, k)
3226 upwd1(idcum(i), k) = upwd(i, k)
3227 dnwd1(idcum(i), k) = dnwd(i, k)
3228 dnwd01(idcum(i), k) = dnwd0(i, k)
3229 qcondc1(idcum(i), k) = qcondc(i, k)
3230 da1(idcum(i), k) = da(i, k)
3231 mp1(idcum(i), k) = mp(i, k)
3233 ep1(idcum(i), k) = ep(i, k)
3234 d1a1(idcum(i), k) = d1a(i, k)
3235 dam1(idcum(i), k) = dam(i, k)
3236 clw1(idcum(i), k) = clw(i, k)
3237 eplamm1(idcum(i), k) = eplamm(i, k)
3238 wdtraina1(idcum(i), k) = wdtraina(i, k)
3239 wdtrainm1(idcum(i), k) = wdtrainm(i, k)
3245 sig1(idcum(i), nd) = sig(i, nd)
3259 sij1(idcum(i), k, j) = sij(i, k, j)
3260 phi1(idcum(i), k, j) = phi(i, k, j)
3261 phi21(idcum(i), k, j) = phi2(i, k, j)
3262 elij1(idcum(i), k, j) = elij(i, k, j)
3263 epmlmmm1(idcum(i), k, j) = epmlmmm(i, k, j)
!$Id!Thermodynamical constants for t0 real clmcpv
!$Id!Thermodynamical constants for cpv
!$Id!logical cvflag_grav logical cvflag_ice COMMON cvflag cvflag_grav
subroutine cv30_undilute1(len, nd, t, q, qs, gz, plcl, p, nk, icb, tp, tvp, clw, icbs)
!$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
!$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
subroutine cv30_mixing(nloc, ncum, nd, na, ntra, icb, nk, inb, ph, t, rr, rs, u, v, tra, h, lv, qnk, hp, tv, tvp, ep, clw, m, sig, ment, qent, uent, vent, sij, elij, ments, qents, traent)
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real ginv
!$Id!Thermodynamical constants for t0 real clmci real eps
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real omtrain
!$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
!$Id!Thermodynamical constants for cl
!$Id!Parameters for nlm real spfac!IM cf epmax real pbcrit
!$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
subroutine cv30_closure(nloc, ncum, nd, icb, inb, pbase, p, ph, tv, buoy, sig, w0, cape, m)
!$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 cv30_undilute2(nloc, ncum, nd, icb, icbs, nk, tnk, qnk, gznk, t, q, qs, gz, p, h, tv, lv, pbase, buoybase, plcl, inb, tp, tvp, clw, hp, ep, sigp, buoy)
!$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
subroutine cv30_prelim(len, nd, ndp1, t, q, p, ph, lv, cpn, tv, gz, h, hm, th)
subroutine cv30_feed(len, nd, t, q, qs, p, ph, hm, gz, nk, icb, icbmax, iflag, tnk, qnk, gznk, plcl)
!$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
subroutine cv30_unsat(nloc, ncum, nd, na, ntra, icb, inb, t, rr, rs, gz, u, v, tra, p, ph, th, tv, lv, cpn, ep, sigp, clw, m, ment, elij, delt, plcl, mp, rp, up, vp, trap, wt, water, evap, b, wdtraina, wdtrainm)
subroutine cv30_uncompress(nloc, len, ncum, nd, ntra, idcum, iflag, precip, vprecip, evap, ep, sig, w0, ft, fq, fu, fv, ftra, inb, ma, upwd, dnwd, dnwd0, qcondc, wd, cape, da, phi, mp, phi2, d1a, dam, sij, elij, clw, epmlmmm, eplamm, wdtraina, wdtrainm, iflag1, precip1, vprecip1, evap1, ep1, sig1, w01, ft1, fq1, fu1, fv1, ftra1, inb1, ma1, upwd1, dnwd1, dnwd01, qcondc1, wd1, cape1, da1, phi1, mp1, phi21, d1a1, dam1, sij1, elij1, clw1, epmlmmm1, eplamm1, wdtraina1, wdtrainm1)
subroutine cv30_param(nd, delt)
subroutine cv30_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)
!$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 cv30_trigger(len, nd, icb, plcl, p, th, tv, tvp, pbase, buoybase, iflag, sig, w0)
!$Id!Thermodynamical constants for rowl
!$Id!Parameters for nlm real sigd
subroutine cv30_yield(nloc, ncum, nd, na, ntra, icb, inb, delt, t, rr, u, v, tra, gz, p, ph, h, hp, lv, cpn, th, ep, clw, m, tp, mp, rp, up, vp, trap, wt, water, evap, b, ment, qent, uent, vent, nent, elij, traent, sig, tv, tvp, iflag, precip, vprecip, ft, fr, fu, fv, ftra, upwd, dnwd, dnwd0, ma, mike, tls, tps, qcondc, wd)
subroutine cv30_tracer(nloc, len, ncum, nd, na, ment, sij, da, phi, phi2, d1a, dam, ep, vprecip, elij, clw, epmlmmm, eplamm, icb, inb)
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout