//--------------------------------------------------------------------- public override void Initialize(string dataFile, PlugIns.ICore modelCore) { this.modelCore = modelCore; ParametersParser.SpeciesDataset = modelCore.Species; ParametersParser parser = new ParametersParser(); IParameters parameters = Data.Load <IParameters>(dataFile, parser); Timestep = parameters.Timestep; mapNameTemplate = parameters.MapNames; ILandscapeCohorts cohorts = modelCore.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) { throw new ApplicationException("Error: Cohorts don't support age-cohort interface"); } selectedSpecies = new List <SpeciesMaxAgeCalculator>(); foreach (ISpecies species in parameters.SelectedSpecies) { selectedSpecies.Add(new SpeciesMaxAgeCalculator(species, cohorts)); } siteMaxAgeCalculator = new SiteMaxAgeCalculator(cohorts); ageBuffer = new BlockRowBuffer <ushort>(modelCore.Landscape); }
//--------------------------------------------------------------------- public override void Initialize(string dataFile, PlugIns.ICore modelCore) { Model.Core = modelCore; InputParametersParser.SpeciesDataset = Model.Core.Species; InputParametersParser parser = new InputParametersParser(); IInputParameters parameters = Data.Load<IInputParameters>(dataFile, parser); if(parameters == null) UI.WriteLine("Parameters are not loading."); Timestep = parameters.Timestep; mapNameTemplate = parameters.MapFileNames; pctConiferMapNameTemplate = parameters.PctConiferFileName; pctDeadFirMapNameTemplate = parameters.PctDeadFirFileName; fuelTypes = parameters.FuelTypes; disturbanceTypes = parameters.DisturbanceTypes; fuelCoefs = parameters.FuelCoefficients; hardwoodMax = parameters.HardwoodMax; deadFirMaxAge = parameters.DeadFirMaxAge; cohorts = modelCore.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new ApplicationException("Error: Cohorts don't support LEAF BIOMASS interface"); SiteVars.Initialize(); }
//--------------------------------------------------------------------- public static void Initialize(ILandscapeCohorts cohorts) { //eventVar = Model.Core.Landscape.NewSiteVar<Epidemic>(InactiveSiteMode.DistinctValues); timeOfLastBDA = Model.Core.Landscape.NewSiteVar<int>(); neighborResourceDom = Model.Core.Landscape.NewSiteVar<double>(); siteResourceDomMod = Model.Core.Landscape.NewSiteVar<double>(); siteResourceDom = Model.Core.Landscape.NewSiteVar<double>(); vulnerability = Model.Core.Landscape.NewSiteVar<double>(); disturbed = Model.Core.Landscape.NewSiteVar<bool>(); //numberCFSconifersKilled = Model.Core.Landscape.NewSiteVar<int[]>(); numberCFSconifersKilled = Model.Core.Landscape.NewSiteVar<Dictionary<int,int>>(); SiteVars.TimeOfLastEvent.ActiveSiteValues = -10000; SiteVars.NeighborResourceDom.ActiveSiteValues = 0.0; SiteVars.SiteResourceDomMod.ActiveSiteValues = 0.0; SiteVars.SiteResourceDom.ActiveSiteValues = 0.0; SiteVars.Vulnerability.ActiveSiteValues = 0.0; foreach(ActiveSite site in Model.Core.Landscape) //SiteVars.NumberCFSconifersKilled[site] = new int[Model.Core.EndTime - Model.Core.StartTime + 1]; SiteVars.NumberCFSconifersKilled[site] = new Dictionary<int, int>(); // Added for v1.1 to enable interactions with CFS fuels extension. Model.Core.RegisterSiteVar(SiteVars.NumberCFSconifersKilled, "BDA.NumCFSConifers"); Model.Core.RegisterSiteVar(SiteVars.TimeOfLastEvent, "BDA.TimeOfLastEvent"); }
//--------------------------------------------------------------------- public static void Initialize(ILandscapeCohorts cohorts) { //eventVar = Model.Core.Landscape.NewSiteVar<Epidemic>(InactiveSiteMode.DistinctValues); timeOfLastBDA = Model.Core.Landscape.NewSiteVar <int>(); neighborResourceDom = Model.Core.Landscape.NewSiteVar <double>(); siteResourceDomMod = Model.Core.Landscape.NewSiteVar <double>(); siteResourceDom = Model.Core.Landscape.NewSiteVar <double>(); vulnerability = Model.Core.Landscape.NewSiteVar <double>(); disturbed = Model.Core.Landscape.NewSiteVar <bool>(); //numberCFSconifersKilled = Model.Core.Landscape.NewSiteVar<int[]>(); numberCFSconifersKilled = Model.Core.Landscape.NewSiteVar <Dictionary <int, int> >(); SiteVars.TimeOfLastEvent.ActiveSiteValues = -10000; SiteVars.NeighborResourceDom.ActiveSiteValues = 0.0; SiteVars.SiteResourceDomMod.ActiveSiteValues = 0.0; SiteVars.SiteResourceDom.ActiveSiteValues = 0.0; SiteVars.Vulnerability.ActiveSiteValues = 0.0; foreach (ActiveSite site in Model.Core.Landscape) { //SiteVars.NumberCFSconifersKilled[site] = new int[Model.Core.EndTime - Model.Core.StartTime + 1]; SiteVars.NumberCFSconifersKilled[site] = new Dictionary <int, int>(); } // Added for v1.1 to enable interactions with CFS fuels extension. Model.Core.RegisterSiteVar(SiteVars.NumberCFSconifersKilled, "BDA.NumCFSConifers"); Model.Core.RegisterSiteVar(SiteVars.TimeOfLastEvent, "BDA.TimeOfLastEvent"); }
//--------------------------------------------------------------------- /// <summary> /// Initializes the plug-in with a data file. /// </summary> /// <param name="dataFile"> /// Path to the file with initialization data. /// </param> /// <param name="startTime"> /// Initial timestep (year): the timestep that will be passed to the /// first call to the component's Run method. /// </param> public override void Initialize(string dataFile, PlugIns.ICore modelCore) { Model.Core = modelCore; ParameterParser.EcoregionsDataset = Model.Core.Ecoregions; ParameterParser parser = new ParameterParser(); IParameters parameters = Data.Load<IParameters>(dataFile, parser); Timestep = parameters.Timestep; mapNameTemplate = parameters.MapNamesTemplate; cohorts = Model.Core.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new ApplicationException("Error: Cohorts don't support age-cohort interface"); SiteVars.Initialize(); Model.Core.RegisterSiteVar(SiteVars.TimeOfLastEvent, "Wind.TimeOfLastEvent"); Event.Initialize(parameters.EventParameters, parameters.WindSeverities); UI.WriteLine("Opening wind log file \"{0}\" ...", parameters.LogFileName); log = Data.CreateTextFile(parameters.LogFileName); log.AutoFlush = true; log.WriteLine("Time,Initiation Site,Total Sites,Damaged Sites,Cohorts Killed,Mean Severity"); }
//--------------------------------------------------------------------- public override void Initialize(string dataFile, PlugIns.ICore modelCore) { this.modelCore = modelCore; ParametersParser.SpeciesDataset = modelCore.Species; ParametersParser parser = new ParametersParser(); IParameters parameters = Data.Load <IParameters>(dataFile, parser); if (parameters == null) { throw new ApplicationException("Error: Missing required parameters. Check the input parameter file"); } Timestep = parameters.Timestep; sppagestats_mapNames = parameters.SppAgeStats_MapNames; siteagestats_mapNames = parameters.SiteAgeStats_MapNames; sitesppstats_mapNames = parameters.SiteSppStats_MapNames; ageStatSpecies = parameters.AgeStatSpecies; siteAgeStats = parameters.SiteAgeStats; siteSppStats = parameters.SiteSppStats; cohorts = modelCore.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) { throw new ApplicationException("Error: Cohorts don't support age-cohort interface"); } }
//--------------------------------------------------------------------- public static void Initialize(ILandscapeCohorts cohorts) { eventVar = Model.Core.Landscape.NewSiteVar<Event>(InactiveSiteMode.DistinctValues); timeOfLastFire = Model.Core.Landscape.NewSiteVar<int>(); severity = Model.Core.Landscape.NewSiteVar<byte>(); disturbed = Model.Core.Landscape.NewSiteVar<bool>(); //Initialize TimeSinceLastFire to the maximum cohort age: foreach (ActiveSite site in Model.Core.Landscape) { ushort maxAge = AgeCohort.Util.GetMaxAge(cohorts[site]); timeOfLastFire[site] = Model.Core.StartTime - maxAge; } }
//--------------------------------------------------------------------- public static void Initialize(ILandscapeCohorts<AgeCohort.ICohort> cohorts) { eventVar = Model.Landscape.NewSiteVar<Event>(InactiveSiteMode.DistinctValues); timeOfLastFire = Model.Landscape.NewSiteVar<int>(); severity = Model.Landscape.NewSiteVar<byte>(); //Initialize TimeSinceLastFire to the maximum cohort age: foreach (ActiveSite site in Model.Landscape) { ushort maxAge = AgeCohort.Util.GetMaxAge(cohorts[site]); SiteVars.timeOfLastFire[site] = maxAge * -1; } }
//--------------------------------------------------------------------- /// <summary> /// Initializes the component with a data file. /// </summary> /// <param name="dataFile"> /// Path to the file with initialization data. /// </param> /// <param name="startTime"> /// Initial timestep (year): the timestep that will be passed to the /// first call to the component's Run method. /// </param> public void Initialize(string dataFile, int startTime) { ParametersParser.SpeciesDataset = Model.Species; ParametersParser parser = new ParametersParser(); IParameters parameters = Data.Load<IParameters>(dataFile, parser); this.timestep = parameters.Timestep; this.nextTimeToRun = startTime - 1; this.mapNameTemplate = parameters.MapNames; this.selectedSpecies = parameters.SelectedSpecies; cohorts = Model.GetSuccession<AgeCohort.ICohort>().Cohorts; }
//--------------------------------------------------------------------- public override void Initialize(string dataFile, PlugIns.ICore modelCore) { Model.Core = modelCore; ParameterParser.EcoregionsDataset = Model.Core.Ecoregions; ParameterParser parser = new ParameterParser(); IParameters parameters = Data.Load<IParameters>(dataFile, parser); Timestep = parameters.Timestep; mapNameTemplate = parameters.MapNamesTemplate; summaryEcoregionEventCount = new int[Model.Core.Ecoregions.Count]; cohorts = Model.Core.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new ApplicationException("Error: Cohorts don't support age-cohort interface"); SiteVars.Initialize(cohorts); Event.Initialize(parameters.FireParameters, parameters.FireCurves, parameters.WindCurves, parameters.FireDamages); UI.WriteLine("Opening Fire log file \"{0}\" ...", parameters.LogFileName); log = Data.CreateTextFile(parameters.LogFileName); log.AutoFlush = true; log.Write("Time,Initiation Site,Sites Checked,Cohorts Killed,Mean Severity,"); foreach (IEcoregion ecoregion in Model.Core.Ecoregions) { if (ecoregion.Active) log.Write("{0},", ecoregion.Name); } log.Write("TotalSiteInEvent"); log.WriteLine(""); summaryLog = Data.CreateTextFile(parameters.SummaryLogFileName); summaryLog.AutoFlush = true; summaryLog.Write("TimeStep,TotalSitesBurned,TotalNumberEvents"); foreach (IEcoregion ecoregion in Model.Core.Ecoregions) { if (ecoregion.Active) summaryLog.Write(",{0}", ecoregion.Name); } summaryLog.WriteLine(""); }
//--------------------------------------------------------------------- /// <summary> /// Initializes the component with a data file. /// </summary> /// <param name="dataFile"> /// Path to the file with initialization data. /// </param> /// <param name="startTime"> /// Initial timestep (year): the timestep that will be passed to the /// first call to the component's Run method. /// </param> public void Initialize(string dataFile, int startTime) { ParametersParser.SpeciesDataset = Model.Species; ParametersParser parser = new ParametersParser(); IParameters parameters = Data.Load <IParameters>(dataFile, parser); this.timestep = parameters.Timestep; this.nextTimeToRun = startTime - 1; this.mapNameTemplate = parameters.MapNames; this.selectedSpecies = parameters.SelectedSpecies; cohorts = Model.GetSuccession <AgeCohort.ICohort>().Cohorts; }
//--------------------------------------------------------------------- public override void Initialize(string dataFile, PlugIns.ICore modelCore) { this.modelCore = modelCore; InputParametersParser parser = new InputParametersParser(modelCore.Species); IInputParameters parameters = Data.Load<IInputParameters>(dataFile, parser); Timestep = parameters.Timestep; this.selectedSpecies = parameters.SelectedSpecies; this.speciesMapNameTemplate = parameters.SpeciesMapNames; this.ageClasses = parameters.AgeClasses; cohorts = modelCore.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new ApplicationException("Error: Cohorts don't support biomass interface"); }
//--------------------------------------------------------------------- public override void Initialize(string dataFile, PlugIns.ICore modelCore) { this.modelCore = modelCore; ParametersParser.SpeciesDataset = modelCore.Species; ParametersParser parser = new ParametersParser(); IParameters parameters = Data.Load<IParameters>(dataFile, parser); Timestep = parameters.Timestep; mapNameTemplate = parameters.MapNames; selectedSpecies = parameters.SelectedSpecies; cohorts = modelCore.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new ApplicationException("Error: Cohorts don't support age-cohort interface"); }
//--------------------------------------------------------------------- public override void Initialize(string dataFile, PlugIns.ICore modelCore) { this.modelCore = modelCore; InputParametersParser.SpeciesDataset = modelCore.Species; InputParametersParser parser = new InputParametersParser(); IInputParameters parameters = Data.Load <IInputParameters>(dataFile, parser); Timestep = parameters.Timestep; mapNameTemplate = parameters.MapNames; selectedSpecies = parameters.SelectedSpecies; cohorts = modelCore.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) { throw new ApplicationException("Error: Cohorts don't support age-cohort interface"); } }
//--------------------------------------------------------------------- public static void Initialize(ILandscapeCohorts cohorts) { ecoregions = Model.Core.Landscape.NewSiteVar<IFireRegion>(); eventVar = Model.Core.Landscape.NewSiteVar<Event>(InactiveSiteMode.DistinctValues); timeOfLastFire = Model.Core.Landscape.NewSiteVar<int>(); severity = Model.Core.Landscape.NewSiteVar<byte>(); disturbed = Model.Core.Landscape.NewSiteVar<bool>(); // Enable interactions with (almost) any fire extension: Model.Core.RegisterSiteVar(SiteVars.Severity, "Fire.Severity"); //Initialize TimeSinceLastFire to the maximum cohort age: foreach (ActiveSite site in Model.Core.Landscape) { ushort maxAge = AgeCohort.Util.GetMaxAge(cohorts[site]); timeOfLastFire[site] = Model.Core.StartTime - maxAge; } }
//--------------------------------------------------------------------- public static void Initialize(double[,] establishProbabilities, SeedingAlgorithm seedingAlgorithm, AddNewCohortMethod addNewCohort) { Reproduction.establishProbabilities = establishProbabilities; seeding = new Seeding(seedingAlgorithm); Reproduction.addNewCohort = addNewCohort; cohorts = Model.GetSuccession<AgeCohort.ICohort>().Cohorts; speciesDataset = Model.Species; int speciesCount = speciesDataset.Count; resprout = Model.Landscape.NewSiteVar<BitArray>(); serotiny = Model.Landscape.NewSiteVar<BitArray>(); foreach (ActiveSite site in Model.Landscape.ActiveSites) { resprout[site] = new BitArray(speciesCount); serotiny[site] = new BitArray(speciesCount); } }
//--------------------------------------------------------------------- /// <summary> /// Initializes the component with a data file. /// </summary> /// <param name="dataFile"> /// Path to the file with initialization data. /// </param> /// <param name="startTime"> /// Initial timestep (year): the timestep that will be passed to the /// first call to the component's Run method. /// </param> public override void Initialize(string dataFile, PlugIns.ICore modelCore) { this.modelCore = modelCore; ParametersParser.SpeciesDataset = modelCore.Species; ParametersParser parser = new ParametersParser(); IParameters parameters = Data.Load<IParameters>(dataFile, parser); Timestep = parameters.Timestep; //this.nextTimeToRun = startTime - 1; this.mapNameTemplate = parameters.MapFileNames; this.mapDefs = parameters.ReclassMaps; cohorts = modelCore.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new ApplicationException("Error: Cohorts don't support biomass interface"); }
//--------------------------------------------------------------------- public override void Initialize(string dataFile, PlugIns.ICore modelCore) { Model.Core = modelCore; cohorts = Model.Core.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new ApplicationException("Error: Cohorts don't support age-cohort interface"); SiteVars.Initialize(cohorts); ParameterParser parser = new ParameterParser(); IInputParameters parameters = Data.Load<IInputParameters>(dataFile, parser); Timestep = parameters.Timestep; mapNameTemplate = parameters.MapNamesTemplate; dynamicEcos = parameters.DynamicFireRegions; summaryFireRegionEventCount = new int[FireRegions.Dataset.Count]; Event.Initialize(parameters.FireDamages); UI.WriteLine("Opening Fire log file \"{0}\" ...", parameters.LogFileName); log = Data.CreateTextFile(parameters.LogFileName); log.AutoFlush = true; log.Write("Time,InitialSiteRow,InitialSiteColumn,SitesChecked,CohortsKilled,MeanSeverity,"); foreach (IFireRegion ecoregion in FireRegions.Dataset) log.Write("{0},", ecoregion.Name); log.Write("TotalBurnedSites"); log.WriteLine(""); summaryLog = Data.CreateTextFile(parameters.SummaryLogFileName); summaryLog.AutoFlush = true; summaryLog.Write("Time,TotalSitesBurned,TotalNumberEvents"); foreach (IFireRegion ecoregion in FireRegions.Dataset) summaryLog.Write(",{0}", ecoregion.Name); summaryLog.WriteLine(""); }
//--------------------------------------------------------------------- public static void Initialize(ILandscapeCohorts cohorts) { eventVar = Model.Core.Landscape.NewSiteVar<Event>(InactiveSiteMode.DistinctValues); timeOfLastFire = Model.Core.Landscape.NewSiteVar<int>(); fire_regions = Model.Core.Landscape.NewSiteVar<IFireRegion>(); percentDeadFir = Model.Core.Landscape.NewSiteVar<int>(); severity = Model.Core.Landscape.NewSiteVar<byte>(); lastSeverity = Model.Core.Landscape.NewSiteVar<byte>(); disturbed = Model.Core.Landscape.NewSiteVar<bool>(); travelTime = Model.Core.Landscape.NewSiteVar<double>(); minNeighborTravelTime = Model.Core.Landscape.NewSiteVar<double>(); rateOfSpread = Model.Core.Landscape.NewSiteVar<double>(); adjROS = Model.Core.Landscape.NewSiteVar<double>(); isi = Model.Core.Landscape.NewSiteVar<double>(); costTime = Model.Core.Landscape.NewSiteVar<double>(); groundSlope = Model.Core.Landscape.NewSiteVar<ushort>(); uphillSlopeAzimuth = Model.Core.Landscape.NewSiteVar<ushort>(); siteWindSpeed = Model.Core.Landscape.NewSiteVar<ushort>(); siteWindDirection = Model.Core.Landscape.NewSiteVar<ushort>(); //Also initialize topography, will be overwritten if optional parameters provided: SiteVars.GroundSlope.ActiveSiteValues = 0; SiteVars.UphillSlopeAzimuth.ActiveSiteValues = 0; //Initialize TimeSinceLastFire to the maximum cohort age: foreach (ActiveSite site in Model.Core.Landscape) { ushort maxAge = AgeCohort.Util.GetMaxAge(cohorts[site]); timeOfLastFire[site] = Model.Core.StartTime - maxAge; } Model.Core.RegisterSiteVar(SiteVars.FireRegion, "Fire.FireRegion"); Model.Core.RegisterSiteVar(SiteVars.Severity, "Fire.Severity"); Model.Core.RegisterSiteVar(SiteVars.LastSeverity, "Fire.LastSeverity"); Model.Core.RegisterSiteVar(SiteVars.TimeOfLastFire, "Fire.TimeOfLastEvent"); }
//--------------------------------------------------------------------- public override void Initialize(string dataFile, PlugIns.ICore modelCore) { this.modelCore = modelCore; ParametersParser.SpeciesDataset = modelCore.Species; ParametersParser parser = new ParametersParser(); IParameters parameters = Data.Load<IParameters>(dataFile,parser); if (parameters==null) throw new ApplicationException("Error: Missing required parameters. Check the input parameter file"); Timestep = parameters.Timestep; sppagestats_mapNames = parameters.SppAgeStats_MapNames; siteagestats_mapNames = parameters.SiteAgeStats_MapNames; sitesppstats_mapNames = parameters.SiteSppStats_MapNames; ageStatSpecies = parameters.AgeStatSpecies; siteAgeStats = parameters.SiteAgeStats; siteSppStats = parameters.SiteSppStats; cohorts = modelCore.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new ApplicationException("Error: Cohorts don't support age-cohort interface"); }
//--------------------------------------------------------------------- public static void Initialize(IEventParameters[] eventParameters, ISeverity[] severities, int timestep) { windEventParms = eventParameters; Event.severities = severities; Event.timestep = timestep; successionPlugIn = Model.GetSuccession<AgeCohort.ICohort>(); cohorts = successionPlugIn.Cohorts; }
public SiteMaxAgeCalculator(ILandscapeCohorts cohorts) : base(cohorts) { }
//--------------------------------------------------------------------- public static void Initialize(//IFireParameters[] eventParameters, //IFireCurve[] fireCurves, //IWindCurve[] windCurves, IDamageTable[] damages) { //FireEventParms = eventParameters; //FireCurves = fireCurves; //WindCurves = windCurves; Event.damages = damages; cohorts = Model.Core.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new System.ApplicationException("Error: Cohorts don't support age-cohort interface"); }
//--------------------------------------------------------------------- public static void Initialize(ISeasonParameters[] seasons, IFuelTypeParameters[] fuelTypeParameters, IDamageTable[] damages) { double totalSeasonFireProb = 0.0; foreach(ISeasonParameters season in seasons) totalSeasonFireProb += season.FireProbability; if (totalSeasonFireProb != 1.0) throw new System.ApplicationException("Error: Season Probabilities don't add to 1.0"); Event.fuelTypeParms = fuelTypeParameters; Event.damages = damages; cohorts = Model.Core.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new System.ApplicationException("Error: Cohorts don't support age-cohort interface"); }
//--------------------------------------------------------------------- /// <summary> /// Initializes the extension with a data file. /// </summary> public override void Initialize(string dataFile, PlugIns.ICore modelCore) { Model.Core = modelCore; InputParameterParser.EcoregionsDataset = Model.Core.Ecoregions; InputParameterParser parser = new InputParameterParser(); IInputParameters parameters = Data.Load<IInputParameters>(dataFile, parser); Timestep = parameters.Timestep; mapNameTemplate = parameters.MapNamesTemplate; srdMapNames = parameters.SRDMapNames; nrdMapNames = parameters.NRDMapNames; cohorts = Model.Core.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new ApplicationException("Error: Cohorts don't support age-cohort interface"); SiteVars.Initialize(cohorts); manyAgentParameters = parameters.ManyAgentParameters; foreach(IAgent activeAgent in manyAgentParameters) // UI.WriteLine("Parameters did not load successfully."); { //foreach (ISpecies spp in Model.Species) // UI.WriteLine("Spp={0}, MinorHostAge={1}.", spp.Name, activeAgent.SppParameters[spp.Index].SecondaryHostAge); if(activeAgent == null) UI.WriteLine("Agent Parameters NOT loading correctly."); //UI.WriteLine("Name of Agent = {0}", activeAgent.AgentName); activeAgent.TimeToNextEpidemic = TimeToNext(activeAgent, Timestep); int i=0; activeAgent.DispersalNeighbors = GetDispersalNeighborhood(activeAgent, Timestep); if(activeAgent.DispersalNeighbors != null) { foreach (RelativeLocation reloc in activeAgent.DispersalNeighbors) i++; UI.WriteLine("Dispersal Neighborhood = {0} neighbors.", i); } i=0; activeAgent.ResourceNeighbors = GetResourceNeighborhood(activeAgent); if(activeAgent.ResourceNeighbors != null) { foreach (RelativeLocationWeighted reloc in activeAgent.ResourceNeighbors) i++; UI.WriteLine("Resource Neighborhood = {0} neighbors.", i); } } string logFileName = parameters.LogFileName; UI.WriteLine("Opening BDA log file \"{0}\" ...", logFileName); log = Data.CreateTextFile(logFileName); log.AutoFlush = true; log.Write("CurrentTime, ROS, NumCohortsKilled, NumSitesDamaged, MeanSeverity"); log.WriteLine(""); }
//--------------------------------------------------------------------- public static void Initialize(IFireParameters[] eventParameters, IFireCurve[] fireCurves, IWindCurve[] windCurves, IDamageTable[] damages) { FireEventParms = eventParameters; FireCurves = fireCurves; WindCurves = windCurves; Event.damages = damages; ecoregions = Model.Ecoregions; successionPlugIn = Model.GetSuccession<AgeCohort.ICohort>(); cohorts = successionPlugIn.Cohorts; }
//--------------------------------------------------------------------- /// <summary> /// Initializes the extension with a data file. /// </summary> public override void Initialize(string dataFile, PlugIns.ICore modelCore) { Model.Core = modelCore; InputParameterParser.EcoregionsDataset = Model.Core.Ecoregions; InputParameterParser parser = new InputParameterParser(); IInputParameters parameters = Data.Load <IInputParameters>(dataFile, parser); Timestep = parameters.Timestep; mapNameTemplate = parameters.MapNamesTemplate; srdMapNames = parameters.SRDMapNames; nrdMapNames = parameters.NRDMapNames; cohorts = Model.Core.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) { throw new ApplicationException("Error: Cohorts don't support age-cohort interface"); } SiteVars.Initialize(cohorts); manyAgentParameters = parameters.ManyAgentParameters; foreach (IAgent activeAgent in manyAgentParameters) // UI.WriteLine("Parameters did not load successfully."); { //foreach (ISpecies spp in Model.Species) // UI.WriteLine("Spp={0}, MinorHostAge={1}.", spp.Name, activeAgent.SppParameters[spp.Index].SecondaryHostAge); if (activeAgent == null) { UI.WriteLine("Agent Parameters NOT loading correctly."); } //UI.WriteLine("Name of Agent = {0}", activeAgent.AgentName); activeAgent.TimeToNextEpidemic = TimeToNext(activeAgent, Timestep); int i = 0; activeAgent.DispersalNeighbors = GetDispersalNeighborhood(activeAgent, Timestep); if (activeAgent.DispersalNeighbors != null) { foreach (RelativeLocation reloc in activeAgent.DispersalNeighbors) { i++; } UI.WriteLine("Dispersal Neighborhood = {0} neighbors.", i); } i = 0; activeAgent.ResourceNeighbors = GetResourceNeighborhood(activeAgent); if (activeAgent.ResourceNeighbors != null) { foreach (RelativeLocationWeighted reloc in activeAgent.ResourceNeighbors) { i++; } UI.WriteLine("Resource Neighborhood = {0} neighbors.", i); } } string logFileName = parameters.LogFileName; UI.WriteLine("Opening BDA log file \"{0}\" ...", logFileName); log = Data.CreateTextFile(logFileName); log.AutoFlush = true; log.Write("CurrentTime, ROS, NumCohortsKilled, NumSitesDamaged, MeanSeverity"); log.WriteLine(""); }
//--------------------------------------------------------------------- public ReproductionBySeeding(ISeeding seedingAlgorithm) { this.seedingAlgorithm = seedingAlgorithm; this.cohorts = Model.GetSuccession<AgeOnly.ICohort>().Cohorts; }
//--------------------------------------------------------------------- public MaxAgeCalculator(ILandscapeCohorts cohorts) { this.cohorts = cohorts; }
//--------------------------------------------------------------------- public ReproductionBySeeding(ISeeding seedingAlgorithm) { this.seedingAlgorithm = seedingAlgorithm; this.cohorts = Model.GetSuccession <AgeOnly.ICohort>().Cohorts; }
//--------------------------------------------------------------------- public static void Initialize(IEventParameters[] eventParameters, List<ISeverity> severities) { windEventParms = eventParameters; Event.severities = severities; cohorts = Model.Core.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new System.ApplicationException("Error: Cohorts don't support age-cohort interface"); }
//--------------------------------------------------------------------- public static void Initialize(IEventParameters[] eventParameters, ISeverity[] severities) { windEventParms = eventParameters; Event.severities = severities; //Event.timestep = Model.Core.Timestep; cohorts = Model.Core.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new System.ApplicationException("Error: Cohorts don't support age-cohort interface"); // successionPlugIn = Model.GetSuccession<AgeCohort.ICohort>(); // cohorts = successionPlugIn.Cohorts; }
//--------------------------------------------------------------------- public override void Initialize(string dataFile, PlugIns.ICore modelCore) { if (isDebugEnabled) UI.WriteLine("Initializing {0} ...", Name); Model.Core = modelCore; cohorts = Model.Core.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new ApplicationException("Error: Cohorts don't support age-cohort interface"); SiteVars.Initialize(cohorts); InputParameterParser parser = new InputParameterParser(); IInputParameters parameters = Data.Load<IInputParameters>(dataFile, parser); Timestep = parameters.Timestep; fireSizeType = parameters.FireSizeType; bui = parameters.BUI; mapNameTemplate = parameters.MapNamesTemplate; dynamicWeather = parameters.DynamicWeather; severityCalibrate = parameters.SeverityCalibrate; WeatherDataTable = Weather.ReadWeatherFile(parameters.InitialWeatherPath, FireRegions.Dataset, parameters.SeasonParameters); UI.WriteLine(" Initializing Fire Events..."); Event.Initialize(parameters.SeasonParameters, parameters.FuelTypeParameters, parameters.FireDamages); seasonParameters = parameters.SeasonParameters; dynamicEcos = parameters.DynamicFireRegions; summaryFireRegionEventCount = new int[FireRegions.Dataset.Count]; summaryFireRegionSeverity = new int[FireRegions.Dataset.Count]; ecoregionSitesCount = new int[FireRegions.Dataset.Count]; //foreach (IFireRegion fire_region in FireRegions.Dataset) //UI.WriteLine(" FireSize={0}, SD={1}", fire_region.MeanSize, fire_region.StandardDeviation); // Count the number of sites per fire_region: foreach (Site site in Model.Core.Landscape) { if (site.IsActive) { IFireRegion fire_region = SiteVars.FireRegion[site]; ecoregionSitesCount[fire_region.Index] ++; } } UI.WriteLine(" Opening and Initializing Fire log files \"{0}\" and \"{1}\"...", parameters.LogFileName, parameters.SummaryLogFileName); try { log = Data.CreateTextFile(parameters.LogFileName); } catch (Exception err) { string mesg = string.Format("{0}", err.Message); throw new System.ApplicationException(mesg); } log.AutoFlush = true; log.Write("Time,InitSite,InitFireRegion,InitFuel,InitPercentConifer,SelectedSizeOrDuration,SizeBin,Duration,FireSeason,WindSpeed,WindDirection,FFMC,BUI,PercentCuring,ISI,SitesChecked,CohortsKilled,MeanSeverity,"); foreach (IFireRegion fire_region in FireRegions.Dataset) { log.Write("eco-{0},", fire_region.MapCode); } log.Write("TotalSitesInEvent"); log.WriteLine(""); try { summaryLog = Data.CreateTextFile(parameters.SummaryLogFileName); } catch (Exception err) { string mesg = string.Format("{0}", err.Message); throw new System.ApplicationException(mesg); } summaryLog.AutoFlush = true; summaryLog.Write("TimeStep, TotalSitesBurned, NumberFires"); foreach (IFireRegion fire_region in FireRegions.Dataset) { summaryLog.Write(", eco-num-sites-{0}", fire_region.MapCode); } foreach (IFireRegion fire_region in FireRegions.Dataset) { summaryLog.Write(", eco-mean-severity-{0}", fire_region.MapCode); } summaryLog.WriteLine(""); summaryLog.Write("0, 0, 0"); foreach (IFireRegion fire_region in FireRegions.Dataset) { summaryLog.Write(", {0}", ecoregionSitesCount[fire_region.Index]); } foreach (IFireRegion fire_region in FireRegions.Dataset) { summaryLog.Write(", 0.0"); } summaryLog.WriteLine(""); if (isDebugEnabled) UI.WriteLine("Initialization done"); }
//--------------------------------------------------------------------- // Initialize landscape with patches of defoliation during the first year public static void InitializeDefoliationPatches(IInsect insect) { UI.WriteLine(" Initializing Defoliation Patches... "); SiteVars.InitialOutbreakProb.ActiveSiteValues = 0.0; insect.Disturbed.ActiveSiteValues = false; cohorts = Model.Core.SuccessionCohorts as ILandscapeCohorts; foreach(ActiveSite site in Model.Core.Landscape) { double suscIndexSum = 0.0; double sumBio = 0.0; foreach(ISpecies species in Model.Core.Species) { ISpeciesCohorts speciesCohorts = cohorts[site][species]; if(speciesCohorts == null) continue; foreach (ICohort cohort in speciesCohorts) { suscIndexSum += cohort.Biomass * (insect.SppTable[cohort.Species.Index].Susceptibility); sumBio += cohort.Biomass; } } // If no biomass, no chance of defoliation, go to the next site. if(suscIndexSum <= 0 || sumBio <=0) { SiteVars.InitialOutbreakProb[site] = 0.0; continue; } int suscIndex = (int) Math.Round(suscIndexSum /sumBio) - 1; if (suscIndex > 2.0 || suscIndex < 0) { UI.WriteLine("SuscIndex < 0 || > 2. Site R/C={0}/{1},suscIndex={2},suscIndexSum={3},sumBio={4}.", site.Location.Row, site.Location.Column, suscIndex,suscIndexSum,sumBio); throw new ApplicationException("Error: SuscIndex is not between 2.0 and 0.0"); } // Assume that there are no neighbors whatsoever: DistributionType dist = insect.SusceptibleTable[suscIndex].Distribution_80.Name; //UI.WriteLine("suscIndex={0},suscIndexSum={1},cohortBiomass={2}.", suscIndex,suscIndexSum,sumBio); double value1 = insect.SusceptibleTable[suscIndex].Distribution_80.Value1; double value2 = insect.SusceptibleTable[suscIndex].Distribution_80.Value2; double probability = Distribution.GenerateRandomNum(dist, value1, value2); if(probability > 1.0 || probability < 0) { UI.WriteLine("Initial Defoliation Probility < 0 || > 1. Site R/C={0}/{1}.", site.Location.Row, site.Location.Column); throw new ApplicationException("Error: Probability is not between 1.0 and 0.0"); } SiteVars.InitialOutbreakProb[site] = probability; //UI.WriteLine("Susceptiblity index={0}. Outbreak Probability={1:0.00}. R/C={2}/{3}.", suscIndex, probability, site.Location.Row, site.Location.Column); } foreach(ActiveSite site in Model.Core.Landscape) { //get a random site from the stand double randomNum = Landis.Util.Random.GenerateUniform(); if(randomNum < SiteVars.InitialOutbreakProb[site] * insect.InitialAreaCalibrator) //Start spreading! { //start with this site (if it's active) ActiveSite currentSite = site; //queue to hold sites to defoliate Queue<ActiveSite> sitesToConsider = new Queue<ActiveSite>(); //put initial site on queue sitesToConsider.Enqueue(currentSite); DistributionType dist = insect.InitialPatchDistr; double targetArea = Distribution.GenerateRandomNum(dist, insect.InitialPatchValue1, insect.InitialPatchValue2); //UI.WriteLine(" Target Patch Area={0:0.0}.", targetArea); double areaSelected = 0.0; //loop through stand, defoliating patches of size target area while (sitesToConsider.Count > 0 && areaSelected < targetArea) { currentSite = sitesToConsider.Dequeue(); // Because this is the first year, neighborhood defoliaiton is given a value. // The value is used in Defoliate.DefoliateCohort() SiteVars.NeighborhoodDefoliation[currentSite] = SiteVars.InitialOutbreakProb[currentSite]; areaSelected += Model.Core.CellArea; //Next, add site's neighbors to the list of //sites to consider. //loop through the site's neighbors enqueueing all the good ones. foreach (RelativeLocation loc in all_neighbor_locations) { Site neighbor = currentSite.GetNeighbor(loc); //get a neighbor site (if it's non-null and active) if (neighbor != null && neighbor.IsActive && !sitesToConsider.Contains((ActiveSite) neighbor) && !insect.Disturbed[neighbor]) { insect.Disturbed[currentSite] = true; randomNum = Landis.Util.Random.GenerateUniform(); //UI.WriteLine("That darn Queue! randomnum={0}, prob={1}.", randomNum, SiteVars.InitialOutbreakProb[neighbor]); //check if it's a valid neighbor: if (SiteVars.InitialOutbreakProb[neighbor] > randomNum) { sitesToConsider.Enqueue((ActiveSite) neighbor); } } } } //endwhile //UI.WriteLine(" Initial Patch Area Selected={0:0.0}.", areaSelected); } //endif } //endfor } //endfunc
//--------------------------------------------------------------------- public static void Initialize(List<IDamageTable> damages) { Event.damages = damages; cohorts = Model.Core.SuccessionCohorts as ILandscapeCohorts; if (cohorts == null) throw new System.ApplicationException("Error: Cohorts don't support age-cohort interface"); }
//--------------------------------------------------------------------- public SpeciesMaxAgeCalculator(ISpecies species, ILandscapeCohorts cohorts) : base(cohorts) { this.species = species; }
//--------------------------------------------------------------------- public Seeding(SeedingAlgorithm seedingAlgorithm) { this.seedingAlgorithm = seedingAlgorithm; this.cohorts = Model.GetSuccession<AgeCohort.ICohort>().Cohorts; }
//--------------------------------------------------------------------- public Seeding(SeedingAlgorithm seedingAlgorithm) { this.seedingAlgorithm = seedingAlgorithm; this.cohorts = Model.GetSuccession <AgeCohort.ICohort>().Cohorts; }