67 real :: uuh(0:nxmax-1,0:nymax-1,nuvzmax)
68 real :: vvh(0:nxmax-1,0:nymax-1,nuvzmax)
69 real :: pvh(0:nxmax-1,0:nymax-1,nuvzmax)
94 real :: ulev(nuvzmax),vlev(nuvzmax),
ew,rh,vd(maxspec),subsceff,ylat
95 real :: altmin,tvold,pold,zold,pint,tv,zlev(nuvzmax),hmixdummy
100 integer :: ix,jy,i,kz,lz,kzmin,llev
106 real,
parameter :: const=r_air/ga
148 ylat=ylat0+
real(jy)*dy
149 if ((ylat.ge.-20.).and.(ylat.le.20.))
then
152 if ((ylat.gt.20.).and.(ylat.lt.40.))
then
153 altmin=2500.+(40.-ylat)*125.
154 else if ((ylat.gt.-40.).and.(ylat.lt.-20.))
then
155 altmin=2500.+(40.+ylat)*125.
166 ustar(ix,jy,1,n)=
scalev(ps(ix,jy,1,n),tt2(ix,jy,1,n), &
167 td2(ix,jy,1,n),surfstr(ix,jy,1,n))
168 if (ustar(ix,jy,1,n).le.1.e-8) ustar(ix,jy,1,n)=1.e-8
176 if (ps(ix,jy,1,n).lt.akz(i)) llev=i
179 if (llev.gt.nuvz) llev = nuvz-1
183 ol=
obukhov_gfs(ps(ix,jy,1,n),tt2(ix,jy,1,n),td2(ix,jy,1,n), &
184 tth(ix,jy,llev,n),ustar(ix,jy,1,n),sshf(ix,jy,1,n),akz(llev))
188 oli(ix,jy,1,n)=99999.
198 ttlev(i)=tth(ix,jy,i,n)
199 qvlev(i)=qvh(ix,jy,i,n)
203 call
richardson_gfs(ps(ix,jy,1,n),ustar(ix,jy,1,n),ttlev,qvlev, &
204 ulev,vlev,nuvz,akz,bkz,sshf(ix,jy,1,n),tt2(ix,jy,1,n), &
205 td2(ix,jy,1,n),hmixdummy,wstar(ix,jy,1,n),hmixplus)
207 if(lsubgrid.eq.1)
then
208 subsceff=min(excessoro(ix,jy),hmixplus)
215 hmix(ix,jy,1,n)=hmix(ix,jy,1,n)+subsceff
216 hmix(ix,jy,1,n)=max(hmixmin,hmix(ix,jy,1,n))
217 hmix(ix,jy,1,n)=min(hmixmax,hmix(ix,jy,1,n))
225 z0(7)=0.016*ustar(ix,jy,1,n)*ustar(ix,jy,1,n)/ga
229 rh=
ew(td2(ix,jy,1,n))/
ew(tt2(ix,jy,1,n))
231 call
getvdep(n,ix,jy,ustar(ix,jy,1,n), &
232 tt2(ix,jy,1,n),ps(ix,jy,1,n),1./oli(ix,jy,1,n), &
233 ssr(ix,jy,1,n),rh,lsprec(ix,jy,1,n)+convprec(ix,jy,1,n), &
237 vdep(ix,jy,i,n)=vd(i)
249 tvold=tt2(ix,jy,1,n)*(1.+0.378*
ew(td2(ix,jy,1,n))/ &
254 pint=akz(kz)+bkz(kz)*ps(ix,jy,1,n)
255 tv=tth(ix,jy,kz,n)*(1.+0.608*qvh(ix,jy,kz,n))
257 if (abs(tv-tvold).gt.0.2)
then
258 zlev(kz)=zold+const*log(pold/pint)*(tv-tvold)/log(tv/tvold)
260 zlev(kz)=zold+const*log(pold/pint)*tv
273 if (zlev(kz).ge.altmin)
then
286 if ((zlev(lz)-zlev(kz)).gt.2000.)
then
287 if (((tth(ix,jy,kz,n)-tth(ix,jy,lz,n))/ &
288 (zlev(lz)-zlev(kz))).lt.0.002)
then
289 tropopause(ix,jy,1,n)=zlev(kz)
307 call
calcpv(n,uuh,vvh,pvh)
real function scalev(ps, t, td, stress)
subroutine calcpv(n, uuh, vvh, pvh)
subroutine richardson_gfs(psurf, ust, ttlev, qvlev, ulev, vlev, nuvz, akz, bkz, hf, tt2, td2, h, wst, hmixplus)
real function obukhov_gfs(ps, tsurf, tdsurf, tlev, ustar, hf, plev)
subroutine calcpar_gfs(n, uuh, vvh, pvh)
subroutine getvdep(n, ix, jy, ust, temp, pa, L, gr, rh, rr, snow, vdepo)