40 CHARACTER (LEN=20) :: modname=
'cv_routines'
41 CHARACTER (LEN=80) :: abort_message
86 real t(len,nd),
q(len,nd), p(len,nd), ph(len,ndp1)
89 real lv(len,nd), cpn(len,nd), tv(len,nd)
90 real gz(len,nd), h(len,nd), hm(len,nd)
117 & *(p(
i,
k-1)-p(
i,
k))/ph(
i,
k)
135 : ,nk,icb,icbmax,iflag,tnk,qnk,gznk,plcl)
146 real t(len,nd),
q(len,nd), qs(len,nd), p(len,nd)
147 real hm(len,nd), gz(len,nd)
150 integer iflag(len), nk(len), icb(len), icbmax
151 real tnk(len), qnk(len), gznk(len), plcl(len)
157 real pnk(len), qsnk(len), rh(len), chi(len)
172 if((hm(
i,
k).lt.work(
i)).and.
173 & (hm(
i,
k).lt.hm(
i,
k-1)))
then
180 ihmin(
i)=min(ihmin(
i),
nlm)
197 if((hm(
i,
k).gt.work(
i)).and.(
k.le.ihmin(
i)))
then
208 if(((t(
i,nk(
i)).lt.250.0).or.
209 & (
q(
i,nk(
i)).le.0.0).or.
210 & (p(
i,ihmin(
i)).lt.400.0)).and.
211 & (iflag(
i).eq.0))iflag(
i)=7
226 chi(
i)=tnk(
i)/(1669.0-122.0*rh(
i)-tnk(
i))
227 plcl(
i)=pnk(
i)*(rh(
i)**chi(
i))
228 if(((plcl(
i).lt.200.0).or.(plcl(
i).ge.2000.0))
229 & .and.(iflag(
i).eq.0))iflag(
i)=8
240 if((
k.ge.(nk(
i)+1)).and.(p(
i,
k).lt.plcl(
i)))
241 & icb(
i)=min(icb(
i),
k)
246 if((icb(
i).ge.
nlm).and.(iflag(
i).eq.0))iflag(
i)=9
253 icbmax=max(icbmax,icb(
i))
263 #include "cvthermo.h"
268 integer nk(len), icb(len), icbmax
269 real t(len,nd),
q(len,nd), qs(len,nd), gz(len,nd)
273 real tp(len,nd), tvp(len,nd), clw(len,nd)
277 real tg, qg, alv, s, ahg, tc, denom, es, rg
278 real ah0(len),
cpp(len)
279 real tnk(len), qnk(len), gznk(len), ticb(len), gzicb(len)
293 gzicb(
i)=gz(
i,icb(
i))
299 ah0(
i)=(
cpd*(1.-qnk(
i))+
cl*qnk(
i))*tnk(
i)
322 s=
cpd+alv*alv*qg/(
rrv*ticb(
i)*ticb(
i))
330 es=6.112*exp(17.67*tc/denom)
332 es=exp(23.33086-6111.72784/tg+0.15215*log(tg))
338 s=
cpd+alv*alv*qg/(
rrv*ticb(
i)*ticb(
i))
346 es=6.112*exp(17.67*tc/denom)
348 es=exp(23.33086-6111.72784/tg+0.15215*log(tg))
354 & -gz(
i,icb(
i))-alv*qg)/
cpd
355 clw(
i,icb(
i))=qnk(
i)-qg
356 clw(
i,icb(
i))=max(0.0,clw(
i,icb(
i)))
358 tvp(
i,icb(
i))=tp(
i,icb(
i))*(1.+rg*
epsi)
363 tvp(
i,
k)=tvp(
i,
k)-tp(
i,
k)*qnk(
i)
382 integer len, nd, icb(len)
383 real cbmf(len), tv(len,nd), tvp(len,nd)
393 if((cbmf(
i).eq.0.0) .and.(iflag(
i).eq.0).and.
394 & (tvp(
i,icb(
i)).le.(tv(
i,icb(
i))-
dtmax)))iflag(
i)=4
402 : ,cbmf1,plcl1,tnk1,qnk1,gznk1
403 : ,t1,q1,qs1,u1,v1,gz1
404 : ,h1,lv1,cpn1,p1,ph1,tv1,tp1,tvp1,clw1
406 o ,cbmf,plcl,tnk,qnk,gznk
407 o ,t,
q,qs,
u,
v,gz,h,lv,cpn,p,ph,tv,tp,tvp,clw
414 integer len,ncum,nd,nloc
415 integer iflag1(len),nk1(len),icb1(len)
416 real cbmf1(len),plcl1(len),tnk1(len),qnk1(len),gznk1(len)
417 real t1(len,nd),q1(len,nd),qs1(len,nd),u1(len,nd),v1(len,nd)
418 real gz1(len,nd),h1(len,nd),lv1(len,nd),cpn1(len,nd)
419 real p1(len,nd),ph1(len,nd+1),tv1(len,nd),tp1(len,nd)
420 real tvp1(len,nd),clw1(len,nd)
423 integer iflag(nloc),nk(nloc),icb(nloc)
424 real cbmf(nloc),plcl(nloc),tnk(nloc),qnk(nloc),gznk(nloc)
425 real t(nloc,nd),
q(nloc,nd),qs(nloc,nd),
u(nloc,nd),
v(nloc,nd)
426 real gz(nloc,nd),h(nloc,nd),lv(nloc,nd),cpn(nloc,nd)
427 real p(nloc,nd),ph(nloc,nd+1),tv(nloc,nd),tp(nloc,nd)
428 real tvp(nloc,nd),clw(nloc,nd)
433 CHARACTER (LEN=20) :: modname=
'cv_compress'
434 CHARACTER (LEN=80) :: abort_message
442 if(iflag1(
i).eq.0)
then
464 write(
lunout,*)
'strange! nn not equal to ncum: ',nn,ncum
471 if(iflag1(
i).eq.0)
then
486 dph(
i,
k)=ph(
i,
k)-ph(
i,
k+1)
494 : ,tnk,qnk,gznk,t,
q,qs,gz
496 o ,inb,inb1,tp,tvp,clw,hp,ep,sigp,
frac)
509 #include "cvthermo.h"
513 integer ncum, nd, nloc
514 integer icb(nloc), nk(nloc)
515 real t(nloc,nd),
q(nloc,nd), qs(nloc,nd), gz(nloc,nd)
516 real p(nloc,nd), dph(nloc,nd)
517 real tnk(nloc), qnk(nloc), gznk(nloc)
518 real lv(nloc,nd), tv(nloc,nd), h(nloc,nd)
521 integer inb(nloc), inb1(nloc)
522 real tp(nloc,nd), tvp(nloc,nd), clw(nloc,nd)
523 real ep(nloc,nd), sigp(nloc,nd), hp(nloc,nd)
528 real tg,qg,ahg,alv,s,tc,es,denom,rg,tca,elacrit
530 real ah0(nloc), cape(nloc), capem(nloc), byp(nloc)
555 ah0(
i)=(
cpd*(1.-qnk(
i))+
cl*qnk(
i))*tnk(
i)
565 if(
k.ge.(icb(
i)+1))
then
580 es=6.112*exp(17.67*tc/denom)
582 es=exp(23.33086-6111.72784/tg+0.15215*log(tg))
596 es=6.112*exp(17.67*tc/denom)
598 es=exp(23.33086-6111.72784/tg+0.15215*log(tg))
612 clw(
i,
k)=max(0.0,clw(
i,
k))
627 if(
k.ge.(nk(
i)+1))
then
634 elacrit=max(elacrit,0.0)
635 ep(
i,
k)=1.0-elacrit/max(clw(
i,
k),1.0e-8)
636 ep(
i,
k)=max(ep(
i,
k),0.0 )
637 ep(
i,
k)=min(ep(
i,
k),1.0 )
650 if(
k.ge.(icb(
i)+1))
then
651 tvp(
i,
k)=tvp(
i,
k)*(1.0-qnk(
i)+ep(
i,
k)*clw(
i,
k))
735 if(cape(
i).lt.0.0)lcape(
i)=.
false.
736 if((
k.ge.(icb(
i)+1)).and.lcape(
i))
then
738 byp(
i)=(tvp(
i,
k+1)-tv(
i,
k+1))*dph(
i,
k+1)/p(
i,
k+1)
740 if(
by.ge.0.0)inb1(
i)=
k+1
741 if(cape(
i).gt.0.0)
then
749 cape(
i)=capem(
i)+byp(
i)
750 defrac=capem(
i)-cape(
i)
751 defrac=max(defrac,0.001)
768 if((
k.ge.icb(
i)).and.(
k.le.inb(
i)))
then
778 : ,tv,tvp,p,ph,dph,plcl,cpn
783 integer ncum, nd, nloc
784 integer nk(nloc), icb(nloc)
785 real tv(nloc,nd), tvp(nloc,nd), p(nloc,nd), dph(nloc,nd)
787 real plcl(nloc), cpn(nloc,nd)
795 real dtpbl(nloc), dtmin(nloc), tvpplcl(nloc), tvaplcl(nloc)
798 #include "cvthermo.h"
807 icbmax=max(icbmax,icb(
i))
820 tvpplcl(
i)=tvp(
i,icb(
i)-1)
821 & -
rrd*tvp(
i,icb(
i)-1)*(p(
i,icb(
i)-1)-plcl(
i))
822 & /(cpn(
i,icb(
i)-1)*p(
i,icb(
i)-1))
823 tvaplcl(
i)=tv(
i,icb(
i))
824 & +(tvp(
i,icb(
i))-tvp(
i,icb(
i)+1))*(plcl(
i)-p(
i,icb(
i)))
825 & /(p(
i,icb(
i))-p(
i,icb(
i)+1))
837 if((
k.ge.nk(
i)).and.(
k.le.(icb(
i)-1)))
then
838 dtpbl(
i)=dtpbl(
i)+(tvp(
i,
k)-tv(
i,
k))*dph(
i,
k)
843 dtpbl(
i)=dtpbl(
i)/(ph(
i,nk(
i))-ph(
i,icb(
i)))
844 dtmin(
i)=tvpplcl(
i)-tvaplcl(
i)+
dtmax+dtpbl(
i)
854 if((work(
i).eq.0.0).and.(cbmf(
i).eq.0.0))
then
863 : ,ph,t,
q,qs,
u,
v,h,lv,qnk
864 : ,hp,tv,tvp,ep,clw,cbmf
865 : ,
m,ment,qent,uent,vent,nent,sij,elij)
868 #include "cvthermo.h"
872 integer ncum, nd, nloc
873 integer icb(nloc), inb(nloc), inb1(nloc), nk(nloc)
874 real cbmf(nloc), qnk(nloc)
876 real t(nloc,nd),
q(nloc,nd), qs(nloc,nd), lv(nloc,nd)
877 real u(nloc,nd),
v(nloc,nd), h(nloc,nd), hp(nloc,nd)
878 real tv(nloc,nd), tvp(nloc,nd), ep(nloc,nd), clw(nloc,nd)
881 integer nent(nloc,nd)
882 real m(nloc,nd), ment(nloc,nd,nd), qent(nloc,nd,nd)
883 real uent(nloc,nd,nd), vent(nloc,nd,nd)
884 real sij(nloc,nd,nd), elij(nloc,nd,nd)
889 real dbo, qti, bf2, anum, denom, dei, altem, cwat, stemp
890 real alt, qp1, smid, sjmin, sjmax, delp, delm
891 real work(nloc), asij(nloc), smin(nloc), scrit(nloc)
921 call
zilch(work,ncum)
925 if((
j.ge.(icb(
i)+1)).and.(
j.le.inb(
i)))
then
927 dbo=abs(tv(
i,
k+1)-tvp(
i,
k+1)-tv(
i,
k-1)+tvp(
i,
k-1))
936 if((
k.ge.(icb(
i)+1)).and.(
k.le.inb(
i)))
then
953 if((
i.ge.(icb(
ij)+1)).and.(
j.ge.icb(
ij))
954 & .and.(
i.le.inb(
ij)).and.(
j.le.inb(
ij)))
then
961 if(abs(dei).lt.0.01)dei=0.01
966 cwat=clw(
ij,
j)*(1.-ep(
ij,
j))
968 if((stemp.lt.0.0.or.stemp.gt.1.0.or.
969 1 altem.gt.cwat).and.
j.gt.
i)
then
970 anum=anum-lv(
ij,
j)*(qti-qs(
ij,
j)-cwat*bf2)
971 denom=denom+lv(
ij,
j)*(
q(
ij,
i)-qti)
972 if(abs(denom).lt.0.01)denom=0.01
973 sij(
ij,
i,
j)=anum/denom
975 altem=altem-(bf2-1.)*cwat
977 if(sij(
ij,
i,
j).gt.0.0.and.sij(
ij,
i,
j).lt.0.9)
then
979 & +(1.-sij(
ij,
i,
j))*qti
999 if((
i.ge.(icb(
ij)+1)).and.(
i.le.inb(
ij))
1000 & .and.(nent(
ij,
i).eq.0))
then
1012 sij(
i,inb(
i),inb(
i))=1.0
1028 if((
i.ge.icb(
ij)+1).and.(
i.le.inb(
ij)))num1=num1+1
1030 if(num1.le.0)go to 789
1033 if((
i.ge.icb(
ij)+1).and.(
i.le.inb(
ij)))
then
1034 lwork(
ij)=(nent(
ij,
i).ne.0)
1038 if(abs(denom).lt.0.01)denom=0.01
1039 scrit(
ij)=anum/denom
1040 alt=qp1-qs(
ij,
i)+scrit(
ij)*(
q(
ij,
i)-qp1)
1041 if(scrit(
ij).lt.0.0.or.alt.lt.0.0)scrit(
ij)=1.0
1050 if((
i.ge.icb(
ij)+1).and.(
i.le.inb(
ij))
1051 & .and.(
j.ge.icb(
ij)).and.(
j.le.inb(
ij))
1052 & .and.lwork(
ij))num2=num2+1
1054 if(num2.le.0)go to 783
1057 if((
i.ge.icb(
ij)+1).and.(
i.le.inb(
ij))
1058 & .and.(
j.ge.icb(
ij)).and.(
j.le.inb(
ij)).and.lwork(
ij))
then
1059 if(sij(
ij,
i,
j).gt.0.0.and.sij(
ij,
i,
j).lt.0.9)
then
1061 smid=min(sij(
ij,
i,
j),scrit(
ij))
1065 & .and.sij(
ij,
i,
j+1).lt.smid)
then
1067 sjmax=min(sij(
ij,
i,
j+1),sij(
ij,
i,
j),scrit(
ij))
1068 sjmin=max(sij(
ij,
i,
j-1),sij(
ij,
i,
j))
1069 sjmin=min(sjmin,scrit(
ij))
1072 sjmax=max(sij(
ij,
i,
j+1),scrit(
ij))
1073 smid=max(sij(
ij,
i,
j),scrit(
ij))
1075 if(
j.gt.1)sjmin=sij(
ij,
i,
j-1)
1076 sjmin=max(sjmin,scrit(
ij))
1078 delp=abs(sjmax-smid)
1079 delm=abs(sjmin-smid)
1080 asij(
ij)=asij(
ij)+(delp+delm)
1082 ment(
ij,
i,
j)=ment(
ij,
i,
j)*(delp+delm)
1089 if((
i.ge.icb(
ij)+1).and.(
i.le.inb(
ij)).and.lwork(
ij))
then
1090 asij(
ij)=max(1.0e-21,asij(
ij))
1091 asij(
ij)=1.0/asij(
ij)
1097 if((
i.ge.icb(
ij)+1).and.(
i.le.inb(
ij))
1098 & .and.(
j.ge.icb(
ij)).and.(
j.le.inb(
ij))
1099 & .and.lwork(
ij))
then
1106 if((
i.ge.icb(
ij)+1).and.(
i.le.inb(
ij))
1107 & .and.(bsum(
ij,
i).lt.1.0e-18).and.lwork(
ij))
then
1122 SUBROUTINE cv_unsat(nloc,ncum,nd,inb,t,q,qs,gz,u,v,p,ph
1123 : ,h,lv,ep,sigp,clw,
m,ment,elij
1124 : ,iflag,mp,qp,up,vp,wt,water,evap)
1128 #include "cvthermo.h"
1129 #include "cvparam.h"
1132 integer ncum, nd, nloc
1134 real t(nloc,nd),
q(nloc,nd), qs(nloc,nd)
1135 real gz(nloc,nd),
u(nloc,nd),
v(nloc,nd)
1136 real p(nloc,nd), ph(nloc,nd+1), h(nloc,nd)
1137 real lv(nloc,nd), ep(nloc,nd), sigp(nloc,nd), clw(nloc,nd)
1138 real m(nloc,nd), ment(nloc,nd,nd), elij(nloc,nd,nd)
1142 real mp(nloc,nd), qp(nloc,nd), up(nloc,nd), vp(nloc,nd)
1143 real water(nloc,nd), evap(nloc,nd), wt(nloc,nd)
1146 integer i,
j,
k,
ij,num1
1148 real awat, coeff, qsm, afac, sigt, b6, c6, revap
1149 real dhdp, fac, qstm, rat
1193 if(ep(
i,inb(
i)).le.0.0001)iflag(
i)=2
1194 if(iflag(
i).eq.0)
then
1204 call
zilch(wdtrain,ncum)
1209 if((
i.le.inb(
ij)).and.lwork(
ij))num1=num1+1
1211 if(num1.le.0)go to 899
1217 if((
i.le.inb(
ij)).and.(lwork(
ij)))
then
1225 if((
i.le.inb(
ij)).and.(lwork(
ij)))
then
1228 wdtrain(
ij)=wdtrain(
ij)+
g*awat*ment(
ij,
j,
i)
1241 if((
i.le.inb(
ij)).and.(lwork(
ij)))
then
1247 if(t(
ij,
i).gt.273.0)
then
1252 afac=coeff*ph(
ij,
i)*(qs(
ij,
i)-qsm)
1253 & /(1.0e4+2.0e3*ph(
ij,
i)*qs(
ij,
i))
1258 b6=100.*(ph(
ij,
i)-ph(
ij,
i+1))*sigt*afac/wt(
ij,
i)
1260 revap=0.5*(-b6+sqrt(b6*b6+4.*c6))
1261 evap(
ij,
i)=sigt*afac*revap
1262 water(
ij,
i)=revap*revap
1271 mp(
ij,
i)=max(mp(
ij,
i),0.0)
1275 fac=20.0/(ph(
ij,
i-1)-ph(
ij,
i))
1276 mp(
ij,
i)=(fac*mp(
ij,
i+1)+mp(
ij,
i))/(1.+fac)
1281 if(p(
ij,
i).gt.(0.949*p(
ij,1)))
then
1282 jtt(
ij)=max(jtt(
ij),
i)
1284 & /(p(
ij,1)-p(
ij,jtt(
ij)))
1290 if(
i.ne.inb(
ij))
then
1296 if(mp(
ij,
i).gt.mp(
ij,
i+1))
then
1303 if(mp(
ij,
i+1).gt.0.0)
then
1312 qp(
ij,
i)=min(qp(
ij,
i),qstm)
1313 qp(
ij,
i)=max(qp(
ij,
i),0.0)
1323 : ,t,
q,
u,
v,gz,p,ph,h,hp,lv,cpn
1324 : ,ep,clw,
frac,
m,mp,qp,up,vp
1326 : ,ment,qent,uent,vent,nent,elij
1328 o ,iflag,wd,qprime,tprime
1329 o ,precip,cbmf,ft,fq,fu,fv,ma,qcondc)
1332 #include "cvthermo.h"
1333 #include "cvparam.h"
1336 integer ncum, nd, nloc
1337 integer nk(nloc), icb(nloc), inb(nloc)
1338 integer nent(nloc,nd)
1340 real t(nloc,nd),
q(nloc,nd),
u(nloc,nd),
v(nloc,nd)
1342 real p(nloc,nd), ph(nloc,nd+1), h(nloc,nd)
1343 real hp(nloc,nd), lv(nloc,nd)
1344 real cpn(nloc,nd), ep(nloc,nd), clw(nloc,nd),
frac(nloc)
1345 real m(nloc,nd), mp(nloc,nd), qp(nloc,nd)
1346 real up(nloc,nd), vp(nloc,nd)
1347 real wt(nloc,nd), water(nloc,nd), evap(nloc,nd)
1348 real ment(nloc,nd,nd), qent(nloc,nd,nd), elij(nloc,nd,nd)
1349 real uent(nloc,nd,nd), vent(nloc,nd,nd)
1350 real tv(nloc,nd), tvp(nloc,nd)
1355 real wd(nloc), tprime(nloc), qprime(nloc)
1357 real ft(nloc,nd), fq(nloc,nd), fu(nloc,nd), fv(nloc,nd)
1359 real qcondc(nloc,nd)
1362 integer i,
j,
ij,
k,num1
1363 real dpinv,cpinv,awat,fqold,ftold,fuold,fvold,delti
1364 real work(nloc), am(nloc),amp1(nloc),ad(nloc)
1365 real ents(nloc), uav(nloc),vav(nloc),lvcp(nloc,nd)
1366 real qcond(nloc,nd), nqcond(nloc,nd), wa(nloc,nd)
1367 real siga(nloc,nd), ax(nloc,nd), mac(nloc,nd)
1384 lvcp(
i,
k)=lv(
i,
k)/cpn(
i,
k)
1395 if(iflag(
i).le.1)
then
1399 precip(
i) = wt(
i,1)*
sigd*water(
i,1)*86400/
g
1410 qprime(
i)=0.5*(qp(
i,1)-
q(
i,1))
1418 work(
i)=0.01/(ph(
i,1)-ph(
i,2))
1423 if((nk(
i).eq.1).and.(
k.le.inb(
i)).and.(nk(
i).eq.1))
then
1429 if((
g*work(
i)*am(
i)).ge.delti)iflag(
i)=1
1430 ft(
i,1)=ft(
i,1)+
g*work(
i)*am(
i)*(t(
i,2)-t(
i,1)
1431 & +(gz(
i,2)-gz(
i,1))/cpn(
i,1))
1432 ft(
i,1)=ft(
i,1)-lvcp(
i,1)*
sigd*evap(
i,1)
1434 & -t(
i,1))*work(
i)/cpn(
i,1)
1435 fq(
i,1)=fq(
i,1)+
g*mp(
i,2)*(qp(
i,2)-
q(
i,1))*
1437 fq(
i,1)=fq(
i,1)+
g*am(
i)*(
q(
i,2)-
q(
i,1))*work(
i)
1438 fu(
i,1)=fu(
i,1)+
g*work(
i)*(mp(
i,2)*(up(
i,2)-
u(
i,1))
1439 & +am(
i)*(
u(
i,2)-
u(
i,1)))
1440 fv(
i,1)=fv(
i,1)+
g*work(
i)*(mp(
i,2)*(vp(
i,2)-
v(
i,1))
1441 & +am(
i)*(
v(
i,2)-
v(
i,1)))
1447 & +
g*work(
i)*ment(
i,
j,1)*(qent(
i,
j,1)-
q(
i,1))
1449 & +
g*work(
i)*ment(
i,
j,1)*(uent(
i,
j,1)-
u(
i,1))
1451 & +
g*work(
i)*ment(
i,
j,1)*(vent(
i,
j,1)-
v(
i,1))
1466 if(
i.le.inb(
ij))num1=num1+1
1468 if(num1.le.0)go to 1500
1470 call
zilch(amp1,ncum)
1475 if((
i.ge.nk(
ij)).and.(
i.le.inb(
ij))
1476 & .and.(
k.le.(inb(
ij)+1)))
then
1485 if((
j.le.(inb(
ij)+1)).and.(
i.le.inb(
ij)))
then
1494 if((
i.le.inb(
ij)).and.(
j.le.inb(
ij)))
then
1502 if(
i.le.inb(
ij))
then
1503 dpinv=0.01/(ph(
ij,
i)-ph(
ij,
i+1))
1508 & +(gz(
ij,
i+1)-gz(
ij,
i))*cpinv)
1514 & (t(
ij,
i+1)-t(
ij,
i))*dpinv*cpinv
1525 if(
i.le.inb(
ij))
then
1536 nqcond(
ij,
i)=nqcond(
ij,
i)+1.
1542 if((
i.le.inb(
ij)).and.(
k.le.inb(
ij)))
then
1553 if(
i.le.inb(
ij))
then
1567 nqcond(
ij,
i)=nqcond(
ij,
i)+1.
1570 if (nent(
ij,
i).eq.0)
then
1572 nqcond(
ij,
i)=nqcond(
ij,
i)+1.
1574 if (nqcond(
ij,
i).ne.0.)
then
1585 fqold=fq(
ij,inb(
ij))
1591 ftold=ft(
ij,inb(
ij))
1596 & /cpn(
ij,inb(
ij)-1)
1597 fuold=fu(
ij,inb(
ij))
1601 1 (ph(
ij,inb(
ij)-1)-ph(
ij,inb(
ij))))
1602 fvold=fv(
ij,inb(
ij))
1606 1 (ph(
ij,inb(
ij)-1)-ph(
ij,inb(
ij))))
1624 ents(
ij)=ents(
ij)/(ph(
ij,1)-ph(
ij,inb(
ij)+1))
1638 if((
q(
i,
k)+delt*fq(
i,
k)).lt.0.0)iflag(
i)=10
1644 if(iflag(
i).gt.2)
then
1651 if(iflag(
i).gt.2)
then
1687 do i=icb(
ij),inb(
ij)-1
1693 if (ax(
ij,
i).gt.0.0)
then
1694 wa(
ij,
i)=sqrt(2.*ax(
ij,
i))
1698 if (wa(
ij,
i).gt.0.0)
1701 siga(
ij,
i) = min(siga(
ij,
i),1.0)
1703 : + (1.-siga(
ij,
i))*qcond(
ij,
i)
1722 #include "cvparam.h"
1725 integer len, ncum, nd, nloc
1728 real precip(nloc), cbmf(nloc)
1729 real ft(nloc,nd), fq(nloc,nd), fu(nloc,nd), fv(nloc,nd)
1731 real qcondc(nloc,nd)
1735 real precip1(len), cbmf1(len)
1736 real ft1(len,nd), fq1(len,nd), fu1(len,nd), fv1(len,nd)
1738 real qcondc1(len,nd)
1744 precip1(idcum(
i))=precip(
i)
1745 cbmf1(idcum(
i))=cbmf(
i)
1746 iflag1(idcum(
i))=iflag(
i)
1751 ft1(idcum(
i),
k)=ft(
i,
k)
1752 fq1(idcum(
i),
k)=fq(
i,
k)
1753 fu1(idcum(
i),
k)=fu(
i,
k)
1754 fv1(idcum(
i),
k)=fv(
i,
k)
1755 ma1(idcum(
i),
k)=ma(
i,
k)
1756 qcondc1(idcum(
i),
k)=qcondc(
i,
k)