public static void Initialize(IInputParameters parameters) { KWdLit = parameters.KWdLit; if (parameters.CanopyLayerAges.Count() == 0) { CanopyNumbers = new int[1] { 0 }; return; } else { CanopyNumbers = new int[parameters.CanopyLayerAges[parameters.CanopyLayerAges.Count() - 1] + 1]; for (int age = 0; age < parameters.CanopyLayerAges[parameters.CanopyLayerAges.Count - 1] + 1; age++) { CanopyNumbers[age] = 1; for (int l = 0; l < parameters.CanopyLayerAges.Count; l++) { if (age >= parameters.CanopyLayerAges[l]) { CanopyNumbers[age] = parameters.CanopyLayerNumbers[l]; } } } } }
public static void Initialize(IInputParameters parameters) { AET = parameters.AET; FolLignin = parameters.FolLignin; KNwdLitter = GetKNwdLitter(); }
//--------------------------------------------------------------------- public Insect(int sppCount) { susceptibility = new Library.Biomass.Species.AuxParm <int>(PlugIn.ModelCore.Species); growthreduceslope = new Library.Biomass.Species.AuxParm <double>(PlugIn.ModelCore.Species); growthreduceintercept = new Library.Biomass.Species.AuxParm <double>(PlugIn.ModelCore.Species); mortalityslope = new Library.Biomass.Species.AuxParm <double>(PlugIn.ModelCore.Species); mortalityintercept = new Library.Biomass.Species.AuxParm <double>(PlugIn.ModelCore.Species); susceptibleTable = new List <ISusceptible>(); neighbors = new List <RelativeLocation>(); hostDefoliationByYear = PlugIn.ModelCore.Landscape.NewSiteVar <Dictionary <int, double[]> >(); disturbed = PlugIn.ModelCore.Landscape.NewSiteVar <bool>(); lastYearDefoliation = PlugIn.ModelCore.Landscape.NewSiteVar <double>(); thisYearDefoliation = PlugIn.ModelCore.Landscape.NewSiteVar <double>(); neighborhoodDefoliation = PlugIn.ModelCore.Landscape.NewSiteVar <double>(); biomassRemoved = PlugIn.ModelCore.Landscape.NewSiteVar <int>(); initialOutbreakProb = PlugIn.ModelCore.Landscape.NewSiteVar <double>(); outbreakStopYear = 0; //default = beginning of simulation outbreakStartYear = 0; //default = beginning of simulation mortalityYear = 0; //default = beginning of simulation activeOutbreak = false; initialSites = 0; lastStartYear = 0; lastStopYear = 0; lastBioRemoved = 0; annMort = ""; //Initialize outbreaks: foreach (ActiveSite site in PlugIn.ModelCore.Landscape) { hostDefoliationByYear[site] = new Dictionary <int, double[]>(); } }
static void InitEstablishmentTable(string KeyWord, Landis.Library.Biomass.Species.AuxParm <float[]> SpeciesTables) { foreach (ISpecies species in PlugIn.ModelCore.Species) { SpeciesTables[species] = EstablishmentTable.InitProbabilityArray(); } }
static void InitEstablishmentTable(string FileName, string KeyWord, Landis.Library.Biomass.Species.AuxParm <float[]> SpeciesTables) { foreach (ISpecies species in PlugIn.ModelCore.Species) { SpeciesTables[species] = EstablishmentTable.ReadEstablishmentTable(KeyWord, FileName, species); } }
public static void Initialize(IInputParameters parameters) { Canopy.Initialize(parameters); TOroot = parameters.TOroot; TOwood = parameters.TOwood; TOfol = parameters.TOfol; FolRet = parameters.FolRet; HalfSat = parameters.HalfSat; PsnTMin = parameters.PsnTMin; GrMstSens = parameters.GrMstSens; SLWmax = parameters.SLWmax; SLWDel = parameters.SLWDel; k = parameters.K; CDDFolEnd = parameters.CDDFolEnd; PsnAgeRed = parameters.PsnAgeRed; GDDFolSt = parameters.GDDFolSt; RtStRatio = parameters.RtStRatio; MaintRespFrac = parameters.MaintResp; DNSC = parameters.DNSC; BFolResp = parameters.BFolResp; Porosity = parameters.Porosity; }
public VarSpeciesDate(string label, DateTime[] DateRange) { values = new Library.Biomass.Species.AuxParm <VarDate <T> >(PlugIn.ModelCore.Species); foreach (ISpecies spc in PlugIn.ModelCore.Species) { values[spc] = new VarDate <T>(label, DateRange); } }
public static void Initialize(IInputParameters parameters) { EstRad = parameters.EstRad; EstMoist = parameters.EstMoist; GDDFolSt = parameters.GDDFolSt; PsnTMin = parameters.PsnTMin; CDDFolEnd = parameters.CDDFolEnd; HalfSat = parameters.HalfSat; Porosity = parameters.Porosity; }
//--------------------------------------------------------------------- public static Landis.Library.Biomass.Species.AuxParm <Landis.Library.Biomass.Ecoregions.AuxParm <T> > CreateSpeciesEcoregionParm <T>(ISpeciesDataset speciesDataset, IEcoregionDataset ecoregionDataset) { Landis.Library.Biomass.Species.AuxParm <Landis.Library.Biomass.Ecoregions.AuxParm <T> > newParm; newParm = new Landis.Library.Biomass.Species.AuxParm <Landis.Library.Biomass.Ecoregions.AuxParm <T> >(speciesDataset); foreach (ISpecies species in speciesDataset) { newParm[species] = new Landis.Library.Biomass.Ecoregions.AuxParm <T>(ecoregionDataset); } return(newParm); }
private static void InitializeSpeciesParameters(IInputParameters parameters) { EstRadSensitivity = parameters.EstRadSensitivity; EstMoistureSensitivity = parameters.EstMoistureSensitivity; GDDFolStart = parameters.GDDFolStart; GDDFolEnd = parameters.GDDFolEnd; PsnTMin = parameters.PsnTMin; SenescStart = parameters.SenescStart; HalfSat = parameters.HalfSat; }
//--------------------------------------------------------------------- /// <summary> /// Converts a table indexed by species and ecoregion into a /// 2-dimensional array. /// </summary> public static T[,] ToArray <T>(Landis.Library.Biomass.Species.AuxParm <Landis.Library.Biomass.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); }
public EstablishmentProbability(ActiveSite site) { this.site = site; this.ecoregion = PlugIn.modelCore.Ecoregion[site]; pest = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); potestablishments = new Landis.Library.Biomass.Species.AuxParm <int>(PlugIn.ModelCore.Species); establishments = new Landis.Library.Biomass.Species.AuxParm <int>(PlugIn.ModelCore.Species); foreach (ISpecies spc in PlugIn.ModelCore.Species) { potestablishments[spc] = 0; establishments[spc] = 0; pest[spc] = 0; } }
public EstablishmentProbability(ActiveSite site) { this.site = site; this.ecoregion = PlugIn.modelCore.Ecoregion[site]; pest = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); potestablishments = new Landis.Library.Biomass.Species.AuxParm<int>(PlugIn.ModelCore.Species); establishments = new Landis.Library.Biomass.Species.AuxParm<int>(PlugIn.ModelCore.Species); foreach (ISpecies spc in PlugIn.ModelCore.Species) { potestablishments[spc] = 0; establishments[spc] = 0; pest[spc] = 0; } }
public static void Initialize(IInputParameters parameters) { totalbiomass = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); totalroot = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); totalfoliage = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); totalnsc = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); subcanopypar = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); subcanopyparmax = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); canopylai = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); canopylaimax = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); deadcohortages = PlugIn.ModelCore.Landscape.NewSiteVar <Landis.Library.Biomass.Species.AuxParm <List <int> > >(); deadcohorts = PlugIn.ModelCore.Landscape.NewSiteVar <Landis.Library.Biomass.Species.AuxParm <int> >(); numberofcanopylayers = PlugIn.ModelCore.Landscape.NewSiteVar <int>(); AutotrophicRespiration = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); foreach (ActiveSite site in PlugIn.ModelCore.Landscape) { numberofcanopylayers[site] = 0; } grosspsn = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); netpsn = PlugIn.ModelCore.Landscape.NewSiteVar <float>(); //CanopyLayerAgeSpan = parameters.CanopyLayerAgeSpan; foreach (ActiveSite site in PlugIn.ModelCore.Landscape) { CanopyLAI[site] = 0; SubCanopyPAR[site] = 0; SubCanopyPARmax[site] = 0; GrossPsn[site] = 0; NetPsn[site] = 0; AutotrophicRespiration[site] = 0; deadcohortages[site] = new Landis.Library.Biomass.Species.AuxParm <List <int> >(PlugIn.ModelCore.Species); deadcohorts[site] = new Landis.Library.Biomass.Species.AuxParm <int>(PlugIn.ModelCore.Species); foreach (ISpecies species in PlugIn.ModelCore.Species) { deadcohortages[site][species] = new List <int>(); } } PlugIn.ModelCore.RegisterSiteVar(DeadCohorts, "Succession.DeadCohorts"); PlugIn.ModelCore.RegisterSiteVar(DeadCohortAges, "Succession.DeadCohortAges"); PlugIn.ModelCore.RegisterSiteVar(SubCanopyPAR, "Succession.SubCanopyPARmax"); PlugIn.ModelCore.RegisterSiteVar(CanopyLAImax, "Succession.CanopyLAImax"); }
private static void InitializeSiteVariables() { establishments = PlugIn.ModelCore.Landscape.NewSiteVar <Landis.Library.Biomass.Species.AuxParm <int> >(); pest = PlugIn.ModelCore.Landscape.NewSiteVar <Landis.Library.Biomass.Species.AuxParm <float> >(); foreach (ActiveSite site in PlugIn.ModelCore.Landscape) { pest[site] = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); establishments[site] = new Landis.Library.Biomass.Species.AuxParm <int>(PlugIn.ModelCore.Species); foreach (ISpecies spc in PlugIn.ModelCore.Species) { establishments[site][spc] = 0; pest[site][spc] = 0; } } }
//--------------------------------------------------------------------- public InputParameters() { hassiteoutput = PlugIn.ModelCore.Landscape.NewSiteVar <bool>(); canopylayerbiomfractions = new List <float[]>(); canopylayerages = new List <int>(); climatefilename = new Library.Biomass.Ecoregions.AuxParm <string>(PlugIn.modelCore.Ecoregions); slwdel = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); toroot = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); towood = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); folret = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); tofol = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); gddfolst = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); mortCurveShapeParm = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); growthCurveShapeParm = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); slwmax = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); cddfolend = new Landis.Library.Biomass.Species.AuxParm <int>(PlugIn.ModelCore.Species); wuecnst = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); q10 = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); psntmin = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); halfsat = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); estradsensitivity = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); estmoisturesensitivity = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); psntopt = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); foln = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); bfolresp = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); follignin = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); kwdlit = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); grmstsens = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); dvpd2 = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); dvpd1 = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); amaxa = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); amaxb = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); psnagered = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); k = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); dnsc = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); maintresp = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); wltpnt = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); rtstratio = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); whc = new Landis.Library.Biomass.Ecoregions.AuxParm <int>(PlugIn.ModelCore.Ecoregions); aet = new Landis.Library.Biomass.Ecoregions.AuxParm <int>(PlugIn.ModelCore.Ecoregions); preciplossfrac = new Landis.Library.Biomass.Ecoregions.AuxParm <float>(PlugIn.ModelCore.Ecoregions); porosity = new Landis.Library.Biomass.Ecoregions.AuxParm <int>(PlugIn.ModelCore.Ecoregions); leakagefrac = new Landis.Library.Biomass.Ecoregions.AuxParm <float>(PlugIn.ModelCore.Ecoregions); canopylayernumbers = new List <int>(); }
//--------------------------------------------------------------------- public InputParameters() { hassiteoutput = PlugIn.ModelCore.Landscape.NewSiteVar <bool>(); slwdel = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); rootturnover = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); woodturnover = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); folreten = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); foliageturnover = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); gddfolend = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); gddfolstart = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); mortCurveShapeParm = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); growthCurveShapeParm = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); slwmax = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); senescStart = new Landis.Library.Biomass.Species.AuxParm <int>(PlugIn.ModelCore.Species); wueconst = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); respq10 = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); psntmin = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); halfsat = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); estradsensitivity = new Landis.Library.Biomass.Species.AuxParm <float[]>(PlugIn.ModelCore.Species); estmoisturesensitivity = new Landis.Library.Biomass.Species.AuxParm <float[]>(PlugIn.ModelCore.Species); psntopt = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); folncon = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); basefolrespfrac = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); growthmoisturesensitivity = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); dvpd2 = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); dvpd1 = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); amaxa = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); amaxb = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); psnagered = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); k = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); dnsc = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); maintresp = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); wiltingpoint = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); rootstemratio = new Landis.Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); whc = new Landis.Library.Biomass.Ecoregions.AuxParm <float>(PlugIn.ModelCore.Ecoregions); aet = new Landis.Library.Biomass.Ecoregions.AuxParm <int>(PlugIn.ModelCore.Ecoregions); evaporationfraction = new Landis.Library.Biomass.Ecoregions.AuxParm <float>(PlugIn.ModelCore.Ecoregions); leakagefraction = new Landis.Library.Biomass.Ecoregions.AuxParm <float>(PlugIn.ModelCore.Ecoregions); }
public static void Initialize(IInputParameters parameters) { RootTurnover = parameters.RootTurnover; WoodTurnover = parameters.WoodTurnover; FoliageTurnover = parameters.FoliageTurnover; FolReten = parameters.FolReten; HalfSat = parameters.HalfSat; PsnTMin = parameters.PsnTMin; GrowthMoistureSensitivity = parameters.GrowthMoistureSensitivity; WiltingPoint = parameters.WiltingPoint; SLWmax = parameters.SLWmax; SLWDel = parameters.SLWDel; k = parameters.K; SenescStart = parameters.SenescStart; PsnAgeRed = parameters.PsnAgeRed; GDDFolStart = parameters.GDDFolStart; GDDFolEnd = parameters.GDDFolEnd; RootStemRatio = parameters.RootStemRatio; MaintRespFrac = parameters.MaintResp; DNSC = parameters.DNSC; BaseFolRespFrac = parameters.BaseFolRespFrac; }
//--------------------------------------------------------------------- public Insect(int sppCount) { susceptibility = new Library.Biomass.Species.AuxParm<int>(PlugIn.ModelCore.Species); growthreduceslope = new Library.Biomass.Species.AuxParm<double>(PlugIn.ModelCore.Species); growthreduceintercept = new Library.Biomass.Species.AuxParm<double>(PlugIn.ModelCore.Species); mortalityslope = new Library.Biomass.Species.AuxParm<double>(PlugIn.ModelCore.Species); mortalityintercept = new Library.Biomass.Species.AuxParm<double>(PlugIn.ModelCore.Species); susceptibleTable = new List<ISusceptible>(); neighbors = new List<RelativeLocation>(); hostDefoliationByYear = PlugIn.ModelCore.Landscape.NewSiteVar<Dictionary<int, double[]>>(); disturbed = PlugIn.ModelCore.Landscape.NewSiteVar<bool>(); lastYearDefoliation = PlugIn.ModelCore.Landscape.NewSiteVar<double>(); thisYearDefoliation = PlugIn.ModelCore.Landscape.NewSiteVar<double>(); neighborhoodDefoliation = PlugIn.ModelCore.Landscape.NewSiteVar<double>(); biomassRemoved = PlugIn.ModelCore.Landscape.NewSiteVar<int>(); initialOutbreakProb = PlugIn.ModelCore.Landscape.NewSiteVar<double>(); outbreakStopYear = 0; //default = beginning of simulation outbreakStartYear = 0; //default = beginning of simulation mortalityYear = 0; //default = beginning of simulation activeOutbreak = false; initialSites = 0; lastStartYear = 0; lastStopYear = 0; lastBioRemoved = 0; annMort = ""; //Initialize outbreaks: foreach (ActiveSite site in PlugIn.ModelCore.Landscape) { hostDefoliationByYear[site] = new Dictionary<int, double[]>(); } }
//--------------------------------------------------------------------- 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); }
private bool TrySet(string ReadLabel, string VariableLabel, InputValue <float> value, int mininput, int maxinput, ISpecies species, Landis.Library.Biomass.Species.AuxParm <int> SpcVar) { if (System.String.Compare(ReadLabel, VariableLabel, System.StringComparison.OrdinalIgnoreCase) == 0) { SpcVar[species] = (int)Landis.Library.Biomass.Util.CheckBiomassParm(ReadLabel, value, mininput, maxinput); return(true); } return(false); }
//--------------------------------------------------------------------- public InputParameters() { hassiteoutput = PlugIn.ModelCore.Landscape.NewSiteVar<bool>(); canopylayerbiomfractions = new List<float[]>(); canopylayerages = new List<int>(); climatefilename = new Library.Biomass.Ecoregions.AuxParm<string>(PlugIn.modelCore.Ecoregions); slwdel = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); toroot = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); towood = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); folret = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); tofol = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); gddfolst = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); mortCurveShapeParm = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); growthCurveShapeParm = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); slwmax = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); cddfolend = new Landis.Library.Biomass.Species.AuxParm<int>(PlugIn.ModelCore.Species); wuecnst = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); q10 = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); psntmin = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); halfsat = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); estradsensitivity = new Landis.Library.Biomass.Species.AuxParm<float >(PlugIn.ModelCore.Species); estmoisturesensitivity = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); psntopt = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); foln = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); bfolresp = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); follignin = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); kwdlit = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); grmstsens = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); dvpd2 = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); dvpd1 = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); amaxa = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); amaxb = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); psnagered = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); k = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); dnsc = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); maintresp = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); wltpnt = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); rtstratio = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); whc = new Landis.Library.Biomass.Ecoregions.AuxParm<int>(PlugIn.ModelCore.Ecoregions); aet = new Landis.Library.Biomass.Ecoregions.AuxParm<int>(PlugIn.ModelCore.Ecoregions); preciplossfrac = new Landis.Library.Biomass.Ecoregions.AuxParm<float>(PlugIn.ModelCore.Ecoregions); porosity = new Landis.Library.Biomass.Ecoregions.AuxParm<int>(PlugIn.ModelCore.Ecoregions); leakagefrac = new Landis.Library.Biomass.Ecoregions.AuxParm<float>(PlugIn.ModelCore.Ecoregions); canopylayernumbers = new List<int>(); }
private static void InitializeSpeciesParameters(IInputParameters parameters) { EstRadSensitivity = parameters.EstRadSensitivity; EstMoistureSensitivity = parameters.EstMoistureSensitivity; GDDFolStart = parameters.GDDFolStart; GDDFolEnd = parameters.GDDFolEnd; PsnTMin = parameters.PsnTMin; SenescStart = parameters.SenescStart; HalfSat= parameters.HalfSat; }
//--------------------------------------------------------------------- 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 Initialize(IInputParameters parameters) { totalbiomass = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); totalroot = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); totalfoliage = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); totalnsc = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); subcanopypar = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); subcanopyparmax = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); canopylai = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); canopylaimax = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); deadcohortages = PlugIn.ModelCore.Landscape.NewSiteVar<Landis.Library.Biomass.Species.AuxParm<List<int>>>(); deadcohorts = PlugIn.ModelCore.Landscape.NewSiteVar<Landis.Library.Biomass.Species.AuxParm<int>>(); numberofcanopylayers = PlugIn.ModelCore.Landscape.NewSiteVar<int>(); AutotrophicRespiration = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); foreach (ActiveSite site in PlugIn.ModelCore.Landscape) numberofcanopylayers[site] = 0; grosspsn = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); netpsn = PlugIn.ModelCore.Landscape.NewSiteVar<float>(); //CanopyLayerAgeSpan = parameters.CanopyLayerAgeSpan; foreach (ActiveSite site in PlugIn.ModelCore.Landscape) { CanopyLAI[site] = 0; SubCanopyPAR[site] = 0; SubCanopyPARmax[site] = 0; GrossPsn[site] = 0; NetPsn[site] = 0; AutotrophicRespiration[site] = 0; deadcohortages[site] = new Landis.Library.Biomass.Species.AuxParm<List<int>>(PlugIn.ModelCore.Species); deadcohorts[site] = new Landis.Library.Biomass.Species.AuxParm<int>(PlugIn.ModelCore.Species); foreach (ISpecies species in PlugIn.ModelCore.Species) { deadcohortages[site][species] = new List<int>(); } } PlugIn.ModelCore.RegisterSiteVar(DeadCohorts, "Succession.DeadCohorts"); PlugIn.ModelCore.RegisterSiteVar(DeadCohortAges, "Succession.DeadCohortAges"); PlugIn.ModelCore.RegisterSiteVar(SubCanopyPAR, "Succession.SubCanopyPARmax"); PlugIn.ModelCore.RegisterSiteVar(CanopyLAImax, "Succession.CanopyLAImax"); }
private static void InitializeSiteVariables() { establishments = PlugIn.ModelCore.Landscape.NewSiteVar<Landis.Library.Biomass.Species.AuxParm<int>>(); pest = PlugIn.ModelCore.Landscape.NewSiteVar<Landis.Library.Biomass.Species.AuxParm<float>>(); foreach (ActiveSite site in PlugIn.ModelCore.Landscape) { pest[site] = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); establishments[site] = new Landis.Library.Biomass.Species.AuxParm<int>(PlugIn.ModelCore.Species); foreach (ISpecies spc in PlugIn.ModelCore.Species) { establishments[site][spc] = 0; pest[site][spc] = 0; } } }
private bool TrySet(string ReadLabel, string VariableLabel, InputValue <float> value, float mininput, float maxinput, ISpecies species, Landis.Library.Biomass.Species.AuxParm <float> SpcVar) { // VariableLabel has to occur in headers //AssureVariableHeaderIsThere(VariableLabel); if (System.String.Compare(ReadLabel, VariableLabel, System.StringComparison.OrdinalIgnoreCase) == 0) { SpcVar[species] = Landis.Library.Biomass.CheckParms.CheckBiomassParm(value, mininput, maxinput); return(true); } return(false); }
//--------------------------------------------------------------------- public InputParameters() { hassiteoutput = PlugIn.ModelCore.Landscape.NewSiteVar<bool>(); slwdel = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); rootturnover = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); woodturnover = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); folreten = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); foliageturnover = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); gddfolend = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); gddfolstart = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); mortCurveShapeParm = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); growthCurveShapeParm = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); slwmax = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); senescStart = new Landis.Library.Biomass.Species.AuxParm<int>(PlugIn.ModelCore.Species); wueconst = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); respq10 = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); psntmin = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); halfsat = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); estradsensitivity = new Landis.Library.Biomass.Species.AuxParm<float[] >(PlugIn.ModelCore.Species); estmoisturesensitivity = new Landis.Library.Biomass.Species.AuxParm<float[]>(PlugIn.ModelCore.Species); psntopt = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); folncon = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); basefolrespfrac = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); growthmoisturesensitivity = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); dvpd2 = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); dvpd1 = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); amaxa = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); amaxb = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); psnagered = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); k = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); dnsc = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); maintresp = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); wiltingpoint = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); rootstemratio = new Landis.Library.Biomass.Species.AuxParm<float>(PlugIn.ModelCore.Species); whc = new Landis.Library.Biomass.Ecoregions.AuxParm<float>(PlugIn.ModelCore.Ecoregions); aet = new Landis.Library.Biomass.Ecoregions.AuxParm<int>(PlugIn.ModelCore.Ecoregions); evaporationfraction = new Landis.Library.Biomass.Ecoregions.AuxParm<float>(PlugIn.ModelCore.Ecoregions); leakagefraction = new Landis.Library.Biomass.Ecoregions.AuxParm<float>(PlugIn.ModelCore.Ecoregions); }
public static void Initialize(IInputParameters Parameters) { PlugIn.ModelCore.UI.WriteLine(" Reading climate date from " + Parameters.climateFileName); climateFileName = Parameters.climateFileName; SetDelimitor(); string[] Content = ReadContent(); SetFirstAndLastYearOnFile(Content); firstpossibleestmonth = new DateVar <int>("firstpossibleestmonth", FirstYearOnFile, LastYearOnFile); lastpossibleestmonth = new DateVar <int>("lastpossibleestmonth", FirstYearOnFile, LastYearOnFile); possibleestmonth = new DateVar <bool>("PossibleEstmonth", FirstYearOnFile, LastYearOnFile); tmax = new DateVar <float>("tmax", FirstYearOnFile, LastYearOnFile); tmin = new DateVar <float>("tmin", FirstYearOnFile, LastYearOnFile); co2 = new DateVar <float>("co2", FirstYearOnFile, LastYearOnFile); tday = new DateVar <float>("tday", FirstYearOnFile, LastYearOnFile); par0 = new DateVar <float>("par0", FirstYearOnFile, LastYearOnFile); tave = new DateVar <float>("tave", FirstYearOnFile, LastYearOnFile); prec = new DateVar <float>("prec", FirstYearOnFile, LastYearOnFile); vpd = new DateVar <float>("vpd", FirstYearOnFile, LastYearOnFile); dayspan = new DateVar <int>("dayspan", FirstYearOnFile, LastYearOnFile); treesareactive = new DateVar <bool>("treesareactive", FirstYearOnFile, LastYearOnFile); SetClimateFileHeaders(Content[0]); FolNCon = Parameters.FolNCon; BaseFolRespFrac = Parameters.BaseFolRespFrac; DVPD1 = Parameters.DVPD1; DVPD2 = Parameters.DVPD2; AmaxA = Parameters.AmaxA; AmaxB = Parameters.AmaxB; WUEConst = Parameters.WUEConst; RespQ10 = Parameters.RespQ10; PsnTOpt = Parameters.PsnTOpt; PsnTMin = Parameters.PsnTMin; firstactivemonthspc = new DateVar <Landis.Library.Biomass.Species.AuxParm <int> >("wettestmonth", FirstYearOnFile, LastYearOnFile); wettestmonth = new DateVar <int>("wettestmonth", FirstYearOnFile, LastYearOnFile); dtemppsn = new DateVar <Library.Biomass.Species.AuxParm <float> >("dtemppsn", FirstYearOnFile, LastYearOnFile); wue = new DateVar <Library.Biomass.Species.AuxParm <float> >("wue", FirstYearOnFile, LastYearOnFile); delamax = new DateVar <Library.Biomass.Species.AuxParm <float> >("delamax", FirstYearOnFile, LastYearOnFile); refnetpsn = new DateVar <Library.Biomass.Species.AuxParm <float> >("refnetpsn", FirstYearOnFile, LastYearOnFile); refresp = new DateVar <Library.Biomass.Species.AuxParm <float> >("refresp", FirstYearOnFile, LastYearOnFile); dTempResp = new DateVar <Library.Biomass.Species.AuxParm <float> >("dTempResp", FirstYearOnFile, LastYearOnFile); dTempRespDay = new DateVar <Library.Biomass.Species.AuxParm <float> >("dTempRespDay", FirstYearOnFile, LastYearOnFile); dTempRespNight = new DateVar <Library.Biomass.Species.AuxParm <float> >("dTempRespNight", FirstYearOnFile, LastYearOnFile); wue_co2_corr = new DateVar <Library.Biomass.Species.AuxParm <float> >("wue_co2_corr", FirstYearOnFile, LastYearOnFile); dvpd = new DateVar <Library.Biomass.Species.AuxParm <float> >("dvpd", FirstYearOnFile, LastYearOnFile); resp_folbase = new DateVar <Library.Biomass.Species.AuxParm <float> >("resp_folbase", FirstYearOnFile, LastYearOnFile); isactive = new DateVar <Library.Biomass.Species.AuxParm <bool> >("IsActive", FirstYearOnFile, LastYearOnFile); gdd = new DateVar <Library.Biomass.Species.AuxParm <float> >("gdd", FirstYearOnFile, LastYearOnFile); DateTime date = new DateTime(FirstYearOnFile, 1, 15); while (date.CompareTo(new DateTime(LastYearOnFile, 12, 15)) <= 0) { // GetLine checks if year/month according to the loop is equal to the date read in string[] terms = GetLine(date.Year, date.Month, Content).Split(delim); if (terms.Count() != ColumnCount) { throw new System.Exception("Unexpected number of columns in " + Parameters.climateFileName + " date = " + date); } if (int.Parse(terms[0]) != date.Year || int.Parse(terms[1]) != date.Month) { throw new System.Exception("Missing month " + date + " in climate file"); } try { tmax[date] = CheckInputValue(float.Parse(terms[TMaxCol]), -80, 80, "date = " + date); tmin[date] = CheckInputValue(float.Parse(terms[TMinCol]), -80, tmax[date], "date = " + date); co2[date] = CheckInputValue(float.Parse(terms[CO2Col]), 0, float.MaxValue, "date = " + date); par0[date] = CheckInputValue(float.Parse(terms[PAR0col]), 0, float.MaxValue, "date = " + date); prec[date] = CheckInputValue(float.Parse(terms[Preccol]), 0, float.MaxValue, "date = " + date); if (prec[date] < 0) { throw new System.Exception("Precipitation = " + prec + "\t" + date); } float hr = Calculate_hr(date.DayOfYear, Parameters.Latitude); float daylength = Calculate_DayLength(hr); float nightlength = Calculate_NightLength(hr); dayspan[date] = Calculate_DaySpan(date.Month); tave[date] = (float)0.5 * (tmin[date] + tmax[date]); tday[date] = (float)0.5 * (tmax[date] + tave[date]); vpd[date] = Calculate_VPD(Tday[date], TMin[date]); gdd[date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); isactive[date] = new Library.Biomass.Species.AuxParm <bool>(PlugIn.ModelCore.Species); dtemppsn [date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); wue[date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); delamax[date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); refnetpsn[date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); refresp[date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); dTempResp [date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); dTempRespDay[date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); dTempRespNight[date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); wue_co2_corr[date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); resp_folbase[date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); gdd[date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); dvpd[date] = new Library.Biomass.Species.AuxParm <float>(PlugIn.ModelCore.Species); foreach (ISpecies spc in PlugIn.ModelCore.Species) { float dGDD = Math.Max(0, (Tave[date] - PsnTMin[spc]) * DaySpan[date]); if (date.Month == 1) { gdd[date][spc] = dGDD; } else { DateTime last_month = new DateTime(date.Year, date.Month - 1, 15); gdd[date][spc] = gdd[last_month][spc] + dGDD; } if (tday[date] < PsnTMin[spc]) { IsActive[date][spc] = false; } else { IsActive[date][spc] = true; treesareactive[date] = true; } //dtemppsn[date][spc] = ParabolicPsnTempResponse(tday[date], PsnTOpt[spc], PsnTMin[spc]); dtemppsn[date][spc] = LinearPsnTempResponse(tday[date], PsnTOpt[spc], PsnTMin[spc]); dvpd[date][spc] = Math.Max(0, 1 - DVPD1[spc] * (float)Math.Pow(vpd[date], DVPD2[spc])); float cicaRatio = (-0.075f * FolNCon[spc]) + 0.875f; float ci350 = 350 * cicaRatio; float Arel350 = 1.22f * ((ci350 - 68) / (ci350 + 136)); float ciElev = co2[date] * cicaRatio; float ArelElev = 1.22f * ((ciElev - 68) / (ciElev + 136)); DelAmax[date][spc] = 1 + ((ArelElev - Arel350) / Arel350); // CO2 effect on photosynthesis // Calculate CO2 effect on conductance and set slope and intercept for A-gs relationship float Delgs = DelAmax[date][spc] / ((co2[date] - co2[date] * cicaRatio) / (350.0f - ci350)); wue[date][spc] = (WUEConst[spc] / vpd[date]) * (1 + 1 - Delgs); //DWUE determined from CO2 effects on conductance wue_co2_corr[date][spc] = wue[date][spc] / DelAmax[date][spc]; /* * wue_co2_corr[spc] = WUEConst[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 float amax = DelAmax[date][spc] * (AmaxA[spc] + AmaxB[spc] * FolNCon[spc]); //Reference net Psn (lab conditions) RefNetPsn[date][spc] = Static.DaySpan[date] * (amax * dvpd[date][spc] * daylength * Constants.MC) / Constants.billion; dTempRespDay[date][spc] = ((float)Math.Pow(RespQ10[spc], (Tday[date] - PsnTOpt[spc]) / 10)); dTempRespNight[date][spc] = ((float)Math.Pow(RespQ10[spc], (TMin[date] - PsnTOpt[spc]) / 10)); dTempResp[date][spc] = (float)Math.Min(1.0, (dTempRespDay[date][spc] * daylength + dTempRespNight[date][spc] * nightlength) / ((float)daylength + (float)nightlength)); // gC/day RefResp[date][spc] = BaseFolRespFrac[spc] * Static.DaySpan[date] * (amax * daylength * Constants.MC) / Constants.billion; } date = date.AddMonths(1); } catch { throw new System.Exception("Cannot find climate date for (year,month) " + date.Year.ToString() + " " + date.Month.ToString()); } } while (date.CompareTo(new DateTime(LastYearOnFile, 12, 15)) < 0) { if (Parameters.EstMoistureSensitivity != null) { wettestmonth[date] = GetWettestMonth(date, 10); } if (Parameters.EstRadSensitivity != null) { firstactivemonthspc[date] = GetFirstActiveMonth(date, 10); } foreach (ISpecies spc in PlugIn.ModelCore.Species) { int Firstpossibleestmonth = Math.Min(wettestmonth[date] - 1, firstactivemonthspc[date][spc]); int Lastpossibleestmonth = Math.Max(wettestmonth[date] + 1, firstactivemonthspc[date][spc] + 3); if (date.Month >= Firstpossibleestmonth && date.Month <= Lastpossibleestmonth) { possibleestmonth[date] = true; } } date = date.AddMonths(1); } }