40 CHARACTER (LEN=20) :: modname =
'cv_routines'
41 CHARACTER (LEN=80) :: abort_message
76 SUBROUTINE cv_prelim(len, nd, ndp1, t, q, p, ph, lv, cpn, tv, gz, h, hm)
85 REAL t(len, nd), q(len, nd), p(len, nd), ph(len, ndp1)
88 REAL lv(len, nd), cpn(len, nd), tv(len, nd)
89 REAL gz(len, nd), h(len, nd), hm(len, nd)
102 cpn(i, k) =
cpd*(1.0-q(i,k)) +
cpv*q(i, k)
103 cpx(i, k) =
cpd*(1.0-q(i,k)) +
cl*q(i, k)
104 tv(i, k) = t(i, k)*(1.0+q(i,k)*
epsim1)
115 gz(i, k) = gz(i, k-1) +
hrd*(tv(i,k-1)+tv(i,k))*(p(i,k-1)-p(i,k))/ph(i, &
125 h(i, k) = gz(i, k) + cpn(i, k)*t(i, k)
126 hm(i, k) = gz(i, k) + cpx(i, k)*(t(i,k)-t(i,1)) + lv(i, k)*q(i, k)
133 SUBROUTINE cv_feed(len, nd, t, q, qs, p, hm, gz, nk, icb, icbmax, iflag, tnk, &
145 REAL t(len, nd), q(len, nd), qs(len, nd), p(len, nd)
146 REAL hm(len, nd), gz(len, nd)
149 INTEGER iflag(len), nk(len), icb(len), icbmax
150 REAL tnk(len), qnk(len), gznk(len), plcl(len)
156 REAL pnk(len), qsnk(len), rh(len), chi(len)
171 IF ((hm(i,k)<work(i)) .AND. (hm(i,k)<hm(i,k-1)))
THEN
178 ihmin(i) = min(ihmin(i), nlm)
195 IF ((hm(i,k)>work(i)) .AND. (k<=ihmin(i)))
THEN
206 IF (((t(i,nk(i))<250.0) .OR. (q(i,nk(i))<=0.0) .OR. (p(i,ihmin(i))< &
207 400.0)) .AND. (iflag(i)==0)) iflag(i) = 7
216 gznk(i) = gz(i, nk(i))
218 qsnk(i) = qs(i, nk(i))
220 rh(i) = qnk(i)/qsnk(i)
221 rh(i) = min(1.0, rh(i))
222 chi(i) = tnk(i)/(1669.0-122.0*rh(i)-tnk(i))
223 plcl(i) = pnk(i)*(rh(i)**chi(i))
224 IF (((plcl(i)<200.0) .OR. (plcl(i)>=2000.0)) .AND. (iflag(i)==0)) iflag(i &
236 IF ((k>=(nk(i)+1)) .AND. (p(i,k)<plcl(i))) icb(i) = min(icb(i), k)
241 IF ((icb(i)>=nlm) .AND. (iflag(i)==0)) iflag(i) = 9
248 icbmax = max(icbmax, icb(i))
254 SUBROUTINE cv_undilute1(len, nd, t, q, qs, gz, p, nk, icb, icbmax, tp, tvp, &
263 INTEGER nk(len), icb(len), icbmax
264 REAL t(len, nd), q(len, nd), qs(len, nd), gz(len, nd)
268 REAL tp(len, nd), tvp(len, nd), clw(len, nd)
272 REAL tg, qg, alv, s, ahg, tc, denom, es, rg
273 REAL ah0(len), cpp(len)
274 REAL tnk(len), qnk(len), gznk(len), ticb(len), gzicb(len)
286 gznk(i) = gz(i, nk(i))
287 ticb(i) = t(i, icb(i))
288 gzicb(i) = gz(i, icb(i))
294 ah0(i) = (
cpd*(1.-qnk(i))+
cl*qnk(i))*tnk(i) + qnk(i)*(
lv0-
clmcpv*(tnk(i)- &
296 cpp(i) =
cpd*(1.-qnk(i)) + qnk(i)*
cpv
303 tp(i, k) = tnk(i) - (gz(i,k)-gznk(i))/cpp(i)
304 tvp(i, k) = tp(i, k)*(1.+qnk(i)*
epsi)
317 s =
cpd + alv*alv*qg/(
rrv*ticb(i)*ticb(i))
319 ahg =
cpd*tg + (
cl-
cpd)*qnk(i)*ticb(i) + alv*qg + gzicb(i)
320 tg = tg + s*(ah0(i)-ahg)
325 es = 6.112*exp(17.67*tc/denom)
327 es = exp(23.33086-6111.72784/tg+0.15215*log(tg))
329 qg =
eps*es/(p(i,icb(i))-es*(1.-
eps))
333 s =
cpd + alv*alv*qg/(
rrv*ticb(i)*ticb(i))
335 ahg =
cpd*tg + (
cl-
cpd)*qnk(i)*ticb(i) + alv*qg + gzicb(i)
336 tg = tg + s*(ah0(i)-ahg)
341 es = 6.112*exp(17.67*tc/denom)
343 es = exp(23.33086-6111.72784/tg+0.15215*log(tg))
345 qg =
eps*es/(p(i,icb(i))-es*(1.-
eps))
348 tp(i, icb(i)) = (ah0(i)-(
cl-
cpd)*qnk(i)*ticb(i)-gz(i,icb(i))-alv*qg)/
cpd
349 clw(i, icb(i)) = qnk(i) - qg
350 clw(i, icb(i)) = max(0.0, clw(i,icb(i)))
352 tvp(i, icb(i)) = tp(i, icb(i))*(1.+rg*
epsi)
357 tvp(i, k) = tvp(i, k) - tp(i, k)*qnk(i)
364 SUBROUTINE cv_trigger(len, nd, icb, cbmf, tv, tvp, iflag)
376 INTEGER len, nd, icb(len)
377 REAL cbmf(len), tv(len, nd), tvp(len, nd)
387 IF ((cbmf(i)==0.0) .AND. (iflag(i)==0) .AND. (tvp(i, &
388 icb(i))<=(tv(i,icb(i))-
dtmax))) iflag(i) = 4
394 SUBROUTINE cv_compress(len, nloc, ncum, nd, iflag1, nk1, icb1, cbmf1, plcl1, &
395 tnk1, qnk1, gznk1, t1, q1, qs1, u1, v1, gz1, h1, lv1, cpn1, p1, ph1, tv1, &
396 tp1, tvp1, clw1, iflag, nk, icb, cbmf, plcl, tnk, qnk, gznk, t, q, qs,
u, &
397 v, gz, h, lv, cpn, p, ph, tv, tp, tvp, clw, dph)
404 INTEGER len, ncum, nd, nloc
405 INTEGER iflag1(len), nk1(len), icb1(len)
406 REAL cbmf1(len), plcl1(len), tnk1(len), qnk1(len), gznk1(len)
407 REAL t1(len, nd), q1(len, nd), qs1(len, nd), u1(len, nd), v1(len, nd)
408 REAL gz1(len, nd), h1(len, nd), lv1(len, nd), cpn1(len, nd)
409 REAL p1(len, nd), ph1(len, nd+1), tv1(len, nd), tp1(len, nd)
410 REAL tvp1(len, nd), clw1(len, nd)
413 INTEGER iflag(nloc), nk(nloc), icb(nloc)
414 REAL cbmf(nloc), plcl(nloc), tnk(nloc), qnk(nloc), gznk(nloc)
415 REAL t(nloc, nd), q(nloc, nd), qs(nloc, nd), u(nloc, nd), v(nloc, nd)
416 REAL gz(nloc, nd), h(nloc, nd), lv(nloc, nd), cpn(nloc, nd)
417 REAL p(nloc, nd), ph(nloc, nd+1), tv(nloc, nd), tp(nloc, nd)
418 REAL tvp(nloc, nd), clw(nloc, nd)
423 CHARACTER (LEN=20) :: modname =
'cv_compress'
424 CHARACTER (LEN=80) :: abort_message
430 IF (iflag1(i)==0)
THEN
434 qs(nn, k) = qs1(i, k)
437 gz(nn, k) = gz1(i, k)
439 lv(nn, k) = lv1(i, k)
440 cpn(nn, k) = cpn1(i, k)
442 ph(nn, k) = ph1(i, k)
443 tv(nn, k) = tv1(i, k)
444 tp(nn, k) = tp1(i, k)
445 tvp(nn, k) = tvp1(i, k)
446 clw(nn, k) = clw1(i, k)
452 WRITE (
lunout, *)
'strange! nn not equal to ncum: ', nn, ncum
459 IF (iflag1(i)==0)
THEN
468 iflag(nn) = iflag1(i)
474 dph(i, k) = ph(i, k) - ph(i, k+1)
481 SUBROUTINE cv_undilute2(nloc, ncum, nd, icb, nk, tnk, qnk, gznk, t, q, qs, &
482 gz, p, dph, h, tv, lv, inb, inb1, tp, tvp, clw, hp, ep, sigp, frac)
499 INTEGER ncum, nd, nloc
500 INTEGER icb(nloc), nk(nloc)
501 REAL t(nloc, nd), q(nloc, nd), qs(nloc, nd), gz(nloc, nd)
502 REAL p(nloc, nd), dph(nloc, nd)
503 REAL tnk(nloc), qnk(nloc), gznk(nloc)
504 REAL lv(nloc, nd), tv(nloc, nd), h(nloc, nd)
507 INTEGER inb(nloc), inb1(nloc)
508 REAL tp(nloc, nd), tvp(nloc, nd), clw(nloc, nd)
509 REAL ep(nloc, nd), sigp(nloc, nd), hp(nloc, nd)
514 REAL tg, qg, ahg, alv, s, tc, es, denom, rg, tca, elacrit
516 REAL ah0(nloc), cape(nloc), capem(nloc), byp(nloc)
541 ah0(i) = (
cpd*(1.-qnk(i))+
cl*qnk(i))*tnk(i) + qnk(i)*(
lv0-
clmcpv*(tnk(i)- &
551 IF (k>=(icb(i)+1))
THEN
558 s =
cpd + alv*alv*qg/(
rrv*t(i,k)*t(i,k))
560 ahg =
cpd*tg + (
cl-
cpd)*qnk(i)*t(i, k) + alv*qg + gz(i, k)
561 tg = tg + s*(ah0(i)-ahg)
566 es = 6.112*exp(17.67*tc/denom)
568 es = exp(23.33086-6111.72784/tg+0.15215*log(tg))
570 qg =
eps*es/(p(i,k)-es*(1.-
eps))
574 s =
cpd + alv*alv*qg/(
rrv*t(i,k)*t(i,k))
576 ahg =
cpd*tg + (
cl-
cpd)*qnk(i)*t(i, k) + alv*qg + gz(i, k)
577 tg = tg + s*(ah0(i)-ahg)
582 es = 6.112*exp(17.67*tc/denom)
584 es = exp(23.33086-6111.72784/tg+0.15215*log(tg))
586 qg =
eps*es/(p(i,k)-es*(1.-
eps))
592 tp(i, k) = (ah0(i)-(
cl-
cpd)*qnk(i)*t(i,k)-gz(i,k)-alv*qg)/
cpd
597 clw(i, k) = qnk(i) - qg
598 clw(i, k) = max(0.0, clw(i,k))
600 tvp(i, k) = tp(i, k)*(1.+rg*
epsi)
613 IF (k>=(nk(i)+1))
THEN
618 elacrit =
elcrit*(1.0-tca/tlcrit)
620 elacrit = max(elacrit, 0.0)
621 ep(i, k) = 1.0 - elacrit/max(clw(i,k), 1.0e-8)
622 ep(i, k) = max(ep(i,k), 0.0)
623 ep(i, k) = min(ep(i,k), 1.0)
636 IF (k>=(icb(i)+1))
THEN
637 tvp(i, k) = tvp(i, k)*(1.0-qnk(i)+ep(i,k)*clw(i,k))
715 CALL zilch(byp, ncum)
721 IF (cape(i)<0.0) lcape(i) = .
false.
722 IF ((k>=(icb(i)+1)) .AND. lcape(i))
THEN
723 by = (tvp(i,k)-tv(i,k))*dph(i, k)/p(i, k)
724 byp(i) = (tvp(i,k+1)-tv(i,k+1))*dph(i, k+1)/p(i, k+1)
725 cape(i) = cape(i) + by
726 IF (by>=0.0) inb1(i) = k + 1
727 IF (cape(i)>0.0)
THEN
735 cape(i) = capem(i) + byp(i)
736 defrac = capem(i) - cape(i)
737 defrac = max(defrac, 0.001)
738 frac(i) = -cape(i)/defrac
739 frac(i) = min(frac(i), 1.0)
740 frac(i) = max(frac(i), 0.0)
754 IF ((k>=icb(i)) .AND. (k<=inb(i)))
THEN
755 hp(i, k) = h(i, nk(i)) + (lv(i,k)+(
cpd-
cpv)*t(i,k))*ep(i, k)*clw(i, k &
764 SUBROUTINE cv_closure(nloc, ncum, nd, nk, icb, tv, tvp, p, ph, dph, plcl, &
769 INTEGER ncum, nd, nloc
770 INTEGER nk(nloc), icb(nloc)
771 REAL tv(nloc, nd), tvp(nloc, nd), p(nloc, nd), dph(nloc, nd)
773 REAL plcl(nloc), cpn(nloc, nd)
781 REAL dtpbl(nloc), dtmin(nloc), tvpplcl(nloc), tvaplcl(nloc)
793 icbmax = max(icbmax, icb(i))
806 tvpplcl(i) = tvp(i, icb(i)-1) -
rrd*tvp(i, icb(i)-1)*(p(i,icb(i)-1)-plcl( &
807 i))/(cpn(i,icb(i)-1)*p(i,icb(i)-1))
808 tvaplcl(i) = tv(i, icb(i)) + (tvp(i,icb(i))-tvp(i,icb(i)+1))*(plcl(i)-p(i &
809 ,icb(i)))/(p(i,icb(i))-p(i,icb(i)+1))
821 IF ((k>=nk(i)) .AND. (k<=(icb(i)-1)))
THEN
822 dtpbl(i) = dtpbl(i) + (tvp(i,k)-tv(i,k))*dph(i, k)
827 dtpbl(i) = dtpbl(i)/(ph(i,nk(i))-ph(i,icb(i)))
828 dtmin(i) = tvpplcl(i) - tvaplcl(i) +
dtmax + dtpbl(i)
837 cbmf(i) = max(0.0, (1.0-
damp)*cbmf(i)+0.1*
alpha*dtmin(i))
838 IF ((work(i)==0.0) .AND. (cbmf(i)==0.0))
THEN
846 SUBROUTINE cv_mixing(nloc, ncum, nd, icb, nk, inb, inb1, ph, t, q, qs, u, v, &
847 h, lv, qnk, hp, tv, tvp, ep, clw, cbmf, m, ment, qent, uent, vent, nent, &
855 INTEGER ncum, nd, nloc
856 INTEGER icb(nloc), inb(nloc), inb1(nloc), nk(nloc)
857 REAL cbmf(nloc), qnk(nloc)
859 REAL t(nloc, nd), q(nloc, nd), qs(nloc, nd), lv(nloc, nd)
860 REAL u(nloc, nd), v(nloc, nd), h(nloc, nd), hp(nloc, nd)
861 REAL tv(nloc, nd), tvp(nloc, nd), ep(nloc, nd), clw(nloc, nd)
864 INTEGER nent(nloc, nd)
865 REAL m(nloc, nd), ment(nloc, nd, nd), qent(nloc, nd, nd)
866 REAL uent(nloc, nd, nd), vent(nloc, nd, nd)
867 REAL sij(nloc, nd, nd), elij(nloc, nd, nd)
872 REAL dbo, qti, bf2, anum, denom, dei, altem, cwat, stemp
873 REAL alt, qp1, smid, sjmin, sjmax, delp, delm
874 REAL work(nloc), asij(nloc), smin(nloc), scrit(nloc)
890 qent(i, k, j) = q(i, j)
891 uent(i, k, j) = u(i, j)
892 vent(i, k, j) = v(i, j)
904 CALL zilch(work, ncum)
908 IF ((j>=(icb(i)+1)) .AND. (j<=inb(i)))
THEN
910 dbo = abs(tv(i,k+1)-tvp(i,k+1)-tv(i,k-1)+tvp(i,k-1)) + &
911 entp*0.04*(ph(i,k)-ph(i,k+1))
912 work(i) = work(i) + dbo
913 m(i, j) = cbmf(i)*dbo
919 IF ((k>=(icb(i)+1)) .AND. (k<=inb(i)))
THEN
920 m(i, k) = m(i, k)/work(i)
936 IF ((i>=(icb(ij)+1)) .AND. (j>=icb(ij)) .AND. (i<=inb(ij)) .AND. (j<= &
938 qti = qnk(ij) - ep(ij, i)*clw(ij, i)
939 bf2 = 1. + lv(ij, j)*lv(ij, j)*qs(ij, j)/(
rrv*t(ij,j)*t(ij,j)*
cpd)
940 anum = h(ij, j) - hp(ij, i) + (
cpv-
cpd)*t(ij, j)*(qti-q(ij,j))
941 denom = h(ij, i) - hp(ij, i) + (
cpd-
cpv)*(q(ij,i)-qti)*t(ij, j)
943 IF (abs(dei)<0.01) dei = 0.01
944 sij(ij, i, j) = anum/dei
946 altem = sij(ij, i, j)*q(ij, i) + (1.-sij(ij,i,j))*qti - qs(ij, j)
948 cwat = clw(ij, j)*(1.-ep(ij,j))
949 stemp = sij(ij, i, j)
950 IF ((stemp<0.0 .OR. stemp>1.0 .OR. altem>cwat) .AND. j>i)
THEN
951 anum = anum - lv(ij, j)*(qti-qs(ij,j)-cwat*bf2)
952 denom = denom + lv(ij, j)*(q(ij,i)-qti)
953 IF (abs(denom)<0.01) denom = 0.01
954 sij(ij, i, j) = anum/denom
955 altem = sij(ij, i, j)*q(ij, i) + (1.-sij(ij,i,j))*qti - qs(ij, j)
956 altem = altem - (bf2-1.)*cwat
958 IF (sij(ij,i,j)>0.0 .AND. sij(ij,i,j)<0.9)
THEN
959 qent(ij, i, j) = sij(ij, i, j)*q(ij, i) + (1.-sij(ij,i,j))*qti
960 uent(ij, i, j) = sij(ij, i, j)*u(ij, i) + &
961 (1.-sij(ij,i,j))*u(ij, nk(ij))
962 vent(ij, i, j) = sij(ij, i, j)*v(ij, i) + &
963 (1.-sij(ij,i,j))*v(ij, nk(ij))
964 elij(ij, i, j) = altem
965 elij(ij, i, j) = max(0.0, elij(ij,i,j))
966 ment(ij, i, j) = m(ij, i)/(1.-sij(ij,i,j))
967 nent(ij, i) = nent(ij, i) + 1
969 sij(ij, i, j) = max(0.0, sij(ij,i,j))
970 sij(ij, i, j) = min(1.0, sij(ij,i,j))
981 IF ((i>=(icb(ij)+1)) .AND. (i<=inb(ij)) .AND. (nent(ij,i)==0))
THEN
982 ment(ij, i, i) = m(ij, i)
983 qent(ij, i, i) = q(ij, nk(ij)) - ep(ij, i)*clw(ij, i)
984 uent(ij, i, i) = u(ij, nk(ij))
985 vent(ij, i, i) = v(ij, nk(ij))
986 elij(ij, i, i) = clw(ij, i)
993 sij(i, inb(i), inb(i)) = 1.0
1009 IF ((i>=icb(ij)+1) .AND. (i<=inb(ij))) num1 = num1 + 1
1011 IF (num1<=0)
GO TO 789
1014 IF ((i>=icb(ij)+1) .AND. (i<=inb(ij)))
THEN
1015 lwork(ij) = (nent(ij,i)/=0)
1016 qp1 = q(ij, nk(ij)) - ep(ij, i)*clw(ij, i)
1017 anum = h(ij, i) - hp(ij, i) - lv(ij, i)*(qp1-qs(ij,i))
1018 denom = h(ij, i) - hp(ij, i) + lv(ij, i)*(q(ij,i)-qp1)
1019 IF (abs(denom)<0.01) denom = 0.01
1020 scrit(ij) = anum/denom
1021 alt = qp1 - qs(ij, i) + scrit(ij)*(q(ij,i)-qp1)
1022 IF (scrit(ij)<0.0 .OR. alt<0.0) scrit(ij) = 1.0
1031 IF ((i>=icb(ij)+1) .AND. (i<=inb(ij)) .AND. (j>=icb( &
1032 ij)) .AND. (j<=inb(ij)) .AND. lwork(ij)) num2 = num2 + 1
1034 IF (num2<=0)
GO TO 783
1037 IF ((i>=icb(ij)+1) .AND. (i<=inb(ij)) .AND. (j>=icb( &
1038 ij)) .AND. (j<=inb(ij)) .AND. lwork(ij))
THEN
1039 IF (sij(ij,i,j)>0.0 .AND. sij(ij,i,j)<0.9)
THEN
1041 smid = min(sij(ij,i,j), scrit(ij))
1044 IF (smid<smin(ij) .AND. sij(ij,i,j+1)<smid)
THEN
1046 sjmax = min(sij(ij,i,j+1), sij(ij,i,j), scrit(ij))
1047 sjmin = max(sij(ij,i,j-1), sij(ij,i,j))
1048 sjmin = min(sjmin, scrit(ij))
1051 sjmax = max(sij(ij,i,j+1), scrit(ij))
1052 smid = max(sij(ij,i,j), scrit(ij))
1054 IF (j>1) sjmin = sij(ij, i, j-1)
1055 sjmin = max(sjmin, scrit(ij))
1057 delp = abs(sjmax-smid)
1058 delm = abs(sjmin-smid)
1059 asij(ij) = asij(ij) + (delp+delm)*(ph(ij,j)-ph(ij,j+1))
1060 ment(ij, i, j) = ment(ij, i, j)*(delp+delm)*(ph(ij,j)-ph(ij,j+1))
1066 IF ((i>=icb(ij)+1) .AND. (i<=inb(ij)) .AND. lwork(ij))
THEN
1067 asij(ij) = max(1.0e-21, asij(ij))
1068 asij(ij) = 1.0/asij(ij)
1074 IF ((i>=icb(ij)+1) .AND. (i<=inb(ij)) .AND. (j>=icb( &
1075 ij)) .AND. (j<=inb(ij)) .AND. lwork(ij))
THEN
1076 ment(ij, i, j) = ment(ij, i, j)*asij(ij)
1077 bsum(ij, i) = bsum(ij, i) + ment(ij, i, j)
1082 IF ((i>=icb(ij)+1) .AND. (i<=inb(ij)) .AND. (bsum(ij, &
1083 i)<1.0e-18) .AND. lwork(ij))
THEN
1085 ment(ij, i, i) = m(ij, i)
1086 qent(ij, i, i) = q(ij, nk(ij)) - ep(ij, i)*clw(ij, i)
1087 uent(ij, i, i) = u(ij, nk(ij))
1088 vent(ij, i, i) = v(ij, nk(ij))
1089 elij(ij, i, i) = clw(ij, i)
1098 SUBROUTINE cv_unsat(nloc, ncum, nd, inb, t, q, qs, gz, u, v, p, ph, h, lv, &
1099 ep, sigp, clw, m, ment, elij, iflag, mp, qp, up, vp, wt, water, evap)
1103 include
"cvthermo.h"
1107 INTEGER ncum, nd, nloc
1109 REAL t(nloc, nd), q(nloc, nd), qs(nloc, nd)
1110 REAL gz(nloc, nd), u(nloc, nd), v(nloc, nd)
1111 REAL p(nloc, nd), ph(nloc, nd+1), h(nloc, nd)
1112 REAL lv(nloc, nd), ep(nloc, nd), sigp(nloc, nd), clw(nloc, nd)
1113 REAL m(nloc, nd), ment(nloc, nd, nd), elij(nloc, nd, nd)
1117 REAL mp(nloc, nd), qp(nloc, nd), up(nloc, nd), vp(nloc, nd)
1118 REAL water(nloc, nd), evap(nloc, nd), wt(nloc, nd)
1121 INTEGER i, j, k, ij, num1
1123 REAL awat, coeff, qsm, afac, sigt, b6, c6, revap
1124 REAL dhdp, fac, qstm, rat
1151 qp(i, k) = q(i, k-1)
1152 up(i, k) = u(i, k-1)
1153 vp(i, k) = v(i, k-1)
1168 IF (ep(i,inb(i))<=0.0001) iflag(i) = 2
1169 IF (iflag(i)==0)
THEN
1179 CALL zilch(wdtrain, ncum)
1180 DO i =
nl + 1, 1, -1
1184 IF ((i<=inb(ij)) .AND. lwork(ij)) num1 = num1 + 1
1186 IF (num1<=0)
GO TO 899
1192 IF ((i<=inb(ij)) .AND. (lwork(ij)))
THEN
1193 wdtrain(ij) =
g*ep(ij, i)*m(ij, i)*clw(ij, i)
1200 IF ((i<=inb(ij)) .AND. (lwork(ij)))
THEN
1201 awat = elij(ij, j, i) - (1.-ep(ij,i))*clw(ij, i)
1202 awat = max(0.0, awat)
1203 wdtrain(ij) = wdtrain(ij) +
g*awat*ment(ij, j, i)
1217 IF ((i<=inb(ij)) .AND. (lwork(ij)))
THEN
1224 IF (t(ij,i)>273.0)
THEN
1228 qsm = 0.5*(q(ij,i)+qp(ij,i+1))
1229 afac = coeff*ph(ij, i)*(qs(ij,i)-qsm)/(1.0e4+2.0e3*ph(ij,i)*qs(ij,i))
1230 afac = max(afac, 0.0)
1232 sigt = max(0.0, sigt)
1233 sigt = min(1.0, sigt)
1234 b6 = 100.*(ph(ij,i)-ph(ij,i+1))*sigt*afac/wt(ij, i)
1235 c6 = (water(ij,i+1)*wt(ij,i+1)+wdtrain(ij)/
sigd)/wt(ij, i)
1236 revap = 0.5*(-b6+sqrt(b6*b6+4.*c6))
1237 evap(ij, i) = sigt*afac*revap
1238 water(ij, i) = revap*revap
1244 dhdp = (h(ij,i)-h(ij,i-1))/(p(ij,i-1)-p(ij,i))
1245 dhdp = max(dhdp, 10.0)
1246 mp(ij, i) = 100.*
ginv*lv(ij, i)*
sigd*evap(ij, i)/dhdp
1247 mp(ij, i) = max(mp(ij,i), 0.0)
1251 fac = 20.0/(ph(ij,i-1)-ph(ij,i))
1252 mp(ij, i) = (fac*mp(ij,i+1)+mp(ij,i))/(1.+fac)
1259 IF (p(ij,i)>(0.949*p(ij,1)))
THEN
1260 jtt(ij) = max(jtt(ij), i)
1261 mp(ij, i) = mp(ij, jtt(ij))*(p(ij,1)-p(ij,i))/ &
1262 (p(ij,1)-p(ij,jtt(ij)))
1268 IF (i/=inb(ij))
THEN
1274 IF (mp(ij,i)>mp(ij,i+1))
THEN
1275 rat = mp(ij, i+1)/mp(ij, i)
1276 qp(ij, i) = qp(ij, i+1)*rat + q(ij, i)*(1.0-rat) + &
1277 100.*
ginv*
sigd*(ph(ij,i)-ph(ij,i+1))*(evap(ij,i)/mp(ij,i))
1278 up(ij, i) = up(ij, i+1)*rat + u(ij, i)*(1.-rat)
1279 vp(ij, i) = vp(ij, i+1)*rat + v(ij, i)*(1.-rat)
1281 IF (mp(ij,i+1)>0.0)
THEN
1282 qp(ij, i) = (gz(ij,i+1)-gz(ij,i)+qp(ij,i+1)*(lv(ij,i+1)+t(ij, &
1283 i+1)*(
cl-
cpd))+
cpd*(t(ij,i+1)-t(ij, &
1284 i)))/(lv(ij,i)+t(ij,i)*(
cl-
cpd))
1285 up(ij, i) = up(ij, i+1)
1286 vp(ij, i) = vp(ij, i+1)
1289 qp(ij, i) = min(qp(ij,i), qstm)
1290 qp(ij, i) = max(qp(ij,i), 0.0)
1299 SUBROUTINE cv_yield(nloc, ncum, nd, nk, icb, inb, delt, t, q, u, v, gz, p, &
1300 ph, h, hp, lv, cpn, ep, clw, frac, m, mp, qp, up, vp, wt, water, evap, &
1301 ment, qent, uent, vent, nent, elij, tv, tvp, iflag, wd, qprime, tprime, &
1302 precip, cbmf, ft, fq, fu, fv, ma, qcondc)
1305 include
"cvthermo.h"
1309 INTEGER ncum, nd, nloc
1310 INTEGER nk(nloc), icb(nloc), inb(nloc)
1311 INTEGER nent(nloc, nd)
1313 REAL t(nloc, nd), q(nloc, nd), u(nloc, nd), v(nloc, nd)
1315 REAL p(nloc, nd), ph(nloc, nd+1), h(nloc, nd)
1316 REAL hp(nloc, nd), lv(nloc, nd)
1317 REAL cpn(nloc, nd), ep(nloc, nd), clw(nloc, nd), frac(nloc)
1318 REAL m(nloc, nd), mp(nloc, nd), qp(nloc, nd)
1319 REAL up(nloc, nd), vp(nloc, nd)
1320 REAL wt(nloc, nd), water(nloc, nd), evap(nloc, nd)
1321 REAL ment(nloc, nd, nd), qent(nloc, nd, nd), elij(nloc, nd, nd)
1322 REAL uent(nloc, nd, nd), vent(nloc, nd, nd)
1323 REAL tv(nloc, nd), tvp(nloc, nd)
1328 REAL wd(nloc), tprime(nloc), qprime(nloc)
1330 REAL ft(nloc, nd), fq(nloc, nd), fu(nloc, nd), fv(nloc, nd)
1332 REAL qcondc(nloc, nd)
1335 INTEGER i, j, ij, k, num1
1336 REAL dpinv, cpinv, awat, fqold, ftold, fuold, fvold, delti
1337 REAL work(nloc), am(nloc), amp1(nloc), ad(nloc)
1338 REAL ents(nloc), uav(nloc), vav(nloc), lvcp(nloc, nd)
1339 REAL qcond(nloc, nd), nqcond(nloc, nd), wa(nloc, nd)
1340 REAL siga(nloc, nd), ax(nloc, nd), mac(nloc, nd)
1357 lvcp(i, k) = lv(i, k)/cpn(i, k)
1368 IF (iflag(i)<=1)
THEN
1372 precip(i) = wt(i, 1)*
sigd*water(i, 1)*86400/
g
1381 wd(i) =
betad*abs(mp(i,icb(i)))*0.01*
rrd*t(i, icb(i))/(
sigd*p(i,icb(i)))
1382 qprime(i) = 0.5*(qp(i,1)-q(i,1))
1383 tprime(i) =
lv0*qprime(i)/
cpd
1390 work(i) = 0.01/(ph(i,1)-ph(i,2))
1395 IF ((nk(i)==1) .AND. (k<=inb(i)) .AND. (nk(i)==1))
THEN
1396 am(i) = am(i) + m(i, k)
1401 IF ((
g*work(i)*am(i))>=delti) iflag(i) = 1
1402 ft(i, 1) = ft(i, 1) +
g*work(i)*am(i)*(t(i,2)-t(i,1)+(gz(i,2)-gz(i, &
1404 ft(i, 1) = ft(i, 1) - lvcp(i, 1)*
sigd*evap(i, 1)
1405 ft(i, 1) = ft(i, 1) +
sigd*wt(i, 2)*(
cl-
cpd)*water(i, 2)*(t(i,2)-t(i,1))* &
1407 fq(i, 1) = fq(i, 1) +
g*mp(i, 2)*(qp(i,2)-q(i,1))*work(i) + &
1409 fq(i, 1) = fq(i, 1) +
g*am(i)*(q(i,2)-q(i,1))*work(i)
1410 fu(i, 1) = fu(i, 1) +
g*work(i)*(mp(i,2)*(up(i,2)-u(i,1))+am(i)*(u(i, &
1412 fv(i, 1) = fv(i, 1) +
g*work(i)*(mp(i,2)*(vp(i,2)-v(i,1))+am(i)*(v(i, &
1418 fq(i, 1) = fq(i, 1) +
g*work(i)*ment(i, j, 1)*(qent(i,j,1)-q(i,1))
1419 fu(i, 1) = fu(i, 1) +
g*work(i)*ment(i, j, 1)*(uent(i,j,1)-u(i,1))
1420 fv(i, 1) = fv(i, 1) +
g*work(i)*ment(i, j, 1)*(vent(i,j,1)-v(i,1))
1435 IF (i<=inb(ij)) num1 = num1 + 1
1437 IF (num1<=0)
GO TO 1500
1439 CALL zilch(amp1, ncum)
1440 CALL zilch(ad, ncum)
1442 DO k = i + 1,
nl + 1
1444 IF ((i>=nk(ij)) .AND. (i<=inb(ij)) .AND. (k<=(inb(ij)+1)))
THEN
1445 amp1(ij) = amp1(ij) + m(ij, k)
1451 DO j = i + 1,
nl + 1
1453 IF ((j<=(inb(ij)+1)) .AND. (i<=inb(ij)))
THEN
1454 amp1(ij) = amp1(ij) + ment(ij, k, j)
1462 IF ((i<=inb(ij)) .AND. (j<=inb(ij)))
THEN
1463 ad(ij) = ad(ij) + ment(ij, j, k)
1470 IF (i<=inb(ij))
THEN
1471 dpinv = 0.01/(ph(ij,i)-ph(ij,i+1))
1472 cpinv = 1.0/cpn(ij, i)
1474 ft(ij, i) = ft(ij, i) +
g*dpinv*(amp1(ij)*(t(ij,i+1)-t(ij, &
1475 i)+(gz(ij,i+1)-gz(ij,i))*cpinv)-ad(ij)*(t(ij,i)-t(ij, &
1476 i-1)+(gz(ij,i)-gz(ij,i-1))*cpinv)) -
sigd*lvcp(ij, i)*evap(ij, i)
1477 ft(ij, i) = ft(ij, i) +
g*dpinv*ment(ij, i, i)*(hp(ij,i)-h(ij,i)+t(ij &
1478 ,i)*(
cpv-
cpd)*(q(ij,i)-qent(ij,i,i)))*cpinv
1479 ft(ij, i) = ft(ij, i) +
sigd*wt(ij, i+1)*(
cl-
cpd)*water(ij, i+1)*(t( &
1480 ij,i+1)-t(ij,i))*dpinv*cpinv
1481 fq(ij, i) = fq(ij, i) +
g*dpinv*(amp1(ij)*(q(ij,i+1)-q(ij, &
1482 i))-ad(ij)*(q(ij,i)-q(ij,i-1)))
1483 fu(ij, i) = fu(ij, i) +
g*dpinv*(amp1(ij)*(u(ij,i+1)-u(ij, &
1484 i))-ad(ij)*(u(ij,i)-u(ij,i-1)))
1485 fv(ij, i) = fv(ij, i) +
g*dpinv*(amp1(ij)*(v(ij,i+1)-v(ij, &
1486 i))-ad(ij)*(v(ij,i)-v(ij,i-1)))
1491 IF (i<=inb(ij))
THEN
1492 awat = elij(ij, k, i) - (1.-ep(ij,i))*clw(ij, i)
1493 awat = max(awat, 0.0)
1494 fq(ij, i) = fq(ij, i) +
g*dpinv*ment(ij, k, i)*(qent(ij,k,i)-awat-q &
1496 fu(ij, i) = fu(ij, i) +
g*dpinv*ment(ij, k, i)*(uent(ij,k,i)-u(ij,i &
1498 fv(ij, i) = fv(ij, i) +
g*dpinv*ment(ij, k, i)*(vent(ij,k,i)-v(ij,i &
1501 qcond(ij, i) = qcond(ij, i) + (elij(ij,k,i)-awat)
1502 nqcond(ij, i) = nqcond(ij, i) + 1.
1508 IF ((i<=inb(ij)) .AND. (k<=inb(ij)))
THEN
1509 fq(ij, i) = fq(ij, i) +
g*dpinv*ment(ij, k, i)*(qent(ij,k,i)-q(ij,i &
1511 fu(ij, i) = fu(ij, i) +
g*dpinv*ment(ij, k, i)*(uent(ij,k,i)-u(ij,i &
1513 fv(ij, i) = fv(ij, i) +
g*dpinv*ment(ij, k, i)*(vent(ij,k,i)-v(ij,i &
1519 IF (i<=inb(ij))
THEN
1520 fq(ij, i) = fq(ij, i) +
sigd*evap(ij, i) +
g*(mp(ij,i+1)*(qp(ij, &
1521 i+1)-q(ij,i))-mp(ij,i)*(qp(ij,i)-q(ij,i-1)))*dpinv
1522 fu(ij, i) = fu(ij, i) +
g*(mp(ij,i+1)*(up(ij,i+1)-u(ij, &
1523 i))-mp(ij,i)*(up(ij,i)-u(ij,i-1)))*dpinv
1524 fv(ij, i) = fv(ij, i) +
g*(mp(ij,i+1)*(vp(ij,i+1)-v(ij, &
1525 i))-mp(ij,i)*(vp(ij,i)-v(ij,i-1)))*dpinv
1527 DO k = i + 1, inb(ij)
1528 qcond(ij, i) = qcond(ij, i) + elij(ij, k, i)
1529 nqcond(ij, i) = nqcond(ij, i) + 1.
1532 IF (nent(ij,i)==0)
THEN
1533 qcond(ij, i) = qcond(ij, i) + (1.-ep(ij,i))*clw(ij, i)
1534 nqcond(ij, i) = nqcond(ij, i) + 1.
1536 IF (nqcond(ij,i)/=0.)
THEN
1537 qcond(ij, i) = qcond(ij, i)/nqcond(ij, i)
1547 fqold = fq(ij, inb(ij))
1548 fq(ij, inb(ij)) = fq(ij, inb(ij))*(1.-frac(ij))
1549 fq(ij, inb(ij)-1) = fq(ij, inb(ij)-1) + frac(ij)*fqold*((ph(ij, &
1550 inb(ij))-ph(ij,inb(ij)+1))/(ph(ij,inb(ij)-1)-ph(ij, &
1551 inb(ij))))*lv(ij, inb(ij))/lv(ij, inb(ij)-1)
1552 ftold = ft(ij, inb(ij))
1553 ft(ij, inb(ij)) = ft(ij, inb(ij))*(1.-frac(ij))
1554 ft(ij, inb(ij)-1) = ft(ij, inb(ij)-1) + frac(ij)*ftold*((ph(ij, &
1555 inb(ij))-ph(ij,inb(ij)+1))/(ph(ij,inb(ij)-1)-ph(ij, &
1556 inb(ij))))*cpn(ij, inb(ij))/cpn(ij, inb(ij)-1)
1557 fuold = fu(ij, inb(ij))
1558 fu(ij, inb(ij)) = fu(ij, inb(ij))*(1.-frac(ij))
1559 fu(ij, inb(ij)-1) = fu(ij, inb(ij)-1) + frac(ij)*fuold*((ph(ij, &
1560 inb(ij))-ph(ij,inb(ij)+1))/(ph(ij,inb(ij)-1)-ph(ij,inb(ij))))
1561 fvold = fv(ij, inb(ij))
1562 fv(ij, inb(ij)) = fv(ij, inb(ij))*(1.-frac(ij))
1563 fv(ij, inb(ij)-1) = fv(ij, inb(ij)-1) + frac(ij)*fvold*((ph(ij, &
1564 inb(ij))-ph(ij,inb(ij)+1))/(ph(ij,inb(ij)-1)-ph(ij,inb(ij))))
1575 ents(ij) = ents(ij) + (cpn(ij,i)*ft(ij,i)+lv(ij,i)*fq(ij,i))*(ph(ij,i)- &
1577 uav(ij) = uav(ij) + fu(ij, i)*(ph(ij,i)-ph(ij,i+1))
1578 vav(ij) = vav(ij) + fv(ij, i)*(ph(ij,i)-ph(ij,i+1))
1582 ents(ij) = ents(ij)/(ph(ij,1)-ph(ij,inb(ij)+1))
1583 uav(ij) = uav(ij)/(ph(ij,1)-ph(ij,inb(ij)+1))
1584 vav(ij) = vav(ij)/(ph(ij,1)-ph(ij,inb(ij)+1))
1588 ft(ij, i) = ft(ij, i) - ents(ij)/cpn(ij, i)
1589 fu(ij, i) = (1.-
cu)*(fu(ij,i)-uav(ij))
1590 fv(ij, i) = (1.-
cu)*(fv(ij,i)-vav(ij))
1596 IF ((q(i,k)+delt*fq(i,k))<0.0) iflag(i) = 10
1602 IF (iflag(i)>2)
THEN
1609 IF (iflag(i)>2)
THEN
1626 ma(i, k) = ma(i, k+1) + m(i, k)
1640 DO i = nk(ij), inb(ij)
1641 DO k = i + 1, inb(ij) + 1
1642 mac(ij, i) = mac(ij, i) + m(ij, k)
1645 DO i = icb(ij), inb(ij) - 1
1648 ax(ij, i) = ax(ij, i) +
rrd*(tvp(ij,j)-tv(ij,j)) &
1649 *(ph(ij,j)-ph(ij,j+1))/p(ij, j)
1651 IF (ax(ij,i)>0.0)
THEN
1652 wa(ij, i) = sqrt(2.*ax(ij,i))
1657 siga(ij, i) = mac(ij, i)/wa(ij, i) &
1658 *
rrd*tvp(ij, i)/p(ij, i)/100./
delta
1659 siga(ij, i) = min(siga(ij,i), 1.0)
1660 qcondc(ij, i) = siga(ij, i)*clw(ij, i)*(1.-ep(ij,i)) &
1661 +(1.-siga(ij,i))*qcond(ij, i)
1668 SUBROUTINE cv_uncompress(nloc, len, ncum, nd, idcum, iflag, precip, cbmf, ft, &
1669 fq, fu, fv, ma, qcondc, iflag1, precip1, cbmf1, ft1, fq1, fu1, fv1, ma1, &
1676 INTEGER len, ncum, nd, nloc
1679 REAL precip(nloc), cbmf(nloc)
1680 REAL ft(nloc, nd), fq(nloc, nd), fu(nloc, nd), fv(nloc, nd)
1682 REAL qcondc(nloc, nd)
1686 REAL precip1(len), cbmf1(len)
1687 REAL ft1(len, nd), fq1(len, nd), fu1(len, nd), fv1(len, nd)
1689 REAL qcondc1(len, nd)
1695 precip1(idcum(i)) = precip(i)
1696 cbmf1(idcum(i)) = cbmf(i)
1697 iflag1(idcum(i)) = iflag(i)
1702 ft1(idcum(i), k) = ft(i, k)
1703 fq1(idcum(i), k) = fq(i, k)
1704 fu1(idcum(i), k) = fu(i, k)
1705 fv1(idcum(i), k) = fv(i, k)
1706 ma1(idcum(i), k) = ma(i, k)
1707 qcondc1(idcum(i), k) = qcondc(i, k)
!$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!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffs real dtmax real cu real betad real damp real delta COMMON cvparam nlm tlcrit sigd coeffs damp
!$Id!Parameters for minorig
!$Id mode_top_bound COMMON comconstr g
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffs real dtmax real cu real betad real damp real delta COMMON cvparam nlm tlcrit sigd coeffs dtmax
subroutine cv_closure(nloc, ncum, nd, nk, icb, tv, tvp, p, ph, dph, plcl, cpn, iflag, cbmf)
!$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!Thermodynamical constants for t0 real clmci real epsim1 real hrd real grav COMMON cvthermo rowl cpvmcl hrd
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigs
subroutine cv_mixing(nloc, ncum, nd, icb, nk, inb, inb1, ph, t, q, qs, u, v, h, lv, qnk, hp, tv, tvp, ep, clw, cbmf, m, ment, qent, uent, vent, nent, sij, elij)
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real ginv
!$Id!Thermodynamical constants for t0 real clmci real eps
subroutine cv_compress(len, nloc, ncum, nd, iflag1, nk1, icb1, cbmf1, plcl1, tnk1, qnk1, gznk1, t1, q1, qs1, u1, v1, gz1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, iflag, nk, icb, cbmf, plcl, tnk, qnk, gznk, t, q, qs, u, v, gz, h, lv, cpn, p, ph, tv, tp, tvp, clw, dph)
subroutine cv_prelim(len, nd, ndp1, t, q, p, ph, lv, cpn, tv, gz, h, hm)
!$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!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real omtsnow
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
subroutine cv_trigger(len, nd, icb, cbmf, tv, tvp, iflag)
subroutine cv_undilute2(nloc, ncum, nd, icb, nk, tnk, qnk, gznk, t, q, qs, gz, p, dph, h, tv, lv, inb, inb1, tp, tvp, clw, hp, ep, sigp, frac)
subroutine cv_unsat(nloc, ncum, nd, inb, t, q, qs, gz, u, v, p, ph, h, lv, ep, sigp, clw, m, ment, elij, iflag, mp, qp, up, vp, wt, water, evap)
!$Id!Thermodynamical constants for cl
!$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
!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)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffs real dtmax real cu real betad real damp real delta COMMON cvparam nlm tlcrit sigd coeffs cu
!$Id!Parameters for nlm real spfac!IM cf epmax real ptcrit real omtrain real dttrig real alpha real delta real betad COMMON cv30param nlm spfac &!IM cf ptcrit omtrain dttrig alpha
subroutine cv_undilute1(len, nd, t, q, qs, gz, p, nk, icb, icbmax, tp, tvp, clw)
subroutine cv_yield(nloc, ncum, nd, nk, icb, inb, delt, t, q, u, v, gz, p, ph, h, hp, lv, cpn, ep, clw, frac, m, mp, qp, up, vp, wt, water, evap, ment, qent, uent, vent, nent, elij, tv, tvp, iflag, wd, qprime, tprime, precip, cbmf, ft, fq, fu, fv, ma, qcondc)
!$Id!Thermodynamical constants for t0 real clmci real epsim1 real hrd real grav COMMON cvthermo rowl cpvmcl epsim1
subroutine cv_uncompress(nloc, len, ncum, nd, idcum, iflag, precip, cbmf, ft, fq, fu, fv, ma, qcondc, iflag1, precip1, cbmf1, ft1, fq1, fu1, fv1, ma1, qcondc1)
subroutine cv_feed(len, nd, t, q, qs, p, hm, gz, nk, icb, icbmax, iflag, tnk, qnk, gznk, plcl)
!$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!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffs real dtmax real cu real betad real damp real delta COMMON cvparam nlm tlcrit entp
!$Id!Thermodynamical constants for t0 real clmci real epsi
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffr
!$Id!Parameters for nlm real sigd
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout