Beispiel #1
0
        public static void InitialiseModelsForConstituent(RiverSystemScenario s, Constituent c)
        {
            ConstituentsManagement cm = s.Network.ConstituentsManagement;

            cm.Elements.OfType <NetworkElementConstituentData>().ForEachItem(d =>
            {
                if (d.Data == null)
                {
                    d.Data = new ConstituentsModel();
                }

                d.Data.GetModel(c, DefaultSourceSinkType(d));
                if (!d.Data.ConstituentPlayedValues.Any(cpv => cpv.Constituent == c))
                {
                    d.Data.ConstituentPlayedValues.Add(new ConstituentPlayedValue(c)
                    {
                        PlayedType = ConstituentPlayedValue.ConstituentPlayedType.varConcentration
                    });
                }
                d.Reset(cm, false, null, ScenarioType.RiverManager);
            });

            foreach (var catchment in s.Network.Catchments.OfType <Catchment>())
            {
                foreach (var functionalUnit in catchment.FunctionalUnits.OfType <StandardFunctionalUnit>())
                {
                    InitialiseConstituentSources(s, catchment, functionalUnit, c);
                }
            }
        }
Beispiel #2
0
        private static void InitialiseConstituentSources(RiverSystemScenario scenario, Catchment catchment, StandardFunctionalUnit fu, Constituent constituent)
        {
            ConstituentsManagement        cm               = scenario.Network.ConstituentsManagement;
            FunctionalUnitConstituentData model            = cm.GetConstituentData <CatchmentElementConstituentData>(catchment).GetFunctionalUnitData(fu);
            ConstituentContainer          constituentModel = model.ConstituentModels.SingleOrDefault(f => f.Constituent.Equals(constituent));

            if (constituentModel == null)
            {
                constituentModel = new ConstituentContainer(constituent);
                model.ConstituentModels.Add(constituentModel);
            }

#if V3 || V4_0 || V4_1 || V4_2 || V4_3
            if (constituentModel.ConstituentSources.Count == scenario.SystemConfiguration.ConstituentSources.Count)
            {
                return;
            }
#else
            if (constituentModel.ConstituentSources.Length == scenario.SystemConfiguration.ConstituentSources.Count)
            {
                return;
            }
#endif

            scenario.SystemConfiguration.ConstituentSources.ForEachItem(cs =>
            {
                if (constituentModel.ConstituentSources.Any(csc => csc.ConstituentSource == cs))
                {
                    return;
                }
#if V3 || V4_0 || V4_1 || V4_2 || V4_3
                constituentModel.ConstituentSources.Add(new ConstituentSourceContainer(cs, new NilConstituent(), new PassThroughFilter()));
#else
                constituentModel.AddConstituentSources(new ConstituentSourceContainer(cs, new NilConstituent(), new PassThroughFilter()));
#endif
            });

            /*
             * var defaultConstituentSource = scenario.SystemConfiguration.ConstituentSources.First(cs => cs.IsDefault);
             #if V3 || V4_0 || V4_1 || V4_2 || V4_3_0
             *          constituentModel.ConstituentSources.Add(new ConstituentSourceContainer(defaultConstituentSource, new NilConstituent(), new PassThroughFilter()));
             #else
             *          constituentModel.AddConstituentSources(new ConstituentSourceContainer(defaultConstituentSource, new NilConstituent(), new PassThroughFilter()));
             #endif
             */
        }
Beispiel #3
0
        public static void EnsureElementsHaveConstituentProviders(RiverSystemScenario scenario)
        {
            Network network           = scenario.Network;
            ConstituentsManagement cm = network.ConstituentsManagement;

            Action <INetworkElement> ensure = element =>
            {
                cm.NetworkElementAdded(element, null);
            };

            network.Nodes.ForEachItem(ensure);
            network.Links.ForEachItem(ensure);

            /*
             *              var element = sender as INetworkElement;
             * if (element != null && !_elementsDictionary.ContainsKey(element))
             *  _elementsDictionary.Add(element, ElementDataFactory.GetNetworkElementConstituentData(element));
             */
        }