Hello Flyks,
The Obukhov length scale comes about from non-dimensionalizing the turbulence kinetic energy budget equation. Stull (2009; pg 181) 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-
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))) )