//--------------------------------------------------------------------- /// <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); }
//--------------------------------------------------------------------- protected override void InitializeSite(ActiveSite site, ICommunity initialCommunity) { InitialBiomass initialBiomass = InitialBiomass.ComputeInitialBiomass(site, initialCommunity); if (initialBiomass == null) { PlugIn.cohorts[site] = new SiteCohorts(); return; } PlugIn.Cohorts[site] = InitialBiomass.Clone(site, initialBiomass.Cohorts); ForestFloor.WoodyDebris[site] = initialBiomass.DeadWoodyPool.Clone(); ForestFloor.Litter[site] = initialBiomass.DeadNonWoodyPool.Clone(); }
//--------------------------------------------------------------------- public override void Initialize() { cohorts = PlugIn.ModelCore.Landscape.NewSiteVar <ISiteCohorts>(); BiomassCohorts = new BiomassCohortsSiteVar(cohorts); baseCohorts = new Landis.Library.Biomass.BaseCohortsSiteVar(BiomassCohorts); // Counts added cohorts per site and per species newcohorts = PlugIn.ModelCore.Landscape.NewSiteVar <Landis.Library.Biomass.Species.AuxParm <int> >(); foreach (ActiveSite site in PlugIn.ModelCore.Landscape) { newcohorts[site] = new Landis.Library.Biomass.Species.AuxParm <int>(PlugIn.ModelCore.Species); } PlugIn.ModelCore.RegisterSiteVar(NewCohorts, "Succession.NewCohorts"); PlugIn.ModelCore.RegisterSiteVar(cohorts, "Succession.BiomassCohortsPnET"); PlugIn.ModelCore.RegisterSiteVar(BiomassCohorts, "Succession.BiomassCohorts"); PlugIn.ModelCore.RegisterSiteVar(baseCohorts, "Succession.AgeCohorts"); Edu.Wisc.Forest.Flel.Util.Directory.EnsureExists("output"); CohortOutput.Initialize(parameters); SiteOutput.Initialize(parameters); CohortBiomass.Initialize(parameters); EstablishmentProbability.Initialize(parameters); CanopyBiomass.Initialize(parameters); Static.Initialize(parameters); Hydrology.Initialize(parameters); Timestep = parameters.Timestep; tstep = parameters.Timestep; // 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(parameters); Cohort.DeathEvent += CohortDied; // TODO ARJAN !! //Landis.Extension.Succession.Biomass.AgeOnlyDisturbances.Module.Initialize(parameters.AgeOnlyDisturbanceParms); ForestFloor.Initialize(parameters); SiteOutput.Initialize(parameters); StartDate = new System.DateTime(parameters.StartYear, 1, 15); year = StartDate.Year; month = StartDate.Month; 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 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; }