Landis.BDA.Epidemic.DisturbSites C# (CSharp) Method

DisturbSites() private method

private DisturbSites ( IAgent agent ) : void
agent IAgent
return void
        private void DisturbSites(IAgent agent)
        {
            int totalSiteSeverity = 0;
            int siteCohortsKilled = 0;
            int[] cohortsKilled = new int[2];

            foreach (ActiveSite site in Model.Core.Landscape) 
            {
                siteCohortsKilled = 0;
                this.siteSeverity = 0;

                if(agent.OutbreakZone[site] == Zone.Newzone 
                    && SiteVars.Vulnerability[site] > Random.GenerateUniform())
                {
                    double vulnerability = SiteVars.Vulnerability[site];
            
                    if(vulnerability >= 0) this.siteSeverity= 1;
            
                    if(vulnerability >= 0.33) this.siteSeverity= 2;
            
                    if(vulnerability >= 0.66) this.siteSeverity= 3;

                    if(this.siteSeverity > 0)
                        cohortsKilled = Damage(site);
                        
                    siteCohortsKilled = cohortsKilled[0];
                    
                    //int[] temp = SiteVars.NumberCFSconifersKilled[site];
                    //temp[Model.Core.CurrentTime] = cohortsKilled[1];
                    //SiteVars.NumberCFSconifersKilled[site] = temp;
                    SiteVars.NumberCFSconifersKilled[site].Add(Model.Core.CurrentTime, cohortsKilled[1]);
                    
                    //for(int i=0; i<=Model.Core.EndTime; i++)
                    //    UI.WriteLine("temp Cohorts Killed = {0}. i={1}", SiteVars.NumberCFSconifersKilled[site][i], i);
                        
                    
                    //UI.WriteLine("Number Site Cohorts Killed = {0}.  CFS Killed = {1}.", cohortsKilled[0], cohortsKilled[1]);
                    //UI.WriteLine("SiteVars.CFS Killed = {0}, Time = {1}.", SiteVars.NumberCFSconifersKilled[site][Model.Core.CurrentTime], Model.Core.CurrentTime);
                    
                    if (siteCohortsKilled > 0) 
                    {
                        this.totalCohortsKilled += siteCohortsKilled;
                        this.totalSitesDamaged++;
                        totalSiteSeverity += this.siteSeverity;
                        SiteVars.Disturbed[site] = true;
                        SiteVars.TimeOfLastEvent[site] = Model.Core.CurrentTime;
                    } else
                        this.siteSeverity = 0;
                }
                agent.Severity[site] = (byte) this.siteSeverity;
            }
            this.meanSeverity = (double) totalSiteSeverity / (double) this.totalSitesDamaged;
        }

Usage Example

Ejemplo n.º 1
0
        //---------------------------------------------------------------------
        ///<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);

            UI.WriteLine("   New BDA Epidemic Activated:  {0}.", agent.AgentName);

            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 Model.Core.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);
        }
All Usage Examples Of Landis.BDA.Epidemic::DisturbSites