private void DoPestDiseaseDamage(object sender, EventArgs e)
        {
            OrganBiomassRemovalType consumption = new OrganBiomassRemovalType();

            consumption.FractionLiveToRemove = Math.Max(1, ParentStage.TotalPopulation * RateOfOrganConsumptionPerIndividual.Value() * HostOrgan.Live.Wt);
            HostPlant.RemoveBiomass(HostOrgan.Name, "Graze", consumption);
        }
예제 #2
0
 private void DoPestDiseaseDamage(object sender, EventArgs e)
 {
     if (HostOrgan.GetType() == typeof(ICanopy))
     {
         HostPlant.ReduceCanopy(Reduction.Value());
     }
     else if (HostOrgan.GetType() == typeof(IRoot))
     {
         HostPlant.ReduceRootLengthDensity(Reduction.Value());
     }
     else
     {
         throw new Exception("FunctionalDimensionReduction is only possible for organs implementing ICanopy or IRoot interfaces");
     }
 }
예제 #3
0
        private void DoPestDiseaseDamage(object sender, EventArgs e)
        {
            OrganBiomassRemovalType consumption = new OrganBiomassRemovalType();
            double organWtConsumed = 0;

            if ((ParentPhase.Cohorts != null) && (HostPlant.IsAlive))
            {
                foreach (Cohort c in ParentPhase.Cohorts)
                {
                    ParentPhase.CurrentCohort         = c;
                    organWtConsumed                  += c.Population * OrganWtConsumptionPerIndividual.Value();
                    consumption.FractionLiveToRemove += Math.Max(1, organWtConsumed / HostOrgan.Live.Wt);
                }
                HostPlant.RemoveBiomass(HostOrgan.Name, "Graze", consumption);
            }
        }
예제 #4
0
 private void DoPestDiseaseDamage(object sender, EventArgs e)
 {
     HostPlant.ReduceCanopy(ParentStage.TotalPopulation * RateOfOrganObstructionPerIndividual.Value());
 }