c c subroutine rough i (roughflg, rrimpl,till_i,tillf, o rr, tillay, clayf, siltf, o croproot, temproot, rootmass, resmass, i ldepth ) c + + + PURPOSE + + + c c This subroutine performs a random roughness calculation c after a tillage operation. c c + + + KEYWORDS + + + c random roughness (RR), tillage (primary/secondary) c c + + + ARGUMENT DECLARATIONS + + + include 'p1werm.inc' c integer roughflg real tillf,rrimpl,rr,till_i integer tillay real clayf(mnsz), siltf(mnsz) real croproot(mnsz), temproot(mnsz) real rootmass(mnsz,mnbpls), resmass(mnsz,mnbpls) real ldepth(mnsz) c c + + + ARGUMENT DEFINITIONS + + + c c tillf - Fraction of the surface tilled (0-1) c till_i - Tillage intensity factor (0-1) c rrimpl - Assigned nominal RR value for the tillage operation (mm) c rr - current surface random roughness (mm) c tillay - number of layers affected by tillage c clayf - clay fraction of soil c siltf - silt fraction of soil c croproot - mass of living crop roots c temproot - mass of temporary pool roots c rootmass - mass of roots by layer, pools (kg/m^2) c resmass - mass of buried crop residue by layer, pools (kg/m^2) c ldepth - depth from soil surface of lower layer boundaries c c + + + ACCESSED COMMON BLOCK VARIABLE DEFINITIONS + + + c c c + + + PARAMETERS + + + real rrmin parameter ( rrmin = 6.096 ) !(mm) = 0.24 inches c c + + + LOCAL VARIABLES + + + integer laycnt, pool real rradj, soiladj real*8 biomass c c + + + LOCAL VARIABLE DEFINITIONS + + + c laycnt - counter for layers c pool - counter for pools c rradj - adjusted implement random roughness c soiladj - soil texture adjustment multiplier c biomass - total biomass in the tillage zone c c + + + END SPECIFICATIONS + + + c c Perform the calculation of the surface RR after a tillage c operation. Check to see if the tillage intensity factor is c needed before performing the calculation. c c adjust the input random roughness value based on flag c roughflg.eq.0 does nothing rradj = rrimpl if( (roughflg.eq.1).or.(roughflg.eq.2)) then c adjust for soil type soiladj = 0.16*siltf(1)**0.25+1.47*clayf(1)**0.27 soiladj = max(0.6,soiladj) rradj = rradj * soiladj endif if( (roughflg.eq.1).or.(roughflg.eq.3)) then c adjust for buried residue amounts, handbook 703, eq 5-17 c this equation is originally in lbs/ac/in c rradj = rrmin+(rradj-rrmin)*(0.8*(1-exp(-0.0012*biomass))+0.2) c This was modified in Wagners correspondence with Foster to use c the factor exp(-0.0015*biomass) c lbs/ac/in = 226692 * kg/m^2/mm c sum up total biomass in the tillage depth if( rrimpl.gt.rrmin ) then biomass = 0.0 do 100 laycnt=1,tillay biomass = biomass + croproot(laycnt) biomass = biomass + temproot(laycnt) do 200 pool=1,mnbpls biomass = biomass + rootmass(laycnt,pool) biomass = biomass + resmass(laycnt,pool) 200 continue 100 continue c make it kg/m^2/mm biomass = biomass / ldepth(tillay) c if value is below min, don't adjust since it would c increase it with less residue. if(rradj.gt.rrmin) then c this equation uses biomass in kg/m^2/mm rradj = rrmin + (rradj-rrmin) & *(0.8*(1-exp(-339.92*biomass))+0.2) endif endif endif ! Is RR going to be increased? If so, then just do it. if (rradj .ge. rr) then rr = tillf*rradj + (1.0-tillf)*rr else rr = tillf*(till_i*rradj + (1.0-till_i)*rr) & + (1.0-tillf)*rr end if return end