//---------------------------------------------------------------------

        /// <summary>
        /// Computes the initial biomass at a site.
        /// </summary>
        /// <param name="site">
        /// The selected site.
        /// </param>
        /// <param name="initialCommunity">
        /// The initial community of age cohorts at the site.
        /// </param>
        public static InitialBiomass Compute(ActiveSite site,
                                             ICommunity initialCommunity)
        {
            IEcoregion     ecoregion = PlugIn.ModelCore.Ecoregion[site];
            uint           key       = ComputeKey(initialCommunity.MapCode, ecoregion.MapCode);
            InitialBiomass initialBiomass;

            if (initialSites.TryGetValue(key, out initialBiomass))
            {
                return(initialBiomass);
            }

            //  If we don't have a sorted list of age cohorts for the initial
            //  community, make the list
            List <Landis.Library.AgeOnlyCohorts.ICohort> sortedAgeCohorts;

            if (!sortedCohorts.TryGetValue(initialCommunity.MapCode, out sortedAgeCohorts))
            {
                sortedAgeCohorts = SortCohorts(initialCommunity.Cohorts);
                sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts;
            }

            SiteCohorts cohorts = MakeBiomassCohorts(sortedAgeCohorts, site);

            initialBiomass = new InitialBiomass(cohorts,
                                                SiteVars.WoodyDebris[site],
                                                SiteVars.Litter[site]);
            initialSites[key] = initialBiomass;
            return(initialBiomass);
        }
        //---------------------------------------------------------------------

        public void InitializeSites(string initialCommunities,
                                    string initialCommunitiesMap)
        {
            Log.Info("Loading initial communities from file \"{0}\" ...", initialCommunities);
            InitialCommunities.DatasetParser parser      = new InitialCommunities.DatasetParser();
            InitialCommunities.IDataset      communities = Data.Load <InitialCommunities.IDataset>(initialCommunities, parser);

            Log.Info("Reading initial communities map \"{0}\" ...", initialCommunitiesMap);
            IInputRaster <InitialCommunities.Pixel> map;

            map = Util.Raster.Open <InitialCommunities.Pixel>(initialCommunitiesMap);
            using (map) {
                foreach (Site site in Model.Landscape.AllSites)
                {
                    InitialCommunities.Pixel pixel = map.ReadPixel();
                    ActiveSite activeSite          = site as ActiveSite;
                    if (activeSite == null)
                    {
                        continue;
                    }
                    byte       mapCode   = pixel.Band0;
                    ICommunity community = communities.Find(mapCode);
                    if (community == null)
                    {
                        throw Util.Raster.PixelException(activeSite.Location,
                                                         "Unknown map code for initial community: {0}",
                                                         mapCode);
                    }
                    InitializeSite(activeSite, community);
                }
            }
        }
예제 #3
0
        //---------------------------------------------------------------------

        protected override void InitializeSite(ActiveSite site,
                                               ICommunity initialCommunity)
        {
            InitialBiomass initialBiomass = InitialBiomass.Compute(site, initialCommunity);

            SiteVars.MineralN[site] = Parameters.InitialMineralN;
        }
        public override void InitializeSites(string initialCommunitiesText, string initialCommunitiesMap, ICore modelCore)
        {
            ModelCore.UI.WriteLine("   Loading initial communities from file \"{0}\" ...", initialCommunitiesText);
            Landis.Library.InitialCommunities.DatasetParser parser      = new Landis.Library.InitialCommunities.DatasetParser(Timestep, ModelCore.Species);
            Landis.Library.InitialCommunities.IDataset      communities = Landis.Data.Load <Landis.Library.InitialCommunities.IDataset>(initialCommunitiesText, parser);

            ModelCore.UI.WriteLine("   Reading initial communities map \"{0}\" ...", initialCommunitiesMap);
            IInputRaster <uintPixel> map;

            map = ModelCore.OpenRaster <uintPixel>(initialCommunitiesMap);
            using (map)
            {
                uintPixel pixel = map.BufferPixel;
                foreach (Site site in ModelCore.Landscape.AllSites)
                {
                    map.ReadBufferPixel();
                    uint mapCode = pixel.MapCode.Value;
                    if (!site.IsActive)
                    {
                        continue;
                    }

                    ActiveSite activeSite = (ActiveSite)site;
                    initialCommunity = communities.Find(mapCode);
                    if (initialCommunity == null)
                    {
                        throw new ApplicationException(string.Format("Unknown map code for initial community: {0}", mapCode));
                    }

                    InitializeSite(activeSite); //, community);
                }
            }
        }
예제 #5
0
        //---------------------------------------------------------------------

        public override void InitializeSites(string initialCommunities,
                                             string initialCommunitiesMap)
        {
            UI.WriteLine("Loading initial communities from file \"{0}\" ...", initialCommunities);
            InitialCommunities.DatasetParser parser      = new InitialCommunities.DatasetParser(Timestep, Model.Core.Species);
            InitialCommunities.IDataset      communities = Data.Load <InitialCommunities.IDataset>(initialCommunities, parser);

            UI.WriteLine("Reading initial communities map \"{0}\" ...", initialCommunitiesMap);
            IInputRaster <InitialCommunities.Pixel> map;

            map = Model.Core.OpenRaster <InitialCommunities.Pixel>(initialCommunitiesMap);
            using (map) {
                foreach (Site site in Model.Core.Landscape.AllSites)
                {
                    InitialCommunities.Pixel pixel = map.ReadPixel();
                    ActiveSite activeSite          = site as ActiveSite;
                    if (activeSite == null)
                    {
                        continue;
                    }
                    ushort     mapCode   = pixel.Band0;
                    ICommunity community = communities.Find(mapCode);
                    if (community == null)
                    {
                        throw new PixelException(activeSite.Location,
                                                 "Unknown map code for initial community: {0}",
                                                 mapCode);
                    }
                    InitializeSite(activeSite, community);
                }
            }

            base.Cohorts = Model.Core.SuccessionCohorts;
        }
예제 #6
0
        //---------------------------------------------------------------------
        protected override void InitializeSite(ActiveSite site)//,ICommunity initialCommunity)
        {
            lock (threadLock)
            {
                if (m == null)
                {
                    m = new MyClock(PlugIn.ModelCore.Landscape.ActiveSiteCount);
                }

                m.Next();
                m.WriteUpdate();
            }

            uint key = 0;

            allKeys.TryGetValue(site, out key);
            ICommunity initialCommunity = null;

            if (!sitesAndCommunities.TryGetValue(site, out initialCommunity))
            {
                throw new ApplicationException(string.Format("Unable to retrieve initialCommunity for site: {0}", site.Location.Row + "," + site.Location.Column));
            }

            if (!SiteCohorts.InitialSitesContainsKey(key))
            {
                // Create new sitecohorts from scratch
                SiteVars.SiteCohorts[site] = new SiteCohorts(StartDate, site, initialCommunity, UsingClimateLibrary, PlugIn.InitialCommunitiesSpinup, SiteOutputNames.ContainsKey(site) ? SiteOutputNames[site] : null);
            }
            else
            {
                // Create new sitecohorts using initialcommunities data
                SiteVars.SiteCohorts[site] = new SiteCohorts(StartDate, site, initialCommunity, SiteOutputNames.ContainsKey(site) ? SiteOutputNames[site] : null);
            }
        }
예제 #7
0
 public static string DetailsUrl(ICommunity community, SearchType searchtype)
 {
     return(searchtype.FluentUrl().State(community.Address.StateCode).City(community.Address.City)
            .Name(community.Name)
            .DetailsId(community.Id)
            .Url());
 }
        //---------------------------------------------------------------------

        protected override void InitializeSite(ActiveSite site,
                                               ICommunity initialCommunity)
        {
            InitialBiomass initialBiomass = InitialBiomass.Compute(site, initialCommunity);

            SiteVars.Cohorts[site] = InitialBiomass.Clone(initialBiomass.Cohorts);
            //IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site];

            SiteVars.SurfaceDeadWood[site]   = initialBiomass.SurfaceDeadWood.Clone();
            SiteVars.SurfaceStructural[site] = initialBiomass.SurfaceStructural.Clone();
            SiteVars.SurfaceMetabolic[site]  = initialBiomass.SurfaceMetabolic.Clone();

            SiteVars.SoilDeadWood[site]   = initialBiomass.SoilDeadWood.Clone();
            SiteVars.SoilStructural[site] = initialBiomass.SoilStructural.Clone();
            SiteVars.SoilMetabolic[site]  = initialBiomass.SoilMetabolic.Clone();

            SiteVars.SOM1surface[site] = initialBiomass.SOM1surface.Clone();
            SiteVars.SOM1soil[site]    = initialBiomass.SOM1soil.Clone();
            SiteVars.SOM2[site]        = initialBiomass.SOM2.Clone();
            SiteVars.SOM3[site]        = initialBiomass.SOM3.Clone();

            SiteVars.MineralN[site]     = initialBiomass.MineralN;
            SiteVars.CohortLeafC[site]  = initialBiomass.CohortLeafC;
            SiteVars.CohortFRootC[site] = initialBiomass.CohortFRootC;
            SiteVars.CohortLeafN[site]  = initialBiomass.CohortLeafN;
            SiteVars.CohortFRootN[site] = initialBiomass.CohortFRootN;
            SiteVars.CohortWoodC[site]  = initialBiomass.CohortWoodC;
            SiteVars.CohortCRootC[site] = initialBiomass.CohortCRootC;
            SiteVars.CohortWoodN[site]  = initialBiomass.CohortWoodN;
            SiteVars.CohortCRootN[site] = initialBiomass.CohortCRootN;
        }
예제 #9
0
        //---------------------------------------------------------------------

        protected override void InitializeSite(ActiveSite site,
                                               ICommunity initialCommunity)
        {
            InitialBiomass initialBiomass = InitialBiomass.Compute(site, initialCommunity);

            SiteVars.Cohorts[site]     = InitialBiomass.Clone(initialBiomass.Cohorts); //.Clone();
            SiteVars.WoodyDebris[site] = initialBiomass.DeadWoodyPool.Clone();
            SiteVars.Litter[site]      = initialBiomass.DeadNonWoodyPool.Clone();
        }
예제 #10
0
 public void LiveLifeFrame(ICommunity community)
 {
     if (Health.Value > 0)
     {
         HaveThoughts();
         PerformActions();
         //++Iteration;
         Updated?.Invoke(this, this);
     }
 }
예제 #11
0
        public SiteConditions(ActiveSite site, ICommunity initialCommunity)
        {
            cohorts = new SiteCohorts();

            canopy = new Canopy();
            if (PlugIn.HasSiteOutput[site] == true)
            {
                siteoutput = new SiteOutput(site);
                estoutput  = new EstablishmentOutput(site);
            }

            this.site = site;


            foreach (ISpecies spc in PlugIn.modelCore.Species)
            {
                deadcohortages[spc] = new List <int>();
            }

            uint key = ComputeKey(initialCommunity.MapCode, PlugIn.ModelCore.Ecoregion[site].MapCode);

            SiteConditions s = GetFromKey(key);

            if (s != null)
            {
                return;
            }

            //  If we don't have a sorted list of age cohorts for the initial
            //  community, make the list

            List <Landis.Library.AgeOnlyCohorts.ICohort> sortedAgeCohorts;

            if (!sortedCohorts.TryGetValue(initialCommunity.MapCode, out sortedAgeCohorts))
            {
                sortedAgeCohorts = PlugIn.RankCohortAgesOldToYoung(initialCommunity.Cohorts);
                sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts;
            }
            hydrology     = new Hydrology(PlugIn.modelCore.Ecoregion[site]);
            forestfloor   = new ForestFloor();
            cohorts       = new SiteCohorts();
            establishment = new EstablishmentProbability(site);


            if (sortedAgeCohorts.Count == 0)
            {
                return;
            }

            //PlugIn.ModelCore.UI.WriteLine("Making Biomass Cohorts "+ site);
            BiomassSpinUp(sortedAgeCohorts, site);

            initialSites[key] = this;
            return;
        }
예제 #12
0
 public bool IsValidCommunity(ICommunity <TVertex> community)
 {
     foreach (var vertex in community)
     {
         if (!_graph.Contains(vertex))
         {
             return(false);
         }
     }
     return(true);
 }
예제 #13
0
 public static string GetLabel(this IFollowable followable)
 {
     return(followable switch
     {
         IUser user => user.Nickname,
         Video.ITag tag => tag.Tag,
         IChannel channel => channel.Name,
         IMylist mylist => mylist.Name,
         ICommunity community => community.Name,
         _ => throw new NotSupportedException(followable?.GetType().Name),
     });
예제 #14
0
        private static List <DocumentSegment> DocumentSegments(string text, ICommunity community)
        {
            List <DocumentSegment> segments = new List <DocumentSegment>();

            while (!String.IsNullOrEmpty(text))
            {
                int segmentLength = Math.Min(512, text.Length);
                segments.Add(community.AddFact(new DocumentSegment(text.Substring(0, segmentLength))));
                text = text.Substring(segmentLength);
            }
            return(segments);
        }
        //---------------------------------------------------------------------

        /// <summary>
        /// Computes the initial biomass at a site.
        /// </summary>
        /// <param name="site">
        /// The selected site.
        /// </param>
        /// <param name="initialCommunity">
        /// The initial community of age cohorts at the site.
        /// </param>

        public static InitialBiomass ComputeInitialBiomass(ActiveSite site,
                                                           ICommunity initialCommunity)
        {
            InitialBiomass initialBiomass;

            IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site];
            uint       key       = ComputeKey(initialCommunity.MapCode, ecoregion.MapCode);

            if (initialSites.TryGetValue(key, out initialBiomass) && HasSiteOutput[site] == false)
            {
                CanopyBiomass.CanopyLAImax[site]    = initialBiomass.canopylaimax;
                CanopyBiomass.CanopyLAI[site]       = initialBiomass.canopylai;
                Hydrology.Water[site]               = initialBiomass.water;
                Hydrology.AnnualTranspiration[site] = initialBiomass.annualtrans;
                CanopyBiomass.SubCanopyPAR[site]    = initialBiomass.subcanopypar;
                return(initialBiomass);
            }


            //  If we don't have a sorted list of age cohorts for the initial
            //  community, make the list

            List <Landis.Library.AgeOnlyCohorts.ICohort> sortedAgeCohorts;

            if (!sortedCohorts.TryGetValue(initialCommunity.MapCode, out sortedAgeCohorts))
            {
                sortedAgeCohorts = PlugIn.RankCohortAgesOldToYoung(initialCommunity.Cohorts);
                sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts;
            }

            if (sortedAgeCohorts.Count == 0)
            {
                return(null);
            }

            ISiteCohorts cohorts = MakeBiomassCohorts(sortedAgeCohorts, site);



            initialBiomass = new InitialBiomass(cohorts,
                                                ForestFloor.WoodyDebris[site],
                                                ForestFloor.Litter[site],
                                                Hydrology.Water[site],
                                                Hydrology.AnnualTranspiration[site],
                                                CanopyBiomass.CanopyLAI[site],
                                                CanopyBiomass.CanopyLAImax[site],
                                                CanopyBiomass.SubCanopyPAR[site]);


            initialSites[key] = initialBiomass;
            return(initialBiomass);
        }
예제 #16
0
 public static string GetLabel(this INiconicoObject obj)
 {
     return(obj switch
     {
         IVideoContent video => video.Title,
         ILiveContent live => live.Title,
         ICommunity community => community.Name,
         IChannel channel => channel.Name,
         IMylist mylist => mylist.Name,
         ITag tag => tag.Tag,
         IUser user => user.Nickname,
         _ => throw new NotSupportedException(obj.ToString())
     });
예제 #17
0
        //---------------------------------------------------------------------

        /// <summary>
        /// Initializes an active site's cohorts based on the site's initial
        /// community, specified by its map code.
        /// </summary>
        protected void InitializeSite(ActiveSite activeSite,
                                      ushort mapCode)
        {
            ICommunity community = communities.Find(mapCode);

            if (community == null)
            {
                throw new PixelException(activeSite.Location,
                                         "Unknown map code for initial community: {0}",
                                         mapCode);
            }
            InitializeSite(activeSite, community);
        }
예제 #18
0
        public int GetEdgeCount(ICommunity <TVertex> community)
        {
            if (community == null)
            {
                throw new ArgumentNullException("Community shouldn't be null.");
            }
            int edgeCount = GetEdgeCount(community, community);

            if (!_graph.IsDirected)
            {
                edgeCount = (edgeCount + _graph.GetSelfloopCount()) / 2;
            }
            return(edgeCount);
        }
예제 #19
0
        public int GetEdgeCount(ICommunity <TVertex> fromCommunity, TVertex toVertex)
        {
            int edgeCount = 0;

            if (fromCommunity == null)
            {
                throw new ArgumentNullException("Community shouldn't be null.");
            }
            foreach (var vertex in fromCommunity)
            {
                edgeCount += _graph.EdgeCountBetween(vertex, toVertex);
            }
            return(edgeCount);
        }
예제 #20
0
        public static void SetString <T>(
            this TransientDisputable <T, IEnumerable <DocumentSegment> > property,
            string value,
            Action <TransientDisputable <T, IEnumerable <DocumentSegment> > > assign,
            ICommunity community)
            where T : CorrespondenceFact
        {
            List <DocumentSegment> segments = DocumentSegments(value, community);

            if (!SegmentsEqual(property.Ensure().Value, segments))
            {
                assign(segments);
            }
        }
예제 #21
0
        public int GetEdgeCount(ICommunity <TVertex> fromCommunity, ICommunity <TVertex> toCommunity)
        {
            int edgeCount = 0;

            if (fromCommunity == null || toCommunity == null)
            {
                throw new ArgumentNullException("Community shouldn't be null.");
            }
            foreach (var vertex in fromCommunity)
            {
                edgeCount += GetEdgeCount(vertex, toCommunity);
            }

            return(edgeCount);
        }
예제 #22
0
        //---------------------------------------------------------------------
        public static ISiteCohorts MakeBiomassCohorts(ICommunity initComm, ActiveSite site)
        {
            IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site];

            SiteVars.Cohorts[site] = new Library.LeafBiomassCohorts.SiteCohorts();

            foreach (ISpeciesCohorts cohorts in initComm.Cohorts)
            {
                foreach (ICohort cohort in cohorts)
                {
                    SiteVars.Cohorts[site].AddNewCohort(cohort.Species, cohort.Age, cohort.WoodBiomass, cohort.LeafBiomass);
                }
            }
            return(SiteVars.Cohorts[site]);
        }
예제 #23
0
        //---------------------------------------------------------------------

        protected override void InitializeSite(ActiveSite site,
                                               ICommunity initialCommunity)
        {
            int swhc = (int)((SiteVars.SoilFieldCapacity[site] - SiteVars.SoilWiltingPoint[site]) * SiteVars.SoilDepth[site]);

            if (!PlugIn.SWHC_List.Contains(swhc))
            {
                PlugIn.SWHC_List.Add(swhc);
            }
            //PlugIn.ModelCore.UI.WriteLine("SWHC = {0}", swhc);

            InitialBiomass initialBiomass = InitialBiomass.Compute(site, initialCommunity);

            SiteVars.MineralN[site] = parameters.InitialMineralN;
        }
예제 #24
0
        //---------------------------------------------------------------------
        protected override void InitializeSite(ActiveSite site,
                                               ICommunity initialCommunity)
        {
            InitialBiomass initialBiomass = InitialBiomass.ComputeInitialBiomass(site, initialCommunity);


            if (initialBiomass == null)
            {
                PlugIn.cohorts[site] = new SiteCohorts();
                return;
            }

            PlugIn.Cohorts[site]          = InitialBiomass.Clone(site, initialBiomass.Cohorts);
            ForestFloor.WoodyDebris[site] = initialBiomass.DeadWoodyPool.Clone();
            ForestFloor.Litter[site]      = initialBiomass.DeadNonWoodyPool.Clone();
        }
 public AuthenticationController(IOptions <Core.Emailer> settingsOptions,
                                 IOptions <Core.GoogleReCaptcha> options,
                                 IEndUser endUser,
                                 IMember member,
                                 ICommunity community,
                                 EF.AARSContext context,
                                 IMapper mapper)
 {
     smtp                   = settingsOptions.Value;
     captcha                = options.Value;
     this.context           = context;
     this.endUserBusiness   = endUser;
     this.memberBusiness    = member;
     this.communityBusiness = community;
     this.mapper            = mapper;
 }
예제 #26
0
        public int GetEdgeCount(TVertex fromVertex, ICommunity <TVertex> toCommunity)
        {
            if (toCommunity == null)
            {
                throw new ArgumentNullException("Community shouldn't be null.");
            }
            int edgeCount = 0;

            foreach (var edge in _graph.OutEdges(fromVertex))
            {
                if (toCommunity.Contains(edge.Target))
                {
                    edgeCount++;
                }
            }
            return(edgeCount);
        }
 private static Conference DefineConference(ICommunity community, Catalog catalog, string name, string imageUrl, DateTime startDate, DateTime endDate, string city)
 {
     var conference = community.AddFact(new Conference());
     var header = community.AddFact(new ConferenceHeader(catalog, conference));
     header.Name = name;
     header.ImageUrl = imageUrl;
     header.StartDate = startDate;
     header.EndDate = endDate;
     header.City = city;
     header.Address = "111 Main Street";
     header.HomePageUrl = "awesomefest.com";
     header.Description.SetString(
         "Awesomeness!! Go to AwesomeFest!!!",
         value => header.Description = value,
         community);
     return conference;
 }
예제 #28
0
        public void Communities_Timestep10()
        {
            reader = OpenFile("Communities.txt");
            IDataset dataset = parser.Parse(reader);

            ICommunity community = dataset.Find(100);

            Assert.IsNotNull(community);
            ISpeciesCohorts <AgeCohort.ICohort> oakCohorts = community.Cohorts[oak];

            Assert.AreEqual(5, oakCohorts.Count);
            Assert.AreEqual(10, oakCohorts[0]);
            Assert.AreEqual(20, oakCohorts[1]);
            Assert.AreEqual(30, oakCohorts[2]);
            Assert.AreEqual(100, oakCohorts[3]);
            Assert.AreEqual(150, oakCohorts[4]);
        }
        public SiteConditions(ActiveSite site, ICommunity initialCommunity)
        {
            cohorts = new SiteCohorts();

            canopy = new Canopy();
            if (PlugIn.HasSiteOutput[site] == true)
            {
                siteoutput = new SiteOutput(site);
                estoutput = new EstablishmentOutput(site);
            }

            this.site = site;

            foreach (ISpecies spc in PlugIn.modelCore.Species)
            {
                deadcohortages[spc] = new List<int>();
            }

            uint key = ComputeKey(initialCommunity.MapCode, PlugIn.ModelCore.Ecoregion[site].MapCode);

            SiteConditions s = GetFromKey(key);

            if (s != null) return;

            //  If we don't have a sorted list of age cohorts for the initial
            //  community, make the list

            List<Landis.Library.AgeOnlyCohorts.ICohort> sortedAgeCohorts;
            if (!sortedCohorts.TryGetValue(initialCommunity.MapCode, out sortedAgeCohorts))
            {
                sortedAgeCohorts = PlugIn.RankCohortAgesOldToYoung(initialCommunity.Cohorts);
                sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts;
            }
            hydrology = new Hydrology(PlugIn.modelCore.Ecoregion[site]);
            forestfloor = new ForestFloor();
            cohorts = new SiteCohorts();
            establishment = new EstablishmentProbability(site);

            if (sortedAgeCohorts.Count == 0) return;

            //PlugIn.ModelCore.UI.WriteLine("Making Biomass Cohorts "+ site);
            BiomassSpinUp(sortedAgeCohorts, site);

            initialSites[key] = this;
            return;
        }
예제 #30
0
        private static Conference DefineConference(ICommunity community, Catalog catalog, string name, string imageUrl, DateTime startDate, DateTime endDate, string city)
        {
            var conference = community.AddFact(new Conference());
            var header     = community.AddFact(new ConferenceHeader(catalog, conference));

            header.Name        = name;
            header.ImageUrl    = imageUrl;
            header.StartDate   = startDate;
            header.EndDate     = endDate;
            header.City        = city;
            header.Address     = "111 Main Street";
            header.HomePageUrl = "awesomefest.com";
            header.Description.SetString(
                "Awesomeness!! Go to AwesomeFest!!!",
                value => header.Description = value,
                community);
            return(conference);
        }
예제 #31
0
        //---------------------------------------------------------------------

        /// <summary>
        /// Initializes this class.
        /// </summary>
        /// <param name="timestep">
        /// The plug-in's timestep.  It is used for growing biomass cohorts.
        /// </param>
        //public static void Initialize(int timestep)
        //{
        //    //successionTimestep = (ushort) timestep;
        //}

        //---------------------------------------------------------------------

        /// <summary>
        /// Computes the initial biomass at a site.
        /// </summary>
        /// <param name="site">
        /// The selected site.
        /// </param>
        /// <param name="initialCommunity">
        /// The initial community of age cohorts at the site.
        /// </param>
        public static InitialBiomass Compute(ActiveSite site,
                                             ICommunity initialCommunity)
        {
            IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site];

            if (!ecoregion.Active)
            {
                string mesg = string.Format("Initial community {0} is located on a non-active ecoregion {1}", initialCommunity.MapCode, ecoregion.Name);
                throw new System.ApplicationException(mesg);
            }

            InitialBiomass initialBiomass;
            ISiteCohorts   cohorts = MakeBiomassCohorts(initialCommunity, site);

            initialBiomass = new InitialBiomass(cohorts);

            return(initialBiomass);
        }
예제 #32
0
        private static void DefineConferenceSessions(ICommunity community, Conference conference)
        {
            var developer = community.AddFact(new Track(conference));

            developer.Name = "Developer";

            var michael = community.AddFact(new Speaker(conference));

            michael.Name     = "Michael L Perry";
            michael.ImageUrl = "http://qedcode.com/extras/Perry_Headshot_Medium.jpg";
            michael.Contact  = "@michaellperry";
            michael.Bio.SetString(
                "Software is math. Michael L Perry has built upon the works of mathematicians like Bertrand Meyer, James Rumbaugh, and Donald Knuth to develop a mathematical system for software development. He has captured this system in a set of open source projects, Update Controls and Correspondence. As a Principal Consultant at Improving Enterprises, he applies mathematical concepts to building scalable and robust enterprise systems. You can find out more at qedcode.com.",
                v => michael.Bio = v,
                community);

            var provable = community.AddFact(new Session(michael));

            provable.Title = "4 Ways to Prevent Code Abuse";
            provable.Description.SetString(
                "Your code is right. Other people are just using it wrong!" +
                "Learn 4 simple techniques to prevent people from using your code incorrectly. We'll apply those techniques to a class in the .NET Framework that is really easy to get wrong. By the time we're done, you'll have to try really hard to mess it up." +
                "Some APIs will throw exceptions when you get something wrong. That's not helpful! I'll show you how to write an API that guides you toward correct code. It won't even compile unless you get it right." +
                "These 4 techniques are built into the C# language today, so take advantage of them! Everybody on your team will thank you. And you'll spend less time fixing their bugs.",
                v => provable.Description = v,
                community);

            community.AddFact(new SessionTrack(provable, developer, new List <SessionTrack>()));

            var eight = community.AddFact(new Time(conference));

            eight.StartTime = new DateTime(2013, 7, 12, 8, 0, 0, DateTimeKind.Local);

            var room100 = community.AddFact(new Room(conference));

            room100.RoomNumber = "100";

            var room100AtEight = community.AddFact(new Slot(eight, room100));

            community.AddFact(new SessionSlot(provable, room100AtEight, new List <SessionSlot>()));
        }
예제 #33
0
        public void Initialize()
        {
            MemoryCommunicationStrategy sharedCommunication = new MemoryCommunicationStrategy();
            _serverCommunity = new Community(new MemoryStorageStrategy())
                .AddCommunicationStrategy(sharedCommunication)
                .Register<CorrespondenceModel>()
                .Subscribe(() => _service);
            _clientCommunity = new Community(new MemoryStorageStrategy())
                .AddCommunicationStrategy(sharedCommunication)
                .Register<CorrespondenceModel>()
                .Subscribe(() => _identity.Claims)
                .Subscribe(() => _identity);
            _otherClientCommunity = new Community(new MemoryStorageStrategy())
                .AddCommunicationStrategy(sharedCommunication)
                .Register<CorrespondenceModel>()
                .Subscribe(() => _otherIdentity.Claims);

            _service = _serverCommunity.AddFact(new IdentityService());
            _identity = _clientCommunity.AddFact(new Identity("liveid:12345"));
            _otherIdentity = _otherClientCommunity.AddFact(new Identity("liveid:12345"));
        }
        public static ConferenceListViewModel Create(string environment, ICommunity community, ConferenceSelection conferenceSelection)
        {
            var catalog = community.AddFact(new Catalog(environment));

            if (LoadSampleData && !catalog.ConferenceHeaders.Ensure().Any())
            {
                DefineConference(
                    community,
                    catalog,
                    "Cowtown Code Camp 2013",
                    "http://cdn.marketplaceimages.windowsphone.com/v8/images/2a24b5e4-d79a-448e-8818-4040ff0d51a6?imageType=ws_icon_large",
                    new DateTime(2013, 3, 17),
                    new DateTime(2013, 3, 17),
                    "Fort Worth, TX");
                DefineConference(
                    community,
                    catalog,
                    "AwesomeFest 2014",
                    "http://files.g4tv.com/ImageDb3/284724_S/darth-vader-rock-guitarist.jpg",
                    new DateTime(2014, 2, 27),
                    new DateTime(2014, 2, 28),
                    "Allen, TX");
                var conference = DefineConference(
                    community,
                    catalog,
                    "That Conference 2013",
                    "http://www.thatconference.com/Images/mainLogo.png",
                    new DateTime(2013, 8, 16),
                    new DateTime(2013, 8, 19),
                    "Wisconsin Dells, WI");
                DefineConferenceSessions(community, conference);
            }

            Func<ConferenceHeader, ConferenceHeaderViewModel> makeConferenceHeaderViewModel =
                conferenceHeader =>
                    new ConferenceHeaderViewModel(conferenceHeader);

            return new ConferenceListViewModel(catalog, conferenceSelection, makeConferenceHeaderViewModel);
        }
        private static void DefineConferenceSessions(ICommunity community, Conference conference)
        {
            var developer = community.AddFact(new Track(conference));
            developer.Name = "Developer";

            var michael = community.AddFact(new Speaker(conference));
            michael.Name = "Michael L Perry";
            michael.ImageUrl = "http://qedcode.com/extras/Perry_Headshot_Medium.jpg";
            michael.Contact = "@michaellperry";
            michael.Bio.SetString(
                "Software is math. Michael L Perry has built upon the works of mathematicians like Bertrand Meyer, James Rumbaugh, and Donald Knuth to develop a mathematical system for software development. He has captured this system in a set of open source projects, Update Controls and Correspondence. As a Principal Consultant at Improving Enterprises, he applies mathematical concepts to building scalable and robust enterprise systems. You can find out more at qedcode.com.",
                v => michael.Bio = v,
                community);

            var provable = community.AddFact(new Session(michael));
            provable.Title = "4 Ways to Prevent Code Abuse";
            provable.Description.SetString(
                "Your code is right. Other people are just using it wrong!" +
                "Learn 4 simple techniques to prevent people from using your code incorrectly. We'll apply those techniques to a class in the .NET Framework that is really easy to get wrong. By the time we're done, you'll have to try really hard to mess it up." +
                "Some APIs will throw exceptions when you get something wrong. That's not helpful! I'll show you how to write an API that guides you toward correct code. It won't even compile unless you get it right." +
                "These 4 techniques are built into the C# language today, so take advantage of them! Everybody on your team will thank you. And you'll spend less time fixing their bugs.",
                v => provable.Description = v,
                community);

            community.AddFact(new SessionTrack(provable, developer, new List<SessionTrack>()));

            var eight = community.AddFact(new Time(conference));
            eight.StartTime = new DateTime(2013, 7, 12, 8, 0, 0, DateTimeKind.Local);

            var room100 = community.AddFact(new Room(conference));
            room100.RoomNumber = "100";

            var room100AtEight = community.AddFact(new Slot(eight, room100));

            community.AddFact(new SessionSlot(provable, room100AtEight, new List<SessionSlot>()));
        }
        //---------------------------------------------------------------------
        /// <summary>
        /// Computes the initial biomass at a site.
        /// </summary>
        /// <param name="site">
        /// The selected site.
        /// </param>
        /// <param name="initialCommunity">
        /// The initial community of age cohorts at the site.
        /// </param>
        public static InitialBiomass Compute(ActiveSite site,
            ICommunity initialCommunity)
        {
            IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site];
            uint key = ComputeKey(initialCommunity.MapCode, ecoregion.MapCode);
            InitialBiomass initialBiomass;
            if (initialSites.TryGetValue(key, out initialBiomass))
                return initialBiomass;

            //  If we don't have a sorted list of age cohorts for the initial
            //  community, make the list
            List<Landis.Library.AgeOnlyCohorts.ICohort> sortedAgeCohorts;
            if (!sortedCohorts.TryGetValue(initialCommunity.MapCode, out sortedAgeCohorts))
            {
                sortedAgeCohorts = SortCohorts(initialCommunity.Cohorts);
                sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts;
            }

            SiteCohorts cohorts = MakeBiomassCohorts(sortedAgeCohorts, site);
            initialBiomass = new InitialBiomass(cohorts,
                                                SiteVars.WoodyDebris[site],
                                                SiteVars.Litter[site]);
            initialSites[key] = initialBiomass;
            return initialBiomass;
        }
        //---------------------------------------------------------------------
        protected override void InitializeSite(ActiveSite site,
                                               ICommunity initialCommunity)
        {
            InitialBiomass initialBiomass = InitialBiomass.Compute(site, initialCommunity);

            SiteVars.Cohorts[site] = initialBiomass.Cohorts.Clone();
            SiteVars.WoodyDebris[site] = initialBiomass.DeadWoodyPool.Clone();
            SiteVars.Litter[site] = initialBiomass.DeadNonWoodyPool.Clone();
        }
예제 #38
0
 //---------------------------------------------------------------------
 protected override void InitializeSite(ActiveSite site,
     ICommunity initialCommunity)
 {
     SiteVars.Cohorts[site] = new SiteCohorts(initialCommunity.Cohorts);
     /*if (SiteVars.Cohorts[site].HasAge())
     {
         //UI.WriteLine("System Error");
         throw new System.InvalidOperationException("Incompatible extensions given in the scenario file:  Age data required for this extension to operate.");
     }*/
 }
예제 #39
0
 //---------------------------------------------------------------------
 protected override void InitializeSite(ActiveSite site,
     ICommunity initialCommunity)
 {
     InitialBiomass initialBiomass = InitialBiomass.Compute(site, initialCommunity);
     cohorts[site] = initialBiomass.Cohorts.Clone();
     Dead.Pools.Woody[site] = initialBiomass.DeadWoodyPool;
     Dead.Pools.NonWoody[site] = initialBiomass.DeadNonWoodyPool;
 }
        //---------------------------------------------------------------------

        protected override void InitializeSite(ActiveSite site,
                                               ICommunity initialCommunity)
        {
        }
예제 #41
0
        //---------------------------------------------------------------------
        protected override void InitializeSite(ActiveSite site,
            ICommunity initialCommunity)
        {
            InitialBiomass initialBiomass = InitialBiomass.Compute(site, initialCommunity);

            //Clone initial cohorts
            SiteVars.Cohorts[site] = initialBiomass.InitialCohorts.Clone();

            //Clone initial coarse roots to all sites
            SiteVars.CoarseRoots[site].Mass = initialBiomass.CoarseRootsPool.Mass;
            SiteVars.CoarseRoots[site].ContentC = initialBiomass.CoarseRootsPool.ContentC;
            SiteVars.CoarseRoots[site].ContentN = initialBiomass.CoarseRootsPool.ContentN;
            SiteVars.CoarseRoots[site].ContentP = initialBiomass.CoarseRootsPool.ContentP;

            //Clone initial fine roots to all sites
            SiteVars.FineRoots[site].Mass = initialBiomass.FineRootsPool.Mass;
            SiteVars.FineRoots[site].ContentC = initialBiomass.FineRootsPool.ContentC;
            SiteVars.FineRoots[site].ContentN = initialBiomass.FineRootsPool.ContentN;
            SiteVars.FineRoots[site].ContentP = initialBiomass.FineRootsPool.ContentP;

            //Clone initial woody debris to all sites
            SiteVars.WoodyDebris[site].Mass = initialBiomass.WoodyDebrisPool.Mass;
            SiteVars.WoodyDebris[site].ContentC = initialBiomass.WoodyDebrisPool.ContentC;
            SiteVars.WoodyDebris[site].ContentN = initialBiomass.WoodyDebrisPool.ContentN;
            SiteVars.WoodyDebris[site].ContentP = initialBiomass.WoodyDebrisPool.ContentP;
            SiteVars.WoodyDebris[site].DecayValue = initialBiomass.WoodyDebrisPool.DecayValue;

            //Clone initial litter to all sites
            if (SiteVars.Litter[site].Count == 0)
            {
                foreach (PoolD litter in initialBiomass.LitterPool)
                {
                    PoolD litterAdd = new PoolD();
                    litterAdd.Mass = litter.Mass;
                    litterAdd.ContentC = litter.ContentC;
                    litterAdd.ContentN = litter.ContentN;
                    litterAdd.ContentP = litter.ContentP;
                    litterAdd.DecayValue = litter.DecayValue;
                    litterAdd.InitialMass = litter.InitialMass;
                    litterAdd.LimitValue = litter.LimitValue;
                    SiteVars.Litter[site].Add(litterAdd);
                }
            }

            //Clone initial dead fine roots to all sites
            if (SiteVars.DeadFineRoots[site].Count == 0)
            {
                foreach (PoolD litter in initialBiomass.DeadFRootsPool)
                {
                    PoolD litterAdd = new PoolD();
                    litterAdd.Mass = litter.Mass;
                    litterAdd.ContentC = litter.ContentC;
                    litterAdd.ContentN = litter.ContentN;
                    litterAdd.ContentP = litter.ContentP;
                    litterAdd.DecayValue = litter.DecayValue;
                    litterAdd.InitialMass = litter.InitialMass;
                    litterAdd.LimitValue = litter.LimitValue;
                    SiteVars.DeadFineRoots[site].Add(litterAdd);
                }
            }

            //Clone initial charcoal to all sites
            SiteVars.Charcoal[site].ContentC = initialBiomass.CharcoalPool.ContentC;
            SiteVars.Charcoal[site].ContentN = initialBiomass.CharcoalPool.ContentN;
            SiteVars.Charcoal[site].ContentP = initialBiomass.CharcoalPool.ContentP;
        }
        //---------------------------------------------------------------------
        /// <summary>
        /// Computes the initial biomass at a site.
        /// </summary>
        /// <param name="site">
        /// The selected site.
        /// </param>
        /// <param name="initialCommunity">
        /// The initial community of age cohorts at the site.
        /// </param>
        public static InitialBiomass ComputeInitialBiomass(ActiveSite site,
                                             ICommunity initialCommunity)
        {
            InitialBiomass initialBiomass;

            IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site];
            uint key = ComputeKey(initialCommunity.MapCode, ecoregion.MapCode);

            if (initialSites.TryGetValue(key, out initialBiomass) && HasSiteOutput[site]==false)
            {
                CanopyBiomass.CanopyLAImax[site] = initialBiomass.canopylaimax;
                CanopyBiomass.CanopyLAI[site] = initialBiomass.canopylai;
                Hydrology.Water[site] = initialBiomass.water;
                Hydrology.AnnualTranspiration[site] = initialBiomass.annualtrans;
                CanopyBiomass.SubCanopyPAR[site] = initialBiomass.subcanopypar;
                return initialBiomass;
            }

            //  If we don't have a sorted list of age cohorts for the initial
            //  community, make the list

            List<Landis.Library.AgeOnlyCohorts.ICohort> sortedAgeCohorts;
            if (!sortedCohorts.TryGetValue(initialCommunity.MapCode, out sortedAgeCohorts))
            {
                sortedAgeCohorts = PlugIn.RankCohortAgesOldToYoung(initialCommunity.Cohorts);
                sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts;
            }

            if (sortedAgeCohorts.Count == 0) return null;

            ISiteCohorts cohorts = MakeBiomassCohorts(sortedAgeCohorts, site);

            initialBiomass = new InitialBiomass(cohorts,
                                                ForestFloor.WoodyDebris[site],
                                                ForestFloor.Litter[site],
                                                Hydrology.Water[site],
                                                Hydrology.AnnualTranspiration[site],
                                                CanopyBiomass.CanopyLAI[site],
                                                CanopyBiomass.CanopyLAImax[site],
                                                CanopyBiomass.SubCanopyPAR[site]);

            initialSites[key] = initialBiomass;
            return initialBiomass;
        }
        //---------------------------------------------------------------------
        /// <summary>
        /// Computes the initial biomass at a site.
        /// </summary>
        /// <param name="site">
        /// The selected site.
        /// </param>
        /// <param name="initialCommunity">
        /// The initial community of age cohorts at the site.
        /// </param>
        public static InitialBiomass Compute(ActiveSite site,
            ICommunity initialCommunity)
        {
            IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site];

            if (!ecoregion.Active)
            {
                string mesg = string.Format("Initial community {0} is located on a non-active ecoregion {1}", initialCommunity.MapCode, ecoregion.Name);
                throw new System.ApplicationException(mesg);
            }

            uint key = ComputeKey(initialCommunity.MapCode, ecoregion.MapCode);
            InitialBiomass initialBiomass;
            if (initialSites.TryGetValue(key, out initialBiomass))
                return initialBiomass;

            //  If we don't have a sorted list of age cohorts for the initial
            //  community, make the list
            List<Landis.Library.AgeOnlyCohorts.ICohort> sortedAgeCohorts;
            if (! sortedCohorts.TryGetValue(initialCommunity.MapCode, out sortedAgeCohorts)) {
                sortedAgeCohorts = SortCohorts(initialCommunity.Cohorts);
                sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts;
            }

            ISiteCohorts cohorts = MakeBiomassCohorts(sortedAgeCohorts, site);
            initialBiomass = new InitialBiomass(
                        cohorts,

                        SiteVars.SurfaceDeadWood[site],
                        SiteVars.SurfaceStructural[site],
                        SiteVars.SurfaceMetabolic[site],

                        SiteVars.SoilDeadWood[site],
                        SiteVars.SoilStructural[site],
                        SiteVars.SoilMetabolic[site],

                        SiteVars.SOM1surface[site],
                        SiteVars.SOM1soil[site],
                        SiteVars.SOM2[site],
                        SiteVars.SOM3[site],

                        SiteVars.MineralN[site],
                        SiteVars.CohortLeafC[site],
                        SiteVars.CohortFRootC[site],
                        SiteVars.CohortLeafN[site],
                        SiteVars.CohortFRootN[site],
                        SiteVars.CohortWoodC[site],
                         SiteVars.CohortCRootC[site],
                        SiteVars.CohortWoodN[site],
                        SiteVars.CohortCRootN[site]
                        );

            initialSites[key] = initialBiomass;
            return initialBiomass;
        }
        //---------------------------------------------------------------------
        /// <summary>
        /// Computes the initial biomass at a site.
        /// </summary>
        /// <param name="site">
        /// The selected site.
        /// </param>
        /// <param name="initialCommunity">
        /// The initial community of age cohorts at the site.
        /// </param>
        public static InitialBiomass Compute(ActiveSite site,
            ICommunity initialCommunity)
        {
            IEcoregion ecoregion = Model.Core.Ecoregion[site];
            uint key = ComputeKey(initialCommunity.MapCode, ecoregion.MapCode);
            InitialBiomass initialBiomass;
            if (initialSites.TryGetValue(key, out initialBiomass))
                return initialBiomass;

            //  If we don't have a sorted list of age cohorts for the initial
            //  community, make the list
            List<AgeCohort.ICohort> sortedAgeCohorts;
            if (! sortedCohorts.TryGetValue(initialCommunity.MapCode, out sortedAgeCohorts)) {
                sortedAgeCohorts = SortCohorts(initialCommunity.Cohorts);
                sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts;
            }

            SiteCohorts cohorts = MakeBiomassCohorts(sortedAgeCohorts, site);
            initialBiomass = new InitialBiomass(cohorts,
                                                Dead.Pools.Woody[site],
                                                Dead.Pools.NonWoody[site]);
            initialSites[key] = initialBiomass;
            return initialBiomass;
        }
        //---------------------------------------------------------------------
        protected override void InitializeSite(ActiveSite site,
                                               ICommunity initialCommunity)
        {
            //SpeciesData.CalculateNGrowthLimits(site);

            InitialBiomass initialBiomass = InitialBiomass.Compute(site, initialCommunity);
            SiteVars.SiteCohorts[site] = initialBiomass.Cohorts.Clone();

            SiteVars.SurfaceDeadWood[site]       = initialBiomass.SurfaceDeadWood.Clone();
            SiteVars.SurfaceStructural[site]     = initialBiomass.SurfaceStructural.Clone();
            SiteVars.SurfaceMetabolic[site]      = initialBiomass.SurfaceMetabolic.Clone();

            SiteVars.SoilDeadWood[site]          = initialBiomass.SoilDeadWood.Clone();
            SiteVars.SoilStructural[site]        = initialBiomass.SoilStructural.Clone();
            SiteVars.SoilMetabolic[site]         = initialBiomass.SoilMetabolic.Clone();

            SiteVars.SOM1surface[site]           = initialBiomass.SOM1surface.Clone();
            SiteVars.SOM1soil[site]              = initialBiomass.SOM1soil.Clone();
            SiteVars.SOM2[site]                  = initialBiomass.SOM2.Clone();
            SiteVars.SOM3[site]                  = initialBiomass.SOM3.Clone();

            SiteVars.MineralN[site]              = initialBiomass.MineralN;
            SiteVars.CohortLeafC[site]           = initialBiomass.CohortLeafC;
            SiteVars.CohortLeafN[site]           = initialBiomass.CohortLeafN;
            SiteVars.CohortWoodC[site]           = initialBiomass.CohortWoodC;
            SiteVars.CohortWoodN[site]           = initialBiomass.CohortWoodN;
        }
예제 #46
0
 //---------------------------------------------------------------------
 protected override void InitializeSite(ActiveSite site,
     ICommunity initialCommunity)
 {
     cohorts[site] = new SiteCohorts(initialCommunity.Cohorts);
 }
        //---------------------------------------------------------------------
        protected override void InitializeSite(ActiveSite site,
                                               ICommunity initialCommunity)
        {
            InitialBiomass initialBiomass = InitialBiomass.Compute(site, initialCommunity);
            SiteVars.Cohorts[site] = InitialBiomass.Clone(initialBiomass.Cohorts); //.Clone();

            SiteVars.SurfaceDeadWood[site]       = initialBiomass.SurfaceDeadWood.Clone();
            SiteVars.SurfaceStructural[site]     = initialBiomass.SurfaceStructural.Clone();
            SiteVars.SurfaceMetabolic[site]      = initialBiomass.SurfaceMetabolic.Clone();

            SiteVars.SoilDeadWood[site]          = initialBiomass.SoilDeadWood.Clone();
            SiteVars.SoilStructural[site]        = initialBiomass.SoilStructural.Clone();
            SiteVars.SoilMetabolic[site]         = initialBiomass.SoilMetabolic.Clone();

            SiteVars.SOM1surface[site]           = initialBiomass.SOM1surface.Clone();
            SiteVars.SOM1soil[site]              = initialBiomass.SOM1soil.Clone();
            SiteVars.SOM2[site]                  = initialBiomass.SOM2.Clone();
            SiteVars.SOM3[site]                  = initialBiomass.SOM3.Clone();

            SiteVars.MineralN[site]              = initialBiomass.MineralN;
            SiteVars.CohortLeafC[site]           = initialBiomass.CohortLeafC;
            SiteVars.CohortLeafN[site]           = initialBiomass.CohortLeafN;
            SiteVars.CohortWoodC[site]           = initialBiomass.CohortWoodC;
            SiteVars.CohortWoodN[site]           = initialBiomass.CohortWoodN;
        }
 //---------------------------------------------------------------------
 protected override void InitializeSite(ActiveSite site,
                                        ICommunity initialCommunity)
 {
     siteconditions[site] = new SiteConditions(site, initialCommunity);
 }
        protected override void InitializeSite(ActiveSite site,
                                               ICommunity initialCommunity)
        {
            if (m == null)
            {
                m = new MyClock(PlugIn.ModelCore.Landscape.ActiveSiteCount);
            }

            m.Next();
            m.WriteUpdate();

            //float EstimatedTotalTime = (float)(100.0 / Percentage * (sw.ElapsedMilliseconds / 1000.0));
            //Console.Write("\rInitialization progress {0}% Elapsed time {1} Estimated total time {2}   ", System.String.Format("{0:0.00}", Percentage), Math.Round(sw.ElapsedMilliseconds / 1000F, 0), Math.Round(EstimatedTotalTime, 0));

            SiteCohorts identicalsitecohort = GetFromKey(initialCommunity.MapCode, PlugIn.ModelCore.Ecoregion[site].MapCode, site);

            // Create new sitecohorts
            if(SiteOutputNames.ContainsKey(site))
            {
                sitecohorts[site] = new SiteCohorts(StartDate,
                                                   site,
                                                   initialCommunity,
                                                    SiteOutputNames[site]);

            }
            else if (identicalsitecohort != null)
            {
                // Copy existing site data
                sitecohorts[site] = new SiteCohorts(identicalsitecohort, site);
            }
            // Create new sitecohorts
            else
            {
                sitecohorts[site] = new SiteCohorts(StartDate,
                                                    site,
                                                    initialCommunity);

            }
            CanopyLAImax[site] = sitecohorts[site].CanopyLAImax;
            WoodyDebris[site] = sitecohorts[site].WoodyDebris;
            Litter[site] = sitecohorts[site].Litter;
            SubCanopyParMaxGrowingSeason[site] = sitecohorts[site].SubCanopyParMAX;
            WaterMaxGrowingSeason[site] = sitecohorts[site].WaterMAX;
        }
 //---------------------------------------------------------------------
 /// <summary>
 /// Initializes an active site's cohorts using a specific initial
 /// community.
 /// </summary>
 protected abstract void InitializeSite(ActiveSite site,
     ICommunity initialCommunity);
예제 #51
0
        //---------------------------------------------------------------------

        public void Add(ICommunity community)
        {
            communities.Add(community.MapCode, community);
        }
        //---------------------------------------------------------------------
        /// <summary>
        /// Computes the initial biomass at a site.
        /// </summary>
        /// <param name="site">
        /// The selected site.
        /// </param>
        /// <param name="initialCommunity">
        /// The initial community of age cohorts at the site.
        /// </param>
        public static InitialBiomass Compute(ActiveSite site,
            ICommunity initialCommunity)
        {
            IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site];
            uint key = ComputeKey(initialCommunity.MapCode, ecoregion.MapCode);
            InitialBiomass initialBiomass;
            if (initialSites.TryGetValue(key, out initialBiomass))
                return initialBiomass;

            //  If we don't have a sorted list of age cohorts for the initial
            //  community, make the list
            List<Landis.Library.AgeOnlyCohorts.ICohort> sortedAgeCohorts;
            if (! sortedCohorts.TryGetValue(initialCommunity.MapCode, out sortedAgeCohorts)) {
                sortedAgeCohorts = SortCohorts(initialCommunity.Cohorts);
                sortedCohorts[initialCommunity.MapCode] = sortedAgeCohorts;
            }

            ISiteCohorts cohorts = MakeBiomassCohorts(sortedAgeCohorts, site);
            initialBiomass = new InitialBiomass(
                        cohorts,

                        SiteVars.SurfaceDeadWood[site],
                        SiteVars.SurfaceStructural[site],
                        SiteVars.SurfaceMetabolic[site],

                        SiteVars.SoilDeadWood[site],
                        SiteVars.SoilStructural[site],
                        SiteVars.SoilMetabolic[site],

                        SiteVars.SOM1surface[site],
                        SiteVars.SOM1soil[site],
                        SiteVars.SOM2[site],
                        SiteVars.SOM3[site],

                        SiteVars.MineralN[site],
                        SiteVars.CohortLeafC[site],
                        SiteVars.CohortLeafN[site],
                        SiteVars.CohortWoodC[site],
                        SiteVars.CohortWoodN[site]
                        );

            initialSites[key] = initialBiomass;
            return initialBiomass;
        }
 //---------------------------------------------------------------------
 public void Add(ICommunity community)
 {
     communities.Add(community);
 }
        //---------------------------------------------------------------------
        protected override void InitializeSite(ActiveSite site,
                                               ICommunity initialCommunity)
        {
            InitialBiomass initialBiomass = InitialBiomass.Compute(site, initialCommunity);
            SiteVars.Cohorts[site] = InitialBiomass.Clone(initialBiomass.Cohorts);
            //IEcoregion ecoregion = PlugIn.ModelCore.Ecoregion[site];

            SiteVars.SurfaceDeadWood[site]       = initialBiomass.SurfaceDeadWood.Clone();
            SiteVars.SurfaceStructural[site]     = initialBiomass.SurfaceStructural.Clone();
            SiteVars.SurfaceMetabolic[site]      = initialBiomass.SurfaceMetabolic.Clone();

            SiteVars.SoilDeadWood[site]          = initialBiomass.SoilDeadWood.Clone();
            SiteVars.SoilStructural[site]        = initialBiomass.SoilStructural.Clone();
            SiteVars.SoilMetabolic[site]         = initialBiomass.SoilMetabolic.Clone();

            SiteVars.SOM1surface[site]           = initialBiomass.SOM1surface.Clone();
            SiteVars.SOM1soil[site]              = initialBiomass.SOM1soil.Clone();
            SiteVars.SOM2[site]                  = initialBiomass.SOM2.Clone();
            SiteVars.SOM3[site]                  = initialBiomass.SOM3.Clone();

            SiteVars.MineralN[site]              = initialBiomass.MineralN;
            SiteVars.CohortLeafC[site]           = initialBiomass.CohortLeafC;
            SiteVars.CohortFRootC[site]           = initialBiomass.CohortFRootC;
            SiteVars.CohortLeafN[site]           = initialBiomass.CohortLeafN;
            SiteVars.CohortFRootN[site]            = initialBiomass.CohortFRootN;
            SiteVars.CohortWoodC[site]           = initialBiomass.CohortWoodC;
            SiteVars.CohortCRootC[site]          = initialBiomass.CohortCRootC;
            SiteVars.CohortWoodN[site]           = initialBiomass.CohortWoodN;
            SiteVars.CohortCRootN[site]          = initialBiomass.CohortCRootN;

            //// Override the spin-up soil C and N values with the contemporary data
            //// provided in the intialization file.
            //SiteVars.SOM1surface[site].Carbon       = parameters.InitialSOM1surfC[ecoregion];
            //SiteVars.SOM1surface[site].Nitrogen     = parameters.InitialSOM1surfN[ecoregion];
            //SiteVars.SOM1soil[site].Carbon          = parameters.InitialSOM1soilC[ecoregion];
            //SiteVars.SOM1soil[site].Nitrogen        = parameters.InitialSOM1soilN[ecoregion];
            //SiteVars.SOM2[site].Carbon              = parameters.InitialSOM2C[ecoregion];
            //SiteVars.SOM2[site].Nitrogen            = parameters.InitialSOM2N[ecoregion];
            //SiteVars.SOM3[site].Carbon              = parameters.InitialSOM3C[ecoregion];
            //SiteVars.SOM3[site].Nitrogen            = parameters.InitialSOM3N[ecoregion];
            //SiteVars.MineralN[site]                 = parameters.InitialMineralN[ecoregion];
        }
        //---------------------------------------------------------------------
        protected override void InitializeSite(ActiveSite site,
                                               ICommunity initialCommunity)
        {
            InitialBiomass initialBiomass = InitialBiomass.ComputeInitialBiomass(site, initialCommunity);

            if (initialBiomass == null)
            {
                PlugIn.cohorts[site] = new SiteCohorts();
                return;
            }

            PlugIn.Cohorts[site] = InitialBiomass.Clone(site, initialBiomass.Cohorts);
            ForestFloor.WoodyDebris[site] = initialBiomass.DeadWoodyPool.Clone();
            ForestFloor.Litter[site] = initialBiomass.DeadNonWoodyPool.Clone();
        }