//--------------------------------------------------------------------- public void OldestOfSelectedSpecies(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isDamaged) { if (cohorts.Species == SelectedSpecies) // Oldest is first cohort isDamaged[0] = true; }
//--------------------------------------------------------------------- #region ISpeciesCohortsDisturbance members /// <summary> /// Mark which cohorts for a species are to be cut (harvested). /// </summary> public void MarkCohortsForDeath(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isKilled) { CohortSelector.Harvest(cohorts, isKilled); int numKilled = 0; for (int i = 0; i < isKilled.Count; i++) { if (isKilled[i]) { cohortCounts.IncrementCount(cohorts.Species); numKilled++; } } if (isDebugEnabled) { if (numKilled > 0) { string ageList = ""; int i = 0; foreach (ICohort cohort in cohorts) { if (isKilled[i]) ageList += string.Format(" {0}", cohort.Age); i++; } log.DebugFormat(" Cut {0} :{1}", cohorts.Species.Name, ageList); } } }
//--------------------------------------------------------------------- public void AllExceptYoungest(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isDamaged) { // Youngest is the last cohort (at index Count - 1) for (int i = 0; i < (isDamaged.Count - 1); i++) isDamaged[i] = true; }
//--------------------------------------------------------------------- /// <summary> /// Selects which of a species' cohorts are harvested. /// </summary> public void Harvest(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isHarvested) { SelectCohorts.Method selectionMethod; if (selectionMethods.TryGetValue(cohorts.Species, out selectionMethod)) selectionMethod(cohorts, isHarvested); }
//--------------------------------------------------------------------- /// <summary> /// Selects all of a species' cohorts for harvesting. /// </summary> public static void All(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isHarvested) { //loop through all cohorts and mark as harvested for (int i = 0; i < isHarvested.Count; i++) isHarvested[i] = true; }
//--------------------------------------------------------------------- /// <summary> /// Selects all of a species' cohorts for harvesting except the oldest. /// </summary> public static void AllExceptOldest(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isHarvested) { // Oldest is first (so start at i = 1 instead of i = 0) for (int i = 1; i < isHarvested.Count; i++) isHarvested[i] = true; }
//--------------------------------------------------------------------- public void AllOfSelectedSpecies(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isDamaged) { if (cohorts.Species == SelectedSpecies) { for (int i = 0; i < isDamaged.Count; i++) isDamaged[i] = true; } }
//--------------------------------------------------------------------- /// <summary> /// Selects all of a species' cohorts for harvesting except the /// youngest. /// </summary> public static void AllExceptYoungest(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isHarvested) { // Youngest is last. int youngestIndex = isHarvested.Count - 1; for (int i = 0; i < youngestIndex; i++) isHarvested[i] = true; }
//--------------------------------------------------------------------- /// <summary> /// Selects which of a species' cohorts are harvested. /// </summary> public void SelectCohorts(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isHarvested) { int i = 0; foreach (ICohort cohort in cohorts) { AgeRange? notUsed; if (agesAndRanges.Contains(cohort.Age, out notUsed)) isHarvested[i] = true; i++; } }
//--------------------------------------------------------------------- /// <summary> /// Selects which of a species' cohorts are harvested. /// </summary> public void SelectCohorts(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isHarvested) { int i = 0; foreach (ICohort cohort in cohorts) { if (ages.Contains(cohort.Age)) isHarvested[i] = true; else { foreach (AgeRange range in ranges) { if (range.Contains(cohort.Age)) { isHarvested[i] = true; break; } } } i++; } }
//--------------------------------------------------------------------- public void Every2ndCohort(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isDamaged) { int N = 2; // Every Nth cohort, working from youngest to oldest int youngestIndex = isDamaged.Count - 1; for (int i = youngestIndex - (N - 1); i >= 0; i -= N) isDamaged[i] = true; }
//--------------------------------------------------------------------- void ISpeciesCohortsDisturbance.Damage(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isDamaged) { Damage(cohorts, isDamaged); }
//--------------------------------------------------------------------- /// <summary> /// Selects the youngest of a species' cohorts for harvesting. /// </summary> public static void Youngest(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isHarvested) { // Youngest is last. isHarvested[isHarvested.Count - 1] = true; }
//--------------------------------------------------------------------- /// <summary> /// Selects the oldest of a species' cohorts for harvesting. /// </summary> public static void Oldest(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isHarvested) { // Oldest is first. isHarvested[0] = true; }
//--------------------------------------------------------------------- /// <summary> /// Selects which of a species' cohorts are harvested. /// </summary> public void SelectCohorts(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isHarvested) { // TODO throw new System.NotImplementedException(); }
//--------------------------------------------------------------------- void ISpeciesCohortsDisturbance.MarkCohortsForDeath(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isKilled) { cohortSelector.Harvest(cohorts, isKilled); }
//--------------------------------------------------------------------- void ISpeciesCohortsDisturbance.Damage(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isDamaged) { cohortSelector.Harvest(cohorts, isDamaged); }
//--------------------------------------------------------------------- /// <summary> /// Selects which of a species' cohorts are harvested. /// </summary> public void Harvest(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isHarvested) { for (int i = 0; i < isHarvested.Count; i++) isHarvested[i] = true; }
//--------------------------------------------------------------------- /// <summary> /// Selects which of a species' cohorts are harvested. /// </summary> public void SelectCohorts(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isHarvested) { for (int i = isHarvested.Count - N; i >= 0; i -= N) isHarvested[i] = true; }
//--------------------------------------------------------------------- public void ClearCut(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isDamaged) { for (int i = 0; i < isDamaged.Count; i++) isDamaged[i] = true; }
//--------------------------------------------------------------------- void ISpeciesCohortsDisturbance.Damage(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isDamaged) { cohortSelector.Harvest(cohorts, isDamaged); int cohortsKilled = 0; for (int i = 0; i < isDamaged.Count; i++) if (isDamaged[i]) cohortsKilled++; SiteVars.CohortsKilled[currentSite] = cohortsKilled; }
//--------------------------------------------------------------------- void ISpeciesCohortsDisturbance.MarkCohortsForDeath(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isDamaged) { cohortSelector.Harvest(cohorts, isDamaged); int cohortsDamaged = 0; for (int i = 0; i < isDamaged.Count; i++) { if (isDamaged[i]) { //if this cohort is killed, update the damage table (for the stand of this site) with this species name SiteVars.Stand[currentSite].UpdateDamageTable(cohorts.Species.Name); //PlugIn.ModelCore.UI.WriteLine("Damaged: {0}.", cohorts.Species.Name); //and increment the cohortsDamaged cohortsDamaged++; } } SiteVars.CohortsDamaged[currentSite] += cohortsDamaged; }
//--------------------------------------------------------------------- /// <summary> /// Selects which of a species' cohorts are harvested. /// </summary> public void Harvest(ISpeciesCohorts cohorts, ISpeciesCohortBoolArray isHarvested) { SelectionMethod(cohorts, isHarvested); }