!$Author$ !$Date$ !$Revision$ !$HeadURL$ subroutine ht_dia_sai( bcdpop, bcmstandstem, dmstandstem, & & bc0ssa, bc0ssb, bcdstm, & & bczht, dht, bcxstmrep, bcrsai ) ! + + + PURPOSE + + + ! this routine checks for consistency between plant height and biomass ! accumulation, using half and double the stem diameter (previously unused) ! as check points. The representative stem diameter is set to show where ! within the range the actual stem diameter is. ! + + + ARGUMENT DECLARATIONS + + + real, intent(in) :: bcdpop, bcmstandstem, dmstandstem real, intent(in) :: bc0ssa, bc0ssb real, intent(in) :: bcdstm, bczht real, intent(inout) :: dht real, intent(out) :: bcxstmrep, bcrsai ! + + + ARGUMENT DEFINITIONS + + + ! bcdpop - Crop seeding density (#/m^2) ! bcmstandstem - crop standing stem mass (kg/m^2) ! dmstandstem - daily crop standing stem mass increment (kg/m^2) ! bc0ssa - stem area to mass coefficient a, result is m^2 per plant ! bc0ssb - stem area to mass coefficient b, argument is kg per plant ! bcdstm - Number of crop stems per unit area (#/m^2) ! bczht - Crop height (m) ! dht - daily height increment (m) ! bcxstmrep - a representative diameter so that acdstm*acxstmrep*aczht=acrsai ! bcrsai - Crop stem area index (m^2/m^2) ! + + + END OF SPECIFICATIONS + + + ! calculate crop stem area index ! when exponent is not 1, must use mass for single plant stem to get stem area ! bcmstandstem, convert (kg/m^2) / (plants/m^2) = kg/plant ! result of ((m^2 of stem)/plant) * (# plants/m^2 ground area) = (m^2 of stem)/(m^2 ground area) if( bcdpop .gt. 0.0 ) then bcrsai = bcdpop * bc0ssa * (bcmstandstem/bcdpop)**bc0ssb else bcrsai = 0.0 end if if( dmstandstem .le. 0.0 ) then ! stem mass is not increasing, therefore height is not increasing. dht = 0.0 end if ! (m^2 stem / m^2 ground) / ((stems/m^2 ground) * m) = m/stem ! this value not reset unless it is meaningful if( (bcdstm * (bczht + dht)) .gt. 0.0 ) then bcxstmrep = bcrsai / (bcdstm * (bczht + dht)) else bcxstmrep = 0.0 end if return end