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

        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);
        }
Ejemplo n.º 2
0
        //---------------------------------------------------------------------

        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();

        }
Ejemplo n.º 3
0
        //---------------------------------------------------------------------

        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");

        }
Ejemplo n.º 4
0
        //---------------------------------------------------------------------

        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");
        }
Ejemplo n.º 5
0
        //---------------------------------------------------------------------

        /// <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;
            }
        }
Ejemplo n.º 8
0
		//---------------------------------------------------------------------

		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;
            }
        }
Ejemplo n.º 16
0
		//---------------------------------------------------------------------

		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");
        }
Ejemplo n.º 18
0
        //---------------------------------------------------------------------

        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");
        }
Ejemplo n.º 21
0
		//---------------------------------------------------------------------

		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;
		}
Ejemplo n.º 22
0
 public SiteMaxAgeCalculator(ILandscapeCohorts cohorts)
     : base(cohorts)
 {
 }
Ejemplo n.º 23
0
        //---------------------------------------------------------------------

        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");
        }
Ejemplo n.º 25
0
        //---------------------------------------------------------------------
        /// <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;
		}
Ejemplo n.º 27
0
        //---------------------------------------------------------------------
        /// <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;
 }
Ejemplo n.º 30
0
        //---------------------------------------------------------------------

        public ReproductionBySeeding(ISeeding seedingAlgorithm)
        {
            this.seedingAlgorithm = seedingAlgorithm;
            this.cohorts          = Model.GetSuccession <AgeOnly.ICohort>().Cohorts;
        }
Ejemplo n.º 31
0
        //---------------------------------------------------------------------

        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");

        }
Ejemplo n.º 32
0
        //---------------------------------------------------------------------

        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
Ejemplo n.º 35
0
        //---------------------------------------------------------------------

        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");
        }
Ejemplo n.º 36
0
        //---------------------------------------------------------------------

        public SpeciesMaxAgeCalculator(ISpecies species,
                                       ILandscapeCohorts cohorts)
            : base(cohorts)
        {
            this.species = species;
        }
        //---------------------------------------------------------------------

        public MaxAgeCalculator(ILandscapeCohorts cohorts)
        {
            this.cohorts = cohorts;
        }
 //---------------------------------------------------------------------
 public Seeding(SeedingAlgorithm seedingAlgorithm)
 {
     this.seedingAlgorithm = seedingAlgorithm;
     this.cohorts = Model.GetSuccession<AgeCohort.ICohort>().Cohorts;
 }
 public SiteMaxAgeCalculator(ILandscapeCohorts cohorts)
     : base(cohorts)
 {
 }
Ejemplo n.º 40
0
        //---------------------------------------------------------------------

        public Seeding(SeedingAlgorithm seedingAlgorithm)
        {
            this.seedingAlgorithm = seedingAlgorithm;
            this.cohorts          = Model.GetSuccession <AgeCohort.ICohort>().Cohorts;
        }
 //---------------------------------------------------------------------
 public SpeciesMaxAgeCalculator(ISpecies          species,
     ILandscapeCohorts cohorts)
     : base(cohorts)
 {
     this.species = species;
 }