!$Author: fredfox $ !$Date: 2007-01-10 23:43:42 $ !$Revision: 1.6 $ !$Source: /weru/cvs/weps/weps.src/crop/shootnum.for,v $ subroutine shootnum( bnslay, bc0idc, bcdpop, bc0shoot, & & bcdmaxshoot, bcmtotshoot, bcmrootstorez, bcdstm ) ! + + + PURPOSE + + + ! determine the number of shoots that root storage mass can support, ! and set the total mass to be released from root storage. ! + + + KEYWORDS + + + ! stem number, shoot growth ! + + + ARGUMENT DECLARATIONS + + + integer bnslay, bc0idc real bcdpop, bc0shoot, bcdmaxshoot real bcmtotshoot real bcmrootstorez(*) real bcdstm ! + + + ARGUMENT DEFINITIONS + + + ! bnslay - number of soil layers ! bc0idc - crop type:annual,perennial,etc ! bcdpop - Number of plants per unit area (#/m^2) ! - Note: bcdstm/bcdpop gives ! bc0shoot - mass from root storage required for each shoot (mg/shoot) ! bcdmaxshoot - maximum number of shoots possible from each plant ! bcmtotshoot - total mass of shoot growing from root storage biomass (kg/m^2) ! in the period from beginning to completion of emegence heat units ! bcmrootstorez - crop root storage mass by soil layer (kg/m^2) ! (tubers (potatoes, carrots), extended leaf (onion), seeds (peanuts)) ! bcdstm - Number of crop stems per unit area (#/m^2) ! + + + GLOBAL COMMON BLOCKS + + + include 'p1unconv.inc' ! + + + LOCAL VARIABLES + + + integer lay real root_store_sum ! + + + LOCAL VARIABLE DEFINITIONS + + + ! lay - layer index for summing root storage ! root_store_sum - sum of root storage ! + + + PARAMETERS + + + real per_release PARAMETER (per_release = 0.9) ! + + + PARAMETER DEFINITIONS + + + ! per_release - fraction of available root stoage mass released to ! grow new shoots. Default is set to 90% of available ! Find number of shoots (stems) that can be supported from ! root storage mass up to the maximum root_store_sum = 0.0 do lay = 1,bnslay root_store_sum = root_store_sum + bcmrootstorez(lay) end do ! determine number of regrowth shoots ! units are kg/m^2 / kg/shoot = shoots/m^2 if( (bc0idc.eq.3) .or. (bc0idc.eq.6) ) then ! Perennials hold some mass in reserve bcdstm = max( bcdpop, min( bcdmaxshoot*bcdpop, & & (1.0-per_release) * root_store_sum/(bc0shoot*mgtokg) ) ) else ! all others go for broke bcdstm = max( bcdpop, min( bcdmaxshoot*bcdpop, & & root_store_sum/(bc0shoot*mgtokg) ) ) end if ! set the mass of root storage that is released (for use in shoot grow) ! units are shoots/m^2 * kg/shoot = kg/m^2 bcmtotshoot = min( root_store_sum, bcdstm * bc0shoot * mgtokg ) return end