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

        public override void LoadParameters(string dataFile, ICore mCore)
        {
            modelCore = mCore;
            SiteVars.Initialize();
            InputParameterParser parser = new InputParameterParser();
            parameters = Landis.Data.Load<IInputParameters>(dataFile, parser);
        }
        //---------------------------------------------------------------------

        /// <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;

            InputParameterParser.EcoregionsDataset = Model.Core.Ecoregions;
            InputParameterParser parser = new InputParameterParser();
            IInputParameters parameters = Data.Load<IInputParameters>(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();
            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 LoadParameters(string dataFile,
                                            ICore mCore)
        {
            modelCore = mCore;
            InputParameterParser.EcoregionsDataset = modelCore.Ecoregions;
            InputParameterParser parser = new InputParameterParser();
            parameters = Landis.Data.Load<IInputParameters>(dataFile, parser);
        }
        //---------------------------------------------------------------------
        /// <summary>
        /// Initializes the extension with a data file.
        /// </summary>
        public override void Initialize(string        dataFile,
                                        PlugIns.ICore modelCore)
        {

            Model.Core = modelCore;

            InputParameterParser parser = new InputParameterParser();

            IInputParameters parameters = Data.Load<IInputParameters>(dataFile, parser);

            Timestep = 1; //parameters.Timestep;
            mapNameTemplate = parameters.MapNamesTemplate;
            manyInsect = parameters.ManyInsect;

            SiteVars.Initialize();
            Defoliate.Initialize(parameters);
            GrowthReduction.Initialize(parameters);

            // Add local event handler for cohorts death due to age-only
            // disturbances.
            Biomass.Cohort.AgeOnlyDeathEvent += CohortKilledByAgeOnlyDisturbance;

            foreach(IInsect insect in manyInsect)
            {

                if(insect == null)
                    UI.WriteLine("Insect Parameters NOT loading correctly.");

                insect.Neighbors = GetNeighborhood(insect.NeighborhoodDistance);

                int i=0;

                foreach(RelativeLocation location in insect.Neighbors)
                    i++;

                if(insect.Neighbors != null)
                    UI.WriteLine("   Dispersal Neighborhood = {0} neighbors.", i);

            }


            UI.WriteLine("Opening BiomassInsect log file \"{0}\" ...", parameters.LogFileName);
            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,InsectName,StartYear,StopYear,MeanDefoliation,NumSitesDefoliated");
            //foreach (IEcoregion ecoregion in Ecoregions.Dataset)
            //      log.Write(",{0}", ecoregion.MapCode);
            log.WriteLine("");

        }
        public override void LoadParameters(string dataFile, ICore mCore)
        {
            modelCore = mCore;
            InputParameterParser parser = new InputParameterParser();
            parameters = Landis.Data.Load<IInputParameters>(dataFile, parser);

            // Add local event handler for cohorts death due to age-only
            // disturbances.
            Cohort.AgeOnlyDeathEvent += CohortKilledByAgeOnlyDisturbance;

        }
        //---------------------------------------------------------------------

        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");
        }
        //---------------------------------------------------------------------
        /// <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("");

        }