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); } } }
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 */ }
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)); */ }