//--------------------------------------------------------------------- public override void LoadParameters(string dataFile, ICore mCore) { modelCore = mCore; SiteVars.Initialize(); InputParameterParser parser = new InputParameterParser(); parameters = Landis.Data.Load <IInputParameters>(dataFile, parser); }
///<summary> /// Run the plug-in at a particular timestep. ///</summary> public override void Run() { PlugIn.ModelCore.UI.WriteLine(" Processing landscape for Fire events ..."); SiteVars.InitializeDisturbances(Timestep); SiteVars.Event.SiteValues = null; SiteVars.Severity.ActiveSiteValues = 0; SiteVars.Disturbed.ActiveSiteValues = false; // Update the FireRegions Map as necessary: foreach (IDynamicFireRegion dyneco in dynamicEcos) { if (dyneco.Year == PlugIn.modelCore.CurrentTime) { PlugIn.ModelCore.UI.WriteLine(" Reading in new Fire Regions Map {0}.", dyneco.MapName); FireRegions.ReadMap(dyneco.MapName); } } foreach (IFireRegion fireregion in FireRegions.Dataset) { summaryFireRegionEventCount[fireregion.Index] = 0; } summaryTotalSites = 0; summaryEventCount = 0; foreach (ActiveSite site in PlugIn.modelCore.Landscape) { Event FireEvent = Event.Initiate(site, PlugIn.modelCore.CurrentTime, Timestep); if (FireEvent != null) { LogEvent(PlugIn.modelCore.CurrentTime, FireEvent); summaryEventCount++; } } // Write Fire severity map string path = MapNames.ReplaceTemplateVars(mapNameTemplate, PlugIn.modelCore.CurrentTime); using (IOutputRaster <BytePixel> outputRaster = modelCore.CreateRaster <BytePixel>(path, modelCore.Landscape.Dimensions)) { BytePixel pixel = outputRaster.BufferPixel; foreach (Site site in modelCore.Landscape.AllSites) { if (site.IsActive) { if (SiteVars.Disturbed[site]) { pixel.MapCode.Value = (byte)(SiteVars.Severity[site] + 1); } else { pixel.MapCode.Value = 1; } } else { // Inactive site pixel.MapCode.Value = 0; } outputRaster.WriteBufferPixel(); } } WriteSummaryLog(PlugIn.modelCore.CurrentTime); }