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