//--------------------------------------------------------------------- ///<summary> ///Simulate an Epidemic - This is the controlling function that calls the ///subsequent function. The basic logic of an epidemic resides here. ///</summary> public static Epidemic Simulate(IAgent agent, int currentTime, int timestep, int ROS) { Epidemic CurrentEpidemic = new Epidemic(agent); PlugIn.ModelCore.Log.WriteLine(" New BDA Epidemic Activated."); //SiteResources.SiteResourceDominance(agent, ROS, SiteVars.Cohorts); SiteResources.SiteResourceDominance(agent, ROS); SiteResources.SiteResourceDominanceModifier(agent); if (agent.Dispersal) { //Asynchronous - Simulate Agent Dispersal // Calculate Site Vulnerability without considering the Neighborhood // If neither disturbance modifiers nor ecoregion modifiers are active, // Vulnerability will equal SiteReourceDominance. SiteResources.SiteVulnerability(agent, ROS, false); Epicenters.NewEpicenters(agent, timestep); } else { //Synchronous: assume that all Active sites can potentially be //disturbed without regard to initial locations. foreach (ActiveSite site in PlugIn.ModelCore.Landscape) { agent.OutbreakZone[site] = Zone.Newzone; } } //Consider the Neighborhood if requested: if (agent.NeighborFlag) { SiteResources.NeighborResourceDominance(agent); } //Recalculate Site Vulnerability considering neighbors if necessary: SiteResources.SiteVulnerability(agent, ROS, agent.NeighborFlag); CurrentEpidemic.DisturbSites(agent); return(CurrentEpidemic); }
//--------------------------------------------------------------------- ///<summary> ///Simulate an Epidemic - This is the controlling function that calls the ///subsequent function. The basic logic of an epidemic resides here. ///</summary> public static Epidemic Simulate(IAgent agent, int currentTime, int timestep, int ROS) { Epidemic CurrentEpidemic = new Epidemic(agent); PlugIn.ModelCore.Log.WriteLine(" New BDA Epidemic Activated."); //SiteResources.SiteResourceDominance(agent, ROS, SiteVars.Cohorts); SiteResources.SiteResourceDominance(agent, ROS); SiteResources.SiteResourceDominanceModifier(agent); if(agent.Dispersal) { //Asynchronous - Simulate Agent Dispersal // Calculate Site Vulnerability without considering the Neighborhood // If neither disturbance modifiers nor ecoregion modifiers are active, // Vulnerability will equal SiteReourceDominance. SiteResources.SiteVulnerability(agent, ROS, false); Epicenters.NewEpicenters(agent, timestep); } else { //Synchronous: assume that all Active sites can potentially be //disturbed without regard to initial locations. foreach (ActiveSite site in PlugIn.ModelCore.Landscape) agent.OutbreakZone[site] = Zone.Newzone; } //Consider the Neighborhood if requested: if (agent.NeighborFlag) SiteResources.NeighborResourceDominance(agent); //Recalculate Site Vulnerability considering neighbors if necessary: SiteResources.SiteVulnerability(agent, ROS, agent.NeighborFlag); CurrentEpidemic.DisturbSites(agent); return CurrentEpidemic; }