[RegCNET] calculation of Monin–Obukhov Length
Travis O'Brien
travis.obrien at gmail.com
Fri Nov 11 00:17:19 CET 2011
Hello Flyks,
The Obukhov length scale comes about from non-dimensionalizing the
turbulence kinetic energy budget equation. Stull (2009; pg
181)<http://books.google.com/books?id=s-9zCT2bTr8C&lpg=PA180&vq=obukhov&pg=PA181#v=onepage&q&f=false>defines
it in equation 5.7c. The length scale in the Holtslag code is
defined identically. I believe the dsign(...) part in the denominator is a
numerical trick to avoid dividing by zero (or overflow) when the buoyancy
flux becomes too small.
Regards,
-Travis-
On Thu, Nov 10, 2011 at 2:54 PM, flyks <flyyks at gmail.com> wrote:
> Dear all,
>
> I want to know the reference for calculating Monin–Obukhov Length in
> RegCM. Thank you.
>
> Following is code taken from PBL module,
>
> sh10 = qx(i,kx)/(qx(i,kx)+1)
> c "virtual" potential temperature
> if (sflux(i).ge. 0.) then
> th10 = thvx(i,kx)
> else
> c---- first approximation for obhukov length
> oblen=-0.5*(thx(i,kx)+tg(i))
> & *(1.0+ep1*sh10)*ust(i)**3
> & /(g*karman*(sflux(i)+dsign(1.d-10,sflux(i))))
> if (oblen.ge.za(i,kx)) then
> th10=thvx(i,kx)+sflux(i)/(karman*ust(i))
> & *(dlog(za(i,kx)/10.)+5./oblen*(za(i,kx)-10.))
> else if (oblen.lt.za(i,kx).and.oblen.gt.10.) then
> th10=thvx(i,kx)+sflux(i)/(karman*ust(i))
> & *(dlog(oblen/10.)+5./oblen*(oblen-10.)
> & +6*dlog(za(i,kx)/oblen))
> else if (oblen.le.10.) then
> th10=thvx(i,kx)+sflux(i)/(karman*ust(i))
> & *6*dlog(za(i,kx)/10.)
> end if
> th10=max(th10,tg(i))
> end if
> c compute obukhov length
> oblen=-th10*ust(i)**3
> & /( g*karman*(sflux(i)+dsign(1.d-10,sflux(i))) )
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ictp.it/pipermail/regcnet/attachments/20111110/d6eb0fb0/attachment.htm>
More information about the RegCNET
mailing list