c********************************************************************** c subroutine sbzo c********************************************************************** subroutine sbzo i(wadir, sargo, szrgh, sxrgs, slrr, wzoflg, brlai,brsai, bzht, i sxdks, o wzzo, wzzov, awzzo) c c +++ PURPOSE +++ c c Calc. aerodynamic roughness parm., wzzo, with no standing biomass c wzzo is used by sbwust c c Calc. aerodynamic roughness parm. as wzzov, if standing biomass c else let wzzov = wzzo c wzzov is used by sbwus c c set anem aero. roughness and field roughness equal when anem. at c the field site, ie. wzoflg = 1 c to calculate aerodynamic roughness c of vegetation canopy. Ref. Trans ASAE 31(3):769-775 c Armbrust and Bilbro, 1995 c c +++ ARGUMENT DECLATION +++ real wadir,sargo, szrgh, sxrgs, slrr real brlai, brsai, bzht, sxdks, wzzo, wzzov, awzzo real wzoflg c c +++ ARGUMENT DEFINITIONS +++ c brlai - total leaf area index (m2/m2) c brsai - total stem silhoutte area index (m2/m2) c bzht - maximum height of total biomass (m) c wzzo - aerodynamic roughness of surface below canopy (mm) c wzzov - aerodynamic roughness length of canopy (mm) c awzzo - aerodynamic roughness length at anemometer c wzoflg - flag=0 - anemometer at station c flag=1 - anemometer at field c pid180 - parameter c wadir - wind direction c sargo - ridge orientation c szrgh - ridge height c sxrgs - ridge spacing c sxdks - dike spacing c wzzo - aerodynamic roughness length (mm) c awzzo - aerodynamic roughness at anemom. site (mm) c c +++ LOCAL VARIABLES +++ real xa, sxprg, hl, wzorg, wzorr, pid180 real brcd, bht c c +++ LOCAL VARIABLE DEFINITIONS +++ c bht - biomass height (mm) c brcd - biomass drag coefficient c h1 - ratio of ridge height to parallel ridge spacing c pid180- radians per degree c sxprg - ridge spacing parallell the wind direction c wzorg - aerodynamic roughness of ridge c wzorr - aerodynamic roughness of random roughness c xa - calculated parameter to determine sxprg c c +++ PARAMETERS +++ parameter(pid180 = 3.14159/180) c c +++ END SPECIFICATIONS +++ c Note: in BLOCK.FOR c wzoflg should be set to 1 and anemomht changed c if the anemomenter is at the field site to c obtain correct values from SBZO c c calc. for ridge aerodynamic roughness wzorg = 0. if (szrgh .lt. 5.0) go to 30 xa = abs ( sin( pid180 * abs( wadir - sargo))) if (xa .lt. 0.10) xa = 0.10 sxprg = sxrgs/xa c used now if (sxdks .gt. sxrgs/2.) then sxprg = amin1(sxprg, sxdks) endif hl = szrgh / sxprg wzorg = szrgh * 1/(-64.1+135.5*hl+(20.84/sqrt(hl))) c c calculation for random aerodynamic roughness 30 wzorr = slrr*0.3 c estimate combined ridge and random aerodynamic roughness c (later- no data sets at present) c chose the largest of the two. wzzo = amax1 (wzorg, wzorr) c set lower limit on aerodynamic roughness wzzo = amax1(wzzo, 0.5) c c Calculate aerodynamic roughness of vegetation, if present c c if (bzht .gt. 2.0) then !edit 11-29-00, 2-6-01 LH if (bzht .gt. 0.005 .and. brsai .gt. 0.002) then c calculate "effective" biomass drag coefficient brcd = brlai*(0.2 - 0.15*exp(-8.*brlai)) + brsai c brcd = amax1(brcd, 0.001) c convert biomass height to mm bht = bzht*1000 c c 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 c c choose the maximum of canopy or surface roughness wzzov = amax1(wzzov, wzzo) else wzzov = wzzo endif c c if anemom. at field set awzzo to wzzov if (wzoflg .eq. 1) then awzzo = wzzov endif c return end c +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++