54 & eps,epsm1,fv,grav,hvap,rd,rv, &
55 & t0c,delt,ntk,ntr,delp,first_time_step,restart, &
56 & tmf,qmicro,progsigma,progomega, &
57 & prslp,psp,phil,tkeh,qtr,dqtr,prevsq,q,q1,t1,u1,v1,fscav, &
58 & rn,kbot,ktop,kcnv,islimsk,garea,cscale,ten_t, ten_u, ten_v, &
59 & ten_q, dot,ncloud,hpbl,ud_mf,dt_mf,cnvw,cnvc, &
60 & clam,c0s,c1,evef,pgcon,asolfac,hwrf_samfshal, &
61 & sigmain,sigmaout,omegain,omegaout,betadcu,betamcu,betascu, &
62 & lbb1,lbb2,lbb3,dt_decay,cat_adj_shal,errmsg,errflg)
64 use machine ,
only : kind_phys
65 use funcphys ,
only : fpvs
69 integer,
intent(in) :: im, km, nn, itc, ntc, ntk, ntr, ncloud
70 integer,
intent(in) :: islimsk(:)
71 real(kind=kind_phys),
intent(in) :: cliq, cp, cvap, &
72 & eps, epsm1, fv, grav, hvap, rd, rv, t0c, betascu, betadcu, &
73 & betamcu, lbb1, lbb2, lbb3, dt_decay
74 real(kind=kind_phys),
intent(in) :: delt, cscale
75 real(kind=kind_phys),
intent(in) :: psp(:), delp(:,:), &
76 & prslp(:,:), garea(:), hpbl(:), dot(:,:), phil(:,:), &
78 real(kind=kind_phys),
intent(in),
optional :: qmicro(:,:), &
80 real(kind=kind_phys),
intent(in),
optional :: sigmain(:,:), &
83 real(kind=kind_phys),
dimension(:),
intent(in) :: fscav
84 integer,
intent(inout) :: kcnv(:)
86 real(kind=kind_phys),
intent(inout) :: tkeh(:,:)
87 real(kind=kind_phys),
intent(in) :: qtr(:,:,:), &
90 real(kind=kind_phys),
intent(in) :: t1(:,:), u1(:,:), v1(:,:)
92 integer,
intent(out) :: kbot(:), ktop(:)
93 real(kind=kind_phys),
intent(out) :: rn(:), &
94 & cnvw(:,:), cnvc(:,:), dt_mf(:,:)
96 real(kind=kind_phys),
intent(out) :: ud_mf(:,:)
97 real(kind=kind_phys),
intent(inout),
optional :: sigmaout(:,:), &
100 real(kind=kind_phys),
intent(in) :: clam, c0s, c1, &
101 & asolfac, evef, pgcon
102 logical,
intent(in) :: hwrf_samfshal,first_time_step, &
103 & restart,progsigma,progomega
104 real(kind_phys),
intent(in) :: cat_adj_shal
105 character(len=*),
intent(out) :: errmsg
106 integer,
intent(out) :: errflg
110 integer i,j,indx, k, kk, km1, n
113 real(kind=kind_phys) clamd, tkemx, tkemn, dtke
115 real(kind=kind_phys) dellat,
118 & dq, dqsdp, dqsdt, dt,
123 & el2orc, elocp, aafac,
125 & es, etah, h1, shevf,
127 & fact1, fact2, factor,
128 & cthk, cthkmn, dthk,
129 & gamma, pprime, betaw, tauadv,
131 & rfact, shear, tfac,
136 & rho, tem, tem1, tem2,
139 integer kb(im), kb1(im), kbcon(im), kbcon1(im),
140 & ktcon(im), ktcon1(im),
143 real(kind=kind_phys) aa1(im), cina(im),
144 & tkemean(im), clamt(im),
145 & ps(im), del(im,km), prsl(im,km),
146 & umean(im), advfac(im), gdx(im),
147 & delhbar(im), delq(im), delq2(im),
148 & delqbar(im), delqev(im), deltbar(im),
150 & deltv(im), dtconv(im),
151 & pdot(im), po(im,km),
152 & qcond(im), qevap(im), hmax(im),
155 & xlamud(im), xmb(im), xmbmax(im),
157 & delubar(im), delvbar(im)
159 real(kind=kind_phys) c0(im), sfcpbl(im)
161 real(kind=kind_phys) crtlame, crtlamd
163 real(kind=kind_phys) cinpcr, cinpcrmx, cinpcrmn,
164 & cinacr, cinacrmx, cinacrmn,
169 real(kind=kind_phys) bb1, bb2, csmf, wucb
173 real(kind=kind_phys) omega_u(im,km),zdqca(im,km),tmfq(im,km),
174 & omegac(im),zeta(im,km),dbyo1(im,km),
175 & sigmab(im),qadv(im,km)
176 real(kind=kind_phys) gravinv,dxcrtas,invdelt,sigmind,sigmins,
177 & sigminm,wc_min,wc_eff
178 logical flag_shallow,flag_mid
196 parameter(cm=1.0,cq=1.0)
198 parameter(clamd=0.1,tkemx=0.65,tkemn=0.05)
199 parameter(dtke=tkemx-tkemn)
200 parameter(cthk=200.,cthkmn=0.,dthk=25.)
201 parameter(sfclfac=0.2,rhcrt=0.75)
202 parameter(cinpcrmx=180.,cinpcrmn=120.)
204 parameter(cinacrmx=-120.,shevf=2.0)
205 parameter(dtmax=10800.,dtmin=600.)
206 parameter(bb1=4.0,bb2=0.8,csmf=0.2)
207 parameter(tkcrt=2.,cmxfac=10.)
209 parameter(betaw=.03,dxcrtc0=9.e3)
210 parameter(h1=0.33333333)
211c local variables and arrays
212 real(kind=kind_phys) pfld(im,km), to(im,km), qo(im,km),
213 & uo(im,km), vo(im,km), qeso(im,km),
214 & ctr(im,km,ntr), ctro(im,km,ntr)
217c variables for tracer wet deposition,
218 real(kind=kind_phys),
dimension(im,km,ntc) :: chem_c, chem_pw,
221 real(kind=kind_phys),
parameter :: escav = 0.8
224 real(kind=kind_phys) wu2(im,km), buo(im,km), drag(im,km),
225 & wush(im,km), wc(im)
228 real(kind=kind_phys) scaldfunc(im), sigmagfm(im)
232 real(kind=kind_phys) qlko_ktcon(im), dellal(im,km),
233 & dbyo(im,km), zo(im,km), xlamue(im,km),
235 & heo(im,km), heso(im,km),
236 & dellah(im,km), dellaq(im,km),
238 & dellau(im,km), dellav(im,km), hcko(im,km),
239 & ucko(im,km), vcko(im,km), qcko(im,km),
240 & qrcko(im,km), ecko(im,km,ntr),
241 & ercko(im,km,ntr), eta(im,km),
242 & zi(im,km), pwo(im,km), c0t(im,km),
243 & sumx(im), tx1(im), cnvwt(im,km)
249 real(kind=kind_phys) q_diff(im,0:km-1), e_diff(im,0:km-1,ntr),
251 real(kind=kind_phys) rrkp, phkp
252 real(kind=kind_phys) tsumn(im), tsump(im), rtnp(im)
254 logical do_aerosols, totflg, cnvflg(im), flg(im)
256 real(kind=kind_phys) tf, tcr, tcrf
257 parameter(tf=233.16, tcr=263.16, tcrf=1.0/(tcr-tf))
259 real(kind=kind_phys),
intent(out) :: ten_t(:,:), ten_u(:,:), &
260 & ten_v(:,:), ten_q(:,:,:), dqtr(:,:,:)
262 real(kind=kind_phys) :: new_t1(im,km),new_u1(im,km),new_v1(im,km),&
263 & new_q1(im,km), new_qtr(im,km,nn)
277c-----------------------------------------------------------------------
287 el2orc = hvap*hvap/(rv*cp)
289 fact1 = (cvap-cliq)/rv
290 fact2 = hvap/rv-fact1*t0c
292 if (.not.hwrf_samfshal)
then
304c-----------------------------------------------------------------------
305 if (.not.hwrf_samfshal)
then
307 do_aerosols = (itc > 0) .and. (ntc > 0) .and. (ntr > 0)
308 if (do_aerosols) do_aerosols = (ntr >= itc + ntc - 3)
344 if(hwrf_samfshal)
then
347 if(kcnv(i) == 1) cnvflg(i) = .false.
352 sfcpbl(i) = sfclfac * hpbl(i)
364 gdx(i) = sqrt(garea(i))
373 if(kcnv(i) == 1) cnvflg(i) = .false.
378 sfcpbl(i) = sfclfac * hpbl(i)
389 gdx(i) = sqrt(garea(i))
398 totflg = totflg .and. (.not. cnvflg(i))
405 if(islimsk(i) == 1)
then
414 if(gdx(i) < dxcrtc0)
then
415 tem = gdx(i) / dxcrtc0
424 if(t1(i,k) > 273.16)
then
427 tem = d0 * (t1(i,k) - 273.16)
429 c0t(i,k) = c0(i) * tem1
452c model tunable parameters are all here
469c define top layer for search of the downdraft originating layer
470c and the maximum thetae for updraft
481 if (prsl(i,k)*tx1(i) > 0.70) kbm(i) = k + 1
482 if (prsl(i,k)*tx1(i) > 0.60) kmax(i) = k + 1
486 kbm(i) = min(kbm(i),kmax(i))
489c hydrostatic height assume zero terr and compute
490c updraft entrainment rate as an inverse
function of height
495 zo(i,k) = phil(i,k) / grav
499 if(hwrf_samfshal)
then
502 zi(i,k) = 0.5*(zo(i,k)+zo(i,k+1))
503 xlamue(i,k) = clam / zi(i,k)
507 xlamue(i,km) = xlamue(i,km1)
512 zi(i,k) = 0.5*(zo(i,k)+zo(i,k+1))
526 if (flg(i) .and. zo(i,k) <= hpbl(i))
then
534 kpbl(i)= min(kpbl(i),kbm(i))
538c convert surface pressure to mb from cb
543 if (cnvflg(i) .and. k <= kmax(i))
then
544 pfld(i,k) = prsl(i,k) * 10.0
585 if (.not.hwrf_samfshal)
then
590 if (cnvflg(i) .and. k <= kmax(i))
then
591 ctr(i,k,kk) = qtr(i,k,n)
592 ctro(i,k,kk) = qtr(i,k,n)
603 if (cnvflg(i) .and. k <= kmax(i))
then
604 qeso(i,k) = 0.01 * fpvs(to(i,k))
605 qeso(i,k) = eps * qeso(i,k) / (pfld(i,k) + epsm1*qeso(i,k))
607 qeso(i,k) = max(qeso(i,k), val1)
609 qo(i,k) = max(qo(i,k), val2 )
616c compute moist static energy
621 if (cnvflg(i) .and. k <= kmax(i))
then
623 tem = phil(i,k) + cp * to(i,k)
624 heo(i,k) = tem + hvap * qo(i,k)
625 heso(i,k) = tem + hvap * qeso(i,k)
626c heo(i,k) = min(heo(i,k),heso(i,k))
631c determine level with largest moist static energy within pbl
632c this is the level
where updraft starts
642 if (flg(i) .and. zo(i,k) <= sfcpbl(i))
then
650 kb1(i) = min(kb1(i),kpbl(i))
656 hmax(i) = heo(i,kb1(i))
662 if(cnvflg(i) .and. (k > kb1(i) .and. k <= kpbl(i)))
then
663 if(heo(i,k) > hmax(i))
then
674 if (cnvflg(i) .and. k <= kmax(i)-1)
then
675 dz = .5 * (zo(i,k+1) - zo(i,k))
676 dp = .5 * (pfld(i,k+1) - pfld(i,k))
677 es = 0.01 * fpvs(to(i,k+1))
678 pprime = pfld(i,k+1) + epsm1 * es
679 qs = eps * es / pprime
680 dqsdp = - qs / pprime
681 desdt = es * (fact1 / to(i,k+1) + fact2 / (to(i,k+1)**2))
682 dqsdt = qs * pfld(i,k+1) * desdt / (es * pprime)
683 gamma = el2orc * qeso(i,k+1) / (to(i,k+1)**2)
684 dt = (grav*dz + hvap*dqsdp*dp) / (cp*(1. + gamma))
685 dq = dqsdt * dt + dqsdp * dp
686 to(i,k) = to(i,k+1) + dt
687 qo(i,k) = qo(i,k+1) + dq
688 po(i,k) = .5 * (pfld(i,k) + pfld(i,k+1))
696 if (cnvflg(i) .and. k <= kmax(i)-1)
then
697 qeso(i,k) = 0.01 * fpvs(to(i,k))
698 qeso(i,k) = eps * qeso(i,k) / (po(i,k) + epsm1*qeso(i,k))
700 qeso(i,k) = max(qeso(i,k), val1)
702 qo(i,k) = max(qo(i,k), val2 )
704 rh(i,k) = min(qo(i,k)/qeso(i,k), 1.)
705 heo(i,k) = .5 * grav * (zo(i,k) + zo(i,k+1)) +
706 & cp * to(i,k) + hvap * qo(i,k)
707 heso(i,k) = .5 * grav * (zo(i,k) + zo(i,k+1)) +
708 & cp * to(i,k) + hvap * qeso(i,k)
709 uo(i,k) = .5 * (uo(i,k) + uo(i,k+1))
710 vo(i,k) = .5 * (vo(i,k) + vo(i,k+1))
715 if (.not.hwrf_samfshal)
then
719 if (cnvflg(i) .and. k <= kmax(i)-1)
then
720 ctro(i,k,n) = .5 * (ctro(i,k,n) + ctro(i,k+1,n))
727c look for the level of free convection as cloud base
732 if(flg(i)) kbcon(i) = kmax(i)
736 if (flg(i) .and. k < kbm(i))
then
737 if(k > kb(i) .and. heo(i,kb(i)) > heso(i,k))
then
747 if(kbcon(i) == kmax(i)) cnvflg(i) = .false.
755 totflg = totflg .and. (.not. cnvflg(i))
764 pdot(i) = 0.01 * dot(i,kbcon(i))
768c turn off convection
if pressure depth between parcel source level
769c and cloud base is larger than a critical
value, cinpcr
773 if(islimsk(i) == 1)
then
784 if(pdot(i) <= w4)
then
785 tem = (pdot(i) - w4) / (w3 - w4)
786 elseif(pdot(i) >= -w4)
then
787 tem = - (pdot(i) + w4) / (w4 - w3)
796 ptem1= .5*(cinpcrmx-cinpcrmn)
797 cinpcr = cinpcrmx - ptem * ptem1
798 tem1 = pfld(i,kb(i)) - pfld(i,kbcon(i))
800 if(tem1 > cinpcr .and.
801 & zi(i,kbcon(i)) > hpbl(i))
then
810 totflg = totflg .and. (.not. cnvflg(i))
825 if (cnvflg(i) .and. k <= kpbl(i))
then
826 if(heo(i,k) > hmax(i))
then
836 if(flg(i)) kbcon(i) = kmax(i)
840 if (flg(i) .and. k < kbm(i))
then
841 if(k > kb(i) .and. heo(i,kb(i)) > heso(i,k))
then
851 if(kbcon(i) == kmax(i)) cnvflg(i) = .false.
858 totflg = totflg .and. (.not. cnvflg(i))
866 pdot(i) = 0.01 * dot(i,kbcon(i))
879 if(k >= kb(i) .and. k < kbcon(i))
then
880 dz = zo(i,k+1) - zo(i,k)
881 rhbar(i) = rhbar(i) + rh(i,k) * dz
882 sumx(i) = sumx(i) + dz
889 rhbar(i) = rhbar(i) / sumx(i)
890 if(rhbar(i) < rhcrt)
then
900 totflg = totflg .and. (.not. cnvflg(i))
912 if (hwrf_samfshal)
then
915 xlamud(i) = xlamue(i,kbcon(i))
931 if(k >= kb(i) .and. k < kbcon(i))
then
932 dz = zo(i,k+1) - zo(i,k)
933 tkemean(i) = tkemean(i) + tkeh(i,k) * dz
934 sumx(i) = sumx(i) + dz
942 tkemean(i) = tkemean(i) / sumx(i)
943 if(tkemean(i) > tkemx)
then
944 clamt(i) = clam + clamd
945 else if(tkemean(i) < tkemn)
then
946 clamt(i) = clam - clamd
948 tem = tkemx - tkemean(i)
949 tem1 = 1. - 2. * tem / dtke
950 clamt(i) = clam + clamd * tem1
957 if(tkemean(i) > tkcrt)
then
958 tem = 1. + tkemean(i)/tkcrt
959 tem1 = min(tem, cmxfac)
960 clamt(i) = tem1 * clam
982 dz = zo(i,k+1) - zo(i,k)
983 xlamue(i,k) = clamt(i) / (zi(i,k) + dz)
984 xlamue(i,k) = max(xlamue(i,k), crtlame)
990 xlamue(i,km) = xlamue(i,km1)
994c specify the detrainment rate for the updrafts
1003 xlamud(i) = 0.001 * clamt(i)
1008c determine updraft mass flux for the subcloud layers
1018 if(k < kbcon(i) .and. k >= kb(i))
then
1019 dz = zi(i,k+1) - zi(i,k)
1020 ptem = 0.5*(xlamue(i,k)+xlamue(i,k+1))-xlamud(i)
1021 eta(i,k) = eta(i,k+1) / (1. + ptem * dz)
1027c compute mass flux above cloud base
1035 if(k > kbcon(i) .and. k < kmax(i))
then
1036 dz = zi(i,k) - zi(i,k-1)
1037 ptem = 0.5*(xlamue(i,k)+xlamue(i,k-1))-xlamud(i)
1038 eta(i,k) = eta(i,k-1) * (1 + ptem * dz)
1039 if(eta(i,k) <= 0.)
then
1041 kbm(i) = min(kbm(i),kmax(i))
1049c compute updraft cloud property
1055 hcko(i,indx) = heo(i,indx)
1056 ucko(i,indx) = uo(i,indx)
1057 vcko(i,indx) = vo(i,indx)
1061 if (.not. hwrf_samfshal)
then
1066 ecko(i,indx,n) = ctro(i,indx,n)
1067 ercko(i,indx,n) = ctro(i,indx,n)
1079 if(k > kb(i) .and. k < kmax(i))
then
1080 dz = zi(i,k) - zi(i,k-1)
1081 tem = 0.5 * (xlamue(i,k)+xlamue(i,k-1)) * dz
1082 tem1 = 0.5 * xlamud(i) * dz
1083 factor = 1. + tem - tem1
1084 hcko(i,k) = ((1.-tem1)*hcko(i,k-1)+tem*0.5*
1085 & (heo(i,k)+heo(i,k-1)))/factor
1086 dbyo(i,k) = hcko(i,k) - heso(i,k)
1088 tem = 0.5 * cm * tem
1092 ucko(i,k) = ((1.-tem)*ucko(i,k-1)+ptem*uo(i,k)
1093 & +ptem1*uo(i,k-1))/factor
1094 vcko(i,k) = ((1.-tem)*vcko(i,k-1)+ptem*vo(i,k)
1095 & +ptem1*vo(i,k-1))/factor
1101 if (.not.hwrf_samfshal)
then
1102 if (do_aerosols)
then
1111 if(k > kb(i) .and. k < kmax(i))
then
1112 dz = zi(i,k) - zi(i,k-1)
1113 tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz
1116 ecko(i,k,n) = ((1.-tem)*ecko(i,k-1,n)+tem*
1117 & (ctro(i,k,n)+ctro(i,k-1,n)))/factor
1118 ercko(i,k,n) = ecko(i,k,n)
1124 if (do_aerosols)
then
1130 if(k > kb(i) .and. k < kmax(i))
then
1131 dz = zi(i,k) - zi(i,k-1)
1132 tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz
1135 ecko(i,k,kk) = ((1. - tem) * ecko(i,k-1,kk) + tem *
1136 & (ctro(i,k,kk) + ctro(i,k-1,kk))) / factor
1137 ercko(i,k,kk) = ecko(i,k,kk)
1138 chem_c(i,k,n) = escav * fscav(n) * ecko(i,k,kk)
1139 tem = chem_c(i,k,n) / (1. + c0t(i,k) * dz)
1140 chem_pw(i,k,n) = c0t(i,k) * dz * tem * eta(i,k-1)
1141 ecko(i,k,kk) = tem + ecko(i,k,kk) - chem_c(i,k,n)
1152 if(k > kb(i) .and. k < kmax(i))
then
1153 dz = zi(i,k) - zi(i,k-1)
1154 tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz
1157 ecko(i,k,kk) = ((1. - tem) * ecko(i,k-1,kk) + tem *
1158 & (ctro(i,k,kk) + ctro(i,k-1,kk))) / factor
1159 ercko(i,k,kk) = ecko(i,k,kk)
1168c taking account into convection inhibition due to existence of
1169c dry layers below cloud base
1178 if (flg(i) .and. k < kbm(i))
then
1179 if(k >= kbcon(i) .and. dbyo(i,k) > 0.)
then
1188 if(kbcon1(i) == kmax(i)) cnvflg(i) = .false.
1193 tem = pfld(i,kbcon(i)) - pfld(i,kbcon1(i))
1203 totflg = totflg .and. (.not. cnvflg(i))
1209c calculate convective inhibition
1215 if(k > kb(i) .and. k < kbcon1(i))
then
1216 dz1 = zo(i,k+1) - zo(i,k)
1217 gamma = el2orc * qeso(i,k) / (to(i,k)**2)
1218 rfact = 1. + fv * cp * gamma
1222 & dz1 * (grav / (cp * to(i,k)))
1223 & * dbyo(i,k) / (1. + gamma)
1229 & max(val,(qeso(i,k) - qo(i,k)))
1236 if (hwrf_samfshal)
then
1240 if(cina(i) < cinacr) cnvflg(i) = .false.
1246 if(islimsk(i) == 1)
then
1257 if(pdot(i) <= w4)
then
1258 tem = (pdot(i) - w4) / (w3 - w4)
1259 elseif(pdot(i) >= -w4)
then
1260 tem = - (pdot(i) + w4) / (w4 - w3)
1270 tem1= .5*(cinacrmx-cinacrmn)
1271 cinacr = cinacrmx - tem * tem1
1272 if(cina(i) < cinacr) cnvflg(i) = .false.
1280 totflg = totflg .and. (.not. cnvflg(i))
1286c determine first guess cloud top as the level of zero buoyancy
1287c limited to the level of p/ps=0.7
1292 if(flg(i)) ktcon(i) = 1
1296 if (flg(i) .and. k < kbm(i))
then
1297 if(k > kbcon1(i) .and. dbyo(i,k) < 0.)
then
1305c turn off shallow convection
if cloud depth is larger than cthk or less than cthkmn
1309 tem = pfld(i,kbcon(i))-pfld(i,ktcon(i))
1310 if(tem > cthk .or. tem < cthkmn)
then
1317c specify upper limit of mass flux at cloud base
1323 dp = 1000. * del(i,k)
1324 xmbmax(i) = dp / (grav * dt2)
1328c compute cloud moisture property and precipitation
1334 qcko(i,kb(i)) = qo(i,kb(i))
1335 qrcko(i,kb(i)) = qo(i,kb(i))
1342 if(k > kb(i) .and. k < ktcon(i))
then
1343 dz = zi(i,k) - zi(i,k-1)
1344 gamma = el2orc * qeso(i,k) / (to(i,k)**2)
1346 & + gamma * dbyo(i,k) / (hvap * (1. + gamma))
1348 tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz
1351 qcko(i,k) = ((1.-tem)*qcko(i,k-1)+tem*
1352 & (qo(i,k)+qo(i,k-1)))/factor
1353 qrcko(i,k) = qcko(i,k)
1355 dq = eta(i,k) * (qcko(i,k) - qrch)
1359c below lfc check
if there is excess moisture to release latent heat
1361 if(k >= kbcon(i) .and. dq > 0.)
then
1362 etah = .5 * (eta(i,k) + eta(i,k-1))
1363 dp = 1000. * del(i,k)
1365 ptem = c0t(i,k) + c1
1366 qlk = dq / (eta(i,k) + etah * ptem * dz)
1367 dellal(i,k) = etah * c1 * dz * qlk * grav / dp
1369 qlk = dq / (eta(i,k) + etah * c0t(i,k) * dz)
1371 buo(i,k) = buo(i,k) - grav * qlk
1372 qcko(i,k)= qlk + qrch
1373 pwo(i,k) = etah * c0t(i,k) * dz * qlk
1374 cnvwt(i,k) = etah * qlk * grav / dp
1375 zdqca(i,k)=dq/eta(i,k)
1380 if(k >= kbcon(i))
then
1381 rfact = 1. + fv * cp * gamma
1383 buo(i,k) = buo(i,k) + (grav / (cp * to(i,k)))
1384 & * dbyo(i,k) / (1. + gamma)
1387 buo(i,k) = buo(i,k) + grav * fv *
1388 & max(val,(qeso(i,k) - qo(i,k)))
1389 drag(i,k) = max(xlamue(i,k),xlamud(i))
1391 tem = ((uo(i,k)-uo(i,k-1))/dz)**2
1392 tem = tem+((vo(i,k)-vo(i,k-1))/dz)**2
1393 wush(i,k) = csmf * sqrt(tem)
1402c calculate cloud work function
1445 if(k >= kbcon(i) .and. k < ktcon(i))
then
1446 dz1 = zo(i,k+1) - zo(i,k)
1447 aa1(i) = aa1(i) + buo(i,k) * dz1
1448 dbyo1(i,k) = hcko(i,k) - heso(i,k)
1454 if(cnvflg(i) .and. aa1(i) <= 0.) cnvflg(i) = .false.
1462 totflg = totflg .and. (.not. cnvflg(i))
1468c estimate the onvective overshooting as the level
1469c
where the [aafac * cloud work function] becomes zero,
1470c which is the final cloud top
1471c limited to the level of p/ps=0.7
1476 aa1(i) = aafac * aa1(i)
1487 if(k >= ktcon(i) .and. k < kbm(i))
then
1488 dz1 = zo(i,k+1) - zo(i,k)
1489 gamma = el2orc * qeso(i,k) / (to(i,k)**2)
1490 rfact = 1. + fv * cp * gamma
1494 & dz1 * (grav / (cp * to(i,k)))
1495 & * dbyo(i,k) / (1. + gamma)
1502 if(aa1(i) < 0.)
then
1511c compute cloud moisture property, detraining cloud water
1512c and precipitation in overshooting layers
1518 if(k >= ktcon(i) .and. k < ktcon1(i))
then
1519 dz = zi(i,k) - zi(i,k-1)
1520 gamma = el2orc * qeso(i,k) / (to(i,k)**2)
1522 & + gamma * dbyo(i,k) / (hvap * (1. + gamma))
1524 tem = 0.25 * (xlamue(i,k)+xlamue(i,k-1)) * dz
1527 qcko(i,k) = ((1.-tem)*qcko(i,k-1)+tem*
1528 & (qo(i,k)+qo(i,k-1)))/factor
1529 qrcko(i,k) = qcko(i,k)
1531 dq = eta(i,k) * (qcko(i,k) - qrch)
1533c check
if there is excess moisture to release latent heat
1536 etah = .5 * (eta(i,k) + eta(i,k-1))
1537 dp = 1000. * del(i,k)
1539 ptem = c0t(i,k) + c1
1540 qlk = dq / (eta(i,k) + etah * ptem * dz)
1541 dellal(i,k) = etah * c1 * dz * qlk * grav / dp
1543 qlk = dq / (eta(i,k) + etah * c0t(i,k) * dz)
1545 qcko(i,k) = qlk + qrch
1546 pwo(i,k) = etah * c0t(i,k) * dz * qlk
1547 cnvwt(i,k) = etah * qlk * grav / dp
1548 zdqca(i,k)=dq/eta(i,k)
1558 if (hwrf_samfshal)
then
1562 tem = po(i,k) / (rd * to(i,k))
1563 wucb = -0.01 * dot(i,k) / (tem * grav)
1565 wu2(i,k) = wucb * wucb
1574 call progomega_calc(first_time_step,restart,im,km,
1575 & kbcon1,ktcon,omegain,delt,del,zi,cnvflg,omegaout,
1576 & grav,buo,drag,wush,lbb1,lbb2,lbb3,dt_decay)
1580 if(k >= kbcon1(i) .and. k < ktcon(i))
then
1581 omega_u(i,k)=omegaout(i,k)
1582 omega_u(i,k)=max(omega_u(i,k),-80.)
1584 rho = po(i,k)*100. / (rd * to(i,k))
1585 tem = (-omega_u(i,k)) / ((rho * grav))
1587 wu2(i,k) = max(wu2(i,k), 0.)
1598 if(k > kbcon1(i) .and. k < ktcon(i))
then
1599 dz = zi(i,k) - zi(i,k-1)
1600 tem = 0.25 * bb1 * (drag(i,k-1)+drag(i,k)) * dz
1601 tem1 = 0.5 * bb2 * (buo(i,k-1)+buo(i,k))
1602 tem2 = wush(i,k) * sqrt(wu2(i,k-1))
1603 tem2 = (tem1 - tem2) * dz
1604 ptem = (1. - tem) * wu2(i,k-1)
1606 wu2(i,k) = (ptem + tem2) / ptem1
1607 wu2(i,k) = max(wu2(i,k), 0.)
1616 if(k > kbcon1(i) .and. k < ktcon(i))
then
1617 rho = po(i,k)*100. / (rd * to(i,k))
1618 omega_u(i,k)=-1.0*sqrt(wu2(i,k))*rho*grav
1619 omega_u(i,k)=max(omega_u(i,k),-80.)
1637 if(k > kbcon1(i) .and. k < ktcon(i))
then
1638 dz = zi(i,k) - zi(i,k-1)
1639 tem = 0.5 * (sqrt(wu2(i,k)) + sqrt(wu2(i,k-1)))
1640 wc(i) = wc(i) + tem * dz
1641 sumx(i) = sumx(i) + dz
1648 if(sumx(i) == 0.)
then
1651 wc(i) = wc(i) / sumx(i)
1654 if (wc(i) < val) cnvflg(i)=.false.
1667 if(k >= kbcon1(i) .and. k < ktcon(i))
then
1668 dp = 1000. * del(i,k)
1669 tem = 0.5 * (omega_u(i,k) + omega_u(i,k-1))
1670 omegac(i) = omegac(i) + tem * dp
1671 sumx(i) = sumx(i) + dp
1678 if(sumx(i) == 0.)
then
1681 omegac(i) = omegac(i) / sumx(i)
1684 if (omegac(i) > val) cnvflg(i)=.false.
1692 if(k >= kbcon1(i) .and. k < ktcon(i))
then
1693 if(omega_u(i,k) .ne. 0.)
then
1694 zeta(i,k)=eta(i,k)*(omegac(i)/omega_u(i,k))
1698 zeta(i,k)=max(0.,zeta(i,k))
1699 zeta(i,k)=min(1.,zeta(i,k))
1706c exchange ktcon with ktcon1
1711 ktcon(i) = ktcon1(i)
1716c this section is ready for cloud water
1720c compute liquid and vapor separation at cloud top
1726 gamma = el2orc * qeso(i,k) / (to(i,k)**2)
1728 & + gamma * dbyo(i,k) / (hvap * (1. + gamma))
1729 dq = qcko(i,k) - qrch
1731c check
if there is excess moisture to release latent heat
1743c--- compute precipitation efficiency in terms of windshear
1779c--- what would the change be, that a cloud with unit mass
1780c--- will
do to the environment?
1786 if(cnvflg(i) .and. k <= kmax(i))
then
1794 if (.not.hwrf_samfshal)
then
1798 if(cnvflg(i) .and. k <= kmax(i))
then
1806c--- changed due to subsidence and entrainment
1811 if(k > kb(i) .and. k < ktcon(i))
then
1812 dp = 1000. * del(i,k)
1813 dz = zi(i,k) - zi(i,k-1)
1816 dv2h = .5 * (heo(i,k) + heo(i,k-1))
1819 tem = 0.5 * (xlamue(i,k)+xlamue(i,k-1))
1824 dellah(i,k) = dellah(i,k) +
1825 & ( eta(i,k)*dv1h - eta(i,k-1)*dv3h
1826 & - tem*eta(i,k-1)*dv2h*dz
1827 & + tem1*eta(i,k-1)*.5*(hcko(i,k)+hcko(i,k-1))*dz
1830 tem1 = -eta(i,k) * qrcko(i,k)
1831 tem2 = -eta(i,k-1) * qcko(i,k-1)
1832 dellaq(i,k) = dellaq(i,k) + (tem1-tem2) * factor
1834 tem1=eta(i,k)*(uo(i,k)-ucko(i,k))
1835 tem2=eta(i,k-1)*(uo(i,k-1)-ucko(i,k-1))
1836 dellau(i,k) = dellau(i,k) + (tem1-tem2) * factor
1838 tem1=eta(i,k)*(vo(i,k)-vcko(i,k))
1839 tem2=eta(i,k-1)*(vo(i,k-1)-vcko(i,k-1))
1840 dellav(i,k) = dellav(i,k) + (tem1-tem2) * factor
1846 if(.not.hwrf_samfshal)
then
1851 if(k > kb(i) .and. k < ktcon(i))
then
1852 dp = 1000. * del(i,k)
1854 tem1 = -eta(i,k) * ercko(i,k,n)
1855 tem2 = -eta(i,k-1) * ecko(i,k-1,n)
1856 dellae(i,k,n) = dellae(i,k,n) + (tem1-tem2) * grav/dp
1870 dp = 1000. * del(i,indx)
1871 tem = eta(i,indx-1) * grav / dp
1872 dellah(i,indx) = tem * (hcko(i,indx-1) - heo(i,indx-1))
1873 dellaq(i,indx) = tem * qcko(i,indx-1)
1874 dellau(i,indx) = tem * (ucko(i,indx-1) - uo(i,indx-1))
1875 dellav(i,indx) = tem * (vcko(i,indx-1) - vo(i,indx-1))
1879 dellal(i,indx) = tem * qlko_ktcon(i)
1882 if (.not.hwrf_samfshal)
then
1887 dp = 1000. * del(i,indx)
1888 dellae(i,indx,n) = eta(i,indx-1) *
1889 & ecko(i,indx-1,n) * grav / dp
1902 if(cnvflg(i) .and. k <= ktcon(i))
then
1903 q_diff(i,k) = q1(i,k) - q1(i,k+1)
1909 if(q1(i,1) >= 0.)
then
1910 q_diff(i,0) = max(0.,2.*q1(i,1)-q1(i,2))-
1913 q_diff(i,0) = min(0.,2.*q1(i,1)-q1(i,2))-
1923 & (k >= kb(i) .and. k < ktcon(i)))
then
1924 if(eta(i,k) > 0.)
then
1926 if(abs(q_diff(i,k)) > 1.e-22)
1927 & rrkp = q_diff(i,k+1) / q_diff(i,k)
1928 phkp = (rrkp+abs(rrkp)) / (1.+abs(rrkp))
1930 & phkp*(qo(i,k)-q1(i,k+1))
1931 flxtvd(i,k) = eta(i,k) * tem1
1940 & (k > kb(i) .and. k <= ktcon(i)))
then
1941 dp = 1000. * del(i,k)
1942 dellaq(i,k) = dellaq(i,k) +
1943 & (flxtvd(i,k) - flxtvd(i,k-1)) * grav/dp
1950 if (.not.hwrf_samfshal)
then
1955 if(cnvflg(i) .and. k <= ktcon(i))
then
1956 e_diff(i,k,n) = ctr(i,k,n) - ctr(i,k+1,n)
1962 if(ctr(i,1,n) >= 0.)
then
1963 e_diff(i,0,n) = max(0.,2.*ctr(i,1,n)-ctr(i,2,n))-
1966 e_diff(i,0,n) = min(0.,2.*ctr(i,1,n)-ctr(i,2,n))-
1979 & (k >= kb(i) .and. k < ktcon(i)))
then
1980 if(eta(i,k) > 0.)
then
1982 if(abs(e_diff(i,k,n)) > 1.e-22)
1983 & rrkp = e_diff(i,k+1,n) / e_diff(i,k,n)
1984 phkp = (rrkp+abs(rrkp)) / (1.+abs(rrkp))
1985 tem1 = ctr(i,k+1,n) +
1986 & phkp*(ctro(i,k,n)-ctr(i,k+1,n))
1987 flxtvd(i,k) = eta(i,k) * tem1
1996 & (k > kb(i) .and. k <= ktcon(i)))
then
1997 dp = 1000. * del(i,k)
1998 dellae(i,k,n) = dellae(i,k,n) +
1999 & (flxtvd(i,k) - flxtvd(i,k-1)) * grav/dp
2013 tem = zi(i,ktcon1(i)) - zi(i,kbcon1(i))
2015 wc_eff = max(wc(i), wc_min)
2016 dtconv(i) = tem / wc_eff
2018 dtconv(i) = tem / wc(i)
2021 if (.not. hwrf_samfshal)
then
2022 tfac = 1. + gdx(i) / 75000.
2023 dtconv(i) = tfac * dtconv(i)
2026 dtconv(i) = max(dtconv(i), dtmin)
2027 dtconv(i) = max(dtconv(i),dt2)
2028 dtconv(i) = min(dtconv(i), dtmax)
2042 if(k >= kbcon1(i) .and. k < ktcon1(i))
then
2043 dz = zi(i,k) - zi(i,k-1)
2044 tem = sqrt(u1(i,k)*u1(i,k)+v1(i,k)*v1(i,k))
2045 umean(i) = umean(i) + tem * dz
2046 sumx(i) = sumx(i) + dz
2053 umean(i) = umean(i) / sumx(i)
2054 umean(i) = max(umean(i), 1.)
2055 tauadv = gdx(i) / umean(i)
2056 advfac(i) = tauadv / dtconv(i)
2057 advfac(i) = min(cat_adj_shal*advfac(i), 1.)
2061c compute cloud base mass flux as a
function of the mean
2067 if(first_time_step .and. .not.restart)
then
2076 qadv(i,k)=(q(i,k) - prevsq(i,k))*invdelt
2083 tmfq(i,k)=tmf(i,k,1)
2087 flag_shallow = .true.
2089 call progsigma_calc(im,km,first_time_step,restart,flag_shallow,
2090 & flag_mid,del,tmfq,qmicro,dbyo1,zdqca,omega_u,zeta,hvap,
2091 & delt,qadv,kb,kbcon1,ktcon,cnvflg,betascu,betamcu,betadcu,
2092 & sigmind,sigminm,sigmins,sigmain,sigmaout,sigmab)
2101 rho = po(i,k)*100. / (rd*to(i,k))
2102 if(
progsigma .and. gdx(i) < dxcrtas)
then
2103 xmb(i) = advfac(i)*sigmab(i)*((-1.0*omegac(i))*gravinv)
2105 xmb(i) = advfac(i)*betaw*rho*wc(i)
2113 tem = min(max(xlamue(i,kbcon(i)), 2.e-4), 6.e-4)
2115 tem1 = 3.14 * tem * tem
2116 sigmagfm(i) = tem1 / garea(i)
2117 sigmagfm(i) = max(sigmagfm(i), 0.001)
2118 sigmagfm(i) = min(sigmagfm(i), 0.999)
2125 if (gdx(i) < dxcrt)
then
2127 scaldfunc(i)=(1.-sigmab(i))*(1.-sigmab(i))
2129 scaldfunc(i) = (1.-sigmagfm(i)) * (1.-sigmagfm(i))
2131 scaldfunc(i) = max(min(scaldfunc(i), 1.0), 0.)
2135 xmb(i) = xmb(i) * scaldfunc(i)
2136 xmb(i) = min(xmb(i),xmbmax(i))
2159 if (cnvflg(i) .and. k <= kmax(i))
then
2160 qeso(i,k) = 0.01 * fpvs(t1(i,k))
2161 qeso(i,k) = eps * qeso(i,k) / (pfld(i,k) + epsm1*qeso(i,k))
2163 qeso(i,k) = max(qeso(i,k), val )
2180 if (.not. hwrf_samfshal)
then
2190 if(k > kb(i) .and. k <= ktcon(i))
then
2191 dellat = (dellah(i,k) - hvap * dellaq(i,k)) / cp
2192 new_t1(i,k) = t1(i,k) + dellat * xmb(i) * dt2
2193 new_q1(i,k) = q1(i,k) + dellaq(i,k) * xmb(i) * dt2
2197 new_u1(i,k) = u1(i,k) + dellau(i,k) * xmb(i) * dt2
2198 new_v1(i,k) = v1(i,k) + dellav(i,k) * xmb(i) * dt2
2199 dp = 1000. * del(i,k)
2200 tem = xmb(i) * dp / grav
2201 delhbar(i) = delhbar(i) + tem * dellah(i,k)
2202 delqbar(i) = delqbar(i) + tem * dellaq(i,k)
2203 deltbar(i) = deltbar(i) + tem * dellat
2204 delubar(i) = delubar(i) + tem * dellau(i,k)
2205 delvbar(i) = delvbar(i) + tem * dellav(i,k)
2222 if(k > kb(i) .and. k <= ktcon(i))
then
2223 tem = new_q1(i,k) * delp(i,k) / grav
2224 if(new_q1(i,k) < 0.) tsumn(i) = tsumn(i) + tem
2225 if(new_q1(i,k) > 0.) tsump(i) = tsump(i) + tem
2232 if(tsump(i) > 0. .and. tsumn(i) < 0.)
then
2233 if(tsump(i) > abs(tsumn(i)))
then
2234 rtnp(i) = tsumn(i) / tsump(i)
2236 rtnp(i) = tsump(i) / tsumn(i)
2244 if(k > kb(i) .and. k <= ktcon(i))
then
2245 if(rtnp(i) < 0.)
then
2246 if(tsump(i) > abs(tsumn(i)))
then
2247 if(new_q1(i,k) < 0.) new_q1(i,k)= 0.
2248 if(new_q1(i,k) > 0.) new_q1(i,k)= &
2249 & (1.+rtnp(i))*new_q1(i,k)
2251 if(new_q1(i,k) < 0.) new_q1(i,k)= &
2252 & (1.+rtnp(i))*new_q1(i,k)
2253 if(new_q1(i,k) > 0.) new_q1(i,k)=0.
2261 if (.not.hwrf_samfshal)
then
2269 if(k > kb(i) .and. k <= ktcon(i))
then
2270 ctr(i,k,n) = ctr(i,k,n)+dellae(i,k,n)*xmb(i)*dt2
2271 dp = 1000. * del(i,k)
2272 delebar(i,n)=delebar(i,n)+dellae(i,k,n)*xmb(i)*dp/grav
2289 if(k > kb(i) .and. k <= ktcon(i))
then
2292 dz = zi(i,k) - zi(i,k-1)
2296 tem = ctr(i,k,n) * dz
2298 tem = ctr(i,k,n) * delp(i,k) / grav
2300 if(ctr(i,k,n) < 0.) tsumn(i) = tsumn(i) + tem
2301 if(ctr(i,k,n) > 0.) tsump(i) = tsump(i) + tem
2308 if(tsump(i) > 0. .and. tsumn(i) < 0.)
then
2309 if(tsump(i) > abs(tsumn(i)))
then
2310 rtnp(i) = tsumn(i) / tsump(i)
2312 rtnp(i) = tsump(i) / tsumn(i)
2320 if(k > kb(i) .and. k <= ktcon(i))
then
2321 if(rtnp(i) < 0.)
then
2322 if(tsump(i) > abs(tsumn(i)))
then
2323 if(ctr(i,k,n)<0.) ctr(i,k,n)=0.
2324 if(ctr(i,k,n)>0.) ctr(i,k,n)=(1.+rtnp(i))*ctr(i,k,n)
2326 if(ctr(i,k,n)<0.) ctr(i,k,n)=(1.+rtnp(i))*ctr(i,k,n)
2327 if(ctr(i,k,n)>0.) ctr(i,k,n)=0.
2339 if(k > kb(i) .and. k <= ktcon(i))
then
2340 new_qtr(i,k,kk) = ctr(i,k,n)
2348 if (do_aerosols)
then
2356 if(k > kb(i) .and. k < ktcon(i))
then
2357 dp = 1000. * del(i,k)
2358 wet_dep(i,k,n) = chem_pw(i,k,n)*grav/dp
2359 wet_dep(i,k,n) = wet_dep(i,k,n)*xmb(i)*dt2*dp
2369 if(k > kb(i) .and. k < ktcon(i))
then
2370 dp = 1000. * del(i,k)
2371 if (new_qtr(i,k,kk) < 0.)
then
2373 tem = -new_qtr(i,k,kk)*dp
2374 if(wet_dep(i,k,n) >= tem)
then
2375 wet_dep(i,k,n) = wet_dep(i,k,n) - tem
2376 new_qtr(i,k,kk) = 0.
2379 new_qtr(i,k,kk) = new_qtr(i,k,kk)+ &
2398 if(k > kb(i) .and. k <= ktcon(i))
then
2399 qeso(i,k) = 0.01 * fpvs(new_t1(i,k))
2400 qeso(i,k) = eps * qeso(i,k)/(pfld(i,k) + epsm1*qeso(i,k))
2402 qeso(i,k) = max(qeso(i,k), val )
2418 if(k < ktcon(i) .and. k > kb(i))
then
2419 rntot(i) = rntot(i) + pwo(i,k) * xmb(i) * .001 * dt2
2432 if (k <= kmax(i))
then
2437 if(k < ktcon(i) .and. k > kb(i))
then
2438 rn(i) = rn(i) + pwo(i,k) * xmb(i) * .001 * dt2
2441 if(flg(i) .and. k < ktcon(i))
then
2445 qcond(i) = shevf * evef * (new_q1(i,k) - qeso(i,k))
2446 & / (1. + el2orc * qeso(i,k) / new_t1(i,k)**2)
2447 dp = 1000. * del(i,k)
2449 if(rn(i) > 0. .and. qcond(i) < 0.)
then
2450 qevap(i) = -qcond(i) * (1.-exp(-.32*sqrt(dt2*rn(i))))
2451 qevap(i) = min(qevap(i), rn(i)*1000.*grav/dp)
2452 delq2(i) = delqev(i) + .001 * qevap(i) * factor
2454 if(rn(i) > 0. .and. qcond(i) < 0. .and.
2455 & delq2(i) > rntot(i))
then
2456 qevap(i) = 1000.* grav * (rntot(i) - delqev(i)) / dp
2459 if(rn(i) > 0. .and. qevap(i) > 0.)
then
2461 tem1 = qevap(i) * tem
2462 if(tem1 > rn(i))
then
2463 qevap(i) = rn(i) / tem
2466 rn(i) = rn(i) - tem1
2468 new_q1(i,k) = new_q1(i,k) + qevap(i)
2469 new_t1(i,k) = new_t1(i,k) - elocp * qevap(i)
2470 deltv(i) = - elocp*qevap(i)/dt2
2471 delq(i) = + qevap(i)/dt2
2472 delqev(i) = delqev(i) + tem * qevap(i)
2474 delqbar(i) = delqbar(i) + delq(i) * factor
2475 deltbar(i) = deltbar(i) + deltv(i) * factor
2502 if(rn(i) < 0. .or. .not.flg(i)) rn(i) = 0.
2509c convective cloud water
2513 if (k >= kbcon(i) .and. k < ktcon(i))
then
2514 cnvw(i,k) = cnvwt(i,k) * xmb(i) * dt2
2516 cnvw(i,k) = cnvw(i,k) * cscale
2518 cnvw(i,k) = cnvw(i,k) * cscale
2525c convective cloud cover
2531 if (k >= kbcon(i) .and. k < ktcon(i))
then
2532 cnvc(i,k) = 0.04 * log(1. + 675. * eta(i,k) * xmb(i))
2533 cnvc(i,k) = min(cnvc(i,k), 0.2)
2534 cnvc(i,k) = max(cnvc(i,k), 0.0)
2543 if (ncloud > 0)
then
2549 if (k >= kbcon(i) .and. k <= ktcon(i))
then
2550 tem = dellal(i,k) * xmb(i) * dt2
2551 tem1 = max(0.0, min(1.0, (tcr-new_t1(i,k))*tcrf))
2552 if (new_qtr(i,k,2) > -999.0)
then
2553 new_qtr(i,k,1) = new_qtr(i,k,1) + tem * tem1
2554 new_qtr(i,k,2) = new_qtr(i,k,2) + tem *(1.0-tem1)
2556 new_qtr(i,k,1) = new_qtr(i,k,1) + tem
2588 if(k >= kb(i) .and. k < ktop(i))
then
2589 ud_mf(i,k) = eta(i,k) * xmb(i) * dt2
2598 dt_mf(i,k) = ud_mf(i,k)
2604 if (.not.hwrf_samfshal)
then
2610 if(k > kb(i) .and. k < ktop(i))
then
2611 tem = 0.5 * (eta(i,k-1) + eta(i,k)) * xmb(i)
2612 tem1 = pfld(i,k) * 100. / (rd * new_t1(i,k))
2616 tem2 = max(sigmagfm(i), betaw)
2618 ptem = tem / (tem2 * tem1)
2619 new_qtr(i,k,ntk)=new_qtr(i,k,ntk)+0.5*tem2*ptem*ptem
2628 ten_t = (new_t1 - t1)/delt
2629 ten_u = (new_u1 - u1)/delt
2630 ten_v = (new_v1 - v1)/delt
2631 ten_q(:,:,1) = (new_q1 - q1)/delt
2632 dqtr = (new_qtr - qtr)/delt