//--------------------------------------------------------------------- public override void Run() { if (PlugIn.ModelCore.CurrentTime > 0) { SiteVars.InitializeDisturbances(); } ClimateRegionData.AnnualNDeposition = new Landis.Library.Parameters.Ecoregions.AuxParm <double>(PlugIn.ModelCore.Ecoregions); SpeciesByPlant = new int[ModelCore.Species.Count]; SpeciesByResprout = new int[ModelCore.Species.Count]; SpeciesBySerotiny = new int[ModelCore.Species.Count]; SpeciesBySeed = new int[ModelCore.Species.Count]; //base.RunReproductionFirst(); base.Run(); if (Timestep > 0) { ClimateRegionData.SetAllEcoregions_FutureAnnualClimate(ModelCore.CurrentTime); } if (ModelCore.CurrentTime % Timestep == 0) { // Write monthly log file: // Output must reflect the order of operation: int[] months = new int[12] { 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5 }; if (OtherData.CalibrateMode) { months = new int[12] { 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5 } } ; for (int i = 0; i < 12; i++) { int month = months[i]; Outputs.WriteMonthlyLogFile(month); } Outputs.WritePrimaryLogFile(PlugIn.ModelCore.CurrentTime); Outputs.WriteShortPrimaryLogFile(PlugIn.ModelCore.CurrentTime); Outputs.WriteMaps(); Outputs.WriteReproductionLog(PlugIn.ModelCore.CurrentTime); Establishment.LogEstablishment(); if (PlugIn.InputCommunityMapNames != null && ModelCore.CurrentTime % PlugIn.InputCommunityMapFrequency == 0) { Outputs.WriteCommunityMaps(); } } }
//--------------------------------------------------------------------- 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); //,LAIMapNames, ShadeClassMapNames); //Initialize climate. Climate.Initialize(Parameters.ClimateConfigFile, false, modelCore); FutureClimateBaseYear = Climate.Future_MonthlyData.Keys.Min(); ClimateRegionData.Initialize(Parameters); FunctionalType.Initialize(Parameters); SpeciesData.Initialize(Parameters); Util.ReadSoilDepthMap(Parameters.SoilDepthMapName); Util.ReadSoilDrainMap(Parameters.SoilDrainMapName); Util.ReadSoilBaseFlowMap(Parameters.SoilBaseFlowMapName); Util.ReadSoilStormFlowMap(Parameters.SoilStormFlowMapName); Util.ReadFieldCapacityMap(Parameters.SoilFieldCapacityMapName); Util.ReadWiltingPointMap(Parameters.SoilWiltingPointMapName); Util.ReadPercentSandMap(Parameters.SoilPercentSandMapName); Util.ReadPercentClayMap(Parameters.SoilPercentClayMapName); Util.ReadSoilCNMaps(Parameters.InitialSOM1CSurfaceMapName, Parameters.InitialSOM1NSurfaceMapName, Parameters.InitialSOM1CSoilMapName, Parameters.InitialSOM1NSoilMapName, Parameters.InitialSOM2CMapName, Parameters.InitialSOM2NMapName, Parameters.InitialSOM3CMapName, Parameters.InitialSOM3NMapName); Util.ReadDeadWoodMaps(Parameters.InitialDeadSurfaceMapName, Parameters.InitialDeadSoilMapName); ShadeLAI = Parameters.MaximumShadeLAI; OtherData.Initialize(Parameters); FireEffects.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); // Delegate mortality routines: Landis.Library.LeafBiomassCohorts.Cohort.PartialDeathEvent += CohortPartialMortality; Landis.Library.LeafBiomassCohorts.Cohort.DeathEvent += CohortTotalMortality; InitializeSites(Parameters.InitialCommunities, Parameters.InitialCommunitiesMap, modelCore); if (Parameters.CalibrateMode) { Outputs.CreateCalibrateLogFile(); } Establishment.InitializeLogFile(); B_MAX = 0; foreach (ISpecies species in ModelCore.Species) { if (SpeciesData.Max_Biomass[species] > B_MAX) { B_MAX = SpeciesData.Max_Biomass[species]; } } foreach (ActiveSite site in PlugIn.ModelCore.Landscape) { Main.ComputeTotalCohortCN(site, SiteVars.Cohorts[site]); } Outputs.WritePrimaryLogFile(0); Outputs.WriteShortPrimaryLogFile(0); }