//private static StreamWriter log;
        //---------------------------------------------------------------------
        public static void Initialize(IParameters parameters)
        {
            FuncType            = parameters.SppFunctionalType;
            NTolerance          = parameters.NTolerance;
            GDDmin              = parameters.GDDmin;
            GDDmax              = parameters.GDDmax;
            MinJanTemp          = parameters.MinJanTemp;
            MaxDrought          = parameters.MaxDrought;
            LeafLongevity       = parameters.LeafLongevity;
            Epicormic           = parameters.Epicormic;
            LeafLignin          = parameters.LeafLignin;
            WoodLignin          = parameters.WoodLignin ;
            CoarseRootLignin    = parameters.CoarseRootLignin ;
            FineRootLignin      = parameters.FineRootLignin ;
            LeafCN              = parameters.LeafCN;
            WoodCN              = parameters.WoodCN;
            CoarseRootCN        = parameters.CoarseRootCN;
            LeafLitterCN        = parameters.FoliageLitterCN;
            FineRootLitterCN    = parameters.FineRootLitterCN;
            NLimits = new Species.AuxParm<double>(Model.Core.Species);

            Establishment.Initialize();

            // The initial set of establishment probabilities:
            EstablishProbability = Establishment.GenerateNewEstablishProbabilities(parameters.Timestep);
            Reproduction.ChangeEstablishProbabilities(Util.ToArray<double>(SpeciesData.EstablishProbability));

            ChangeParameters(parameters);
        }
Beispiel #2
0
        //---------------------------------------------------------------------

        public Parameters(
            Species.AuxParm <Ecoregions.AuxParm <int> > maxANPP,
            Species.AuxParm <Ecoregions.AuxParm <int> > maxBiomass)
        {
            this.maxANPP    = maxANPP;
            this.maxBiomass = maxBiomass;
        }
        //public static void ChangeParameters(DynamicChange.IParameters parameters)
        public static void ChangeDynamicParameters(int year)
        {
            if(DynamicInputs.AllData.ContainsKey(year))
            {

                EstablishProbability = Util.CreateSpeciesEcoregionParm<double>(PlugIn.ModelCore.Species, PlugIn.ModelCore.Ecoregions);
                ANPP_MAX_Spp         = Util.CreateSpeciesEcoregionParm<int>(PlugIn.ModelCore.Species, PlugIn.ModelCore.Ecoregions);
                B_MAX_Spp            = Util.CreateSpeciesEcoregionParm<int>(PlugIn.ModelCore.Species, PlugIn.ModelCore.Ecoregions);

                DynamicInputs.TimestepData = DynamicInputs.AllData[year];

                foreach(ISpecies species in PlugIn.ModelCore.Species)
                {
                    foreach(IEcoregion ecoregion in PlugIn.ModelCore.Ecoregions)
                    {
                        EstablishProbability[species][ecoregion] = DynamicInputs.TimestepData[species.Index, ecoregion.Index].ProbEst;
                        ANPP_MAX_Spp[species][ecoregion] = DynamicInputs.TimestepData[species.Index, ecoregion.Index].ANPP_MAX_Spp;
                        B_MAX_Spp[species][ecoregion] = DynamicInputs.TimestepData[species.Index, ecoregion.Index].B_MAX_Spp;
                    }
                }

                if(PlugIn.CalibrateMode)
                    DynamicInputs.Write();

                //Reproduction.ChangeEstablishProbabilities(Util.ToArray<double>(EstablishProbability));

                EcoregionData.UpdateB_MAX();
            }
        }
 public static void ChangeParameters(ClimateChange.IParameters parameters)
 {
     WoodyDebrisDecay        = parameters.WoodyDecayRate;
     EstablishProbability    = parameters.EstablishProbability;
     ANPP_MAX_Spp            = parameters.MaxANPP;
     B_MAX_Spp               = parameters.MaxBiomass;
 }
        //private static StreamWriter log;
        //---------------------------------------------------------------------
        public static void Initialize(IInputParameters parameters)
        {
            FuncType            = parameters.SppFunctionalType;
            NFixer              = parameters.NFixer;
            GDDmin              = parameters.GDDmin;
            GDDmax              = parameters.GDDmax;
            MinJanTemp          = parameters.MinJanTemp;
            MaxDrought          = parameters.MaxDrought;
            LeafLongevity       = parameters.LeafLongevity;
            Epicormic           = parameters.Epicormic;
            LeafLignin          = parameters.LeafLignin;
            WoodLignin          = parameters.WoodLignin ;
            //CoarseRootLignin    = parameters.CoarseRootLignin ;
            //FineRootLignin      = parameters.FineRootLignin ;
            LeafCN              = parameters.LeafCN;
            WoodCN              = parameters.WoodCN;
            //CoarseRootCN        = parameters.CoarseRootCN;
            LeafLitterCN        = parameters.FoliageLitterCN;
            //FineRootCN          = parameters.FineRootCN;
            //NLimits = new Species.AuxParm<double>(PlugIn.ModelCore.Species);

            Establishment.Initialize();

            // The initial set of establishment probabilities:
            EstablishProbability = Establishment.GenerateNewEstablishProbabilities(parameters.Timestep);

            ChangeParameters(parameters);
        }
Beispiel #6
0
        //private static StreamWriter log;

        //---------------------------------------------------------------------
        public static void Initialize(IInputParameters parameters)
        {
            FuncType         = parameters.SppFunctionalType;
            NFixer           = parameters.NFixer;
            GDDmin           = parameters.GDDmin;
            GDDmax           = parameters.GDDmax;
            MinJanTemp       = parameters.MinJanTemp;
            MaxDrought       = parameters.MaxDrought;
            LeafLongevity    = parameters.LeafLongevity;
            Epicormic        = parameters.Epicormic;
            LeafLignin       = parameters.LeafLignin;
            WoodLignin       = parameters.WoodLignin;
            CoarseRootLignin = parameters.CoarseRootLignin;
            FineRootLignin   = parameters.FineRootLignin;
            LeafCN           = parameters.LeafCN;
            WoodCN           = parameters.WoodCN;
            CoarseRootCN     = parameters.CoarseRootCN;
            LeafLitterCN     = parameters.FoliageLitterCN;
            FineRootCN       = parameters.FineRootCN;
            //NLimits = new Species.AuxParm<double>(PlugIn.ModelCore.Species);

            Establishment.Initialize();

            // The initial set of establishment probabilities:
            EstablishProbability = Establishment.GenerateNewEstablishProbabilities(parameters.Timestep);

            ChangeParameters(parameters);
        }
Beispiel #7
0
        //---------------------------------------------------------------------

        public Parameters(IEcoregionDataset ecoregionDataset,
                          ISpeciesDataset speciesDataset)
        {
            this.ecoregionDataset = ecoregionDataset;
            this.speciesDataset   = speciesDataset;
            maxANPP    = CreateSpeciesEcoregionParm <int>();
            maxBiomass = CreateSpeciesEcoregionParm <int>();
        }
        //---------------------------------------------------------------------
        public static void Initialize(IParameters parameters)
        {
            ChangeParameters(parameters);

            LeafLignin = parameters.LeafLignin;
            LeafLongevity = parameters.LeafLongevity;
            MortCurveShapeParm = parameters.MortCurveShapeParm;
            GrowthCurveShapeParm = parameters.GrowthCurveShapeParm;
        }
Beispiel #9
0
        //---------------------------------------------------------------------

        private Species.AuxParm <Ecoregions.AuxParm <T> > CreateSpeciesEcoregionParm <T>()
        {
            Species.AuxParm <Ecoregions.AuxParm <T> > newParm;
            newParm = new Species.AuxParm <Ecoregions.AuxParm <T> >(speciesDataset);
            foreach (ISpecies species in speciesDataset)
            {
                newParm[species] = new Ecoregions.AuxParm <T>(ecoregionDataset);
            }
            return(newParm);
        }
        //---------------------------------------------------------------------

        private static Species.AuxParm <Ecoregions.AuxParm <double> > CreateSpeciesEcoregionParm <T>(ISpeciesDataset speciesDataset, IEcoregionDataset ecoregionDataset)
        {
            Species.AuxParm <Ecoregions.AuxParm <double> > newParm;
            newParm = new Species.AuxParm <Ecoregions.AuxParm <double> >(speciesDataset);
            foreach (ISpecies species in speciesDataset)
            {
                newParm[species] = new Ecoregions.AuxParm <double>(ecoregionDataset);
            }
            return(newParm);
        }
Beispiel #11
0
 /// <summary>
 /// Converts a table indexed by species and ecoregion into a
 /// 2-dimensional array.
 /// </summary>
 public static T[,] ToArray <T>(Species.AuxParm <Ecoregions.AuxParm <T> > table)
 {
     T[,] array = new T[PlugIn.ModelCore.Ecoregions.Count, PlugIn.ModelCore.Species.Count];
     foreach (ISpecies species in PlugIn.ModelCore.Species)
     {
         foreach (IEcoregion ecoregion in PlugIn.ModelCore.Ecoregions)
         {
             array[ecoregion.Index, species.Index] = table[species][ecoregion];
         }
     }
     return(array);
 }
Beispiel #12
0
        //---------------------------------------------------------------------

        //private Ecoregions.AuxParm<T> ConvertToActualValues<T>(Ecoregions.AuxParm<InputValue<T>> inputValues)
        //{
        //    Ecoregions.AuxParm<T> actualValues = new Ecoregions.AuxParm<T>(PlugIn.ModelCore.Ecoregions); //ecoregionDataset);
        //    foreach (IEcoregion ecoregion in PlugIn.ModelCore.Ecoregions)//ecoregionDataset)
        //        if (inputValues[ecoregion] != null)
        //            actualValues[ecoregion] = inputValues[ecoregion].Actual;
        //    return actualValues;
        //}

        //---------------------------------------------------------------------

        private Species.AuxParm <T> ConvertToActualValues <T>(Species.AuxParm <InputValue <T> > inputValues)
        {
            Species.AuxParm <T> actualValues = new Species.AuxParm <T>(PlugIn.ModelCore.Species); //speciesDataset);
            foreach (ISpecies species in PlugIn.ModelCore.Species)                                //speciesDataset)
            {
                if (inputValues[species] != null)
                {
                    actualValues[species] = inputValues[species].Actual;
                }
            }
            return(actualValues);
        }
 //---------------------------------------------------------------------
 public Parameters(Ecoregions.AuxParm<Percentage>[]            minRelativeBiomass,
                   Species.AuxParm<double>                     leafLongevity,
                   Species.AuxParm<double>                     woodyDecayRate,
                   Species.AuxParm<double>                     mortCurveShapeParm,
                   Species.AuxParm<Ecoregions.AuxParm<double>> establishProbability,
                   Species.AuxParm<Ecoregions.AuxParm<int>>    maxANPP,
                   Species.AuxParm<Ecoregions.AuxParm<double>> leafLitterDecayRate)
 {
     this.minRelativeBiomass = minRelativeBiomass;
     this.leafLongevity = leafLongevity;
     this.woodyDecayRate = woodyDecayRate;
     this.mortCurveShapeParm = mortCurveShapeParm;
     this.establishProbability = establishProbability;
     this.maxANPP = maxANPP;
     this.leafLitterDecayRate = leafLitterDecayRate;
 }
 //---------------------------------------------------------------------
 public InputParameters()
 {
     sufficientLight = new List<ISufficientLight>();
     /*pctSun1 = new double();
     pctSun2 = new double();
     pctSun3 = new double();
     pctSun4 = new double();
     pctSun5 = new double();*/
     leafLongevity       = new Species.AuxParm<double>(PlugIn.ModelCore.Species);
     woodyDecayRate = new Species.AuxParm<double>(PlugIn.ModelCore.Species);
     mortCurveShapeParm = new Species.AuxParm<double>(PlugIn.ModelCore.Species);
     growthCurveShapeParm = new Species.AuxParm<double>(PlugIn.ModelCore.Species);
     leafLignin = new Species.AuxParm<double>(PlugIn.ModelCore.Species);
     maxLAI = new Species.AuxParm<double>(PlugIn.ModelCore.Species);
     lightExtinctionCoeff = new Species.AuxParm<double>(PlugIn.ModelCore.Species);
     pctBioMaxLAI = new Species.AuxParm<double>(PlugIn.ModelCore.Species);
     aet = new Ecoregions.AuxParm<int>(PlugIn.ModelCore.Ecoregions);
     //this.dynamicChangeUpdates = new List<DynamicChange.ParametersUpdate>();
 }
Beispiel #15
0
        //---------------------------------------------------------------------

        private void CheckParameterTable <TParm>(string tableName,
                                                 Species.AuxParm <Ecoregions.AuxParm <TParm> > parmValues,
                                                 string nextTableName)
        {
            inputLine.MatchName(tableName);
            bool haveLine = inputLine.GetNext();

            List <IEcoregion> ecoregions = ReadEcoregions();

            while (haveLine && inputLine.VariableName != nextTableName)
            {
                StringReader currentLine = new StringReader(inputLine.ToString());
                ISpecies     species     = ReadSpecies(currentLine);
                foreach (IEcoregion ecoregion in ecoregions)
                {
                    Assert.AreEqual(ReadInputValue <TParm>(currentLine),
                                    parmValues[species][ecoregion]);
                }
                haveLine = inputLine.GetNext();
            }
        }
Beispiel #16
0
        //---------------------------------------------------------------------
        //---------------------------------------------------------------------

        public InputParameters(//IEcoregionDataset ecoregionDataset,
            ISpeciesDataset speciesDataset,
            int litterCnt, int functionalCnt)
        {
            this.speciesDataset = speciesDataset;
            //this.ecoregionDataset = ecoregionDataset;

            functionalTypes        = new FunctionalTypeTable(functionalCnt);
            fireReductionsTable    = new FireReductions[6];
            harvestReductionsTable = new List <HarvestReductions>();

            sppFunctionalType = new Species.AuxParm <int>(speciesDataset);
            nFixer            = new Species.AuxParm <bool>(speciesDataset);
            gddMin            = new Species.AuxParm <int>(speciesDataset);
            gddMax            = new Species.AuxParm <int>(speciesDataset);
            minJanTemp        = new Species.AuxParm <int>(speciesDataset);
            maxDrought        = new Species.AuxParm <double>(speciesDataset);
            leafLongevity     = new Species.AuxParm <double>(speciesDataset);
            epicormic         = new Species.AuxParm <bool>(speciesDataset);
            leafLignin        = new Species.AuxParm <double>(speciesDataset);
            woodLignin        = new Species.AuxParm <double>(speciesDataset);
            coarseRootLignin  = new Species.AuxParm <double>(speciesDataset);
            fineRootLignin    = new Species.AuxParm <double>(speciesDataset);
            leafCN            = new Species.AuxParm <double>(speciesDataset);
            woodCN            = new Species.AuxParm <double>(speciesDataset);
            coarseRootCN      = new Species.AuxParm <double>(speciesDataset);
            foliageLitterCN   = new Species.AuxParm <double>(speciesDataset);
            fineRootCN        = new Species.AuxParm <double>(speciesDataset);
            maxANPP           = new Species.AuxParm <int>(speciesDataset);
            maxBiomass        = new Species.AuxParm <int>(speciesDataset);

            maximumShadeLAI = new double[6];

            //minRelativeBiomass = new Ecoregions.AuxParm<Percentage>[6];
            //for (byte shadeClass = 1; shadeClass <= 5; shadeClass++) {
            //    minRelativeBiomass[shadeClass] = new Ecoregions.AuxParm<Percentage>(ecoregionDataset);
            //}
            sufficientLight = new List <ISufficientLight>();
        }
 //---------------------------------------------------------------------
 public Parameters(int                                         timestep,
     SeedingAlgorithms                           seedAlgorithm,
     Ecoregions.AuxParm<Percentage>[]            minRelativeBiomass,
     Species.AuxParm<double>                     leafLongevity,
     Species.AuxParm<double>                     woodyDecayRate,
     Species.AuxParm<double>                     mortCurveShapeParm,
     Species.AuxParm<Ecoregions.AuxParm<double>> establishProbability,
     Species.AuxParm<Ecoregions.AuxParm<int>>    maxANPP,
     Species.AuxParm<Ecoregions.AuxParm<double>> leafLitterDecayRate,
     string                                      ageOnlyDisturbanceParms)
 {
     this.timestep = timestep;
     this.seedAlg = seedAlgorithm;
     this.minRelativeBiomass = minRelativeBiomass;
     this.leafLongevity = leafLongevity;
     this.woodyDecayRate = woodyDecayRate;
     this.mortCurveShapeParm = mortCurveShapeParm;
     this.establishProbability = establishProbability;
     this.maxANPP = maxANPP;
     this.leafLitterDecayRate = leafLitterDecayRate;
     this.ageOnlyDisturbanceParms = ageOnlyDisturbanceParms;
 }
Beispiel #18
0
 //---------------------------------------------------------------------
 public static void Initialize(IInputParameters parameters)
 {
     FuncType         = parameters.SppFunctionalType;
     NFixer           = parameters.NFixer;
     GDDmin           = parameters.GDDmin;
     GDDmax           = parameters.GDDmax;
     MinJanTemp       = parameters.MinJanTemp;
     MaxDrought       = parameters.MaxDrought;
     LeafLongevity    = parameters.LeafLongevity;
     Epicormic        = parameters.Epicormic;
     LeafLignin       = parameters.LeafLignin;
     WoodLignin       = parameters.WoodLignin;
     CoarseRootLignin = parameters.CoarseRootLignin;
     FineRootLignin   = parameters.FineRootLignin;
     LeafCN           = parameters.LeafCN;
     WoodCN           = parameters.WoodCN;
     CoarseRootCN     = parameters.CoarseRootCN;
     LeafLitterCN     = parameters.FoliageLitterCN;
     FineRootCN       = parameters.FineRootCN;
     Max_ANPP         = parameters.MaxANPP;
     Max_Biomass      = parameters.MaxBiomass;
 }
 //---------------------------------------------------------------------
 public Parameters(Ecoregions.AuxParm<Percentage>[]            minRelativeBiomass,
     Species.AuxParm<double>                     leafLongevity,
     Species.AuxParm<double>                     woodyDecayRate,
     Species.AuxParm<double>                     mortCurveShapeParm,
     Species.AuxParm<double>                     leafLignin,
     Ecoregions.AuxParm<int>                     aet,
     ISufficientLight[]                          sufficientLight,
     Species.AuxParm<Ecoregions.AuxParm<double>> establishProbability,
     Species.AuxParm<Ecoregions.AuxParm<int>>    maxANPP,
     Species.AuxParm<Ecoregions.AuxParm<int>>    maxBiomass)
 {
     this.minRelativeBiomass = minRelativeBiomass;
     this.leafLongevity = leafLongevity;
     this.woodyDecayRate = woodyDecayRate;
     this.mortCurveShapeParm = mortCurveShapeParm;
     this.leafLignin = leafLignin;
     this.aet = aet;
     this.sufficientLight = sufficientLight;
     this.establishProbability = establishProbability;
     this.maxANPP = maxANPP;
     this.maxBiomass = maxBiomass;
     //this.leafLitterDecayRate = leafLitterDecayRate;
 }
Beispiel #20
0
        //public static Species.AuxParm<double> NLimits;

        //public static Species.AuxParm<Ecoregions.AuxParm<double>> EstablishProbability;
        //public static Species.AuxParm<Ecoregions.AuxParm<int>> ANPP_MAX_Spp;
        //public static Species.AuxParm<Ecoregions.AuxParm<int>> B_MAX_Spp;

        //private static StreamWriter log;

        //---------------------------------------------------------------------
        public static void Initialize(IInputParameters parameters)
        {
            FuncType         = parameters.SppFunctionalType;
            NFixer           = parameters.NFixer;
            GDDmin           = parameters.GDDmin;
            GDDmax           = parameters.GDDmax;
            MinJanTemp       = parameters.MinJanTemp;
            MaxDrought       = parameters.MaxDrought;
            LeafLongevity    = parameters.LeafLongevity;
            Epicormic        = parameters.Epicormic;
            LeafLignin       = parameters.LeafLignin;
            WoodLignin       = parameters.WoodLignin;
            CoarseRootLignin = parameters.CoarseRootLignin;
            FineRootLignin   = parameters.FineRootLignin;
            LeafCN           = parameters.LeafCN;
            WoodCN           = parameters.WoodCN;
            CoarseRootCN     = parameters.CoarseRootCN;
            LeafLitterCN     = parameters.FoliageLitterCN;
            FineRootCN       = parameters.FineRootCN;
            Max_ANPP         = parameters.MaxANPP;
            Max_Biomass      = parameters.MaxBiomass;

            //AllSpecies = new Dictionary<ISpecies, ISpeciesData>();

            //foreach (ISpecies spp in PlugIn.ModelCore.Species)
            //{
            //    AllSpecies.Add(spp, new SpeciesData(spp));
            //}


            //Establishment.Initialize();

            // The initial set of establishment probabilities:
            //EstablishProbability = Establishment.GenerateNewEstablishProbabilities(parameters.Timestep);

            //ChangeParameters(parameters);
        }
        //---------------------------------------------------------------------
        /// <summary>
        /// Changes the biomass parameters because of a change in climate.
        /// </summary>
        public static void ChangeParameters(ClimateChange.IParameters parameters)
        {
            minRelativeBiomass = parameters.MinRelativeBiomass; // FIXME

            LeafLongevity = parameters.LeafLongevity;
            MortCurveShapeParm = parameters.MortCurveShapeParm;
            EstablishProbability = parameters.EstablishProbability;
            ANPP_MAX_i = parameters.MaxANPP;

            //  Fill in B_MAX_i table
            foreach (ISpecies species in Model.Core.Species) {
                B_MAX_i[species] = new Ecoregions.AuxParm<int>(Model.Core.Ecoregions);
                foreach (IEcoregion ecoregion in Model.Core.Ecoregions) {
                    B_MAX_i[species][ecoregion] = ComputeMaxBiomass(ANPP_MAX_i[species][ecoregion]);
                }
            }

            //  Fill in B_MAX array
            foreach (IEcoregion ecoregion in Model.Core.Ecoregions) {
                int largest_ANPP_MAX_i = 0;
                foreach (ISpecies species in Model.Core.Species) {
                    largest_ANPP_MAX_i = Math.Max(largest_ANPP_MAX_i,
                                                  ANPP_MAX_i[species][ecoregion]);
                }
                B_MAX[ecoregion] = ComputeMaxBiomass(largest_ANPP_MAX_i);
            }
        }
Beispiel #22
0
 public static void ChangeParameters(Dynamic.IParameters parameters)
 {
     ANPP_MAX_Spp = parameters.MaxANPP;
     B_MAX_Spp    = parameters.MaxBiomass;
 }
 public static void ChangeParameters(Dynamic.IParameters parameters)
 {
     ANPP_MAX_Spp  = parameters.MaxANPP;
     B_MAX_Spp     = parameters.MaxBiomass;
 }
Beispiel #24
0
        //---------------------------------------------------------------------
        //---------------------------------------------------------------------

        public Parameters(IEcoregionDataset ecoregionDataset,
                          ISpeciesDataset speciesDataset,
                          int litterCnt, int functionalCnt)
            : base(ecoregionDataset,
                   speciesDataset)
        {
            this.speciesDataset   = speciesDataset;
            this.ecoregionDataset = ecoregionDataset;

            functionalTypes        = new FunctionalTypeTable(functionalCnt);
            fireReductionsTable    = new FireReductions[6];
            harvestReductionsTable = new List <HarvestReductions>();

            sppFunctionalType = new Species.AuxParm <int>(speciesDataset);
            nFixer            = new Species.AuxParm <bool>(speciesDataset);
            gddMin            = new Species.AuxParm <int>(speciesDataset);
            gddMax            = new Species.AuxParm <int>(speciesDataset);
            minJanTemp        = new Species.AuxParm <int>(speciesDataset);
            maxDrought        = new Species.AuxParm <double>(speciesDataset);
            leafLongevity     = new Species.AuxParm <double>(speciesDataset);
            epicormic         = new Species.AuxParm <bool>(speciesDataset);
            leafLignin        = new Species.AuxParm <double>(speciesDataset);
            woodLignin        = new Species.AuxParm <double>(speciesDataset);
            coarseRootLignin  = new Species.AuxParm <double>(speciesDataset);
            fineRootLignin    = new Species.AuxParm <double>(speciesDataset);
            leafCN            = new Species.AuxParm <double>(speciesDataset);
            woodCN            = new Species.AuxParm <double>(speciesDataset);
            coarseRootCN      = new Species.AuxParm <double>(speciesDataset);
            foliageLitterCN   = new Species.AuxParm <double>(speciesDataset);
            fineRootCN        = new Species.AuxParm <double>(speciesDataset);

            minRelativeBiomass = new Ecoregions.AuxParm <Percentage> [6];
            for (byte shadeClass = 1; shadeClass <= 5; shadeClass++)
            {
                minRelativeBiomass[shadeClass] = new Ecoregions.AuxParm <Percentage>(ecoregionDataset);
            }
            sufficientLight = new List <ISufficientLight>();

            percentClay       = new Ecoregions.AuxParm <double>(ecoregionDataset);
            percentSand       = new Ecoregions.AuxParm <double>(ecoregionDataset);
            soilDepth         = new Ecoregions.AuxParm <int>(ecoregionDataset);
            fieldCapacity     = new Ecoregions.AuxParm <double>(ecoregionDataset);
            wiltingPoint      = new Ecoregions.AuxParm <double>(ecoregionDataset);
            stormFlowFraction = new Ecoregions.AuxParm <double>(ecoregionDataset);
            baseFlowFraction  = new Ecoregions.AuxParm <double>(ecoregionDataset);
            drain             = new Ecoregions.AuxParm <double>(ecoregionDataset);
            atmosNslope       = new Ecoregions.AuxParm <double>(ecoregionDataset);
            atmosNintercept   = new Ecoregions.AuxParm <double>(ecoregionDataset);
            latitude          = new Ecoregions.AuxParm <double>(ecoregionDataset);
            decayRateSurf     = new Ecoregions.AuxParm <double>(ecoregionDataset);
            decayRateSOM1     = new Ecoregions.AuxParm <double>(ecoregionDataset);
            decayRateSOM2     = new Ecoregions.AuxParm <double>(ecoregionDataset);
            decayRateSOM3     = new Ecoregions.AuxParm <double>(ecoregionDataset);
            denitrif          = new Ecoregions.AuxParm <double>(ecoregionDataset);
            initSOM1surfC     = new Ecoregions.AuxParm <double>(ecoregionDataset);
            initSOM1surfN     = new Ecoregions.AuxParm <double>(ecoregionDataset);
            initSOM1soilC     = new Ecoregions.AuxParm <double>(ecoregionDataset);
            initSOM1soilN     = new Ecoregions.AuxParm <double>(ecoregionDataset);
            initSOM2C         = new Ecoregions.AuxParm <double>(ecoregionDataset);
            initSOM2N         = new Ecoregions.AuxParm <double>(ecoregionDataset);
            initSOM3C         = new Ecoregions.AuxParm <double>(ecoregionDataset);
            initSOM3N         = new Ecoregions.AuxParm <double>(ecoregionDataset);
            initMineralN      = new Ecoregions.AuxParm <double>(ecoregionDataset);


            this.dynamicUpdates = new List <Dynamic.ParametersUpdate>();
        }
        //---------------------------------------------------------------------
        public override void Initialize()
        {
            Timestep = parameters.Timestep;

            SiteVars.Initialize();

            Cohort.DeathEvent += CohortDied;

            establishProbabilities = parameters.EstablishProbabilities;

            //Reproduction.SufficientResources = SufficientLight;
            Reproduction.Establish = Establish;
            Reproduction.AddNewCohort = AddNewCohort;
            Reproduction.MaturePresent = MaturePresent;
            base.Initialize(modelCore, parameters.SeedAlgorithm);

            InitializeSites(parameters.InitialCommunities, parameters.InitialCommunitiesMap, modelCore);
        }
        //---------------------------------------------------------------------
        public static void Initialize(IParameters           parameters,
            ISiteVar<SiteCohorts> cohorts)
        {
            B_MAX_i = new Species.AuxParm<Ecoregions.AuxParm<int>>(Model.Core.Species);
            B_MAX = new Ecoregions.AuxParm<int>(Model.Core.Ecoregions);
            ChangeParameters(parameters);

            LivingBiomass.cohorts = cohorts;
            successionTimestep = parameters.Timestep;
        }
        //---------------------------------------------------------------------
        public override void Initialize(string        dataFile,
            PlugIns.ICore modelCore)
        {
            Timestep = parameters.Timestep;

            SiteVars.Initialize();

            Cohort.DeathEvent += CohortDied;

            establishProbabilities = parameters.EstablishProbabilities;

            base.Initialize(modelCore,
                            //parameters.EstablishProbabilities,
                            parameters.SeedAlgorithm,
                            AddNewCohort);

            InitializeSites(parameters.InitialCommunities, parameters.InitialCommunitiesMap, modelCore);
        }
        //---------------------------------------------------------------------
        public static void Initialize(IInputParameters parameters)
        {
            //ChangeParameters(parameters);

            LeafLignin              = parameters.LeafLignin;
            LeafLongevity           = parameters.LeafLongevity;
            MortCurveShapeParm      = parameters.MortCurveShapeParm;
            GrowthCurveShapeParm = parameters.GrowthCurveShapeParm;
            WoodyDebrisDecay = parameters.WoodyDecayRate;

            //KLAI                    = parameters.KLAI;
            //BTOLAI                  = parameters.BTOLAI;
            MAXLAI                  = parameters.MAXLAI;
            LightExtinctionCoeff    = parameters.LightExtinctionCoeff;
            PctBioMaxLAI            = parameters.PctBioMaxLAI;
        }
        //---------------------------------------------------------------------
        public static void Initialize(IParameters           parameters,
                                      ISiteVar<SiteCohorts> cohorts)
        {
            minRelativeBiomass = parameters.MinRelativeBiomass; // FIXME

            LeafLongevity = parameters.LeafLongevity;
            MortCurveShapeParm = parameters.MortCurveShapeParm;
            EstablishProbability = parameters.EstablishProbability;
            ANPP_MAX_i = parameters.MaxANPP;

            B_MAX_i = new Species.AuxParm<Ecoregions.AuxParm<int>>(Model.Core.Species);
            foreach (ISpecies species in Model.Core.Species) {
                B_MAX_i[species] = new Ecoregions.AuxParm<int>(Model.Core.Ecoregions);
                foreach (IEcoregion ecoregion in Model.Core.Ecoregions) {
                    B_MAX_i[species][ecoregion] = ComputeMaxBiomass(ANPP_MAX_i[species][ecoregion]);
                }
            }

            B_MAX = new Ecoregions.AuxParm<int>(Model.Core.Ecoregions);
            foreach (IEcoregion ecoregion in Model.Core.Ecoregions) {
                int largest_ANPP_MAX_i = 0;
                foreach (ISpecies species in Model.Core.Species) {
                    largest_ANPP_MAX_i = Math.Max(largest_ANPP_MAX_i,
                                                  ANPP_MAX_i[species][ecoregion]);
                }
                B_MAX[ecoregion] = ComputeMaxBiomass(largest_ANPP_MAX_i);
            }

            LivingBiomass.cohorts = cohorts;
            successionTimestep = parameters.Timestep;
        }