public SiteConditions(ActiveSite site, ICommunity initialCommunity) { cohorts = new SiteCohorts(); canopy = new Canopy(); if (PlugIn.HasSiteOutput[site] == true) { siteoutput = new SiteOutput(site); estoutput = new EstablishmentOutput(site); } this.site = site; foreach (ISpecies spc in PlugIn.modelCore.Species) { deadcohortages[spc] = new List <int>(); } uint key = ComputeKey(initialCommunity.MapCode, PlugIn.ModelCore.Ecoregion[site].MapCode); SiteConditions s = GetFromKey(key); if (s != null) { return; } // 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 = PlugIn.RankCohortAgesOldToYoung(initialCommunity.Cohorts); sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts; } hydrology = new Hydrology(PlugIn.modelCore.Ecoregion[site]); forestfloor = new ForestFloor(); cohorts = new SiteCohorts(); establishment = new EstablishmentProbability(site); if (sortedAgeCohorts.Count == 0) { return; } //PlugIn.ModelCore.UI.WriteLine("Making Biomass Cohorts "+ site); BiomassSpinUp(sortedAgeCohorts, site); initialSites[key] = this; return; }
//--------------------------------------------------------------------- /// <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 ComputeInitialBiomass(ActiveSite site, ICommunity initialCommunity) { InitialBiomass initialBiomass; IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site]; uint key = ComputeKey(initialCommunity.MapCode, ecoregion.MapCode); if (initialSites.TryGetValue(key, out initialBiomass) && HasSiteOutput[site] == false) { CanopyBiomass.CanopyLAImax[site] = initialBiomass.canopylaimax; CanopyBiomass.CanopyLAI[site] = initialBiomass.canopylai; Hydrology.Water[site] = initialBiomass.water; Hydrology.AnnualTranspiration[site] = initialBiomass.annualtrans; CanopyBiomass.SubCanopyPAR[site] = initialBiomass.subcanopypar; 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 = PlugIn.RankCohortAgesOldToYoung(initialCommunity.Cohorts); sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts; } if (sortedAgeCohorts.Count == 0) { return(null); } ISiteCohorts cohorts = MakeBiomassCohorts(sortedAgeCohorts, site); initialBiomass = new InitialBiomass(cohorts, ForestFloor.WoodyDebris[site], ForestFloor.Litter[site], Hydrology.Water[site], Hydrology.AnnualTranspiration[site], CanopyBiomass.CanopyLAI[site], CanopyBiomass.CanopyLAImax[site], CanopyBiomass.SubCanopyPAR[site]); initialSites[key] = initialBiomass; return(initialBiomass); }