//--------------------------------------------------------------------- public static void Initialize(IInputParameters parameters) { RootTurnover = parameters.RootTurnover; WoodTurnover = parameters.WoodTurnover; FoliageTurnover = parameters.FoliageTurnover; FolReten = parameters.FolReten; LeafLignin = parameters.LeafLignin; MortCurveShapeParm = parameters.MortCurveShapeParm; GrowthCurveShapeParm = parameters.GrowthCurveShapeParm; HalfSat = parameters.HalfSat; EstRadSensitivity = parameters.EstRadSensitivity; EstMoistureSensitivity = parameters.EstMoistureSensitivity; PsnTOpt = parameters.PsnTOpt; AmaxA = parameters.AmaxA; AmaxB = parameters.AmaxB; PsnTMin = parameters.PsnTMin; DVPD1 = parameters.DVPD1; DVPD2 = parameters.DVPD2; FolNCon = parameters.FolNCon; BaseFolRespFrac = parameters.BaseFolRespFrac; GrowthMoistureSensitivity = parameters.GrowthMoistureSensitivity; SLWmax = parameters.SLWmax; k=parameters.K; SenescStart = parameters.SenescStart; WUEConst = parameters.WUEConst; RespQ10 = parameters.RespQ10; PsnAgeRed = parameters.PsnAgeRed; InitialFol = parameters.InitialFol; GDDFolStart = parameters.GDDFolStart; DFol = parameters.DFol; GRespFrac = parameters.GRespFrac; DRoot = parameters.DRoot; DStem = parameters.DStem; }
//--------------------------------------------------------------------- public static void Initialize(IInputParameters parameters) { RootTurnover = parameters.RootTurnover; WoodTurnover = parameters.WoodTurnover; FoliageTurnover = parameters.FoliageTurnover; FolReten = parameters.FolReten; LeafLignin = parameters.LeafLignin; MortCurveShapeParm = parameters.MortCurveShapeParm; GrowthCurveShapeParm = parameters.GrowthCurveShapeParm; HalfSat = parameters.HalfSat; EstRadSensitivity = parameters.EstRadSensitivity; EstMoistureSensitivity = parameters.EstMoistureSensitivity; PsnTOpt = parameters.PsnTOpt; AmaxA = parameters.AmaxA; AmaxB = parameters.AmaxB; PsnTMin = parameters.PsnTMin; DVPD1 = parameters.DVPD1; DVPD2 = parameters.DVPD2; FolNCon = parameters.FolNCon; BaseFolRespFrac = parameters.BaseFolRespFrac; GrowthMoistureSensitivity = parameters.GrowthMoistureSensitivity; SLWmax = parameters.SLWmax; k = parameters.K; SenescStart = parameters.SenescStart; WUEConst = parameters.WUEConst; RespQ10 = parameters.RespQ10; PsnAgeRed = parameters.PsnAgeRed; InitialFol = parameters.InitialFol; GDDFolStart = parameters.GDDFolStart; DFol = parameters.DFol; GRespFrac = parameters.GRespFrac; DRoot = parameters.DRoot; DStem = parameters.DStem; }
public static void Initialize(int tstep) { TStep = tstep; deadcohorts = new Landis.Extension.Succession.Biomass.Species.AuxParm<Distribution>(PlugIn.ModelCore.Species); foreach (ISpecies species in PlugIn.ModelCore.Species) { deadcohorts[species] = new Distribution(TStep); } }
public static void Initialize(int tstep) { TStep = tstep; deadcohorts = new Landis.Extension.Succession.Biomass.Species.AuxParm <Distribution>(PlugIn.ModelCore.Species); foreach (ISpecies species in PlugIn.ModelCore.Species) { deadcohorts[species] = new Distribution(TStep); } }
//--------------------------------------------------------------------- /// <summary> /// Initializes the module. /// </summary> public static void Initialize() { numberofcanopylayers = PlugIn.ModelCore.Landscape.NewSiteVar<int>(); cohorts = PlugIn.ModelCore.Landscape.NewSiteVar<ISiteCohorts>(); BiomassCohortsSiteVar = new BiomassCohortsSiteVar(cohorts); baseCohortsSiteVar = new Landis.Extension.Succession.Biomass.BaseCohortsSiteVar(BiomassCohortsSiteVar); woodyDebris = PlugIn.ModelCore.Landscape.NewSiteVar<Pool>(); litter = PlugIn.ModelCore.Landscape.NewSiteVar<Pool>(); HasSiteOutput = PlugIn.ModelCore.Landscape.NewSiteVar<bool>(); SnowPack = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); Water = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); Infiltration = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); establishments = PlugIn.ModelCore.Landscape.NewSiteVar<Landis.Extension.Succession.Biomass.Species.AuxParm<bool>>(); pest = PlugIn.ModelCore.Landscape.NewSiteVar<Landis.Extension.Succession.Biomass.Species.AuxParm<float>>(); TotalBiomass = PlugIn.ModelCore.Landscape.NewSiteVar<int>(); AnnualTranspiration = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); CanopyLAI = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); GrossPsn = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); NetPsn = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); transpiration = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); AutotrophicRespiration = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); HeterotrophicRespiration = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); WFPS = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); CanopyLAImax = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); SubCanopyPAR = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); SubCanopyPARmax = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); foreach (ActiveSite site in PlugIn.ModelCore.Landscape) { // site cohorts are initialized by the PlugIn.InitializeSite method woodyDebris[site] = new Pool(); litter[site] = new Pool(); HasSiteOutput[site] = false; SnowPack[site] = 0; Water[site] = 0; Infiltration[site] = 0; TotalBiomass[site] = 0; numberofcanopylayers[site] = 0; GrossPsn[site] = 0; NetPsn[site] = 0; AutotrophicRespiration[site] = 0; HeterotrophicRespiration[site] = 0; transpiration[site] = 0; WFPS[site] = 0; establishments[site] = new Landis.Extension.Succession.Biomass.Species.AuxParm<bool>(PlugIn.ModelCore.Species); pest[site] = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); AnnualTranspiration[site] = 0; CanopyLAI[site] = 0; SubCanopyPAR[site] = 0; SubCanopyPARmax[site] = 0; foreach (ISpecies spc in PlugIn.ModelCore.Species) { establishments[site][spc] = false; pest[site][spc] = 0; } } PlugIn.ModelCore.RegisterSiteVar(cohorts, "Succession.BiomassCohortsPnET"); PlugIn.ModelCore.RegisterSiteVar(BiomassCohortsSiteVar, "Succession.BiomassCohorts"); PlugIn.ModelCore.RegisterSiteVar(baseCohortsSiteVar, "Succession.AgeCohorts"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.Establishments, "Succession.Establishments"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.WoodyDebris, "Succession.WoodyDebris"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.Litter, "Succession.Litter"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.HasSiteOutput, "Succession.HasSiteOutput"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.Water, "Succession.SoilWater"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.AnnualTranspiration , "Succession.AnnualTranspiration"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.SubCanopyPAR, "Succession.SubCanopyPARmax"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.CanopyLAImax, "Succession.CanopyLAImax"); }
public CClimDay(int Latitude, DateTime CurrentDate, float PAR0, float TMin, float TMax, float Prec, float CO2) { try { this.CurrentDate = CurrentDate; par0 = PAR0; tmin = TMin; tmax = TMax; prec = Prec; if (prec < 0) { throw new System.Exception("Precipitation = " + prec + "\t" + CurrentDate); } co2 = CO2; float hr = Calculate_hr(CurrentDate.DayOfYear, Latitude); daylength = Calculate_DayLength(hr); nightlength = Calculate_NightLength(hr); dayspan = Calculate_DaySpan(CurrentDate.Month); tave = Calculate_Tave(TMin, TMax); tday = Calculate_TDay(TMax, Tave); vpd = Calculate_VPD(Tday, TMin); dtemp = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); dvpd = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); netpsn_pot = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); wue = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); delamax = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); fResp = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); resp_pot = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); wue_co2_corr = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); grossPsn_pot = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); resp_folbase = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); IsActive = new Biomass.Species.AuxParm <bool>(PlugIn.ModelCore.Species); dt_night = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); dt_day = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); gdd = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); foreach (ISpecies spc in PlugIn.ModelCore.Species) { gdd[spc] = 0; } foreach (ISpecies spc in PlugIn.ModelCore.Species) { float dGDD = Math.Max(0, (Tave - SpeciesData.PsnTMin[spc]) * DaySpan); if (CurrentDate.Month == 1) { gdd[spc] = dGDD; } else { DateTime last_month = new DateTime(CurrentDate.Year, CurrentDate.Month - 1, 15); gdd[spc] = ClimateData.Data[last_month].GDD[spc] + dGDD; } if (tday < SpeciesData.PsnTMin[spc]) { IsActive[spc] = false; } else { IsActive[spc] = true; } float psntmax = SpeciesData.PsnTOpt[spc] + (SpeciesData.PsnTOpt[spc] - SpeciesData.PsnTMin[spc]); // assumed symmetrical float PsnTRange = psntmax - SpeciesData.PsnTMin[spc]; float PsnTRangeHalfSquare = (float)Math.Pow((PsnTRange) / 2.0, 2); dtemp[spc] = (float)Math.Max(((psntmax - tday) * (tday - SpeciesData.PsnTMin[spc])) / (PsnTRangeHalfSquare), 0); dvpd[spc] = Math.Max(0, 1 - SpeciesData.DVPD1[spc] * (float)Math.Pow(vpd, SpeciesData.DVPD2[spc])); cicaRatio = (-0.075f * SpeciesData.FolNCon[spc]) + 0.875f; ci350 = 350 * cicaRatio; Arel350 = 1.22f * ((ci350 - 68) / (ci350 + 136)); ciElev = co2 * cicaRatio; ArelElev = 1.22f * ((ciElev - 68) / (ciElev + 136)); DelAmax[spc] = 1 + ((ArelElev - Arel350) / Arel350); // CO2 effect on photosynthesis // Calculate CO2 effect on conductance and set slope and intercept for A-gs relationship //List<string> file = new List<string>(); //for (int c = 0; c <= 10000; c++) //{ // co2 = 10 * c; // float dlgs = DelAmax[spc] / ((co2 - co2 * cicaRatio) / (350.0f - ci350)); // file.Add(c + "\t" + dlgs); //} //System.IO.File.WriteAllLines("output/delgs.txt", file.ToArray()); float Delgs = DelAmax[spc] / ((co2 - co2 * cicaRatio) / (350.0f - ci350)); wue[spc] = (SpeciesData.WUEConst[spc] / vpd) * (1 + 1 - Delgs); //DWUE determined from CO2 effects on conductance wue_co2_corr[spc] = wue[spc] / DelAmax[spc]; //wue_co2_corr[spc] = SpeciesData.WUEConst[spc]; //float wue_co2_cor1 = wue_co2_corr[spc]; //float wue_co2_cor2 = wue_co2_corr[spc] = wue[spc] / DelAmax[spc]; /* * Delgs = DelAmax / ((site.CaMo[mo] - CiElev) / (350.0 - Ci350)); * DWUE = 1.0 + (1 - Delgs); * gsSlope = (-1.1309 * DelAmax) + 1.9762; // used to determine ozone uptake * gsInt = (0.4656 * DelAmax) - 0.9701; */ netpsn_pot[spc] = delamax[spc] * (SpeciesData.AmaxA[spc] + SpeciesData.AmaxB[spc] * SpeciesData.FolNCon[spc]); // nmole CO2/g Fol.sec dt_day[spc] = (float)Math.Pow(SpeciesData.RespQ10[spc], (tday - SpeciesData.PsnTOpt[spc]) / 10); dt_night[spc] = (float)Math.Pow(SpeciesData.RespQ10[spc], (tmin - SpeciesData.PsnTOpt[spc]) / 10); fResp[spc] = (dt_day[spc] * daylength + dt_night[spc] * nightlength) / (float)daylength; resp_pot[spc] = SpeciesData.BaseFolRespFrac[spc] * netpsn_pot[spc]; // float HoursPerDay = 24 * daylength / (daylength + nightlength); grossPsn_pot[spc] = Constants.DaySpan * Constants.SecondsPerHour * HoursPerDay * Constants.MC * Constants.ngPerG * (netpsn_pot[spc] + resp_pot[spc]); // gr/gr/mo } SetTreesAreActive(); } catch { throw new System.Exception("Cannot find climate date for (year,month) " + CurrentDate.Year.ToString() + " " + CurrentDate.Month.ToString()); } }
public CClimDay(int Latitude, DateTime CurrentDate ,float PAR0, float TMin, float TMax, float Prec, float CO2) { try { this.CurrentDate = CurrentDate; par0 = PAR0; tmin = TMin; tmax = TMax; prec = Prec; if (prec < 0) throw new System.Exception("Precipitation = " + prec + "\t" + CurrentDate); co2 = CO2; float hr = Calculate_hr(CurrentDate.DayOfYear, Latitude); daylength = Calculate_DayLength(hr); nightlength = Calculate_NightLength(hr); dayspan = Calculate_DaySpan(CurrentDate.Month); tave = Calculate_Tave(TMin, TMax); tday = Calculate_TDay(TMax, Tave); vpd = Calculate_VPD(Tday, TMin); dtemp = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); dvpd = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); netpsn_pot = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); wue = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); delamax = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); fResp = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); resp_pot = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); wue_co2_corr = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); grossPsn_pot = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); resp_folbase = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); IsActive = new Biomass.Species.AuxParm<bool>(PlugIn.ModelCore.Species); dt_night = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); dt_day = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); gdd = new Landis.Extension.Succession.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); foreach (ISpecies spc in PlugIn.ModelCore.Species) gdd[spc] = 0; foreach (ISpecies spc in PlugIn.ModelCore.Species) { float dGDD = Math.Max(0, (Tave - SpeciesData.PsnTMin[spc]) * DaySpan); if (CurrentDate.Month == 1) gdd[spc] = dGDD; else { DateTime last_month = new DateTime(CurrentDate.Year, CurrentDate.Month - 1, 15); gdd[spc] = ClimateData.Data[last_month].GDD[spc] + dGDD; } if (tday < SpeciesData.PsnTMin[spc]) IsActive[spc] = false; else IsActive[spc] = true; float psntmax = SpeciesData.PsnTOpt[spc] + (SpeciesData.PsnTOpt[spc] - SpeciesData.PsnTMin[spc]); // assumed symmetrical float PsnTRange = psntmax - SpeciesData.PsnTMin[spc]; float PsnTRangeHalfSquare = (float)Math.Pow((PsnTRange) / 2.0, 2); dtemp[spc] = (float)Math.Max(((psntmax - tday) * (tday - SpeciesData.PsnTMin[spc])) / (PsnTRangeHalfSquare), 0); dvpd[spc] = Math.Max(0, 1 - SpeciesData.DVPD1[spc] * (float)Math.Pow(vpd, SpeciesData.DVPD2[spc])); cicaRatio = (-0.075f * SpeciesData.FolNCon[spc]) + 0.875f; ci350 = 350 * cicaRatio; Arel350 = 1.22f * ((ci350 - 68) / (ci350 + 136)); ciElev = co2 * cicaRatio; ArelElev = 1.22f * ((ciElev - 68) / (ciElev + 136)); DelAmax[spc] = 1 + ((ArelElev - Arel350) / Arel350); // CO2 effect on photosynthesis // Calculate CO2 effect on conductance and set slope and intercept for A-gs relationship //List<string> file = new List<string>(); //for (int c = 0; c <= 10000; c++) //{ // co2 = 10 * c; // float dlgs = DelAmax[spc] / ((co2 - co2 * cicaRatio) / (350.0f - ci350)); // file.Add(c + "\t" + dlgs); //} //System.IO.File.WriteAllLines("output/delgs.txt", file.ToArray()); float Delgs = DelAmax[spc] / ((co2 - co2 * cicaRatio) / (350.0f - ci350)); wue[spc] = (SpeciesData.WUEConst[spc] / vpd) * (1 + 1 - Delgs); //DWUE determined from CO2 effects on conductance wue_co2_corr[spc] = wue[spc] / DelAmax[spc]; //wue_co2_corr[spc] = SpeciesData.WUEConst[spc]; //float wue_co2_cor1 = wue_co2_corr[spc]; //float wue_co2_cor2 = wue_co2_corr[spc] = wue[spc] / DelAmax[spc]; /* Delgs = DelAmax / ((site.CaMo[mo] - CiElev) / (350.0 - Ci350)); DWUE = 1.0 + (1 - Delgs); gsSlope = (-1.1309 * DelAmax) + 1.9762; // used to determine ozone uptake gsInt = (0.4656 * DelAmax) - 0.9701; */ netpsn_pot[spc] = delamax[spc] * (SpeciesData.AmaxA[spc] + SpeciesData.AmaxB[spc] * SpeciesData.FolNCon[spc]); // nmole CO2/g Fol.sec dt_day[spc] = (float)Math.Pow(SpeciesData.RespQ10[spc], (tday - SpeciesData.PsnTOpt[spc]) / 10); dt_night[spc] = (float)Math.Pow(SpeciesData.RespQ10[spc], (tmin - SpeciesData.PsnTOpt[spc]) / 10); fResp[spc] = (dt_day[spc] * daylength + dt_night[spc] * nightlength) / (float)daylength; resp_pot[spc] = SpeciesData.BaseFolRespFrac[spc] * netpsn_pot[spc]; // float HoursPerDay = 24 * daylength / (daylength + nightlength); grossPsn_pot[spc] = Constants.DaySpan * Constants.SecondsPerHour * HoursPerDay * Constants.MC * Constants.ngPerG * (netpsn_pot[spc] + resp_pot[spc]); // gr/gr/mo } SetTreesAreActive(); } catch { throw new System.Exception("Cannot find climate date for (year,month) " + CurrentDate.Year.ToString() + " " + CurrentDate.Month.ToString()); } }
//--------------------------------------------------------------------- public InputParameters() { drought_Y = new Landis.Extension.Succession.Biomass.Species.AuxParm<double>(PlugIn.ModelCore.Species); drought_YSE = new Landis.Extension.Succession.Biomass.Species.AuxParm<double>(PlugIn.ModelCore.Species); drought_B = new Landis.Extension.Succession.Biomass.Species.AuxParm<double>(PlugIn.ModelCore.Species); drought_BSE = new Landis.Extension.Succession.Biomass.Species.AuxParm<double>(PlugIn.ModelCore.Species); drought_Sens = new Landis.Extension.Succession.Biomass.Species.AuxParm<int>(PlugIn.ModelCore.Species); }
//--------------------------------------------------------------------- /// <summary> /// Initializes the module. /// </summary> public static void Initialize() { numberofcanopylayers = PlugIn.ModelCore.Landscape.NewSiteVar <int>(); cohorts = PlugIn.ModelCore.Landscape.NewSiteVar <ISiteCohorts>(); BiomassCohortsSiteVar = new BiomassCohortsSiteVar(cohorts); baseCohortsSiteVar = new Landis.Extension.Succession.Biomass.BaseCohortsSiteVar(BiomassCohortsSiteVar); woodyDebris = PlugIn.ModelCore.Landscape.NewSiteVar <Pool>(); litter = PlugIn.ModelCore.Landscape.NewSiteVar <Pool>(); HasSiteOutput = PlugIn.ModelCore.Landscape.NewSiteVar <bool>(); SnowPack = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); Water = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); Infiltration = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); establishments = PlugIn.ModelCore.Landscape.NewSiteVar <Landis.Extension.Succession.Biomass.Species.AuxParm <bool> >(); pest = PlugIn.ModelCore.Landscape.NewSiteVar <Landis.Extension.Succession.Biomass.Species.AuxParm <float> >(); TotalBiomass = PlugIn.ModelCore.Landscape.NewSiteVar <int>(); AnnualTranspiration = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); CanopyLAI = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); GrossPsn = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); NetPsn = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); transpiration = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); AutotrophicRespiration = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); HeterotrophicRespiration = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); WFPS = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); CanopyLAImax = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); SubCanopyPAR = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); SubCanopyPARmax = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); foreach (ActiveSite site in PlugIn.ModelCore.Landscape) { // site cohorts are initialized by the PlugIn.InitializeSite method woodyDebris[site] = new Pool(); litter[site] = new Pool(); HasSiteOutput[site] = false; SnowPack[site] = 0; Water[site] = 0; Infiltration[site] = 0; TotalBiomass[site] = 0; numberofcanopylayers[site] = 0; GrossPsn[site] = 0; NetPsn[site] = 0; AutotrophicRespiration[site] = 0; HeterotrophicRespiration[site] = 0; transpiration[site] = 0; WFPS[site] = 0; establishments[site] = new Landis.Extension.Succession.Biomass.Species.AuxParm <bool>(PlugIn.ModelCore.Species); pest[site] = new Landis.Extension.Succession.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); AnnualTranspiration[site] = 0; CanopyLAI[site] = 0; SubCanopyPAR[site] = 0; SubCanopyPARmax[site] = 0; foreach (ISpecies spc in PlugIn.ModelCore.Species) { establishments[site][spc] = false; pest[site][spc] = 0; } } PlugIn.ModelCore.RegisterSiteVar(cohorts, "Succession.BiomassCohortsPnET"); PlugIn.ModelCore.RegisterSiteVar(BiomassCohortsSiteVar, "Succession.BiomassCohorts"); PlugIn.ModelCore.RegisterSiteVar(baseCohortsSiteVar, "Succession.AgeCohorts"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.Establishments, "Succession.Establishments"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.WoodyDebris, "Succession.WoodyDebris"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.Litter, "Succession.Litter"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.HasSiteOutput, "Succession.HasSiteOutput"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.Water, "Succession.SoilWater"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.AnnualTranspiration, "Succession.AnnualTranspiration"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.SubCanopyPAR, "Succession.SubCanopyPARmax"); PlugIn.ModelCore.RegisterSiteVar(SiteVars.CanopyLAImax, "Succession.CanopyLAImax"); }