public static void SimulateCanopy(DateTime date, ActiveSite site) { CanopyBiomass canopybiomass = new CanopyBiomass(Static.PAR0[date], site); CanopyLAI[site] = 0; for (int c = canopy.Count() - 1; c >= 0; c--) { canopy[c].SimulateCanopyLayers(date, c, canopybiomass.radiation); CanopyLAI[site] += canopy[c].LAI; canopybiomass.radiation = canopy[c].BelowCanopyRadiation; NetPsn[site] += canopy[c].Netpsn; GrossPsn[site] += canopy[c].Grosspsn; AutotrophicRespiration[site] += canopy[c].FolResp; } SubCanopyPAR[site] = canopybiomass.Radiation; if (CanopyLAI[site] > CanopyLAImax[site]) { CanopyLAImax[site] = CanopyLAI[site]; } if (SubCanopyPAR[site] > SubCanopyPARmax[site]) { SubCanopyPARmax[site] = SubCanopyPAR[site]; } }
public static void GrowCohorts(ActiveSite site, DateTime Time, DateTime ToTime, bool issuccessionTimestep) { if (PlugIn.Cohorts[site] == null) { return; } while (Time.CompareTo(ToTime) < 0) { if (Time.Month == 1) { if (issuccessionTimestep && tstep > 1)//&& ClimateDependentData.Data[PlugIn.Date[site]] != null { PlugIn.Cohorts[site].CombineCohorts(site, tstep, Time.Year); } CanopyBiomass.SubCanopyPARmax[site] = float.MinValue; Hydrology.AnnualTranspiration[site] = 0; //CanopyBiomass.DefineAgeLayers(site); CanopyBiomass.DefineBiomassLayers(site); CanopyBiomass.CanopyLAI[site] = 0; PlugIn.Cohorts[site].IncrementCohortsAge(); } Hydrology.UpdateSiteHydrology(Time, site); CanopyBiomass.SimulateCanopy(Time, site); if (issuccessionTimestep) { EstablishmentProbability.Compute(Time, site); } ForestFloor.Decomposition(site); SiteOutput.UpdateSiteData(Time, site); CanopyBiomass.GrossPsn[site] = 0; CanopyBiomass.NetPsn[site] = 0; CanopyBiomass.AutotrophicRespiration[site] = 0; ForestFloor.HeterotrophicRespiration[site] = 0; Hydrology.Transpiration[site] = 0; Time = Time.AddMonths(1); } CanopyBiomass.RemoveDeadCohorts(site); PlugIn.Cohorts[site].UpdateMaturePresent(); SiteOutput.WriteSiteData(site); DisturbanceDefoliation.Defoliate(site); }
//--------------------------------------------------------------------- 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); }
public static void SimulateCanopy(DateTime date, ActiveSite site) { CanopyBiomass canopybiomass = new CanopyBiomass(Static.PAR0[date], site); CanopyLAI[site] = 0; for (int c = canopy.Count()-1; c >= 0; c--) { canopy[c].SimulateCanopyLayers(date, c, canopybiomass.radiation); CanopyLAI[site] += canopy[c].LAI; canopybiomass.radiation = canopy[c].BelowCanopyRadiation; NetPsn[site] += canopy[c].Netpsn; GrossPsn[site] += canopy[c].Grosspsn; AutotrophicRespiration[site] += canopy[c].FolResp; } SubCanopyPAR[site] = canopybiomass.Radiation; if (CanopyLAI[site] > CanopyLAImax[site]) CanopyLAImax[site] = CanopyLAI[site]; if (SubCanopyPAR[site] > SubCanopyPARmax[site]) SubCanopyPARmax[site] = SubCanopyPAR[site]; }