Esempio n. 1
0
        /// <summary>Removes a given amount of biomass (and N) from the plant.</summary>
        /// <param name="amountToRemove">The amount of biomass to remove (kg/ha)</param>
        public Biomass RemoveBiomass(double amountToRemove)
        {
            var defoliatedBiomass = new Biomass();
            var preRemovalBiomass = AboveGround.Wt * 10;

            foreach (var organ in Organs.Cast <IOrganDamage>())
            {
                // These calculations convert organ live weight from g/m2 to kg/ha
                var amountLiveToRemove      = organ.Live.Wt * 10 / preRemovalBiomass * amountToRemove;
                var amountDeadToRemove      = organ.Dead.Wt * 10 / preRemovalBiomass * amountToRemove;
                var fractionLiveToRemove    = MathUtilities.Divide(amountLiveToRemove, (organ.Live.Wt * 10), 0);
                var fractionDeadToRemove    = MathUtilities.Divide(amountDeadToRemove, (organ.Dead.Wt * 10), 0);
                var defoliatedDigestibility = organ.Live.DMDOfStructural * fractionLiveToRemove
                                              + organ.Dead.DMDOfStructural * fractionDeadToRemove;
                var defoliatedDM = amountLiveToRemove + amountDeadToRemove;
                var defoliatedN  = organ.Live.N * 10 * fractionLiveToRemove + organ.Dead.N * 10 * fractionDeadToRemove;
                if (defoliatedDM > 0)
                {
                    RemoveBiomass(organ.Name, "Graze",
                                  new OrganBiomassRemovalType()
                    {
                        FractionLiveToRemove = fractionLiveToRemove,
                        FractionDeadToRemove = fractionDeadToRemove
                    });

                    defoliatedBiomass += new Biomass()
                    {
                        StructuralWt    = defoliatedDM,
                        StructuralN     = defoliatedN,
                        DMDOfStructural = defoliatedDigestibility
                    };
                }
            }
            return(defoliatedBiomass);
        }