4 SUBROUTINE conlmd (dtime, paprs, pplay, t, q, conv_q,
5 s d_t, d_q, rain, snow, ibas, itop)
21 REAL paprs(klon,
klev+1)
25 REAL conv_q(klon,
klev)
37 REAL d_t_bis(klon,
klev)
38 REAL d_q_bis(klon,
klev)
41 INTEGER ibas_bis(klon)
42 INTEGER itop_bis(klon)
43 REAL d_ql(klon,
klev), d_ql_bis(klon,
klev)
44 REAL rneb(klon,
klev), rneb_bis(klon,
klev)
47 REAL zlvdcp, zlsdcp, zdelta, zz, za, zb
52 s d_t, d_q, d_ql, rneb,
53 s rain, snow, ibas, itop)
59 s d_t_bis, d_q_bis, d_ql_bis, rneb_bis,
60 s rain_bis, snow_bis, ibas_bis, itop_bis)
63 d_t(
i,
k) = d_t(
i,
k) + d_t_bis(
i,
k)
64 d_q(
i,
k) = d_q(
i,
k) + d_q_bis(
i,
k)
65 d_ql(
i,
k) = d_ql(
i,
k) + d_ql_bis(
i,
k)
69 rain(
i) = rain(
i) + rain_bis(
i)
70 snow(
i) = snow(
i) + snow_bis(
i)
71 ibas(
i) = min(ibas(
i),ibas_bis(
i))
72 itop(
i) = max(itop(
i),itop_bis(
i))
80 zlvdcp=rlvtt/rcpd/(1.0+rvtmp2*
q(
i,
k))
81 zlsdcp=rlstt/rcpd/(1.0+rvtmp2*
q(
i,
k))
82 zdelta = max(0.,sign(1.,rtt-t(
i,
k)))
85 za = - max(0.0,zz) * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
86 d_t(
i,
k) = d_t(
i,
k) + za
87 d_q(
i,
k) = d_q(
i,
k) + zb
93 SUBROUTINE conman (dtime, paprs, pplay, t, q,
94 s d_t, d_q, d_ql, rneb,
95 s rain, snow, ibas, itop)
116 REAL paprs(klon,
klev+1)
129 LOGICAL accompli(klon)
139 REAL w_d_t(klon,
klev), w_d_q(klon,
klev), w_d_ql(klon,
klev)
140 REAL w_rneb(klon,
klev)
141 REAL w_rain(klon), w_snow(klon)
142 INTEGER w_ibas(klon), w_itop(klon)
149 REAL zqs1, zqs2, zdqs1, zdqs2
153 REAL zdelta, zcor, zcvm5
179 DATA appel1er /.true./
183 print*,
'conman, nb:', nb
184 print*,
'conman, frac:',
frac
185 print*,
'conman, opt_cld:', opt_cld
215 zdelta=max(0.,sign(1.,rtt-t(
i,
k)))
216 zcvm5=r5les*rlvtt*(1.-zdelta) + zdelta*r5ies*rlstt
217 zcvm5 = zcvm5 /rcpd/(1.0+rvtmp2*
q(
i,
k))
218 zqs1= r2es*foeew(t(
i,
k),zdelta)/
pplay(
i,
k)
220 zcor=1./(1.-retv*zqs1)
222 zdqs1 =foede(t(
i,
k),zdelta,zcvm5,zqs1,zcor)
224 zdelta=max(0.,sign(1.,rtt-t(
i,
k+1)))
225 zcvm5=r5les*rlvtt*(1.-zdelta) + zdelta*r5ies*rlstt
226 zcvm5 = zcvm5 /rcpd/(1.0+rvtmp2*
q(
i,
k+1))
227 zqs2= r2es*foeew(t(
i,
k+1),zdelta)/
pplay(
i,
k+1)
229 zcor=1./(1.-retv*zqs2)
231 zdqs2 =foede(t(
i,
k+1),zdelta,zcvm5,zqs2,zcor)
233 IF (t(
i,
k) .LT. t_coup)
THEN
235 zdqs1= dqsats(t(
i,
k),zqs1)
238 zdqs2= dqsats(t(
i,
k+1),zqs2)
241 zdqs1= dqsatl(t(
i,
k),zqs1)
244 zdqs2= dqsatl(t(
i,
k+1),zqs2)
247 zdp1 = paprs(
i,
k) - paprs(
i,
k+1)
248 zdp2 = paprs(
i,
k+1) - paprs(
i,
k+2)
250 . *( rd*(t(
i,
k)*zdp1+t(
i,
k+1)*zdp2)/(zdp1+zdp2)
251 . +rlvtt*(zqs1*zdp1+zqs2*zdp2)/(zdp1+zdp2)
252 . ) / (1.0+(zdqs1*zdp1+zdqs2*zdp2)/(zdp1+zdp2) )
253 zflo = t(
i,
k) + zgamdz - t(
i,
k+1)
254 zsat = (
q(
i,
k)-zqs1)*zdp1 + (
q(
i,
k+1)-zqs2)*zdp2
255 IF (zflo.GT.0.0) afaire(
i) = .true.
260 imprim = mod(ncpt,48).EQ.0
266 zq1 =
q(
i,
k) * (1.0-ratqs)
267 zq2 =
q(
i,
k) * (1.0+ratqs)
268 w_q(
i,
k) = zq2 -
frac(
n)/2.0 * (zq2-zq1)
274 e afaire, opt_cld(
n),
275 s w_d_t, w_d_q, w_d_ql, w_rneb,
276 s w_rain, w_snow, w_ibas, w_itop,accompli,imprim)
279 IF (afaire(
i) .AND. accompli(
i))
THEN
283 IF (nint(w_rneb(
i,
k)).EQ.1) rneb(
i,
k) =
frac(
n)
288 IF (afaire(
i) .AND. accompli(
i))
THEN
291 ibas(
i) = min(ibas(
i),w_ibas(
i))
292 itop(
i) = max(itop(
i),w_itop(
i))
296 IF(afaire(
i) .AND. accompli(
i)) afaire(
i) = .
false.
305 SUBROUTINE conmanv (dtime, paprs, pplay, t, q,
307 s d_t, d_q, d_ql, rneb,
308 s rain, snow, ibas, itop,accompli,imprim)
327 REAL paprs(klon,
klev+1)
341 LOGICAL accompli(klon)
362 REAL deep_sig, deep_to
373 INTEGER i,
k, k1min, k1max, k2min, k2max, is
374 REAL zgamdz(klon,
klev-1)
376 REAL zqs(klon,
klev), zdqs(klon,
klev)
377 REAL zqmqsdp(klon,
klev)
378 REAL ztnew(klon,
klev), zqnew(klon,
klev)
379 REAL zcond(klon), zvapo(klon), zrapp(klon)
380 REAL zrfl(klon), zrfln, zqev, zqevt
383 REAL za(klon), zb(klon), zc(klon)
384 INTEGER k1(klon), k2(klon)
385 REAL zdelta, zcor, zcvm5
387 LOGICAL possible(klon), todo(klon), etendre(klon)
388 LOGICAL aller(klon), todobis(klon)
390 INTEGER nbtodo, nbdone
399 delp(
i,
k) = paprs(
i,
k) - paprs(
i,
k+1)
432 zdelta=max(0.,sign(1.,rtt-zt(
i,
k)))
433 zcvm5=r5les*rlvtt*(1.-zdelta) + zdelta*r5ies*rlstt
434 zcvm5 = zcvm5 /rcpd/(1.0+rvtmp2*zq(
i,
k))
436 zqs(
i,
k)=min(0.5,zqs(
i,
k))
437 zcor=1./(1.-retv*zqs(
i,
k))
438 zqs(
i,
k)=zqs(
i,
k)*zcor
439 zdqs(
i,
k) =foede(zt(
i,
k),zdelta,zcvm5,zqs(
i,
k),zcor)
441 IF (zt(
i,
k) .LT. t_coup)
THEN
443 zdqs(
i,
k)= dqsats(zt(
i,
k),zqs(
i,
k))
446 zdqs(
i,
k)= dqsatl(zt(
i,
k),zqs(
i,
k))
451 zqmqsdp(
i,
k) = (zq(
i,
k)-zqs(
i,
k)) * delp(
i,
k)
465 . *( rd*(zt(
i,
k)*delp(
i,
k)+zt(
i,
k+1)*delp(
i,
k+1))
466 . /(delp(
i,
k)+delp(
i,
k+1))
467 . +rlvtt*(zqs(
i,
k)*delp(
i,
k)+zqs(
i,
k+1)*delp(
i,
k+1))
468 . /(delp(
i,
k)+delp(
i,
k+1))
469 . ) / (1.0+(zdqs(
i,
k)*delp(
i,
k)+zdqs(
i,
k+1)*delp(
i,
k+1))
470 . /(delp(
i,
k)+delp(
i,
k+1)) )
484 zflo(
i) = zt(
i,
k-1) + zgamdz(
i,
k-1) - zt(
i,
k)
485 zsat(
i) = zqmqsdp(
i,
k) + zqmqsdp(
i,
k-1)
486 IF (zflo(
i).GT.0.0 .AND. zsat(
i).GT.0.0) possible(
i) = .true.
492 IF (possible(
i))
THEN
504 IF (possible(
i)) k2min = min(k2min,k2(
i))
506 IF (k2min.EQ.
klev) goto 860
509 IF (possible(
i) .AND.
k.GE.k2(
i) .AND. aller(
i))
THEN
510 zflo(
i) = zt(
i,
k) + zgamdz(
i,
k) - zt(
i,
k+1)
511 zsat(
i) = zqmqsdp(
i,
k) + zqmqsdp(
i,
k+1)
512 IF (zflo(
i).GT.0.0 .AND. zsat(
i).GT.0.0)
THEN
522 IF (possible(
i).AND.aller(
i))
THEN
551 IF (todo(
i)) k2min = min(k2min,k2(
i))
553 IF (k2min.LT.
klev)
THEN
556 IF (todo(
i) .AND.
k.GT.k2(
i) .AND. aller(
i))
THEN
557 zsat(
i) = zsat(
i) + zqmqsdp(
i,
k)
558 zflo(
i) = zt(
i,
k-1) + zgamdz(
i,
k-1) - zt(
i,
k)
559 IF (zflo(
i).LE.0.0 .OR. zsat(
i).LE.0.0)
THEN
600 IF (k2(
i).LE.k1(
i)) is = is + 1
604 print*,
"Impossible: k1 trop grand ou k2 trop petit"
614 k1min = min(k1min,k1(
i))
615 k1max = max(k1max,k1(
i))
616 k2max = max(k2max,k2(
i))
624 zb(
i) = ( rcpd*(1.+zdqs(
i,
k))*(zt(
i,
k)-za(
i))
625 . -rlvtt*(zqs(
i,
k)-zq(
i,
k)) )*delp(
i,
k)
626 zc(
i) = delp(
i,
k) * rcpd*(1.+zdqs(
i,
k))
632 IF (todo(
i) .AND.
k.GE.(k1(
i)+1) .AND.
k.LE.k2(
i))
THEN
633 za(
i) = za(
i) + zgamdz(
i,
k-1)
634 zb(
i) = zb(
i)+(rcpd*(1.+zdqs(
i,
k))*(zt(
i,
k)-za(
i))
635 . -rlvtt*(zqs(
i,
k)-zq(
i,
k)) ) * delp(
i,
k)
636 zc(
i) = zc(
i) + delp(
i,
k)*rcpd*(1.+zdqs(
i,
k))
644 ztnew(
i,
k) = zb(
i)/zc(
i)
645 zqnew(
i,
k) = zqs(
i,
k) + (ztnew(
i,
k)-zt(
i,
k))
646 . *rcpd/rlvtt*zdqs(
i,
k)
652 IF (todo(
i) .AND.
k.GE.(k1(
i)+1) .AND.
k.LE.k2(
i))
THEN
653 ztnew(
i,
k) = ztnew(
i,
k-1) + zgamdz(
i,
k-1)
654 zqnew(
i,
k) = zqs(
i,
k) + (ztnew(
i,
k)-zt(
i,
k))
655 . *rcpd/rlvtt*zdqs(
i,
k)
667 IF (todo(
i) .AND.
k.GE.k1(
i) .AND.
k.LE.k2(
i))
THEN
669 zcond(
i) = zcond(
i) + (zq(
i,
k)-zqnew(
i,
k)) *delp(
i,
k)/rg
677 IF (todo(
i).AND.zcond(
i).LE.0.) todo(
i) = .
false.
684 IF (todo(
i)) accompli(
i) = .true.
698 toliq(
i) = tomax-((paprs(
i,k1(
i))-paprs(
i,k2(
i)+1))
700 . *(tomax-tomin)/(dpmax-dpmin)
701 toliq(
i) = max(tomin,min(tomax,toliq(
i)))
702 IF (
pplay(
i,k2(
i))/paprs(
i,1) .LE. deep_sig) toliq(
i) = deep_to
703 IF (old_tau) toliq(
i) = 1.0
722 IF (opt_cld.EQ.0)
THEN
725 IF (todo(
i)) zrfl(
i) = zcond(
i) /
dtime
728 ELSE IF (opt_cld.EQ.1)
THEN
731 IF (todo(
i)) zvapo(
i) = 0.0
735 IF (todo(
i) .AND.
k.GE.k1(
i) .AND.
k.LE.k2(
i))
736 . zvapo(
i) = zvapo(
i) + zqnew(
i,
k)*delp(
i,
k)/rg
741 zrapp(
i) = toliq(
i) * zcond(
i) / zvapo(
i)
742 zrapp(
i) = max(0.,min(1.,zrapp(
i)))
743 zrfl(
i) = (1.0-toliq(
i)) * zcond(
i) /
dtime
748 IF (todo(
i) .AND.
k.GE.k1(
i) .AND.
k.LE.k2(
i))
THEN
749 d_ql(
i,
k) = d_ql(
i,
k) + zrapp(
i) * zqnew(
i,
k)
754 ELSE IF (opt_cld.EQ.2)
THEN
757 IF (todo(
i)) zvapo(
i) = 0.0
761 IF (todo(
i) .AND.
k.GE.k1(
i) .AND.
k.LE.k2(
i))
762 . zvapo(
i) = zvapo(
i) + delp(
i,
k)/rg
767 IF (todo(
i) .AND.
k.GE.k1(
i) .AND.
k.LE.k2(
i))
THEN
768 d_ql(
i,
k) = d_ql(
i,
k) + toliq(
i) * zcond(
i) / zvapo(
i)
773 IF (todo(
i)) zrfl(
i) = (1.0-toliq(
i)) * zcond(
i) /
dtime
776 ELSE IF (opt_cld.EQ.3)
THEN
779 IF (todo(
i)) zvapo(
i) = 0.0
783 IF (todo(
i) .AND.
k.GE.k1(
i) .AND.
k.LE.k2(
i))
784 . zvapo(
i) = zvapo(
i) + max(0.0,zq(
i,
k)-zqnew(
i,
k))
790 IF (todo(
i) .AND.
k.GE.k1(
i) .AND.
k.LE.k2(
i) .AND.
792 . d_ql(
i,
k) = d_ql(
i,
k) + toliq(
i) * zcond(
i) / zvapo(
i)
793 . * max(0.0,zq(
i,
k)-zqnew(
i,
k))
797 IF (todo(
i)) zrfl(
i) = (1.0-toliq(
i)) * zcond(
i) /
dtime
800 ELSE IF (opt_cld.EQ.4)
THEN
806 IF (todo(
i)) zvapo(
i) = 0.0
810 IF (todo(
i) .AND.
k.GE.(k1(
i)+1) .AND.
k.LE.k2(
i))
811 . zvapo(
i) = zvapo(
i) + delp(
i,
k) / rg
817 IF (todo(
i) .AND.
k.GE.(k1(
i)+1) .AND.
k.LE.k2(
i))
818 . d_ql(
i,
k) = d_ql(
i,
k) + toliq(
i) * zcond(
i) / zvapo(
i)
823 IF (todo(
i)) zrfl(
i) = (1.0-toliq(
i)) * zcond(
i) /
dtime
828 print*,
"opt_cld est faux:", opt_cld
836 IF (evap_prec .AND. (k1max.GE.2))
THEN
837 DO k = k1max-1, 1, -1
839 IF (todo(
i) .AND.
k.LT.k1(
i) .AND. zrfl(
i).GT.0.0)
THEN
840 zqev = max(0.0, (zqs(
i,
k)-zq(
i,
k))*zalfa )
841 zqevt = coef_eva * (1.0-zq(
i,
k)/zqs(
i,
k))*sqrt(zrfl(
i))
843 zqevt = max(0.0,min(zqevt,zrfl(
i))) * rg*
dtime/delp(
i,
k)
844 zqev = min(zqev, zqevt)
845 zrfln = zrfl(
i) - zqev*(delp(
i,
k))/rg/
dtime
846 zq(
i,
k) = zq(
i,
k) - (zrfln-zrfl(
i))
848 zt(
i,
k) = zt(
i,
k) + (zrfln-zrfl(
i))
850 . * rlvtt/rcpd/(1.0+rvtmp2*zq(
i,
k))
861 IF (zt(
i,1) .GT. rtt)
THEN
862 rain(
i) = rain(
i) + zrfl(
i)
864 snow(
i) = snow(
i) + zrfl(
i)
873 IF (todo(
i) .AND.
k.GE.k1(
i) .AND.
k.LE.k2(
i))
THEN
887 zdelta=max(0.,sign(1.,rtt-zt(
i,
k)))
888 zcvm5=r5les*rlvtt*(1.-zdelta) + zdelta*r5ies*rlstt
889 zcvm5 = zcvm5 /rcpd/(1.0+rvtmp2*zq(
i,
k))
891 zqs(
i,
k)=min(0.5,zqs(
i,
k))
892 zcor=1./(1.-retv*zqs(
i,
k))
893 zqs(
i,
k)=zqs(
i,
k)*zcor
894 zdqs(
i,
k) =foede(zt(
i,
k),zdelta,zcvm5,zqs(
i,
k),zcor)
896 IF (zt(
i,
k) .LT. t_coup)
THEN
898 zdqs(
i,
k)= dqsats(zt(
i,
k),zqs(
i,
k))
901 zdqs(
i,
k)= dqsatl(zt(
i,
k),zqs(
i,
k))
914 . *( rd*(zt(
i,
k)*delp(
i,
k)+zt(
i,
k+1)*delp(
i,
k+1))
915 . /(delp(
i,
k)+delp(
i,
k+1))
916 . +rlvtt*(zqs(
i,
k)*delp(
i,
k)+zqs(
i,
k+1)*delp(
i,
k+1))
917 . /(delp(
i,
k)+delp(
i,
k+1))
918 . ) / (1.0+(zdqs(
i,
k)*delp(
i,
k)+zdqs(
i,
k+1)*delp(
i,
k+1))
919 . /(delp(
i,
k)+delp(
i,
k+1)) )
930 zqmqsdp(
i,
k) = (zq(
i,
k)-zqs(
i,
k))*delp(
i,
k)
943 IF (todo(
i) .AND. k1(
i).GT.(kbase+1))
THEN
945 zflo(
i) = zt(
i,
k-1) + zgamdz(
i,
k-1) - zt(
i,
k)
946 zsat(
i) = zqmqsdp(
i,
k) + zqmqsdp(
i,
k-1)
950 IF (zflo(
i).GT.0.0 .AND. zsat(
i).GT.0.0)
THEN
953 k1max = max(k1max,k1(
i))
959 IF (k1max.GT.(kbase+1))
THEN
960 DO k = k1max, kbase+1, -1
962 IF (etendre(
i) .AND.
k.LT.k1(
i) .AND. aller(
i))
THEN
963 zsat(
i) = zsat(
i) + zqmqsdp(
i,
k)
964 zflo(
i) = zt(
i,
k) + zgamdz(
i,
k) - zt(
i,
k+1)
965 IF (zsat(
i).LE.0.0 .OR. zflo(
i).LE.0.0)
THEN
974 IF (etendre(
i).AND.aller(
i))
THEN
1000 IF (etendre(
i))
THEN
1018 IF (todobis(
i) .AND. k2(
i).LT.
klev)
THEN
1020 possible(
i) = .true.
1023 IF (is.GT.0) goto 810
1031 IF (accompli(
i))
THEN
1032 d_t(
i,
k) = zt(
i,
k) - t(
i,
k)
1033 zq(
i,
k) = max(zq(
i,
k),seuil_vap)
1040 IF (accompli(
i))
THEN
1042 IF (rneb(
i,
k).GT.0.0)
THEN
1049 IF (rneb(
i,
k).GT.0.0)
THEN
1062 IF (afaire(
i)) nbtodo = nbtodo + 1
1063 IF (accompli(
i)) nbdone = nbdone + 1
1065 print*,
"nbTodo, nbDone=", nbtodo, nbdone
1070 SUBROUTINE conkuo(dtime, paprs, pplay, t, q, conv_q,
1071 s d_t, d_q, d_ql, rneb,
1072 s rain, snow, ibas, itop)
1088 REAL paprs(klon,
klev+1)
1092 REAL conv_q(klon,
klev)
1096 REAL d_ql(klon,
klev)
1097 REAL rneb(klon,
klev)
1129 REAL deep_sig, deep_to
1136 INTEGER i,
k, kbmin, kbmax, khmax
1137 REAL ztotal(klon,
klev), zdeh(klon,
klev)
1140 REAL zdqs(klon,
klev)
1141 REAL ztemp(klon,
klev)
1142 REAL zpres(klon,
klev)
1146 INTEGER kb(klon), kh(klon)
1148 REAL zcond(klon), zvapo(klon), zrapp(klon)
1149 REAL zrfl(klon), zrfln, zqev, zqevt
1150 REAL zdelta, zcvm5, zcor
1162 DATA appel1er /.true./
1165 print*,
'conkuo, calcfcl:', calcfcl
1166 IF (.NOT.calcfcl) print*,
'conkuo, ldepar:', ldepar
1167 print*,
'conkuo, opt_cld:', opt_cld
1168 print*,
'conkuo, evap_prec:', evap_prec
1169 print*,
'conkuo, new_deh:', new_deh
1195 zdelta=max(0.,sign(1.,rtt-t(
i,
k)))
1196 zcvm5=r5les*rlvtt*(1.-zdelta) + zdelta*r5ies*rlstt
1197 zcvm5 = zcvm5 /rcpd/(1.0+rvtmp2*
q(
i,
k))
1199 zqs(
i,
k)=min(0.5,zqs(
i,
k))
1200 zcor=1./(1.-retv*zqs(
i,
k))
1201 zqs(
i,
k)=zqs(
i,
k)*zcor
1202 zdqs(
i,
k) =foede(t(
i,
k),zdelta,zcvm5,zqs(
i,
k),zcor)
1204 IF (t(
i,
k).LT.t_coup)
THEN
1206 zdqs(
i,
k) = dqsats(t(
i,
k),zqs(
i,
k))
1209 zdqs(
i,
k) = dqsatl(t(
i,
k),zqs(
i,
k))
1218 zgz(
i,1) = rd * t(
i,1) / (0.5*(paprs(
i,1)+
pplay(
i,1)))
1223 zgz(
i,
k) = zgz(
i,
k-1)
1224 . + rd * 0.5*(t(
i,
k-1)+t(
i,
k)) / paprs(
i,
k)
1233 ztotal(
i,
k) = rcpd*t(
i,
k) + rlvtt*zqs(
i,
k) + zgz(
i,
k)
1248 CALL
kuofcl(ztemp,
q, zgz, zpres, ldcum, kb)
1253 zdeh(
i,
k) = ztotal(
i,
k-1) - ztotal(
i,
k)
1255 zdeh(
i,
k) = rcpd * (t(
i,
k-1)-t(
i,
k))
1256 . - rd *0.5*(t(
i,
k-1)+t(
i,
k))/paprs(
i,
k)
1258 . + rlvtt*(zqs(
i,
k-1)-zqs(
i,
k))
1260 zdeh(
i,
k) = zdeh(
i,
k) * 0.5
1265 IF (ldcum(
i) .AND.
k.GE.(kb(
i)+1))
THEN
1267 zdeh(
i,
k) = zdeh(
i,
k-1) + (ztotal(
i,
k-1)-ztotal(
i,
k))
1269 zdeh(
i,
k) = zdeh(
i,
k-1)
1270 . + rcpd * (t(
i,
k-1)-t(
i,
k))
1271 . - rd *0.5*(t(
i,
k-1)+t(
i,
k))/paprs(
i,
k)
1273 . + rlvtt*(zqs(
i,
k-1)-zqs(
i,
k))
1284 zdeh(
i,
k) = ztotal(
i,
k-1) - ztotal(
i,
k)
1286 zdeh(
i,
k) = rcpd * (t(
i,
k-1)-t(
i,
k))
1287 . - rd *0.5*(t(
i,
k-1)+t(
i,
k))/paprs(
i,
k)
1289 . + rlvtt*(zqs(
i,
k-1)-zqs(
i,
k))
1291 zdeh(
i,
k) = zdeh(
i,
k) * 0.5
1293 DO k = ldepar+1,
klev
1296 zdeh(
i,
k) = zdeh(
i,
k-1) + (ztotal(
i,
k-1)-ztotal(
i,
k))
1298 zdeh(
i,
k) = zdeh(
i,
k-1)
1299 . + rcpd * (t(
i,
k-1)-t(
i,
k))
1300 . - rd *0.5*(t(
i,
k-1)+t(
i,
k))/paprs(
i,
k)
1302 . + rlvtt*(zqs(
i,
k-1)-zqs(
i,
k))
1322 IF (
k.GE.kb(
i) .AND. ldcum(
i))
THEN
1327 . *(paprs(
i,
k)-paprs(
i,
k+1))
1328 zvirt(
i)=zvirt(
i)+(zdeh(
i,
k)/rlvtt+zqs(
i,
k)-
q(
i,
k))
1329 . *(paprs(
i,
k)-paprs(
i,
k+1))
1336 todo(
i) = ldcum(
i) .AND. kh(
i).GT.kb(
i) .AND. zconv(
i).GT.0.0
1344 kbmin = min(kbmin,kb(
i))
1345 kbmax = max(kbmax,kb(
i))
1346 khmax = max(khmax,kh(
i))
1354 zfrac(
i) = max(0.0,min(zconv(
i)/zvirt(
i), 1.0))
1367 IF (todo(
i) .AND.
k.GE.kb(
i) .AND.
k.LE.kh(
i))
THEN
1368 zvar = zdeh(
i,
k)/(1.+zdqs(
i,
k))
1369 d_t(
i,
k) = zvar * zfrac(
i) / rcpd
1370 d_q(
i,
k) = (zvar*zdqs(
i,
k)/rlvtt+zqs(
i,
k)-
q(
i,
k))*zfrac(
i)
1372 zcond(
i) = zcond(
i) - d_q(
i,
k) *(paprs(
i,
k)-paprs(
i,
k+1))/rg
1373 rneb(
i,
k) = zfrac(
i)
1379 IF (todo(
i) .AND. zcond(
i).LT.0.0)
THEN
1380 print*,
'WARNING: cond. negative (Kuo) ',
1381 .
i,kb(
i),kh(
i), zcond(
i)
1402 toliq(
i) = tomax-((paprs(
i,kb(
i))-paprs(
i,kh(
i)+1))
1403 . /paprs(
i,1)-dpmin)
1404 . *(tomax-tomin)/(dpmax-dpmin)
1405 toliq(
i) = max(tomin,min(tomax,toliq(
i)))
1406 IF (
pplay(
i,kh(
i))/paprs(
i,1) .LE. deep_sig) toliq(
i) = deep_to
1407 IF (old_tau) toliq(
i) = 1.0
1426 IF (opt_cld.EQ.0)
THEN
1429 IF (todo(
i)) zrfl(
i) = zcond(
i) /
dtime
1432 ELSE IF (opt_cld.EQ.1)
THEN
1435 IF (todo(
i)) zvapo(
i) = 0.0
1439 IF (todo(
i) .AND.
k.GE.kb(
i) .AND.
k.LE.kh(
i))
THEN
1440 zvapo(
i) = zvapo(
i) + (
q(
i,
k)+d_q(
i,
k))
1441 . *(paprs(
i,
k)-paprs(
i,
k+1))/rg
1447 zrapp(
i) = toliq(
i) * zcond(
i) / zvapo(
i)
1448 zrapp(
i) = max(0.,min(1.,zrapp(
i)))
1453 IF (todo(
i) .AND.
k.GE.kb(
i) .AND.
k.LE.kh(
i))
THEN
1454 d_ql(
i,
k) = zrapp(
i) * (
q(
i,
k)+d_q(
i,
k))
1460 zrfl(
i) = (1.0-toliq(
i)) * zcond(
i) /
dtime
1464 ELSE IF (opt_cld.EQ.2)
THEN
1467 IF (todo(
i)) zvapo(
i) = 0.0
1471 IF (todo(
i) .AND.
k.GE.kb(
i) .AND.
k.LE.kh(
i))
THEN
1472 zvapo(
i) = zvapo(
i) + (paprs(
i,
k)-paprs(
i,
k+1))/rg
1478 IF (todo(
i) .AND.
k.GE.kb(
i) .AND.
k.LE.kh(
i))
THEN
1479 d_ql(
i,
k) = toliq(
i) * zcond(
i) / zvapo(
i)
1485 zrfl(
i) = (1.0-toliq(
i)) * zcond(
i) /
dtime
1489 ELSE IF (opt_cld.EQ.3)
THEN
1498 IF (todo(
i) .AND.
k.GE.kb(
i) .AND.
k.LE.kh(
i))
THEN
1499 zvapo(
i) = zvapo(
i) + max(0.0,-d_q(
i,
k))
1500 . * (paprs(
i,
k)-paprs(
i,
k+1))/rg
1506 IF (todo(
i) .AND.
k.GE.kb(
i) .AND.
k.LE.kh(
i) .AND.
1507 . zvapo(
i).GT.0.0)
THEN
1508 d_ql(
i,
k) = d_ql(
i,
k) + toliq(
i) * zcond(
i) / zvapo(
i)
1509 . * max(0.0,-d_q(
i,
k))
1515 zrfl(
i) = (1.0-toliq(
i)) * zcond(
i) /
dtime
1519 ELSE IF (opt_cld.EQ.4)
THEN
1531 IF (todo(
i) .AND.
k.GE.(kb(
i)+1) .AND.
k.LE.kh(
i))
THEN
1532 zvapo(
i) = zvapo(
i) + (paprs(
i,
k)-paprs(
i,
k+1)) / rg
1539 IF (todo(
i) .AND.
k.GE.(kb(
i)+1) .AND.
k.LE.kh(
i))
THEN
1540 d_ql(
i,
k) = d_ql(
i,
k) + toliq(
i) * zcond(
i) / zvapo(
i)
1547 zrfl(
i) = (1.0-toliq(
i)) * zcond(
i) /
dtime
1553 print*,
"opt_cld est faux:", opt_cld
1560 IF (evap_prec .AND. kbmax.GE.2)
THEN
1563 IF (todo(
i) .AND.
k.LE.(kb(
i)-1) .AND. zrfl(
i).GT.0.0)
THEN
1564 zqev = max(0.0, (zqs(
i,
k)-
q(
i,
k))*zfrac(
i) )
1565 zqevt = coef_eva * (1.0-
q(
i,
k)/zqs(
i,
k))*sqrt(zrfl(
i))
1567 zqevt = max(0.0,min(zqevt,zrfl(
i)))
1569 zqev = min(zqev, zqevt)
1570 zrfln = zrfl(
i) - zqev*(paprs(
i,
k)-paprs(
i,
k+1))
1572 d_q(
i,
k) = - (zrfln-zrfl(
i))
1573 . * (rg/(paprs(
i,
k)-paprs(
i,
k+1)))*
dtime
1574 d_t(
i,
k) = (zrfln-zrfl(
i))
1575 . * (rg/(paprs(
i,
k)-paprs(
i,
k+1)))*
dtime
1587 IF (t(
i,1) .GT. rtt)
THEN
1588 rain(
i) = rain(
i) + zrfl(
i)
1590 snow(
i) = snow(
i) + zrfl(
i)
1597 SUBROUTINE kuofcl(pt, pq, pg, pp, LDCUM, kcbot)
1625 REAL zqold(klon), zbuo
1631 INTEGER klab(klon,
klev)
1652 DO 290
k = 2,
klev-1
1656 if (klab(
i,
k-1).EQ.1) is = is + 1
1658 if (klab(
i,
k-1).EQ.1) lflag(
i) = .true.
1660 IF (is.EQ.0) goto 290
1666 zqu(
i,
k) = zqu(
i,
k-1)
1667 ztu(
i,
k) = ztu(
i,
k-1) + (pg(
i,
k-1)-pg(
i,
k))/rcpd
1668 zbuo = ztu(
i,
k)*(1.+retv*zqu(
i,
k))-
1669 . pt(
i,
k)*(1.+retv*pq(
i,
k))+0.5
1670 IF (zbuo.GT.0.) klab(
i,
k)=1
1677 CALL
adjtq(pp(1,
k), ztu(1,
k), zqu(1,
k), lflag, 1)
1683 IF(lflag(
i).AND.zqu(
i,
k).NE.zqold(
i))
THEN
1685 zlu(
i,
k) = zlu(
i,
k)+zqold(
i)-zqu(
i,
k)
1686 zbuo = ztu(
i,
k)*(1.+retv*zqu(
i,
k))-
1687 . pt(
i,
k)*(1.+retv*pq(
i,
k))+0.5
1688 IF (zbuo.GT.0.)
THEN
1699 SUBROUTINE adjtq(pp, pt, pq, LDFLAG, KCALL)
1723 REAL pt(klon), pq(klon), pp(klon)
1724 LOGICAL ldflag(klon)
1730 REAL zcond(klon), zcond1
1731 REAL zdelta, zcvm5, zldcp,
zqsat, zcor, zdqsat
1742 zdelta=max(0.,sign(1.,rtt-pt(
i)))
1743 zldcp = rlvtt*(1.-zdelta) + zdelta*rlstt
1744 zldcp = zldcp / rcpd/(1.0+rvtmp2*pq(
i))
1746 zcvm5=r5les*rlvtt*(1.-zdelta) + zdelta*r5ies*rlstt
1747 zcvm5 = zcvm5 / rcpd/(1.0+rvtmp2*pq(
i))
1748 zqsat=r2es*foeew(pt(
i), zdelta) / pp(
i)
1750 zcor=1./(1.-retv *
zqsat)
1752 zdqsat = foede(pt(
i), zdelta, zcvm5,
zqsat, zcor)
1754 IF (pt(
i).LT.t_coup)
THEN
1756 zdqsat = dqsats(pt(
i),
zqsat)
1759 zdqsat = dqsatl(pt(
i),
zqsat)
1762 zcond(
i)=(pq(
i)-
zqsat) / (1. + zdqsat)
1763 IF(kcall.EQ.1) zcond(
i)=max(zcond(
i),0.)
1764 IF(kcall.EQ.2) zcond(
i)=min(zcond(
i),0.)
1765 pt(
i)=pt(
i)+zldcp*zcond(
i)
1766 pq(
i)=pq(
i)-zcond(
i)
1772 if (zcond(
i).NE.0.) is = is + 1
1774 IF(is.EQ.0) goto 230
1777 IF(ldflag(
i).AND.zcond(
i).NE.0.)
THEN
1778 zdelta=max(0.,sign(1.,rtt-pt(
i)))
1779 zldcp = rlvtt*(1.-zdelta) + zdelta*rlstt
1780 zldcp = zldcp / rcpd/(1.0+rvtmp2*pq(
i))
1782 zcvm5=r5les*rlvtt*(1.-zdelta) + zdelta*r5ies*rlstt
1783 zcvm5 = zcvm5 / rcpd/(1.0+rvtmp2*pq(
i))
1784 zqsat=r2es*foeew(pt(
i), zdelta) / pp(
i)
1786 zcor=1./(1.-retv *
zqsat)
1788 zdqsat = foede(pt(
i), zdelta, zcvm5,
zqsat, zcor)
1790 IF (pt(
i).LT.t_coup)
THEN
1792 zdqsat = dqsats(pt(
i),
zqsat)
1795 zdqsat = dqsatl(pt(
i),
zqsat)
1798 zcond1=(pq(
i)-
zqsat) / (1.+zdqsat)
1799 pt(
i)=pt(
i)+zldcp*zcond1
1807 SUBROUTINE fiajh(dtime, paprs, pplay, t, q,
1808 . d_t, d_q, d_ql, rneb,
1809 . rain, snow, ibas, itop)
1824 REAL paprs(klon,
klev+1)
1829 REAL d_ql(klon,
klev)
1830 REAL rneb(klon,
klev)
1845 INTEGER k1, k1p, k2, k2p
1847 REAL delta_q(klon,
klev)
1849 REAL cp_delta_t(
klev)
1851 REAL v_cptj(
klev), v_cptjk1, v_ssig
1852 REAL v_cptt(klon,
klev), v_p, v_t
1853 REAL v_qs(klon,
klev), v_qsd(klon,
klev)
1854 REAL zq1(klon), zq2(klon)
1855 REAL gamcpdz(klon,2:
klev)
1861 REAL local_q(klon,
klev),local_t(klon,
klev)
1863 REAL zdelta, zcor, zcvm5
1870 local_q(
i,
k) =
q(
i,
k)
1871 local_t(
i,
k) = t(
i,
k)
1889 v_cptt(
i,
k) = rcpd * local_t(
i,
k)
1894 zdelta=max(0.,sign(1.,rtt-v_t))
1895 zcvm5=r5les*rlvtt*(1.-zdelta) + zdelta*r5ies*rlstt
1896 zcvm5 = zcvm5 /rcpd/(1.0+rvtmp2*local_q(
i,
k))
1897 v_qs(
i,
k)= r2es * foeew(v_t,zdelta)/v_p
1898 v_qs(
i,
k)=min(0.5,v_qs(
i,
k))
1899 zcor=1./(1.-retv*v_qs(
i,
k))
1900 v_qs(
i,
k)=v_qs(
i,
k)*zcor
1901 v_qsd(
i,
k) =foede(v_t,zdelta,zcvm5,v_qs(
i,
k),zcor)
1903 IF (v_t.LT.t_coup)
THEN
1904 v_qs(
i,
k) = qsats(v_t) / v_p
1905 v_qsd(
i,
k) = dqsats(v_t,v_qs(
i,
k))
1907 v_qs(
i,
k) = qsatl(v_t) / v_p
1908 v_qsd(
i,
k) = dqsatl(v_t,v_qs(
i,
k))
1918 zdp = paprs(
i,
k)-paprs(
i,
k+1)
1919 zdpm = paprs(
i,
k-1)-paprs(
i,
k)
1920 gamcpdz(
i,
k) = ( ( rd/rcpd /(zdpm+zdp) *
1921 . (v_cptt(
i,
k-1)*zdpm + v_cptt(
i,
k)*zdp)
1922 . +rlvtt /(zdpm+zdp) *
1923 . (v_qs(
i,
k-1)*zdpm + v_qs(
i,
k)*zdp)
1925 . / (1.0+(v_qsd(
i,
k-1)*zdpm+
1926 . v_qsd(
i,
k)*zdp)/(zdpm+zdp) )
1939 IF (k2 .GT.
klev) goto 9999
1940 zflo = v_cptt(
i,k2-1) - v_cptt(
i,k2) - gamcpdz(
i,k2)
1941 zsat=(local_q(
i,k2-1)-v_qs(
i,k2-1))*(paprs(
i,k2-1)-paprs(
i,k2))
1942 . +(local_q(
i,k2)-v_qs(
i,k2))*(paprs(
i,k2)-paprs(
i,k2+1))
1943 IF ( zflo.LE.0.0 .OR. zsat.LE.0.0 ) goto 810
1948 IF (k2 .EQ.
klev) goto 821
1950 zsat=zsat +(paprs(
i,k2p)-paprs(
i,k2p+1))
1951 . *(local_q(
i,k2p)-v_qs(
i,k2p))
1952 zflo = v_cptt(
i,k2p-1) - v_cptt(
i,k2p) - gamcpdz(
i,k2p)
1953 IF (zflo.LE.0.0 .OR. zsat.LE.0.0) goto 821
1961 zdp = paprs(
i,k1)-paprs(
i,k1+1)
1962 v_cptjk1 = ( (1.0+v_qsd(
i,k1))*(v_cptt(
i,k1)+v_cptj(k1))
1963 . + rlvtt*(local_q(
i,k1)-v_qs(
i,k1)) ) * zdp
1964 v_ssig = zdp * (1.0+v_qsd(
i,k1))
1968 zdp = paprs(
i,
k)-paprs(
i,
k+1)
1969 v_cptj(
k) = v_cptj(
k-1) + gamcpdz(
i,
k)
1970 v_cptjk1 = v_cptjk1 + zdp
1971 . * ( (1.0+v_qsd(
i,
k))*(v_cptt(
i,
k)+v_cptj(
k))
1972 . + rlvtt*(local_q(
i,
k)-v_qs(
i,
k)) )
1973 v_ssig = v_ssig + zdp *(1.0+v_qsd(
i,
k))
1977 cp_new_t(
k) = v_cptjk1/v_ssig - v_cptj(
k)
1978 cp_delta_t(
k) = cp_new_t(
k) - v_cptt(
i,
k)
1979 new_qb(
k) = v_qs(
i,
k) + v_qsd(
i,
k)*cp_delta_t(
k)/rlvtt
1980 local_q(
i,
k) = new_qb(
k)
1981 local_t(
i,
k) = cp_new_t(
k) / rcpd
1989 v_cptt(
i,
k) = rcpd * local_t(
i,
k)
1994 zdelta=max(0.,sign(1.,rtt-v_t))
1995 zcvm5=r5les*rlvtt*(1.-zdelta) + zdelta*r5ies*rlstt
1996 zcvm5 = zcvm5 /rcpd/(1.0+rvtmp2*local_q(
i,
k))
1997 v_qs(
i,
k)= r2es * foeew(v_t,zdelta)/v_p
1998 v_qs(
i,
k)=min(0.5,v_qs(
i,
k))
1999 zcor=1./(1.-retv*v_qs(
i,
k))
2000 v_qs(
i,
k)=v_qs(
i,
k)*zcor
2001 v_qsd(
i,
k) =foede(v_t,zdelta,zcvm5,v_qs(
i,
k),zcor)
2003 IF (v_t.LT.t_coup)
THEN
2004 v_qs(
i,
k) = qsats(v_t) / v_p
2005 v_qsd(
i,
k) = dqsats(v_t,v_qs(
i,
k))
2007 v_qs(
i,
k) = qsatl(v_t) / v_p
2008 v_qsd(
i,
k) = dqsatl(v_t,v_qs(
i,
k))
2013 zdpm = paprs(
i,
k-1) - paprs(
i,
k)
2014 zdp = paprs(
i,
k) - paprs(
i,
k+1)
2015 gamcpdz(
i,
k) = ( ( rd/rcpd /(zdpm+zdp) *
2016 . (v_cptt(
i,
k-1)*zdpm+v_cptt(
i,
k)*zdp)
2017 . +rlvtt /(zdpm+zdp) *
2018 . (v_qs(
i,
k-1)*zdpm+v_qs(
i,
k)*zdp)
2020 . / (1.0+(v_qsd(
i,
k-1)*zdpm+v_qsd(
i,
k)*zdp)
2026 IF (k1 .EQ. 1) goto 841
2027 zflo = v_cptt(
i,k1-1) - v_cptt(
i,k1) - gamcpdz(
i,k1)
2028 zsat=(local_q(
i,k1-1)-v_qs(
i,k1-1))*(paprs(
i,k1-1)-paprs(
i,k1))
2029 . + (local_q(
i,k1)-v_qs(
i,k1))*(paprs(
i,k1)-paprs(
i,k1+1))
2030 IF (zflo.LE.0.0 .OR. zsat.LE.0.0) goto 841
2034 IF (k1 .EQ. 1) goto 830
2035 zsat = zsat + (local_q(
i,k1-1)-v_qs(
i,k1-1))
2036 . *(paprs(
i,k1-1)-paprs(
i,k1))
2037 zflo = v_cptt(
i,k1-1) - v_cptt(
i,k1) - gamcpdz(
i,k1)
2038 IF (zflo.GT.0.0 .AND. zsat.GT.0.0)
THEN
2056 delta_q(
i,
k) = local_q(
i,
k) -
q(
i,
k)
2057 IF (delta_q(
i,
k).LT.0.) rneb(
i,
k) = 1.0
2075 zdp = paprs(
i,
k)-paprs(
i,
k+1)
2076 zq1(
i) = zq1(
i) - delta_q(
i,
k) * zdp
2077 zq2(
i) = zq2(
i) - min(0.0, delta_q(
i,
k)) * zdp
2085 . d_ql(
i,
k) = - min(0.0,delta_q(
i,
k))*zq1(
i)/zq2(
i)
2092 local_q(
i,
k) = max(local_q(
i,
k), seuil_vap)
2098 d_t(
i,
k) = local_t(
i,
k) - t(
i,
k)
2099 d_q(
i,
k) = local_q(
i,
k) -
q(
i,
k)
2107 . d_t, d_q, d_ql,rneb,
2108 . rain, snow, ibas, itop)
2133 REAL paprs(klon,
klev+1)
2136 REAL conv_q(klon,
klev)
2137 REAL rneb(klon,
klev)
2139 REAL d_ql(klon,
klev)
2146 INTEGER kh(klon),
i,
k
2148 REAL zconv(klon), zdeh(klon,
klev), zvirt(klon)
2149 REAL zdqs(klon,
klev), zqs(klon,
klev)
2150 REAL ztt, zvar, zfrac(klon)
2151 REAL zq1(klon), zq2(klon)
2152 REAL zdelta, zcor, zcvm5
2180 zdelta=max(0.,sign(1.,rtt-ztt))
2181 zcvm5=r5les*rlvtt*(1.-zdelta) + zdelta*r5ies*rlstt
2182 zcvm5 = zcvm5 /rcpd/(1.0+rvtmp2*
q(
i,
k))
2183 zqs(
i,
k)= r2es*foeew(ztt,zdelta)/
pplay(
i,
k)
2184 zqs(
i,
k)=min(0.5,zqs(
i,
k))
2185 zcor=1./(1.-retv*zqs(
i,
k))
2186 zqs(
i,
k)=zqs(
i,
k)*zcor
2187 zdqs(
i,
k) =foede(ztt,zdelta,zcvm5,zqs(
i,
k),zcor)
2189 IF (ztt .LT. t_coup)
THEN
2191 zdqs(
i,
k) = dqsats(ztt,zqs(
i,
k))
2194 zdqs(
i,
k) = dqsatl(ztt,zqs(
i,
k))
2204 zdeh(
i,
k) = rcpd * (t(
i,
k-1)-t(
i,
k))
2205 . - rd *0.5*(t(
i,
k-1)+t(
i,
k))/paprs(
i,
k)
2207 . + rlvtt*(zqs(
i,
k-1)-zqs(
i,
k))
2208 zdeh(
i,
k) = zdeh(
i,
k) * 0.5
2212 zdeh(
i,
k) = zdeh(
i,
k-1)
2213 . + rcpd * (t(
i,
k-1)-t(
i,
k))
2214 . - rd *0.5*(t(
i,
k-1)+t(
i,
k))/paprs(
i,
k)
2216 . + rlvtt*(zqs(
i,
k-1)-zqs(
i,
k))
2235 . *(paprs(
i,
k)-paprs(
i,
k+1))
2236 zvirt(
i)=zvirt(
i)+(zdeh(
i,
k)/rlvtt+zqs(
i,
k)-
q(
i,
k))
2237 . *(paprs(
i,
k)-paprs(
i,
k+1))
2247 IF (
k.LE.kh(
i) .AND. kh(
i).GT.plb .AND. zconv(
i).GT.0.0)
THEN
2249 zfrac(
i) = max(0.0,min(zconv(
i)/zvirt(
i),1.0))
2259 zvar = zdeh(
i,
k)/(1.0+zdqs(
i,
k))
2260 d_q(
i,
k) = (zvar*zdqs(
i,
k)/rlvtt+zqs(
i,
k)-
q(
i,
k))*zfrac(
i)
2262 d_t(
i,
k) = zvar * zfrac(
i) / rcpd
2274 IF (d_q(
i,
k).LT.0.0) rneb(
i,
k) = zfrac(
i)
2275 zq1(
i) = zq1(
i) - d_q(
i,
k) * (paprs(
i,
k)-paprs(
i,
k+1))
2276 zq2(
i) = zq2(
i) - min(0.0, d_q(
i,
k))
2277 . * (paprs(
i,
k)-paprs(
i,
k+1))
2285 IF(zq2(
i).NE.0.)d_ql(
i,
k)=-min(0.0,d_q(
i,
k))*zq1(
i)/zq2(
i)
2293 IF (kh(
i).GT.plb .AND. zconv(
i).GT.0.0)
THEN
2296 zfrac(
i) = max(0.0,min(zconv(
i)/zvirt(
i),1.0))
2298 zvar = zdeh(
i,
k)/(1.0+zdqs(
i,
k))
2299 d_q(
i,
k) = (zvar*zdqs(
i,
k)/rlvtt+zqs(
i,
k)-
q(
i,
k))*zfrac(
i)
2301 d_t(
i,
k) = zvar * zfrac(
i) / rcpd
2307 IF (d_q(
i,
k).LT.0.0) rneb(
i,
k) = zfrac(
i)
2308 zq1(
i) = zq1(
i) - d_q(
i,
k) * (paprs(
i,
k)-paprs(
i,
k+1))
2309 zq2(
i) = zq2(
i) - min(0.0, d_q(
i,
k))
2310 . * (paprs(
i,
k)-paprs(
i,
k+1))
2313 IF(zq2(
i).NE.0.)d_ql(
i,
k)=-min(0.0,d_q(
i,
k))*zq1(
i)/zq2(
i)