public override void Initialize()
        {
            Status = LinkableComponentStatus.Initializing;

            Id = "Rainfall Measurements";

            _adaptedOutputFactories = new List <IAdaptedOutputFactory>();
            _adaptedOutputFactories.Add(new AdaptedOutputFactory("RainRRCFTestAdaptedOutput"));

            // Create measurements
            _timeSet =
                new RainfallMeasurementsTimeSet(_MeasurementCount, _measurementsStartTimeAsMJD, _measurementsEndTimeAsMJD);

            IDictionary <string, IElementSet> elementSets = RainRrCfElementSets.CreateRainfallMeasurementsElementSets();

            const string rainId = "Rain";
            Quantity     rainfallValueDefinition = new Quantity(new Unit("mm/day", 1.15741E-08, 0), rainId,
                                                                "Rainfall in mm/day");
            double startValue = 100;

            foreach (ElementSet elmSet in elementSets.Values)
            {
                Output outputItem = new RainfallOutputItem(elmSet.Caption + "." + rainId, startValue)
                {
                    ValueDefinition   = rainfallValueDefinition,
                    SpatialDefinition = elmSet,
                    TimeSet           = _timeSet,
                    Component         = this,
                };
                _outputItems.Add(outputItem);
                startValue += 300;
            }
            Status = LinkableComponentStatus.Initialized;
        }
예제 #2
0
        public override void Initialize()
        {
            Status = LinkableComponentStatus.Initializing;

            foreach (IArgument argument in Arguments)
            {
                if (argument.Caption.ToLower().Equals("id"))
                {
                    Id = (string)argument.Value;
                }
                else if (argument.Caption.ToLower().Equals("timehorizonoffset"))
                {
                    double timeHorizonOffset = Double.Parse((string)argument.Value);
                    _startTimeAsMJD += timeHorizonOffset;
                    _endTimeAsMJD   += timeHorizonOffset;
                }
                else if (argument.Caption.ToLower().Equals("deltaT"))
                {
                    _deltaT = Double.Parse((string)argument.Value);
                }
                else if (argument.Caption.ToLower().Equals("quantity"))
                {
                    AddQuantity((string)argument.Value);
                }
                else if (argument.Caption.ToLower().Equals("elementset"))
                {
                    if (argument.Value.Equals("catchment-polygons"))
                    {
                        IDictionary <string, IElementSet> spatialElmSets =
                            RainRrCfElementSets.CreateRainfallRunoffElementSets();
                        foreach (var spatialElmSet in spatialElmSets)
                        {
                            _elementSets.Add(spatialElmSet.Key, spatialElmSet.Value);
                        }
                    }
                    else
                    {
                        AddElementset((string)argument.Value);
                    }
                }
                else if (argument.Caption.ToLower().EndsWith("putitem"))
                {
                    AddExchangeItem(argument.Caption.ToLower(), (string)argument.Value);
                }
                else
                {
                    throw new Exception("Unknown key \"" + argument.Caption + "\" in component " + Id);
                }
            }

            _currentTime = _startTimeAsMJD;

            _timeSetForOutputExchangeItems = new TimeSet();
            _timeSetForInputExchangeItems  = new TimeSet();

            _timeSetForInputExchangeItems.TimeHorizon      =
                _timeSetForOutputExchangeItems.TimeHorizon =
                    new Time(_startTimeAsMJD, _endTimeAsMJD - _startTimeAsMJD);

            _adaptedOutputFactories = new List <IAdaptedOutputFactory>();
            _adaptedOutputFactories.Add(new AdaptedOutputFactory("AdaptedOutputFactory for " + Id));

            foreach (EngineInputItem inputItem in EngineInputItems)
            {
                inputItem.TimeSet = _timeSetForInputExchangeItems;
            }
            foreach (EngineOutputItem outputItem in EngineOutputItems)
            {
                outputItem.TimeSet = _timeSetForOutputExchangeItems;
            }

            Status = LinkableComponentStatus.Initialized;
        }