protected override void EngineUpdateSources() { TimeSet timeSet = new TimeSet(); timeSet.SetSingleTimeStamp(_engine.GetCurrentTime()); List <double> values = new List <double>(); foreach (ITimeSpaceOutput item in ActiveSources) { values.Clear(); values.Add(_engine.GetFlow(_branchIndexs[item])); if (item is ItemOutBase) { ((ItemOutBase)item).Update(timeSet, values); // Update dependent decorators foreach (ITimeSpaceAdaptedOutput decorator in item.AdaptedOutputs) { decorator.Refresh(); } } else { throw new InvalidCastException("OutputItemBase"); } } }
protected override void EngineUpdateFromTargets() { TimeSet timeSet = new TimeSet(); timeSet.SetSingleTimeStamp(_gwEngine.CurrentTime); foreach (ITimeSpaceInput item in ActiveTargets) { if (item is ItemInBase) { ((ItemInBase)item).Update(timeSet); } else { throw new InvalidCastException("InputItemBase"); } // TODO (ADH) Presumption is item contains 1 and only 1 // set of values, at the update time, when is this false? Debug.Assert(item.TimeSet.Times.Count == 1); double[] v = new double[ValueSet.GetElementCount(item.Values)]; item.Values.GetElementValuesForTime(0).CopyTo(v, 0); if (item is Inflow) { _gwEngine.SetInflows(v); } else { throw new NotImplementedException("EngineUpdateFromTargets"); } } }
public ItemInDoubleBase(string id, ITimeSet componentTimeExtent, double defaultValue, double timeTolerance) : base(id) { TimeSet ts = new TimeSet(); ts.HasDurations = false; ts.OffsetFromUtcInHours = 0; double startTime = componentTimeExtent.TimeHorizon.StampAsModifiedJulianDay; ts.TimeHorizon = componentTimeExtent.TimeHorizon; ts.SetSingleTimeStamp(startTime); _currentTimeSet = ts; _defaultValue = defaultValue; _timeTolerance = timeTolerance; DefaultValues(); ValidTimeSet(_currentTimeSet); ValidValue(Values); }
protected override void EngineUpdateSources() { TimeSet timeSet = new TimeSet(); timeSet.SetSingleTimeStamp(_gwEngine.CurrentTime); List <double> values = new List <double>(); foreach (ITimeSpaceOutput item in ActiveSources) { values.Clear(); if (item is AquiferLevel) { values.AddRange(_gwEngine.GetAquiferLevels()); } else if (item is AquiferStorage) { values.AddRange(_gwEngine.GetAquiferStorage()); } else { throw new NotImplementedException(); } if (item is ItemOutBase) { ((ItemOutBase)item).Update(timeSet, values); foreach (ITimeSpaceAdaptedOutput decorator in item.AdaptedOutputs) { decorator.Refresh(); } } else { throw new InvalidCastException("OutputItemBase"); } } }
protected override void EngineUpdateFromTargets() { TimeSet timeSet = new TimeSet(); timeSet.SetSingleTimeStamp(_engine.GetCurrentTime()); foreach (ITimeSpaceInput item in ActiveTargets) { if (item is ItemInBase) { ((ItemInBase)item).Update(timeSet); } else { throw new InvalidCastException("InputItemBase"); } // TODO (ADH) Presumption is item contains 1 and only 1 // set of values, at the update time, when is this false? Debug.Assert(item.TimeSet.Times.Count == 1); Debug.Assert(ValueSet.GetElementCount(item.Values) == 1); if (item is InflowAtNode) { _engine.SetExternalNodeInflow( _nodeIndexs[item], (double)item.Values.GetElementValuesForTime(0)[0]); } else if (item is GroundWaterLevelAtNode) { _engine.SetGroundWaterLevel( _nodeIndexs[item], (double)item.Values.GetElementValuesForTime(0)[0]); } else { throw new NotImplementedException("EngineUpdateFromTargets"); } } }