## Modifying calculation of the PBL height in YSU scheme

Topics related to current and future physics in the WRF as well as any problems you may have.

### Modifying calculation of the PBL height in YSU scheme

Looking to modify the YSU scheme. Trying to figure out how the PBL height calculation is done within the code and am unsure about some of the variables that are appearing. This is the code where the PBL height seems to be calculated within the YSU scheme from the module_bl_ysu.F

Is brcr the critical bulk richardson constant? and is there a calculation of the monin-obukhov length (guessing its hol within the code) at this point in the code?

Code: Select all
` do i = its,ite     hgamt(i)  = 0.     hgamq(i)  = 0.     wscale(i) = 0.     kpbl(i)   = 1     hpbl(i)   = zq(i,1)     zl1(i)    = za(i,1)     thermal(i)= thvx(i,1)     pblflg(i) = .true.     sfcflg(i) = .true.     sflux(i) = hfx(i)/rhox(i)/cp + qfx(i)/rhox(i)*ep1*thx(i,1)     if(br(i).gt.0.0) sfcflg(i) = .false.   enddo!                                                                                                           !     compute the first guess of pbl height                                                                 !                                                                                                              do i = its,ite     stable(i) = .false.     brup(i) = br(i)     brcr(i) = brcr_ub   enddo   do k = 2,klpbl     do i = its,ite       if(.not.stable(i))then         brdn(i) = brup(i)         spdk2   = max(ux(i,k)**2+vx(i,k)**2,1.)         brup(i) = (thvx(i,k)-thermal(i))*(g*za(i,k)/thvx(i,1))/spdk2         kpbl(i) = k         stable(i) = brup(i).gt.brcr(i)zl1(i)    = za(i,1)     thermal(i)= thvx(i,1)     pblflg(i) = .true.     sfcflg(i) = .true.     sflux(i) = hfx(i)/rhox(i)/cp + qfx(i)/rhox(i)*ep1*thx(i,1)     if(br(i).gt.0.0) sfcflg(i) = .false.   enddo!                                                                                                           !     compute the first guess of pbl height                                                                 !                                                                                                              do i = its,ite     stable(i) = .false.     brup(i) = br(i)     brcr(i) = brcr_ub   enddo!                                                                                                              do k = 2,klpbl     do i = its,ite       if(.not.stable(i))then         brdn(i) = brup(i)         spdk2   = max(ux(i,k)**2+vx(i,k)**2,1.)         brup(i) = (thvx(i,k)-thermal(i))*(g*za(i,k)/thvx(i,1))/spdk2         kpbl(i) = k         stable(i) = brup(i).gt.brcr(i)       endif     enddo   enddo!                                                                                                              do i = its,ite     k = kpbl(i)     if(brdn(i).ge.brcr(i))then       brint = 0.     elseif(brup(i).le.brcr(i))then       brint = 1.     else       brint = (brcr(i)-brdn(i))/(brup(i)-brdn(i))     endif     hpbl(i) = za(i,k-1)+brint*(za(i,k)-za(i,k-1))     if(hpbl(i).lt.zq(i,2)) kpbl(i) = 1     if(kpbl(i).le.1) pblflg(i) = .false.   enddo`
baker

Posts: 9
Joined: Tue Sep 28, 2010 10:24 am