//--------------------------------------------------------------------- /// <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; } ISiteCohorts cohorts = MakeBiomassCohorts(sortedAgeCohorts, site); initialBiomass = new InitialBiomass( cohorts, SiteVars.SurfaceDeadWood[site], SiteVars.SurfaceStructural[site], SiteVars.SurfaceMetabolic[site], SiteVars.SoilDeadWood[site], SiteVars.SoilStructural[site], SiteVars.SoilMetabolic[site], SiteVars.SOM1surface[site], SiteVars.SOM1soil[site], SiteVars.SOM2[site], SiteVars.SOM3[site], SiteVars.MineralN[site], SiteVars.CohortLeafC[site], SiteVars.CohortLeafN[site], SiteVars.CohortWoodC[site], SiteVars.CohortWoodN[site] ); initialSites[key] = initialBiomass; return initialBiomass; }
//--------------------------------------------------------------------- /// <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]; if (!ecoregion.Active) { string mesg = string.Format("Initial community {0} is located on a non-active ecoregion {1}", initialCommunity.MapCode, ecoregion.Name); throw new System.ApplicationException(mesg); } 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; } ISiteCohorts cohorts = MakeBiomassCohorts(sortedAgeCohorts, site); initialBiomass = new InitialBiomass( cohorts, SiteVars.SurfaceDeadWood[site], SiteVars.SurfaceStructural[site], SiteVars.SurfaceMetabolic[site], SiteVars.SoilDeadWood[site], SiteVars.SoilStructural[site], SiteVars.SoilMetabolic[site], SiteVars.SOM1surface[site], SiteVars.SOM1soil[site], SiteVars.SOM2[site], SiteVars.SOM3[site], SiteVars.MineralN[site], SiteVars.CohortLeafC[site], SiteVars.CohortFRootC[site], SiteVars.CohortLeafN[site], SiteVars.CohortFRootN[site], SiteVars.CohortWoodC[site], SiteVars.CohortCRootC[site], SiteVars.CohortWoodN[site], SiteVars.CohortCRootN[site] ); initialSites[key] = initialBiomass; return initialBiomass; }