Exemplo n.º 1
0
        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");
                }
            }
        }
Exemplo n.º 2
0
        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");
                }
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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");
                }
            }
        }
Exemplo n.º 5
0
        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");
                }
            }
        }