4 SUBROUTINE convect3(dtime, epmax, ok_adj, t1, r1, rs, u, v, tra, p, ph, nd, &
5 ndp1,
nl, ntra, delt, iflag, ft, fr, fu, fv, ftra, precip, icb, inb, &
6 upwd, dnwd, dnwd0, sig, w0, mike, mke, ma, ments, qents, tps, tls, sigij, &
7 cape, tvp, pbase, buoybase, &
9 dtvpdt1, dtvpdq1, dplcldt, dplcldr, &
10 ft2, fr2, fu2, fv2, wd, qcond, qcondc)
27 INTEGER nd, ndp1, nl, ntra, iflag, icb, inb
28 REAL dtime, epmax, delt, precip, cape
30 REAL t1(nd), r1(nd), rs(nd), u(nd), v(nd), tra(nd, ntra)
32 REAL ft(nd), fr(nd), fu(nd), fv(nd), ftra(nd, ntra)
34 REAL uent(na, na), vent(na, na), traent(na, na,
nbtr), tratm(na)
35 REAL up(na), vp(na), trap(na,
nbtr)
36 REAL m(na), mp(na), ment(na, na), qent(na, na), elij(na, na)
37 REAL sij(na, na), tvp(na), tv(na), water(na)
38 REAL rp(na), ep(na), th(na), wt(na), evap(na), clw(na)
39 REAL sigp(na), b(na), tp(na), cpn(na)
40 REAL lv(na), lvcp(na), h(na), hp(na), gz(na)
43 REAL ft2(nd), fr2(nd), fu2(nd), fv2(nd)
47 REAL dtvpdt1(nd), dtvpdq1(nd)
49 REAL clw_new(na), qi(na)
53 REAL qcond(nd), nqcond(na), wa(na), maa(na), siga(na), axc(na)
55 LOGICAL ice_conv, ok_adj
74 REAL :: cpv,cl,cpvmcl,eps,alv0,rdcp,pbcrit,ptcrit,sigd,spfac
75 REAL :: tau,beta,alpha,dtcrit,dtovsh,ahm,rm,um,vm,dphinv
76 REAL :: a2,x,tvx,tvy,plcl,pden,dpbase,tvpbase,tvbase,tdif
77 REAL :: ath1,ath,delti,deltap,dcape,dlnp,sigold,dtmin,fac,w
78 REAL :: amu,rti,cpd,bf2,anum,denom,dei,altem,cwat,stemp,qp
79 REAL :: scrit,alt,smax,asij,wgh,sjmax,sjmin,smid,delp,delm
80 REAL :: asum,bsum,csum,wflux,tinv,wdtrain,awat,afac,afac1,afac2
81 REAL :: bfac,pr1,pr2,sigt,b6,c6,revap,tevap,delth,amfac,amp2
82 REAL :: xf,tf,af,bf,fac2,ur,sru,d,ampmax,dpinv,am,amde,cpinv
83 REAL :: amp1,ad,rat,ax,bx,cx,dx,ex,dsum
84 INTEGER :: nk,i,j,nopt,jn,k,im,jm,n
156 rdcp = (rd*(1.-rr(i))+rr(i)*rv)/(cpd*(1.-rr(i))+rr(i)*cpv)
157 th(i) = t(i)*(1000.0/p(i))**rdcp
164 rdcp = (rd*(1.-rr(i))+rr(i)*rv)/(cpd*(1.-rr(i))+rr(i)*cpv)
166 tls(i) = t(i)*(1000.0/p(i))**rdcp
210 beta = 1. - dtime/tau
213 alpha = 1.5e-3*dtime/tau
227 sig(nd) = sig(nd) + 1.0
228 sig(nd) = amin1(sig(nd), 12.1)
248 IF (th(j)<th(i)) jn = j
259 ahm = ahm + (cpd*(1.-rr(j))+rr(j)*cpv)*t(j)*(ph(j)-ph(j+1))
260 rm = rm + rr(j)*(ph(j)-ph(j+1))
261 um = um + u(j)*(ph(j)-ph(j+1))
262 vm = vm + v(j)*(ph(j)-ph(j+1))
264 tratm(k) = tratm(k) + tra(j, k)*(ph(j)-ph(j+1))
267 dphinv = 1./(ph(i)-ph(jn+1))
272 tratm(k) = tratm(k)*dphinv
282 rdcp = (rd*(1.-rr(j))+rr(j)*rv)/(cpd*(1.-rr(j))+rr(j)*cpv)
283 x = (0.001*p(j))**rdcp
285 a2 = a2 + (cpd*(1.-rr(j))+rr(j)*cpv)*x*(ph(j)-ph(j+1))
300 ft2(i) = (t(i)-t1(i))/delt
301 fr2(i) = (rr(i)-r1(i))/delt
302 fu2(i) = (u(i)-u1(i))/delt
303 fv2(i) = (v(i)-v1(i))/delt
313 cpn(1) = cpd*(1.-rr(1)) + rr(1)*cpv
316 tvx = t(i)*(1.+rr(i)/eps-rr(i))
317 tvy = t(i-1)*(1.+rr(i-1)/eps-rr(i-1))
318 gz(i) = gz(i-1) + 0.5*rd*(tvx+tvy)*(p(i-1)-p(i))/ph(i)
319 cpn(i) = cpd*(1.-rr(i)) + cpv*rr(i)
320 h(i) = t(i)*cpn(i) + gz(i)
326 IF (t(1)<250.0 .OR. rr(1)<=0.0)
THEN
336 CALL clift(p(1), t(1), rr(1), rs(1), plcl, dplcldt, dplcldr)
341 IF (plcl<200.0 .OR. plcl>=2000.0)
THEN
372 IF (icb==(nl-1))
THEN
392 IF (plcl>p(icb))
THEN
394 CALL tlift(p, t, rr, rs, gz, plcl, icb, nk, tvp, tp, clw, nd, nl, &
398 CALL tlift(p, t, rr, rs, gz, plcl, icb+1, nk, tvp, tp, clw, nd, nl, &
419 pden = ptcrit - pbcrit
424 ep(i) = (plcl-p(i)-pbcrit)/pden*epmax
426 ep(i) = amax1(ep(i), 0.0)
428 ep(i) = amin1(ep(i), epmax)
434 tv(i) = t(i)*(1.+rr(i)/eps-rr(i))
444 buoy(i) = tvp(i) - tv(i)
450 pbase = plcl + dpbase
451 tvpbase = tvp(icb)*(pbase-p(icb+1))/(p(icb)-p(icb+1)) + &
452 tvp(icb+1)*(p(icb)-pbase)/(p(icb)-p(icb+1))
453 tvbase = tv(icb)*(pbase-p(icb+1))/(p(icb)-p(icb+1)) + &
454 tv(icb+1)*(p(icb)-pbase)/(p(icb)-p(icb+1))
464 buoybase = tvpbase - tvbase
469 IF (p(i)>=pbase)
THEN
506 ath = th(icb-1) - 5.0
509 IF (tdif<dtcrit .OR. ath>ath1)
THEN
511 sig(i) = beta*sig(i) - 2.*alpha*tdif*tdif
512 sig(i) = amax1(sig(i), 0.0)
533 trap(i, j) = tra(i, j)
541 lv(i) = alv0 - cpvmcl*(t(i)-273.15)
542 lvcp(i) = lv(i)/cpn(i)
551 traent(i, j, k) = tra(j, k)
565 IF (buoy(i)<dtovsh)
THEN
577 DO i = inb + 1, nl - 1
581 sig(i) = beta*sig(i) + 2.*alpha*buoy(inb)*abs(buoy(inb))
582 sig(i) = amax1(sig(i), 0.0)
590 sig(i) = beta*sig(i) - 2.*alpha*buoy(icb)*buoy(icb)
591 sig(i) = amax1(sig(i), 0.0)
599 IF (sig(nd)<1.5 .OR. sig(nd)>12.0)
THEN
609 hp(i) = h(1) + (lv(i)+(cpd-cpv)*t(i))*ep(i)*clw(i)
624 deltap = min(pbase, ph(i-1)) - min(pbase, ph(i))
625 cape = cape + rd*buoy(i-1)*deltap/p(i-1)
626 dcape = rd*buoy(i-1)*deltap/p(i-1)
637 cape = amax1(0.0, cape)
644 dtmin = amin1(dtmin, buoy(j))
647 sig(i) = beta*sig(i) + alpha*dtmin*abs(dtmin)
648 sig(i) = amax1(sig(i), 0.0)
649 sig(i) = amin1(sig(i), 0.01)
650 fac = amin1(((dtcrit-dtmin)/dtcrit), 1.0)
655 w = (1.-beta)*fac*sqrt(cape) + beta*w0(i)
656 amu = 0.5*(sig(i)+sigold)*w
657 m(i) = amu*0.007*p(i)*(ph(i)-ph(i+1))/tv(i)
669 w0(icb) = 0.5*w0(icb+1)
670 m(icb) = 0.5*m(icb+1)*(ph(icb)-ph(icb+1))/(ph(icb+1)-ph(icb+2))
671 sig(icb) = sig(icb+1)
672 sig(icb-1) = sig(icb)
689 rti = rr(1) - ep(i)*clw(i)
691 bf2 = 1. + lv(j)*lv(j)*rs(j)/(rv*t(j)*t(j)*cpd)
692 anum = h(j) - hp(i) + (cpv-cpd)*t(j)*(rti-rr(j))
693 denom = h(i) - hp(i) + (cpd-cpv)*(rr(i)-rti)*t(j)
695 IF (abs(dei)<0.01) dei = 0.01
698 altem = sij(i, j)*rr(i) + (1.-sij(i,j))*rti - rs(j)
700 cwat = clw(j)*(1.-ep(j))
702 IF ((stemp<0.0 .OR. stemp>1.0 .OR. altem>cwat) .AND. j>i)
THEN
703 anum = anum - lv(j)*(rti-rs(j)-cwat*bf2)
704 denom = denom + lv(j)*(rr(i)-rti)
705 IF (abs(denom)<0.01) denom = 0.01
706 sij(i, j) = anum/denom
707 altem = sij(i, j)*rr(i) + (1.-sij(i,j))*rti - rs(j)
708 altem = altem - (bf2-1.)*cwat
712 IF (sij(i,j)>0.0 .AND. sij(i,j)<0.95)
THEN
713 qent(i, j) = sij(i, j)*rr(i) + (1.-sij(i,j))*rti
714 uent(i, j) = sij(i, j)*u(i) + (1.-sij(i,j))*u(nk)
715 vent(i, j) = sij(i, j)*v(i) + (1.-sij(i,j))*v(nk)
717 traent(i, j, k) = sij(i, j)*tra(i, k) + (1.-sij(i,j))*tra(nk, k)
720 elij(i, j) = amax1(0.0, elij(i,j))
721 ment(i, j) = m(i)/(1.-sij(i,j))
722 nent(i) = nent(i) + 1
724 sij(i, j) = amax1(0.0, sij(i,j))
725 sij(i, j) = amin1(1.0, sij(i,j))
735 qent(i, i) = rr(nk) - ep(i)*clw(i)
739 traent(i, i, j) = tra(nk, j)
746 sigij(i, j) = sij(i, j)
757 qp = rr(1) - ep(i)*clw(i)
758 anum = h(i) - hp(i) - lv(i)*(qp-rs(i)) + (cpv-cpd)*t(i)*(qp-rr(i))
759 denom = h(i) - hp(i) + lv(i)*(rr(i)-qp) + (cpd-cpv)*t(i)*(rr(i)-qp)
760 IF (abs(denom)<0.01) denom = 0.01
762 alt = qp - rs(i) + scrit*(rr(i)-qp)
763 IF (scrit<=0.0 .OR. alt<=0.0) scrit = 1.0
766 DO j = inb, icb - 1, -1
767 IF (sij(i,j)>1.0e-16 .AND. sij(i,j)<0.95)
THEN
770 sjmax = amax1(sij(i,j+1), smax)
771 sjmax = amin1(sjmax, scrit)
772 smax = amax1(sij(i,j), smax)
773 sjmin = amax1(sij(i,j-1), smax)
774 sjmin = amin1(sjmin, scrit)
775 IF (sij(i,j)<(smax-1.0e-16)) wgh = 0.0
776 smid = amin1(sij(i,j), scrit)
778 sjmax = amax1(sij(i,j+1), scrit)
779 smid = amax1(sij(i,j), scrit)
781 IF (j>1) sjmin = sij(i, j-1)
782 sjmin = amax1(sjmin, scrit)
784 delp = abs(sjmax-smid)
785 delm = abs(sjmin-smid)
786 asij = asij + wgh*(delp+delm)
787 ment(i, j) = ment(i, j)*(delp+delm)*wgh
790 asij = amax1(1.0e-16, asij)
793 ment(i, j) = ment(i, j)*asij
798 asum = asum + ment(i, j)
799 ment(i, j) = ment(i, j)*sig(j)
800 bsum = bsum + ment(i, j)
802 bsum = amax1(bsum, 1.0e-16)
805 ment(i, j) = ment(i, j)*asum*bsum
809 csum = csum + ment(i, j)
815 qent(i, i) = rr(1) - ep(i)*clw(i)
819 traent(i, i, j) = tra(nk, j)
836 qents(im, jm) = qent(im, jm)
837 ments(im, jm) = ment(im, jm)
856 IF (ep(inb)<0.0001)
GO TO 405
872 wdtrain = 10.0*ep(i)*m(i)*clw(i)
875 awat = elij(j, i) - (1.-ep(i))*clw(i)
876 awat = amax1(awat, 0.0)
877 wdtrain = wdtrain + 10.0*awat*ment(j, i)
888 rp(i) = rp(i+1) + (cpd*(t(i+1)-t(i))+gz(i+1)-gz(i))/lv(i)
889 rp(i) = 0.5*(rp(i)+rr(i))
891 rp(i) = amax1(rp(i), 0.0)
892 rp(i) = amin1(rp(i), rs(i))
895 afac = p(1)*(rs(1)-rp(1))/(1.0e4+2000.0*p(1)*rs(1))
897 rp(i-1) = rp(i) + (cpd*(t(i)-t(i-1))+gz(i)-gz(i-1))/lv(i)
898 rp(i-1) = 0.5*(rp(i-1)+rr(i-1))
899 rp(i-1) = amin1(rp(i-1), rs(i-1))
900 rp(i-1) = amax1(rp(i-1), 0.0)
901 afac1 = p(i)*(rs(i)-rp(i))/(1.0e4+2000.0*p(i)*rs(i))
902 afac2 = p(i-1)*(rs(i-1)-rp(i-1))/(1.0e4+2000.0*p(i-1)*rs(i-1))
903 afac = 0.5*(afac1+afac2)
905 IF (i==inb) afac = 0.0
906 afac = amax1(afac, 0.0)
907 bfac = 1./(sigd*wt(i))
919 pr1 = (plcl-ph(i+1))/(ph(i)-ph(i+1))
920 pr1 = max(0., min(1.,pr1))
921 pr2 = (ph(i)-plcl)/(ph(i)-ph(i+1))
922 pr2 = max(0., min(1.,pr2))
923 sigt = sigp(i)*pr1 + pr2
927 b6 = bfac*50.*sigd*(ph(i)-ph(i+1))*sigt*afac
928 c6 = water(i+1) + bfac*wdtrain - 50.*sigd*bfac*(ph(i)-ph(i+1))*evap(i+1)
930 revap = 0.5*(-b6+sqrt(b6*b6+4.*c6))
931 evap(i) = sigt*afac*revap
932 water(i) = revap*revap
934 evap(i) = -evap(i+1) + 0.02*(wdtrain+sigd*wt(i)*water(i+1))/(sigd*(ph(i &
944 tevap = amax1(0.0, evap(i))
945 delth = amax1(0.001, (th(i)-th(i-1)))
946 mp(i) = 10.*lvcp(i)*sigd*tevap*(p(i-1)-p(i))/delth
952 amfac = sigd*sigd*70.0*ph(i)*(p(i-1)-p(i))*(th(i)-th(i-1))/(tv(i)*th(i))
953 amp2 = abs(mp(i+1)*mp(i+1)-mp(i)*mp(i))
954 IF (amp2>(0.1*amfac))
THEN
955 xf = 100.0*sigd*sigd*sigd*(ph(i)-ph(i+1))
956 tf = b(i) - 5.0*(th(i)-th(i-1))*t(i)/(lvcp(i)*sigd*th(i))
957 af = xf*tf + mp(i+1)*mp(i+1)*tinv
958 bf = 2.*(tinv*mp(i+1))**3 + tinv*mp(i+1)*xf*tf + &
959 50.*(p(i-1)-p(i))*xf*tevap
961 IF (bf<0.0) fac2 = -1.0
963 ur = 0.25*bf*bf - af*af*af*tinv*tinv*tinv
967 IF ((0.5*bf-sru)<0.0) fac = -1.0
968 mp(i) = mp(i+1)*tinv + (0.5*bf+sru)**tinv + &
969 fac*(abs(0.5*bf-sru))**tinv
971 d = atan(2.*sqrt(-ur)/(bf+1.0e-28))
972 IF (fac2<0.0) d = 3.14159 - d
973 mp(i) = mp(i+1)*tinv + 2.*sqrt(af*tinv)*cos(d*tinv)
975 mp(i) = amax1(0.0, mp(i))
976 b(i-1) = b(i) + 100.0*(p(i-1)-p(i))*tevap/(mp(i)+sigd*0.1) - &
977 10.0*(th(i)-th(i-1))*t(i)/(lvcp(i)*sigd*th(i))
978 b(i-1) = amax1(b(i-1), 0.0)
985 ampmax = 2.0*(ph(i)-ph(i+1))*delti
986 amp2 = 2.0*(ph(i-1)-ph(i))*delti
987 ampmax = amin1(ampmax, amp2)
988 mp(i) = amin1(mp(i), ampmax)
993 IF (p(i)>p(icb))
THEN
994 mp(i) = mp(icb)*(p(1)-p(i))/(p(1)-p(icb))
1000 IF (i==inb)
GO TO 400
1002 IF (mp(i)>mp(i+1))
THEN
1003 rp(i) = rp(i+1)*mp(i+1) + rr(i)*(mp(i)-mp(i+1)) + &
1004 5.*sigd*(ph(i)-ph(i+1))*(evap(i+1)+evap(i))
1006 up(i) = up(i+1)*mp(i+1) + u(i)*(mp(i)-mp(i+1))
1008 vp(i) = vp(i+1)*mp(i+1) + v(i)*(mp(i)-mp(i+1))
1011 trap(i, j) = trap(i+1, j)*mp(i+1) + trap(i, j)*(mp(i)-mp(i+1))
1012 trap(i, j) = trap(i, j)/mp(i)
1015 IF (mp(i+1)>1.0e-16)
THEN
1016 rp(i) = rp(i+1) + 5.0*sigd*(ph(i)-ph(i+1))*(evap(i+1)+evap(i))/mp(i+1 &
1021 trap(i, j) = trap(i+1, j)
1025 rp(i) = amin1(rp(i), rs(i))
1026 rp(i) = amax1(rp(i), 0.0)
1031 precip = wt(1)*sigd*water(1)*8640.0
1041 wd = betad*abs(mp(icb))*0.01*rd*t(icb)/(sigd*p(icb))
1048 dpinv = 1.0/(ph(1)-ph(2))
1053 IF ((0.1*dpinv*am)>=delti) iflag = 4
1054 ft(1) = 0.1*dpinv*am*(t(2)-t(1)+(gz(2)-gz(1))/cpn(1))
1055 ft(1) = ft(1) - 0.5*lvcp(1)*sigd*(evap(1)+evap(2))
1056 ft(1) = ft(1) - 0.09*sigd*mp(2)*t(1)*b(1)*dpinv
1057 ft(1) = ft(1) + 0.01*sigd*wt(1)*(cl-cpd)*water(2)*(t(2)-t(1))*dpinv/cpn(1)
1058 fr(1) = 0.1*mp(2)*(rp(2)-rr(1))* &
1060 dpinv + sigd*0.5*(evap(1)+evap(2))
1063 fr(1) = fr(1) + 0.1*am*(rr(2)-rr(1))*dpinv
1064 fu(1) = fu(1) + 0.1*dpinv*(mp(2)*(up(2)-u(1))+am*(u(2)-u(1)))
1065 fv(1) = fv(1) + 0.1*dpinv*(mp(2)*(vp(2)-v(1))+am*(v(2)-v(1)))
1067 ftra(1, j) = ftra(1, j) + 0.1*dpinv*(mp(2)*(trap(2,j)-tra(1, &
1068 j))+am*(tra(2,j)-tra(1,j)))
1072 fr(1) = fr(1) + 0.1*dpinv*ment(j, 1)*(qent(j,1)-rr(1))
1073 fu(1) = fu(1) + 0.1*dpinv*ment(j, 1)*(uent(j,1)-u(1))
1074 fv(1) = fv(1) + 0.1*dpinv*ment(j, 1)*(vent(j,1)-v(1))
1076 ftra(1, k) = ftra(1, k) + 0.1*dpinv*ment(j, 1)*(traent(j,1,k)-tra(1,k))
1089 dpinv = 1.0/(ph(i)-ph(i+1))
1092 DO k = i + 1, inb + 1
1096 DO j = i + 1, inb + 1
1097 amp1 = amp1 + ment(k, j)
1100 IF ((0.1*dpinv*amp1)>=delti) iflag = 4
1104 ad = ad + ment(j, k)
1107 ft(i) = 0.1*dpinv*(amp1*(t(i+1)-t(i)+(gz(i+1)-gz(i))*cpinv)-ad*(t(i)-t(i- &
1108 1)+(gz(i)-gz(i-1))*cpinv)) - 0.5*sigd*lvcp(i)*(evap(i)+evap(i+1))
1109 rat = cpn(i-1)*cpinv
1110 ft(i) = ft(i) - 0.09*sigd*(mp(i+1)*t(i)*b(i)-mp(i)*t(i-1)*rat*b(i-1))* &
1112 ft(i) = ft(i) + 0.1*dpinv*ment(i, i)*(hp(i)-h(i)+t(i)*(cpv-cpd)*(rr(i)- &
1114 ft(i) = ft(i) + 0.01*sigd*wt(i)*(cl-cpd)*water(i+1)*(t(i+1)-t(i))*dpinv* &
1116 fr(i) = 0.1*dpinv*(amp1*(rr(i+1)-rr(i))-ad*(rr(i)-rr(i-1)))
1117 fu(i) = fu(i) + 0.1*dpinv*(amp1*(u(i+1)-u(i))-ad*(u(i)-u(i-1)))
1118 fv(i) = fv(i) + 0.1*dpinv*(amp1*(v(i+1)-v(i))-ad*(v(i)-v(i-1)))
1120 ftra(i, k) = ftra(i, k) + 0.1*dpinv*(amp1*(tra(i+1,k)-tra(i, &
1121 k))-ad*(tra(i,k)-tra(i-1,k)))
1124 awat = elij(k, i) - (1.-ep(i))*clw(i)
1125 awat = amax1(awat, 0.0)
1126 fr(i) = fr(i) + 0.1*dpinv*ment(k, i)*(qent(k,i)-awat-rr(i))
1127 fu(i) = fu(i) + 0.1*dpinv*ment(k, i)*(uent(k,i)-u(i))
1128 fv(i) = fv(i) + 0.1*dpinv*ment(k, i)*(vent(k,i)-v(i))
1130 qcond(i) = qcond(i) + (elij(k,i)-awat)
1131 nqcond(i) = nqcond(i) + 1.
1133 ftra(i, j) = ftra(i, j) + 0.1*dpinv*ment(k, i)*(traent(k,i,j)-tra(i,j &
1138 fr(i) = fr(i) + 0.1*dpinv*ment(k, i)*(qent(k,i)-rr(i))
1139 fu(i) = fu(i) + 0.1*dpinv*ment(k, i)*(uent(k,i)-u(i))
1140 fv(i) = fv(i) + 0.1*dpinv*ment(k, i)*(vent(k,i)-v(i))
1142 ftra(i, j) = ftra(i, j) + 0.1*dpinv*ment(k, i)*(traent(k,i,j)-tra(i,j &
1146 fr(i) = fr(i) + 0.5*sigd*(evap(i)+evap(i+1)) + 0.1*(mp(i+1)*(rp(i+ &
1147 1)-rr(i))-mp(i)*(rp(i)-rr(i-1)))*dpinv
1148 fu(i) = fu(i) + 0.1*(mp(i+1)*(up(i+1)-u(i))-mp(i)*(up(i)-u(i-1)))*dpinv
1149 fv(i) = fv(i) + 0.1*(mp(i+1)*(vp(i+1)-v(i))-mp(i)*(vp(i)-v(i-1)))*dpinv
1151 ftra(i, j) = ftra(i, j) + 0.1*dpinv*(mp(i+1)*(trap(i+1,j)-tra(i, &
1152 j))-mp(i)*(trap(i,j)-trap(i-1,j)))
1156 qcond(i) = qcond(i) + elij(k, i)
1157 nqcond(i) = nqcond(i) + 1.
1160 IF (nent(i)==0)
THEN
1161 qcond(i) = qcond(i) + (1-ep(i))*clw(i)
1162 nqcond(i) = nqcond(i) + 1.
1164 IF (nqcond(i)/=0.)
THEN
1165 qcond(i) = qcond(i)/nqcond(i)
1186 ax = 0.1*ment(inb, inb)*(hp(inb)-h(inb)+t(inb)*(cpv-cpd)*(rr(inb)-qent(inb, &
1187 inb)))/(cpn(inb)*(ph(inb)-ph(inb+1)))
1188 ft(inb) = ft(inb) - ax
1189 ft(inb-1) = ft(inb-1) + ax*cpn(inb)*(ph(inb)-ph(inb+1))/(cpn(inb-1)*(ph(inb &
1191 bx = 0.1*ment(inb, inb)*(qent(inb,inb)-rr(inb))/(ph(inb)-ph(inb+1))
1192 fr(inb) = fr(inb) - bx
1193 fr(inb-1) = fr(inb-1) + bx*(ph(inb)-ph(inb+1))/(ph(inb-1)-ph(inb))
1194 cx = 0.1*ment(inb, inb)*(uent(inb,inb)-u(inb))/(ph(inb)-ph(inb+1))
1195 fu(inb) = fu(inb) - cx
1196 fu(inb-1) = fu(inb-1) + cx*(ph(inb)-ph(inb+1))/(ph(inb-1)-ph(inb))
1197 dx = 0.1*ment(inb, inb)*(vent(inb,inb)-v(inb))/(ph(inb)-ph(inb+1))
1198 fv(inb) = fv(inb) - dx
1199 fv(inb-1) = fv(inb-1) + dx*(ph(inb)-ph(inb+1))/(ph(inb-1)-ph(inb))
1201 ex = 0.1*ment(inb, inb)*(traent(inb,inb,j)-tra(inb,j))/ &
1203 ftra(inb, j) = ftra(inb, j) - ex
1204 ftra(inb-1, j) = ftra(inb-1, j) + ex*(ph(inb)-ph(inb+1))/(ph(inb-1)-ph( &
1215 asum = asum + ft(i)*(ph(i)-ph(i+1))
1216 bsum = bsum + fr(i)*(lv(i)+(cl-cpd)*(t(i)-t(1)))*(ph(i)-ph(i+1))
1217 csum = csum + (lv(i)+(cl-cpd)*(t(i)-t(1)))*(ph(i)-ph(i+1))
1218 dsum = dsum + t(i)*(ph(i)-ph(i+1))/th(i)
1221 ft(i) = asum*t(i)/(th(i)*dsum)
1251 up1 = up1 + ment(n, k)
1252 dn1 = dn1 - ment(k, n)
1254 upwd(i) = upwd(i) + m(k) + up1
1255 dnwd(i) = dnwd(i) + dn1
1288 ma(i) = ma(i) + m(j)
1309 mke(i) = upwd(i) + dnwd(i)
1322 DO k = i + 1, inb + 1
1323 maa(i) = maa(i) + m(k)
1329 axc(i) = axc(i) + rd*(tvp(j)-tv(j))*(ph(j)-ph(j+1))/p(j)
1331 IF (axc(i)>0.0)
THEN
1332 wa(i) = sqrt(2.*axc(i))
1337 siga(i) = maa(i)/wa(i)*rd*tvp(i)/p(i)/100./deltac
1338 siga(i) = min(siga(i), 1.0)
1339 qcondc(i) = siga(i)*clw(i)*(1.-ep(i)) &
1340 +(1.-siga(i))*qcond(i)
subroutine clift(p, t, rr, rs, plcl, dplcldt, dplcldq)
subroutine tlift(p, t, rr, rs, gz, plcl, icb, nk, tvp, tpk, clw, nd, nl, dtvpdt1, dtvpdq1)
subroutine convect3(dtime, epmax, ok_adj, t1, r1, rs, u, v, tra, p, ph, nd,ndp1, nl, ntra, delt, iflag, ft, fr, fu, fv, ftra, precip, icb, inb,upwd, dnwd, dnwd0, sig, w0, mike, mke, ma, ments, qents, tps, tls, sigij,cape, tvp, pbase, buoybase,
!$Header!integer nvarmx parameter(nfmx=10, imx=200, jmx=150, lmx=200, nvarmx=1000) real xd(imx
!$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