!*==sbzo.spg processed by SPAG 6.70Rc at 15:33 on 10 Dec 2012 !*------------------ SPAG Configuration Options -------------------- !*--0323,76 000101,-1 000000102011332010100002000000210211210,136 10 -- !*--1100000011112111000000000000,10,10,10,10,10,10,900,100 200000000 -- !*--000000010000000000000,72,72 73,42,38,33 00011112110000100000000 -- !*---------------------------------------------------------------------- !$Author: joelevin $ !$Date: 2011-03-24 11:33:26 -0500 (Thu, 24 Mar 2011) $ !$Revision: 11724 $ !$HeadURL: https://eweru-dev1.eweru.ksu.edu/svn/code/weps1/branches/WEPS_F90_update/weps.src/src/lib_erosion/sbzo.for $ !********************************************************************** ! subroutine sbzo !********************************************************************** subroutine sbzo(sxprg,szrgh,slrr,&wzoflg,bdrlai,bdrsai,bbzht, & & &bcrlai,bcrsai,bczht,&bcxrow,bc0rg,wzorg,wzorr, & & &wzzo,wzzov,awzzo,brcd) use i_p1erode use i_p1unconv use s_biodrag implicit none !*--SBZO22 ! !*** Start of declarations rewritten by SPAG ! ! Dummy arguments ! real :: awzzo,bbzht,bcrlai,bcrsai,bcxrow,bczht,bdrlai,bdrsai,brcd,& & slrr,sxprg,szrgh,wzorg,wzorr,wzzo,wzzov integer :: bc0rg,wzoflg intent (in) bbzht,slrr,sxprg,wzoflg intent (out) awzzo intent (inout) brcd,wzorg,wzorr,wzzo,wzzov ! ! Local variables ! real :: bht,hl ! !*** End of declarations rewritten by SPAG ! ! ! +++ 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 ! Calc. biomass drag coef.(brcd) in function biodrag ! brcd is also 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 +++ ! ! +++ ARGUMENT DEFINITIONS +++ ! sxprg - row/dike spacing parallel the wind (mm) ! szrgh - ridge height (mm) ! wzoflg - flag=0 - anemometer at station ! flag=1 - anemometer at field ! slrr - random roughness (mm) ! bdrlai - residue leaf area index (total)(m2/m2) ! bdrsai - residue stem area index (total)(m2/m2) ! bbzht - composite average residue height (m) ! bcrlai - crop leaf area index (m2/m2) ! bcrsai - crop stem area index (m2/m2) ! bczht - crop height (m) ! bcxrow - crop row spacing (m) ! bc0rg - flag=0 - crop planted in furrow bottom ! flag=1 - crop planted on ridge top ! wzzo - aerodynamic roughness of surface below canopy (mm) ! wzorg - aerodynamic roughness of ridge ! wzorr - aerodynamic roughness of random roughness ! wzzov - aerodynamic roughness length of canopy (mm) ! awzzo - aerodynamic roughness at anemom. site (mm) ! brcd - biomass drag coefficient ! ! +++ FUNCTIONS CALLED ! +++ LOCAL VARIABLES +++ ! ! +++ LOCAL VARIABLE DEFINITIONS +++ ! h1 - ratio of ridge height to parallel ridge spacing ! bht - biomass height (mm) ! ! +++ INCLUDE FILES+++ ! +++ PARAMETERS +++ ! parameter(pid180 = 3.14159/180) ! pid180- radians per degree ! ! +++ 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>5.0) then !specify min/max aerodynamic roughness values 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. end if !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 ! calculate "effective" biomass drag coefficient ! new function for effective biomass drag coef. brcd = biodrag(bdrlai,bdrsai,bcrlai,bcrsai,bc0rg,&bcxrow,bczht, & & szrgh) ! convert biomass height to mm bht = bbzht*mtomm ! calculate roughness length of canopy ( in mm) if (brcd>0.1) then wzzov = bht*1/(17.27-(1.254*alog(brcd)/brcd)-(3.714/brcd)) else if ((bht>5.0).AND.(brcd>0.001)) then ! wzzov = bht*exp(alog(wzzo/bht) + (alog(0.11*bht/wzzo) & ! & * alog(brcd/0.01))/2.3) caused Simon's instability wzzov = bht*(wzzo/bht+((0.11-wzzo/bht)/4.60517) & & *alog(brcd/0.001)) else wzzov = 0.0 end if ! choose the maximum of canopy or surface roughness wzzov = max(wzzov,wzzo) ! ! anemom. in field set awzzo to wzzov if (wzoflg==1) awzzo = wzzov !^tmp out ! write(*,*) 'sbzo out' ! write(*,*) 'wzorg wzorr wzzov brcd bht' ! write(*,*) wzorg, wzorr, wzzov, brcd, bht !^ end tmp end subroutine sbzo