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];
            }
        }
Example #2
0
        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);
        }
Example #3
0
        //---------------------------------------------------------------------
        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];
        }