//---------------------------------------------------------------------
///<summary>
/// Run the BDA extension at a particular timestep.
///</summary>
public override void Run()
{
PlugIn.ModelCore.UI.WriteLine(" Processing landscape for BDA events ...");
if (!reinitialized)
{
InitializePhase2();
}
//SiteVars.Epidemic.SiteValues = null;
int eventCount = 0;
foreach (IAgent activeAgent in manyAgentParameters)
{
activeAgent.TimeSinceLastEpidemic += Timestep;
int ROS = RegionalOutbreakStatus(activeAgent, Timestep);
if (ROS > 0)
{
Epidemic.Initialize(activeAgent);
Epidemic currentEpic = Epidemic.Simulate(activeAgent,
PlugIn.ModelCore.CurrentTime,
Timestep,
ROS);
//activeAgent.TimeSinceLastEpidemic = activeAgent.TimeSinceLastEpidemic + Timestep;
if (currentEpic != null)
{
LogEvent(PlugIn.ModelCore.CurrentTime, currentEpic, ROS, activeAgent);
if (currentEpic.MeanSeverity > 0) //Temporary fix to work with VizTool
{
//----- Write BDA severity maps --------
string path = MapNames.ReplaceTemplateVars(mapNameTemplate, activeAgent.AgentName, PlugIn.ModelCore.CurrentTime);
//IOutputRaster<SeverityPixel> map = CreateMap(PlugIn.ModelCore.CurrentTime, activeAgent.AgentName);
//using (map) {
// SeverityPixel pixel = new SeverityPixel();
using (IOutputRaster <ShortPixel> outputRaster = modelCore.CreateRaster <ShortPixel>(path, modelCore.Landscape.Dimensions))
{
ShortPixel pixel = outputRaster.BufferPixel;
foreach (Site site in PlugIn.ModelCore.Landscape.AllSites)
{
if (site.IsActive)
{
if (SiteVars.Disturbed[site])
{
pixel.MapCode.Value = (short)(activeAgent.Severity[site] + 1);
}
else
{
pixel.MapCode.Value = 1;
}
}
else
{
// Inactive site
pixel.MapCode.Value = 0;
}
outputRaster.WriteBufferPixel();
}
}
}
if (!(srdMapNames == null))
{
//----- Write BDA SRD maps --------
string path2 = MapNames.ReplaceTemplateVars(srdMapNames, activeAgent.AgentName, PlugIn.ModelCore.CurrentTime);
using (IOutputRaster <ShortPixel> outputRaster = modelCore.CreateRaster <ShortPixel>(path2, modelCore.Landscape.Dimensions))
{
ShortPixel pixel = outputRaster.BufferPixel;
foreach (Site site in PlugIn.ModelCore.Landscape.AllSites)
{
if (site.IsActive)
{
pixel.MapCode.Value = (short)System.Math.Round(SiteVars.SiteResourceDom[site] * 100.00);
}
else
{
// Inactive site
pixel.MapCode.Value = 0;
}
outputRaster.WriteBufferPixel();
}
}
}
if (!(nrdMapNames == null))
{
//----- Write BDA NRD maps --------
string path3 = MapNames.ReplaceTemplateVars(nrdMapNames, activeAgent.AgentName, PlugIn.ModelCore.CurrentTime);
using (IOutputRaster <ShortPixel> outputRaster = modelCore.CreateRaster <ShortPixel>(path3, modelCore.Landscape.Dimensions))
{
ShortPixel pixel = outputRaster.BufferPixel;
foreach (Site site in PlugIn.ModelCore.Landscape.AllSites)
{
if (site.IsActive)
{
pixel.MapCode.Value = (short)System.Math.Round(SiteVars.NeighborResourceDom[site] * 100.00);
}
else
{
// Inactive site
pixel.MapCode.Value = 0;
}
outputRaster.WriteBufferPixel();
}
}
}
if (!(vulnMapNames == null))
{
//----- Write BDA Vulnerability maps --------
string path4 = MapNames.ReplaceTemplateVars(vulnMapNames, activeAgent.AgentName, PlugIn.ModelCore.CurrentTime);
using (IOutputRaster <ShortPixel> outputRaster = modelCore.CreateRaster <ShortPixel>(path4, modelCore.Landscape.Dimensions))
{
ShortPixel pixel = outputRaster.BufferPixel;
foreach (Site site in PlugIn.ModelCore.Landscape.AllSites)
{
if (site.IsActive)
{
pixel.MapCode.Value = (short)System.Math.Round(SiteVars.Vulnerability[site] * 100.00);
}
else
{
// Inactive site
pixel.MapCode.Value = 0;
}
outputRaster.WriteBufferPixel();
}
}
}
eventCount++;
}
}
}
}