//--------------------------------------------------------------------- /// <summary> /// Computes the initial biomass at a site. /// </summary> /// <param name="site"> /// The selected site. /// </param> /// <param name="initialCommunity"> /// The initial community of age cohorts at the site. /// </param> public static InitialBiomass Compute(ActiveSite site, ICommunity initialCommunity) { IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site]; uint key = ComputeKey(initialCommunity.MapCode, ecoregion.MapCode); InitialBiomass initialBiomass; if (initialSites.TryGetValue(key, out initialBiomass)) { return(initialBiomass); } // If we don't have a sorted list of age cohorts for the initial // community, make the list List <Landis.Library.AgeOnlyCohorts.ICohort> sortedAgeCohorts; if (!sortedCohorts.TryGetValue(initialCommunity.MapCode, out sortedAgeCohorts)) { sortedAgeCohorts = SortCohorts(initialCommunity.Cohorts); sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts; } SiteCohorts cohorts = MakeBiomassCohorts(sortedAgeCohorts, site); initialBiomass = new InitialBiomass(cohorts, SiteVars.WoodyDebris[site], SiteVars.Litter[site]); initialSites[key] = initialBiomass; return(initialBiomass); }
//--------------------------------------------------------------------- protected override void InitializeSite(ActiveSite site)//,ICommunity initialCommunity) { InitialBiomass initialBiomass = InitialBiomass.Compute(site, initialCommunity); SiteVars.Cohorts[site] = InitialBiomass.Clone(initialBiomass.Cohorts); SiteVars.WoodyDebris[site] = initialBiomass.DeadWoodyPool.Clone(); SiteVars.Litter[site] = initialBiomass.DeadNonWoodyPool.Clone(); }
//--------------------------------------------------------------------- public override void Initialize() { Timestep = Parameters.Timestep; time = Timestep; CalibrateMode = Parameters.CalibrateMode; CohortBiomass.SpinupMortalityFraction = Parameters.SpinupMortalityFraction; //Initialize climate. if (Parameters.ClimateConfigFile != null) { Climate.Initialize(Parameters.ClimateConfigFile, false, modelCore); FutureClimateBaseYear = Climate.Future_MonthlyData.Keys.Min(); ClimateRegionData.Initialize(Parameters); } sufficientLight = Parameters.LightClassProbabilities; SpeciesData.Initialize(Parameters); EcoregionData.Initialize(Parameters); DynamicInputs.Initialize(Parameters.DynamicInputFile, false); SpeciesData.ChangeDynamicParameters(0); // Year 0 FireEffects.Initialize(Parameters); //Outputs.Initialize(parameters); MetadataHandler.InitializeMetadata(summaryLogFileName); // Cohorts must be created before the base class is initialized // because the base class' reproduction module uses the core's // SuccessionCohorts property in its Initialization method. Landis.Library.BiomassCohorts.Cohorts.Initialize(Timestep, new CohortBiomass()); // Initialize Reproduction routines: Reproduction.SufficientResources = SufficientLight; Reproduction.Establish = Establish; Reproduction.AddNewCohort = AddNewCohort; Reproduction.MaturePresent = MaturePresent; Reproduction.PlantingEstablish = PlantingEstablish; base.Initialize(modelCore, Parameters.SeedAlgorithm); InitialBiomass.Initialize(Timestep); Landis.Library.BiomassCohorts.Cohort.DeathEvent += CohortTotalMortality; Landis.Library.BiomassCohorts.Cohort.PartialDeathEvent += CohortPartialMortality; InitializeSites(Parameters.InitialCommunities, Parameters.InitialCommunitiesMap, modelCore); }
//--------------------------------------------------------------------- /// <summary> /// Computes the initial biomass at a site. /// </summary> /// <param name="site"> /// The selected site. /// </param> /// <param name="initialCommunity"> /// The initial community of age cohorts at the site. /// </param> public static InitialBiomass Compute(ActiveSite site, ICommunity initialCommunity) { IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site]; uint key = ComputeKey(initialCommunity.MapCode, ecoregion.MapCode); InitialBiomass initialBiomass; if (initialSites.TryGetValue(key, out initialBiomass)) return initialBiomass; // If we don't have a sorted list of age cohorts for the initial // community, make the list List<Landis.Library.AgeOnlyCohorts.ICohort> sortedAgeCohorts; if (!sortedCohorts.TryGetValue(initialCommunity.MapCode, out sortedAgeCohorts)) { sortedAgeCohorts = SortCohorts(initialCommunity.Cohorts); sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts; } SiteCohorts cohorts = MakeBiomassCohorts(sortedAgeCohorts, site); initialBiomass = new InitialBiomass(cohorts, SiteVars.WoodyDebris[site], SiteVars.Litter[site]); initialSites[key] = initialBiomass; return initialBiomass; }