c c subroutine liftvt i (liftf, tillf, bdrbc, nlay, i dflat,droot,dblwgnd, i bflg) c + + + PURPOSE + + + c c This subroutine performs the biomass manipulation process of transfering c the above ground biomass into the soil or the inverse process of bringing c buried biomass to the surface. It deals only with the biomass c pools (ie no live crop is involved) c c c + + + KEYWORDS + + + c bury, lift, biomass manipulation *$noreference include 'p1werm.inc' *$reference c c + + + ARGUMENT DECLARATIONS + + + integer nlay, bflg real liftf(mnrbc) real tillf integer bdrbc(mnbpls) real dflat(mnbpls),dblwgnd(mnsz,mnbpls), & droot(mnsz,mnbpls) c c c + + + ARGUMENT DEFINITIONS + + + c c dblwgnd - (decomp) below ground residue / layer and decomp c pool (kg / m^2) c dflat - (decomp) flat residue pools (kg / m^2) c droot - (decomp) root mass / layer and decomp pool c liftf - fraction of buried material lifted to the surface for c different residue burial classes (m^2/m^2) c tillf - fraction of soil area tilled by the machine c nlay - number of soil layers used in the operation(s) c c + + + ACCESSED COMMON BLOCK VARIABLE DEFINITIONS + + + c c mnrbc - max number of residue burial classes c mnbpls - max number of biomass pools c mnsz - max number of soil layers c c + + + PARAMETERS + + + c c + + + LOCAL VARIABLES + + + c integer lay,i real liftlay(mnsz,mnbpls),lifttot(mnbpls) c c + + + LOCAL VARIABLE DEFINITIONS + + + c c i - biomass pools (1-3) c lay - number of layers in a specified subregion c liftlay - buried material lifted to the surface in each layer c lifttot - total buried material lifted to the surface c c + + + END SPECIFICATIONS + + + c do i=1,mnbpls lifttot(i) = 0.0 end do c perform the lifting of biomass do i=1,mnbpls c check for proper indexes in bdrbc if( (bdrbc(i).ge.1).and.(bdrbc(i).le.mnrbc) ) then c lift it if biomass flag right if (BTEST(bflg,i))then do lay=1,nlay liftlay(lay,i)=dblwgnd(lay,i) & *liftf(bdrbc(i))*tillf lifttot(i)=lifttot(i)+droot(lay,i)* & liftf(bdrbc(i))+liftlay(lay,i) end do endif endif end do c Now let's update the 4 pool types using the temporary variables c we calculated above. do i=1,mnbpls c check for proper indexes in bdrbc if( (bdrbc(i).ge.1).and.(bdrbc(i).le.mnrbc) ) then if (BTEST(bflg,i))then do lay=1,nlay dblwgnd(lay,i) = dblwgnd(lay,i) - & liftlay(lay,i) droot(lay,i) = droot(lay,i)*(1.0-liftf(bdrbc(i))) end do dflat(i)=dflat(i)+lifttot(i) endif endif end do return end