!********************************************************************** ! subroutine sbzo !********************************************************************** subroutine sbzo (sxprg, szrgh, slrr, wzoflg, brlai, brsai, bzht, & & wzzo, wzzov, awzzo) ! ! +++ PURPOSE +++ ! ! Calc. aerodynamic roughness parm., wzzo, with no standing biomass ! wzzo is used by sbwust ! ! Calc. aerodynamic roughness parm. as wzzov, if standing biomass ! else let wzzov = wzzo ! wzzov is used by sbwus ! ! set anem aero. roughness and field roughness equal when anem. at ! the field site, ie. wzoflg = 1 ! to calculate aerodynamic roughness ! of vegetation canopy. Ref. Trans ASAE 31(3):769-775 ! Armbrust and Bilbro, 1995 ! ! +++ ARGUMENT DECLATION +++ integer wzoflg real sxprg, szrgh, slrr real brlai, brsai, bzht real wzzo, wzzov, awzzo ! ! +++ ARGUMENT DEFINITIONS +++ ! brlai - total leaf area index (m2/m2) ! brsai - total stem silhoutte area index (m2/m2) ! bzht - maximum height of total biomass (m) ! wzzo - aerodynamic roughness of surface below canopy (mm) ! wzzov - aerodynamic roughness length of canopy (mm) ! awzzo - aerodynamic roughness length at anemometer ! wzoflg - flag=0 - anemometer at station ! flag=1 - anemometer at field ! pid180 - parameter ! wadir - wind direction ! szrgh - ridge height ! wzzo - aerodynamic roughness length (mm) ! awzzo - aerodynamic roughness at anemom. site (mm) ! ! +++ LOCAL VARIABLES +++ real hl, wzorg, wzorr real brcd, bht ! ! +++ LOCAL VARIABLE DEFINITIONS +++ ! bht - biomass height (mm) ! brcd - biomass drag coefficient ! h1 - ratio of ridge height to parallel ridge spacing ! pid180- radians per degree ! sxprg - ridge/dike spacing parallell the wind direction ! wzorg - aerodynamic roughness of ridge ! wzorr - aerodynamic roughness of random roughness include 'erosion/p1erode.inc' !specify min/max aerodynamic roughness values ! +++ PARAMETERS +++ ! parameter(pid180 = 3.14159/180) ! ! +++ END SPECIFICATIONS +++ !Note: in BLOCK.FOR !wzoflg should be set to 1 and anemomht changed ! if the anemomenter is at the field site to ! obtain correct values from SBZO !calc. for ridge aerodynamic roughness if (szrgh .gt. 5.0) then hl = szrgh / sxprg ! winds are never continually normal to ridges, so restrict hl. hl = min(0.20,hl) wzorg = szrgh * 1/(-64.1+135.5*hl+(20.84/sqrt(hl))) else wzorg = 0. endif !calculation for random aerodynamic roughness wzorr = slrr*0.3 !set upper and lower limits on aerodynamic roughness wzorr = min(WZZO_MAX, wzorr) ! RR <= ~100.0mm wzorr = max(wzorr, WZZO_MIN) ! RR >= ~1.67mm !estimate combined ridge and random aerodynamic roughness !(later- no data sets at present) !chose the largest of the two. wzzo = max (wzorg, wzorr) !calculate aerodynamic roughness of vegetation, if present if (bzht .gt. 0.005 .and. brsai .gt. 0.002) then !calculate "effective" biomass drag coefficient brcd = brlai*(0.2 - 0.15*exp(-8.*brlai)) + brsai !convert biomass height to mm bht = bzht*1000 !calculate roughness length of canopy ( in mm) if (brcd .gt. 0.1) then wzzov = bht * 1/(17.27-(1.254*alog(brcd)/brcd)-(3.714/brcd)) else wzzov = bht*exp(alog(wzzo/bht) + (alog(0.11*bht/wzzo)* & & alog(brcd/0.01))/2.3) endif ! choose the maximum of canopy or surface roughness wzzov = max(wzzov, wzzo) else wzzov = wzzo endif if (wzoflg .eq. 1) then !anemom. in field set awzzo to wzzov awzzo = wzzov endif return end ! +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++