63 real :: uuh(0:nxmax-1,0:nymax-1,nuvzmax)
64 real :: vvh(0:nxmax-1,0:nymax-1,nuvzmax)
65 real :: pvh(0:nxmax-1,0:nymax-1,nuvzmax)
89 real :: ulev(nuvzmax),vlev(nuvzmax),
ew,rh,vd(maxspec),subsceff,ylat
90 real :: altmin,tvold,pold,zold,pint,tv,zlev(nuvzmax)
94 integer :: ix,jy,i,kz,lz,kzmin
100 real,
parameter :: const=r_air/ga
152 ylat=ylat0+
real(jy)*dy
153 if ((ylat.ge.-20.).and.(ylat.le.20.))
then
156 if ((ylat.gt.20.).and.(ylat.lt.40.))
then
157 altmin=2500.+(40.-ylat)*125.
158 else if ((ylat.gt.-40.).and.(ylat.lt.-20.))
then
159 altmin=2500.+(40.+ylat)*125.
170 ustar(ix,jy,1,n)=
scalev(ps(ix,jy,1,n),tt2(ix,jy,1,n), &
171 td2(ix,jy,1,n),surfstr(ix,jy,1,n))
172 if (ustar(ix,jy,1,n).le.1.e-8) ustar(ix,jy,1,n)=1.e-8
177 ol=
obukhov_ecmwf(ps(ix,jy,1,n),tt2(ix,jy,1,n),td2(ix,jy,1,n), &
178 tth(ix,jy,2,n),ustar(ix,jy,1,n),sshf(ix,jy,1,n),akm,bkm)
182 oli(ix,jy,1,n)=99999.
192 ttlev(i)=tth(ix,jy,i,n)
193 qvlev(i)=qvh(ix,jy,i,n)
196 call
richardson_ecmwf(ps(ix,jy,1,n),ustar(ix,jy,1,n),ttlev,qvlev, &
197 ulev,vlev,nuvz,akz,bkz,sshf(ix,jy,1,n),tt2(ix,jy,1,n), &
198 td2(ix,jy,1,n),hmix(ix,jy,1,n),wstar(ix,jy,1,n),hmixplus)
200 if(lsubgrid.eq.1)
then
201 subsceff=min(excessoro(ix,jy),hmixplus)
208 hmix(ix,jy,1,n)=hmix(ix,jy,1,n)+subsceff
209 hmix(ix,jy,1,n)=max(hmixmin,hmix(ix,jy,1,n))
210 hmix(ix,jy,1,n)=min(hmixmax,hmix(ix,jy,1,n))
218 z0(7)=0.016*ustar(ix,jy,1,n)*ustar(ix,jy,1,n)/ga
222 rh=
ew(td2(ix,jy,1,n))/
ew(tt2(ix,jy,1,n))
224 call
getvdep(n,ix,jy,ustar(ix,jy,1,n), &
225 tt2(ix,jy,1,n),ps(ix,jy,1,n),1./oli(ix,jy,1,n), &
226 ssr(ix,jy,1,n),rh,lsprec(ix,jy,1,n)+convprec(ix,jy,1,n), &
230 vdep(ix,jy,i,n)=vd(i)
242 tvold=tt2(ix,jy,1,n)*(1.+0.378*
ew(td2(ix,jy,1,n))/ &
247 pint=akz(kz)+bkz(kz)*ps(ix,jy,1,n)
248 tv=tth(ix,jy,kz,n)*(1.+0.608*qvh(ix,jy,kz,n))
250 if (abs(tv-tvold).gt.0.2)
then
251 zlev(kz)=zold+const*log(pold/pint)*(tv-tvold)/log(tv/tvold)
253 zlev(kz)=zold+const*log(pold/pint)*tv
266 if (zlev(kz).ge.altmin)
then
279 if ((zlev(lz)-zlev(kz)).gt.2000.)
then
280 if (((tth(ix,jy,kz,n)-tth(ix,jy,lz,n))/ &
281 (zlev(lz)-zlev(kz))).lt.0.002)
then
282 tropopause(ix,jy,1,n)=zlev(kz)
299 call
calcpv(n,uuh,vvh,pvh)
real function scalev(ps, t, td, stress)
real function obukhov_ecmwf(ps, tsurf, tdsurf, tlev, ustar, hf, akm, bkm)
subroutine calcpv(n, uuh, vvh, pvh)
subroutine richardson_ecmwf(psurf, ust, ttlev, qvlev, ulev, vlev, nuvz, akz, bkz, hf, tt2, td2, h, wst, hmixplus)
subroutine getvdep(n, ix, jy, ust, temp, pa, L, gr, rh, rr, snow, vdepo)
subroutine calcpar_ecmwf(n, uuh, vvh, pvh)