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