//--------------------------------------------------------------------- protected override void InitializeSite(ActiveSite site, ICommunity initialCommunity) { InitialBiomass initialBiomass = InitialBiomass.Compute(site, initialCommunity); SiteVars.Cohorts[site] = InitialBiomass.Clone(initialBiomass.Cohorts); //IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site]; SiteVars.SurfaceDeadWood[site] = initialBiomass.SurfaceDeadWood.Clone(); SiteVars.SurfaceStructural[site] = initialBiomass.SurfaceStructural.Clone(); SiteVars.SurfaceMetabolic[site] = initialBiomass.SurfaceMetabolic.Clone(); SiteVars.SoilDeadWood[site] = initialBiomass.SoilDeadWood.Clone(); SiteVars.SoilStructural[site] = initialBiomass.SoilStructural.Clone(); SiteVars.SoilMetabolic[site] = initialBiomass.SoilMetabolic.Clone(); SiteVars.SOM1surface[site] = initialBiomass.SOM1surface.Clone(); SiteVars.SOM1soil[site] = initialBiomass.SOM1soil.Clone(); SiteVars.SOM2[site] = initialBiomass.SOM2.Clone(); SiteVars.SOM3[site] = initialBiomass.SOM3.Clone(); SiteVars.MineralN[site] = initialBiomass.MineralN; SiteVars.CohortLeafC[site] = initialBiomass.CohortLeafC; SiteVars.CohortFRootC[site] = initialBiomass.CohortFRootC; SiteVars.CohortLeafN[site] = initialBiomass.CohortLeafN; SiteVars.CohortFRootN[site] = initialBiomass.CohortFRootN; SiteVars.CohortWoodC[site] = initialBiomass.CohortWoodC; SiteVars.CohortCRootC[site] = initialBiomass.CohortCRootC; SiteVars.CohortWoodN[site] = initialBiomass.CohortWoodN; SiteVars.CohortCRootN[site] = initialBiomass.CohortCRootN; }
//--------------------------------------------------------------------- public override void Initialize() { PlugIn.ModelCore.UI.WriteLine("Initializing {0} ...", ExtensionName); Timestep = parameters.Timestep; SuccessionTimeStep = Timestep; sufficientLight = parameters.LightClassProbabilities; ProbEstablishAdjust = parameters.ProbEstablishAdjustment; MetadataHandler.InitializeMetadata(Timestep, modelCore, SoilCarbonMapNames, SoilNitrogenMapNames, ANPPMapNames, ANEEMapNames, TotalCMapNames); CohortBiomass.SpinupMortalityFraction = parameters.SpinupMortalityFraction; //Initialize climate. Climate.Initialize(parameters.ClimateConfigFile, false, modelCore); FutureClimateBaseYear = Climate.Future_MonthlyData.Keys.Min(); EcoregionData.Initialize(parameters); SpeciesData.Initialize(parameters); EcoregionData.ChangeParameters(parameters); OtherData.Initialize(parameters); FunctionalType.Initialize(parameters); // 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. Library.LeafBiomassCohorts.Cohorts.Initialize(Timestep, new CohortBiomass()); // Initialize Reproduction routines: Reproduction.SufficientResources = SufficientLight; Reproduction.Establish = Establish; Reproduction.AddNewCohort = AddNewCohort; Reproduction.MaturePresent = MaturePresent; base.Initialize(modelCore, parameters.SeedAlgorithm); InitialBiomass.Initialize(Timestep); Landis.Library.BiomassCohorts.Cohort.DeathEvent += CohortDied; Landis.Library.LeafBiomassCohorts.Cohort.PartialDeathEvent += CohortPartialMortality; AgeOnlyDisturbances.Module.Initialize(parameters.AgeOnlyDisturbanceParms); Dynamic.Module.Initialize(parameters.DynamicUpdates); FireEffects.Initialize(parameters); InitializeSites(parameters.InitialCommunities, parameters.InitialCommunitiesMap, modelCore); //the spinup is heppend within this fucntion if (parameters.CalibrateMode) { Outputs.CreateCalibrateLogFile(); } Outputs.WritePrimaryLogFile(0); Outputs.WriteShortPrimaryLogFile(0); }
//--------------------------------------------------------------------- /// <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; }
//--------------------------------------------------------------------- /// <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); }