public IEnumerator <Landis.Library.DensityCohorts.ISpeciesCohorts> GetEnumerator() { foreach (ISpecies species in cohorts.Keys) { Landis.Library.DensityCohorts.SpeciesCohorts speciescohort = GetSpeciesCohort(cohorts[species]); yield return((Library.DensityCohorts.ISpeciesCohorts)speciescohort); } }
IEnumerator <Landis.Library.AgeOnlyCohorts.ISpeciesCohorts> IEnumerable <Landis.Library.AgeOnlyCohorts.ISpeciesCohorts> .GetEnumerator() { foreach (ISpecies species in cohorts.Keys) { Landis.Library.DensityCohorts.SpeciesCohorts speciescohort = GetSpeciesCohort(cohorts[species]); Landis.Library.AgeOnlyCohorts.ISpeciesCohorts isp = (Landis.Library.AgeOnlyCohorts.ISpeciesCohorts)speciescohort; yield return(isp); } }
void ISiteCohorts.RemoveMarkedCohorts(ISpeciesCohortsDisturbance disturbance) { /* * if (AgeOnlyDisturbanceEvent != null) * { * AgeOnlyDisturbanceEvent(this, new Landis.Library.BiomassCohorts.DisturbanceEventArgs(disturbance.CurrentSite, disturbance.Type)); * } */ // Does this only occur when a site is disturbed? //Allocation.ReduceDeadPools(this, disturbance.Type); // Go through list of species cohorts from back to front so that // a removal does not mess up the loop. int totalReduction = 0; List <Cohort> ToRemove = new List <Cohort>(); SpeciesCohortBoolArray isSpeciesCohortDamaged = new SpeciesCohortBoolArray(); foreach (ISpecies spc in cohorts.Keys) { Landis.Library.DensityCohorts.SpeciesCohorts speciescohort = GetSpeciesCohort(cohorts[spc]); isSpeciesCohortDamaged.SetAllFalse(speciescohort.Count); disturbance.MarkCohortsForDeath(speciescohort, isSpeciesCohortDamaged); for (int c = 0; c < isSpeciesCohortDamaged.Count; c++) { if (isSpeciesCohortDamaged[c]) { totalReduction += speciescohort[c].Treenumber; ToRemove.Add(cohorts[spc][c]); // ToRemove.AddRange(cohorts[spc].Where(o => o.Age == speciescohort[c].Age)); } } } foreach (Cohort cohort in ToRemove) { Landis.Library.DensityCohorts.Cohort.KilledByAgeOnlyDisturbance(disturbance, cohort, disturbance.CurrentSite, disturbance.Type); RemoveCohort(cohort, disturbance.Type); } }