Beispiel #1
0
        private void openFileButton_Click(object sender, EventArgs e)
        {
            System.Windows.Forms.OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Title  = "Open time series file file";
            openFileDialog.Filter = "Open time series file (*.xts; *.xml)|*.xts; *.xml";
            openFileDialog.ShowDialog();

            if (openFileDialog.FileName.Length > 3)
            {
                if (System.IO.Path.GetExtension(openFileDialog.FileName).ToLower().Equals(".xml"))
                {
                    timeSeriesGroup = TimeSeriesGroupFactory.CreateAll(openFileDialog.FileName);
                }
                else
                {
                    timeSeriesGroup = TimeSeriesGroupFactory.Create(openFileDialog.FileName);
                }


                foreach (BaseTimeSeries timeSeries in timeSeriesGroup.Items)
                {
                    itemSelectionComboBox.Items.Add(timeSeries.Name);
                }

                itemSelectionComboBox.SelectedIndex = 0;
                OkButton.Enabled = true;
            }
        }
        public void MyTestInitialize()
        {
            filename       = "HydroNumerics.Time.OpenMI.UnitTest.LinkableTimeSeriesGroupTest.xts";
            outputFilename = "HydroNumerics.Time.OpenMI.UnitTest.LinkableTimeSeriesGroupTest.out.xts";

            TimespanSeries timespanSeries = new TimespanSeries("Flow", new System.DateTime(2010, 1, 1), 10, 2, TimestepUnit.Days, 4.3);

            timespanSeries.Unit = new HydroNumerics.Core.Unit("Liters pr. sec", 0.001, 0.0, "Liters pr second");
            timespanSeries.Unit.Dimension.Length = 3;
            timespanSeries.Unit.Dimension.Time   = -1;
            timespanSeries.Description           = "Measured Flow";
            TimestampSeries timestampSeries = new TimestampSeries("Water Level", new System.DateTime(2010, 1, 1), 6, 2, TimestepUnit.Days, 6.3);

            timestampSeries.Unit = new HydroNumerics.Core.Unit("cm", 0.01, 0.0, "centimeters");
            timestampSeries.Unit.Dimension.Length = 1;
            timestampSeries.Description           = "Measured Head";

            TimeSeriesGroup tsg = new TimeSeriesGroup();

            tsg.Name = "MyTsGroup";
            tsg.Items.Add(timespanSeries);
            tsg.Items.Add(timestampSeries);
            tsg.Save(filename);

            Argument filenameArgument       = new Argument("Filename", filename, true, "someDescription");
            Argument outputFilenameArgument = new Argument("OutputFilename", outputFilename, true, "someDescription");

            arguments = new Argument[2] {
                filenameArgument, outputFilenameArgument
            };
        }
Beispiel #3
0
        private static double GetTotalByIdAndDay(TimeSeriesGroup data, string[] ids, DateTime startDateTime)
        {
            var endDateTime = startDateTime + TimeSpan.FromDays(1);

            if (ids.Length == 1)
            {
                var timeSeries = data[ids[0]];

                if (timeSeries?.AnyBetween(startDateTime, endDateTime) == true)
                {
                    return timeSeries.TotalUntil(endDateTime);
                }
            }
            else if (ids.Length > 1)
            {
                // create a sub group of all time series
                TimeSeriesGroup group = new TimeSeriesGroup();
                foreach (var exId in ids)
                {
                    var item = data[exId];
                    if (item != null)
                    {
                        group.Add(item);
                    }
                }

                if (group.AnyBetween(startDateTime, endDateTime))
                {
                    return group.TotalUntil(endDateTime);
                }
            }

            return double.NaN;
        }
Beispiel #4
0
        public void Name()
        {
            TimeSeriesGroup timeSeriesGroup = new TimeSeriesGroup();

            timeSeriesGroup.Name = "test name";
            Assert.AreEqual("test name", timeSeriesGroup.Name);
        }
        public TimsspanSeriesPlotForm()
        {
            InitializeComponent();

            timeSeriesGroup = new TimeSeriesGroup();

            //TimestampSeries timestampSeries = new TimestampSeries();
            //timestampSeries.AddTimeValueRecord(new TimeValue(new DateTime(2010, 1, 1, 0, 0, 0), 5.0));
            //timestampSeries.AddTimeValueRecord(new TimeValue(new DateTime(2010, 1, 2, 0, 0, 0), 5.0));
            //timestampSeries.AddTimeValueRecord(new TimeValue(new DateTime(2010, 1, 3, 0, 0, 0), 5.0));

            //TimestampSeries timestampSeries1 = new TimestampSeries();
            //timestampSeries1.AddTimeValueRecord(new TimeValue(new DateTime(2010, 1, 1, 0, 0, 0), 2.0));
            //timestampSeries1.AddTimeValueRecord(new TimeValue(new DateTime(2010, 1, 2, 0, 0, 0), 2.0));
            //timestampSeries1.AddTimeValueRecord(new TimeValue(new DateTime(2010, 1, 3, 0, 0, 0), 2.0));

            TimespanSeries timespanSeries = new TimespanSeries();

            timespanSeries.Items.Add(new TimespanValue(new Timespan(new DateTime(2010, 1, 1, 0, 0, 0), new DateTime(2010, 1, 2, 0, 0, 0)), 2));
            timespanSeries.Items.Add(new TimespanValue(new Timespan(new DateTime(2010, 1, 2, 0, 0, 0), new DateTime(2010, 1, 3, 0, 0, 0)), 3));
            timespanSeries.Items.Add(new TimespanValue(new Timespan(new DateTime(2010, 1, 3, 0, 0, 0), new DateTime(2010, 1, 4, 0, 0, 0)), 6));

            //timeSeriesGroup.TimeSeriesList.Add(timestampSeries);
            //timeSeriesGroup.TimeSeriesList.Add(timestampSeries1);
            timeSeriesGroup.Items.Add(timespanSeries);
            timeSeriesPlot         = new TimeSeriesPlot(timeSeriesGroup);
            timeSeriesPlot.Visible = true;


            timeSeriesPlot.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right);
            this.Controls.Add(timeSeriesPlot);
            this.Update();
        }
Beispiel #6
0
        public void Write(IEnumerable<ITimeSeries> timeSeriesGroup, string summaryFile, SummaryConfig excelConfig)
        {
            if (timeSeriesGroup == null) throw new ArgumentNullException(nameof(timeSeriesGroup));
            if (timeSeriesGroup.Any(x => x == null)) throw new ArgumentException("IEnumerable contains null values.", nameof(timeSeriesGroup));

            if (excelConfig.Sheet == null) throw new ArgumentNullException(nameof(excelConfig.Sheet));
            if (excelConfig.Row <= 0) throw new ArgumentOutOfRangeException(nameof(excelConfig.Row), "Value must be higher than 0.");

            if (!(timeSeriesGroup is TimeSeriesGroup timeSeriesGroupInstance))
            {
                timeSeriesGroupInstance = new TimeSeriesGroup();
                timeSeriesGroupInstance.AddRange(timeSeriesGroup);
            }

            using (var excelPack = new ExcelPackage(new FileInfo(summaryFile)))
            {
                var worksheet = excelPack.Workbook.Worksheets[excelConfig.Sheet];
                if (worksheet == null)
                {
                    throw new InvalidDataException($"Table '{excelConfig.Sheet}' not found.");
                }

                var edrWorksheet = new EppWorksheet(worksheet);
                FillDataIntoTable(edrWorksheet, timeSeriesGroupInstance, excelConfig.Row);

                excelPack.Save();
            }
        }
        //=====================================================================================================
        //  Menu: File | New...
        //=====================================================================================================
        private void newToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TimeSeriesCreationDialog timeSeriesCreationDialog = new TimeSeriesCreationDialog();

            timeSeriesCreationDialog.ShowDialog();
            this.timeSeriesGroup = new TimeSeriesGroup();
            BaseTimeSeries timeseries = timeSeriesCreationDialog.TimeSeries;

            timeSeriesGroup.Items.Add(timeseries);
            if (timeseries is TimestampSeries)
            {
                this.timestampSeriesGrid.TimeSeriesData = (TimestampSeries)timeseries;
                this.timespanSeriesGrid.Visible         = false;
                this.timestampSeriesGrid.Visible        = true;
            }
            else if (timeseries is TimespanSeries)
            {
                this.timespanSeriesGrid.TimeSeriesData = (TimespanSeries)timeseries;
                this.timestampSeriesGrid.Visible       = false;
                this.timespanSeriesGrid.Visible        = true;
            }
            this.tsPlot.TimeSeriesDataSet = this.timeSeriesGroup;
            this.tsPlot.Repaint();
            this.tsPlot.Visible = true;
        }
Beispiel #8
0
        /// <summary>
        /// Small program that extracts a time series from a time variant dfs2.
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            TimespanSeries PrecipTS = new TimespanSeries();

            PrecipTS.Name        = "Precipitation";
            PrecipTS.Description = "Precipitation extracted from dfs2";
            PrecipTS.Unit        = UnitFactory.Instance.GetUnit(NamedUnits.millimeterperday);

            //Open the DFS2-file
            DFS2 precip = new DFS2(@"C:\Users\Jacob\Projekter\MikeSheWrapperForGEUS\novomr6\2-layer-filer\Standard_korrigeret_Prec_DK_10km_1990-2008.dfs2");

            //UTM-coordinates for Gjeller sø
            double XUTM = 456198;
            double YUTM = 6272321;

            //Get column and row index from UTM- coordinates
            int col = precip.GetColumnIndex(XUTM);
            int row = precip.GetRowIndex(YUTM);

            //Loop all the time steps
            for (int i = 0; i < precip.NumberOfTimeSteps; i++)
            {
                //Extract the value
                var val = precip.GetData(i, 1)[row, col];
                //Insert into timeseries
                PrecipTS.AddValue(precip.TimeSteps[i].Subtract(TimeSpan.FromDays(1)), precip.TimeSteps[i], val);
            }
            precip.Dispose();

            //Now do the same for evaporation. DFS2-file may have another grid and timesteps
            DFS2           evap   = new DFS2(@"C:\Users\Jacob\Projekter\MikeSheWrapperForGEUS\novomr6\2-layer-filer\Novana_DK_EPmak_40km_1990-1998_20km_1999-2008_ed.dfs2");
            TimespanSeries EvapTS = new TimespanSeries();

            EvapTS.Name        = "Evaporation";
            EvapTS.Description = "Evaporation extracted from dfs2";
            EvapTS.Unit        = UnitFactory.Instance.GetUnit(NamedUnits.millimeterperday);


            //Get column and row index from UTM- coordinates
            col = evap.GetColumnIndex(XUTM);
            row = evap.GetRowIndex(YUTM);

            for (int i = 0; i < evap.NumberOfTimeSteps; i++)
            {
                //Extract the value
                var val = evap.GetData(i, 1)[row, col];
                //Insert into timeseries
                EvapTS.AddValue(evap.TimeSteps[i].Subtract(TimeSpan.FromDays(1)), evap.TimeSteps[i], val);
            }


            //Put all time series into a group and save
            TimeSeriesGroup tsgroup = new TimeSeriesGroup();

            tsgroup.Items.Add(PrecipTS);
            tsgroup.Items.Add(EvapTS);
            tsgroup.Save(@"C:\Users\Jacob\Projekter\GWSW-Interaction\Gjeller Sø\climate.xts");
        }
Beispiel #9
0
        private TimeSeriesGroup CreateTimeSeriesGroup()
        {
            TimeSeriesGroup tsg = new TimeSeriesGroup();

            tsg.Items.Add(new TimestampSeries("test1", new System.DateTime(1965, 2, 3), 10, 1, TimestepUnit.Years, 1));
            tsg.Items.Add(new TimestampSeries("test2", new System.DateTime(1955, 2, 3), 10, 1, TimestepUnit.Years, 1));
            tsg.Items.Add(new TimespanSeries("test2", new System.DateTime(1967, 2, 3), 10, 1, TimestepUnit.Years, 1));

            return(tsg);
        }
        public void TimeSeriesGroup_AddNullElements_Throws()
        {
            var group = new TimeSeriesGroup();

            Assert.Throws <ArgumentNullException>(() => group.Add(null));
            Assert.Throws <ArgumentNullException>(() => group.AddRange(null));
            Assert.Throws <ArgumentException>(() => group.AddRange(new List <ITimeSeries>()
            {
                null
            }));
        }
        public void TimeSeriesGroup_Empty()
        {
            var group = new TimeSeriesGroup();

            Assert.Equal(0, group.Count);
            Assert.Null(group.FirstDataPoint);
            Assert.Null(group.LastDataPoint);
            Assert.False(group.AnyBetween(DateTimeOffset.MinValue, DateTimeOffset.MaxValue));
            Assert.InRange(group.Sum(DateTimeOffset.MinValue, DateTimeOffset.MaxValue), 0.0 - Accuracy, 0.0 + Accuracy);
            Assert.InRange(group.TotalUntil(DateTimeOffset.MaxValue), 0.0 - Accuracy, 0.0 + Accuracy);
        }
Beispiel #12
0
        public HideOrShowCurves(TimeSeriesGroup timeSeriesGroup)
        {
            InitializeComponent();
            checkedListBox1.CheckOnClick = true;

            this.timeSeriesGroup = timeSeriesGroup;

            for (int i = 0; i < timeSeriesGroup.Items.Count; i++)
            {
                checkedListBox1.Items.Add(timeSeriesGroup.Items[i].Name, timeSeriesGroup.Items[i].IsVisible);
            }
        }
Beispiel #13
0
        public TimestampGridTestForm()
        {
            InitializeComponent();
            timeSeriesGroup = new TimeSeriesGroup();
            timeSeriesGroup.Items.Add(new TimestampSeries());
            timeSeriesGridControl         = new TimestampSeriesGrid((TimestampSeries)timeSeriesGroup.Items[0]);
            timeSeriesGridControl.Visible = true;

            timeSeriesGridControl.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right);
            panel1.Controls.Add(timeSeriesGridControl);
            this.Update();
        }
Beispiel #14
0
        public void Overlap()
        {
            TimeSeriesGroup tsg = CreateTimeSeriesGroup();

            Assert.AreEqual(null, tsg.Overlap); // no overlap between all timeseries

            tsg = new TimeSeriesGroup();
            tsg.Items.Add(new TimestampSeries("test1", new System.DateTime(1965, 2, 3), 10, 1, TimestepUnit.Years, 1));
            tsg.Items.Add(new TimestampSeries("test2", new System.DateTime(1962, 2, 3), 10, 1, TimestepUnit.Years, 1));
            tsg.Items.Add(new TimespanSeries("test2", new System.DateTime(1967, 2, 3), 10, 1, TimestepUnit.Years, 1));
            Assert.AreEqual(new System.DateTime(1967, 2, 3), tsg.Overlap.Start);
            Assert.AreEqual(new System.DateTime(1971, 2, 3), tsg.Overlap.End);
        }
Beispiel #15
0
        private void FillDataIntoTable(IWorksheet worksheet, TimeSeriesGroup data, int excelIdRowIndex)
        {
            DateTime start = data.FirstDataPoint.CapturedAt.Date;
            DateTime current = start;
            DateTime end = data.LastDataPoint.CapturedAt.Date;

            while (current <= end)
            {
                var rowIndex = GetOrCreateRowByDateTime(worksheet, current);
                InsertData(worksheet, data, rowIndex, current, excelIdRowIndex);

                current = NextDay(data, current);
            }
        }
        // -- Open menu ---
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            System.Windows.Forms.OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Title  = "Open time series file file";
            openFileDialog.Filter = "Open time series file (*.xts;*.xml)|*.xts;*.xml";
            openFileDialog.ShowDialog();

            if (openFileDialog.FileName.Length > 3)
            {
                foreach (TimestampSeries timeSeriesData in timeSeriesGroup.Items)
                {
                    while (timeSeriesData.Items.Count > 0)
                    {
                        timeSeriesData.Items.RemoveAt(0);
                    }
                }
                while (timeSeriesGroup.Items.Count > 0)
                {
                    timeSeriesGroup.Items.RemoveAt(0);
                }
                this.bottomStatusStrip.Items[0].Text = "Loading time series file. Please wait...";
                if (System.IO.Path.GetExtension(openFileDialog.FileName).ToLower().Equals(".xml"))
                {
                    timeSeriesGroup = TimeSeriesGroupFactory.CreateAll(openFileDialog.FileName);
                }
                else
                {
                    timeSeriesGroup = TimeSeriesGroupFactory.Create(openFileDialog.FileName);
                }

                this.tsPlot.TimeSeriesDataSet        = this.timeSeriesGroup;
                this.tsPlot.Visible                  = true;
                this.bottomStatusStrip.Items[0].Text = "Ready...";

                this.tsPlot.Repaint();
                if (this.timeSeriesGroup.Items[0] is TimestampSeries)
                {
                    this.timespanSeriesGrid.Visible         = false;
                    this.timestampSeriesGrid.Visible        = true;
                    this.timestampSeriesGrid.TimeSeriesData = (TimestampSeries)this.timeSeriesGroup.Items[0];
                }
                else if (this.timeSeriesGroup.Items[0] is TimespanSeries)
                {
                    this.timestampSeriesGrid.Visible       = false;
                    this.timespanSeriesGrid.Visible        = true;
                    this.timespanSeriesGrid.TimeSeriesData = (TimespanSeries)this.timeSeriesGroup.Items[0];
                }
            }
        }
Beispiel #17
0
        public void Current()
        {
            TimeSeriesGroup timeSeriesGroup = new TimeSeriesGroup();

            timeSeriesGroup.Items.Add(new TimestampSeries());
            timeSeriesGroup.Items.Add(new TimestampSeries());
            timeSeriesGroup.Items.Add(new TimestampSeries());
            Assert.AreEqual(0, timeSeriesGroup.Current);
            timeSeriesGroup.Current = 2;
            Assert.AreEqual(2, timeSeriesGroup.Current);
            timeSeriesGroup.Current = 3;
            Assert.AreEqual(2, timeSeriesGroup.Current);
            timeSeriesGroup.Current = -1;
            Assert.AreEqual(0, timeSeriesGroup.Current);
        }
        public void TimeSeriesGroup_OneEmptyTimeSeries()
        {
            var group = new TimeSeriesGroup();

            var container = new SensorTimeSeries("1234");

            group.Add(container);

            Assert.Equal(1, group.Count);
            Assert.Null(group.FirstDataPoint);
            Assert.Null(group.LastDataPoint);
            Assert.False(group.AnyBetween(DateTimeOffset.MinValue, DateTimeOffset.MaxValue));
            Assert.InRange(group.Sum(DateTimeOffset.MinValue, DateTimeOffset.MaxValue), 0.0 - Accuracy, 0.0 + Accuracy);
            Assert.InRange(group.TotalUntil(DateTimeOffset.MaxValue), 0.0 - Accuracy, 0.0 + Accuracy);
        }
Beispiel #19
0
        private void InsertData(IWorksheet worksheet, TimeSeriesGroup data, int rowIndex, DateTime startDateTime, int excelIdRowIndex)
        {
            var colsCount = worksheet.Cols;
            for (int col = 1; col <= colsCount; col++)
            {
                var idStr = worksheet[excelIdRowIndex, col]?.ToString();
                var ids = GetIds(idStr, COL_SEPERATOR);

                if (ids.Length == 0)
                {
                    continue;
                }

                if (ids.Length == 1 && data[ids[0]] is MeteoTimeSeries)
                {
                    var meteoTimeSeries = data[ids[0]] as MeteoTimeSeries;
                    var endDateTime = startDateTime + TimeSpan.FromDays(1);

                    var dataPoint = meteoTimeSeries.FirstOrDefault(x =>
                        x.CapturedAt >= startDateTime &&
                        x.CapturedAt < endDateTime &&
                        x.CapturedAt.ToUniversalTime().Hour == 12);

                    if (dataPoint != null)
                    {
                        var value = dataPoint.Value.ToString("0.##", CultureInfo.InvariantCulture);
                        worksheet[rowIndex, col] = value;
                    }
                }
                else
                {
                    var total = GetTotalByIdAndDay(data, ids, startDateTime);

                    // change unit (Wh to kWh)
                    total /= 1000.0;

                    // rounding to 2 fractional digits
                    total = Math.Round(total, 2);

                    // write value to excel field
                    if (!double.IsNaN(total))
                    {
                        var value = total.ToString("0.##", CultureInfo.InvariantCulture);
                        worksheet[rowIndex, col] = value;
                    }
                }
            }
        }
Beispiel #20
0
        private static DateTime NextDay(TimeSeriesGroup dataPoints, DateTime currentDateTime)
        {
            var tomorrow = currentDateTime + TimeSpan.FromDays(1);

            if (dataPoints.Any(x => tomorrow >= x.First.CapturedAt && tomorrow < x.Last.CapturedAt))
            {
                return tomorrow;
            }

            var leftTimeSeries = dataPoints.OrderBy(x => x.Last.CapturedAt).SkipWhile(x => tomorrow > x.Last.CapturedAt);
            return !leftTimeSeries.Any() ?
                tomorrow :
                leftTimeSeries
                    .Aggregate((minItem, nextItem) => minItem.First.CapturedAt < nextItem.First.CapturedAt ? minItem : nextItem)
                    .First.CapturedAt.Date;
        }
Beispiel #21
0
        public void PropertyChangedEvent()
        {
            TimeSeriesGroup timeSeriesGroup = new TimeSeriesGroup();

            timeSeriesGroup.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(timeSeriesGroup_PropertyChanged);
            eventWasRaised = false;
            timeSeriesGroup.Items.Add(new TimestampSeries());
            Assert.IsTrue(eventWasRaised); eventWasRaised = false;
            ((TimestampSeries)timeSeriesGroup.Items[0]).AppendValue(4.3);

            Assert.IsTrue(eventWasRaised); eventWasRaised = false;
            ((TimestampSeries)timeSeriesGroup.Items[0]).Items[0].Value = 2.1;
            Assert.IsTrue(eventWasRaised); eventWasRaised             = false;
            ((TimestampSeries)timeSeriesGroup.Items[0]).Items[0].Time = new System.DateTime(2010, 1, 1, 0, 0, 0);
            Assert.IsTrue(eventWasRaised); eventWasRaised             = false;
            //TODO: more testing needed
        }
Beispiel #22
0
        public void Initialize(System.Collections.Hashtable properties)
        {
            currentTimestep = 0;
            simulationStart = new DateTime(2001, 1, 1);
            dt               = 172800; //timestep length (2 days)
            nt               = 80;     // number of timesteps
            nx               = 2;      //number of grid cells in x-direction
            ny               = 2;      //number of grid cells in y-direction
            grid             = new RegularGrid(10, 10, 1000, nx, ny, 0);
            groundwaterHeads = new TimeSeriesGroup();
            infiltrations    = new TimeSeriesGroup();


            for (int i = 0; i < nx * ny; i++)
            {
                groundwaterHeads.Items.Add(new TimestampSeries("GwHead" + i.ToString(), simulationStart, nt, dt, TimestepUnit.Seconds, 4.9, new HydroNumerics.Core.Unit("meters", 1.0, 0.0)));
                infiltrations.Items.Add(new TimestampSeries("Infiltration" + i.ToString(), simulationStart, nt, dt, TimestepUnit.Seconds, -9999.9999, new HydroNumerics.Core.Unit("flow", 1.0, 0.0)));
            }

            Quantity infiltQuantity = new Quantity();

            infiltQuantity.Unit        = new HydroNumerics.OpenMI.Sdk.Backbone.Unit("level", 1.0, 0.0);
            infiltQuantity.ID          = "Infiltration";
            infiltQuantity.Description = "infiltration";
            infiltQuantity.ValueType   = global::OpenMI.Standard.ValueType.Scalar;
            InputExchangeItem infiltExItem = new InputExchangeItem();

            infiltExItem.Quantity   = infiltQuantity;
            infiltExItem.ElementSet = grid;
            inputExchangeItems      = new List <InputExchangeItem>();
            inputExchangeItems.Add(infiltExItem);

            Quantity headQuantity = new Quantity();

            headQuantity.Description = "Groundwater head";
            headQuantity.ID          = "Head";
            headQuantity.Unit        = new HydroNumerics.OpenMI.Sdk.Backbone.Unit("meters", 1, 0);
            headQuantity.ValueType   = global::OpenMI.Standard.ValueType.Scalar;
            OutputExchangeItem headOutItem = new OutputExchangeItem();

            headOutItem.Quantity   = headQuantity;
            headOutItem.ElementSet = grid;
            outputExchangeItems    = new List <OutputExchangeItem>();
            outputExchangeItems.Add(headOutItem);
        }
        public void Create()
        {
            string          filename        = "HydroNumerics.Time.Core.UnitTest.TimeSeriesGroupFactoryTest.Create.xts";
            TimeSeriesGroup tsg             = new TimeSeriesGroup();
            TimespanSeries  timespanSeries  = new TimespanSeries("timespanseriesname", new System.DateTime(2010, 1, 1), 10, 2, TimestepUnit.Days, 4.3);
            TimestampSeries timestampSeries = new TimestampSeries("timestampseriesname", new System.DateTime(2010, 1, 1), 10, 2, TimestepUnit.Days, 4.3);

            tsg.Items.Add(timespanSeries);
            tsg.Items.Add(timestampSeries);
            tsg.Save(filename);

            TimeSeriesGroup tsg2 = TimeSeriesGroupFactory.Create(filename);

            for (int i = 0; i < tsg.Items.Count; i++)
            {
                Assert.AreEqual(tsg.Items[i], tsg2.Items[i]);
            }
        }
Beispiel #24
0
        public HydroCatEngine()
        {
            isConfigurated = false;

            //--- Default values ----
            SimulationStartTime = new DateTime(2010, 1, 1);
            SimulationEndTime   = new DateTime(2011, 1, 1);

            OutputTimeSeries = new TimeSeriesGroup();

            //-- Default values (parameters)
            this.CatchmentArea            = 160000000;
            this.SnowmeltCoefficient      = 2.0;
            this.SurfaceStorageCapacity   = 18;
            this.RootZoneStorageCapacity  = 250;
            this.OverlandFlowCoefficient  = 0.61;
            this.InterflowCoefficient     = 0.6;
            this.OverlandFlowTreshold     = 0.38;
            this.InterflowTreshold        = 0.08;
            this.OverlandFlowTimeConstant = 0.3;
            this.InterflowTimeConstant    = 30;
            this.BaseflowTimeConstant     = 2800;
        }
Beispiel #25
0
        public void Save()
        {
            string filename = "HydroNumerics.Time.Core.UnitTest.TimeSeriesGroupTest.Save.xts";

            TimespanSeries timespanSeries = new TimespanSeries("Flow", new System.DateTime(2010, 1, 1), 10, 2, TimestepUnit.Days, 4.3);

            timespanSeries.Unit = new HydroNumerics.Core.Unit("Liters pr. sec", 0.001, 0.0, "Liters pr second");
            timespanSeries.Unit.Dimension.Length = 3;
            timespanSeries.Unit.Dimension.Time   = -1;
            timespanSeries.Description           = "Measured Flow";
            TimestampSeries timestampSeries = new TimestampSeries("Water Level", new System.DateTime(2010, 1, 1), 6, 2, TimestepUnit.Days, 6.3);

            timestampSeries.Unit = new HydroNumerics.Core.Unit("cm", 0.01, 0.0, "centimeters");
            timestampSeries.Unit.Dimension.Length = 1;
            timestampSeries.Description           = "Measured Head";

            TimeSeriesGroup tsg = new TimeSeriesGroup();

            tsg.Name = "MyTsGroup";
            tsg.Items.Add(timespanSeries);
            tsg.Items.Add(timestampSeries);
            tsg.Save(filename);
        }
        public TimeSeriesEditor()
        {
            InitializeComponent();
            timeSeriesGroup             = new TimeSeriesGroup();
            timestampSeriesGrid         = new TimestampSeriesGrid();
            timestampSeriesGrid.Visible = false;

            timespanSeriesGrid         = new TimespanSeriesGrid();
            timespanSeriesGrid.Visible = false;

            tsPlot = new TimeSeriesPlot(timeSeriesGroup);
            //tsPlot.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right)));
            tsPlot.Height = this.mainSplitContainer.Panel1.Height;
            tsPlot.Width  = this.mainSplitContainer.Panel1.Width;
            this.mainSplitContainer.Panel1.Controls.Add(tsPlot);
            tsPlot.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right);

            timestampSeriesGrid.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right);
            timespanSeriesGrid.Anchor  = (AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right);
            this.mainSplitContainer.Panel2.Controls.Add(timestampSeriesGrid);
            this.mainSplitContainer.Panel2.Controls.Add(timespanSeriesGrid);
            this.tsPlot.Visible = false;
            this.Update();
        }
Beispiel #27
0
 public TimespanSeriesPlot(TimeSeriesGroup timeSeriesDataSet)
 {
     InitializeComponent();
     TimeSeriesDataSet = timeSeriesDataSet;
 }
        public override void Initialize(IArgument[] properties)
        {
            SendEvent(new Event(EventType.Informative, this, "Started initialization.."));
            Dictionary <string, string> arguments = new Dictionary <string, string>();

            for (int i = 0; i < properties.Length; i++)
            {
                arguments.Add(properties[i].Key, properties[i].Value);
            }
            filename       = arguments["Filename"];
            outputFilename = arguments["OutputFilename"];

            tsGroup = TimeSeriesGroupFactory.Create(filename);

            foreach (BaseTimeSeries baseTimeSeries in tsGroup.Items)
            {
                HydroNumerics.OpenMI.Sdk.Backbone.Dimension dimention = new HydroNumerics.OpenMI.Sdk.Backbone.Dimension();
                dimention.AmountOfSubstance = baseTimeSeries.Unit.Dimension.AmountOfSubstance;
                dimention.Currency          = baseTimeSeries.Unit.Dimension.Currency;
                dimention.ElectricCurrent   = baseTimeSeries.Unit.Dimension.ElectricCurrent;
                dimention.Length            = baseTimeSeries.Unit.Dimension.Length;
                dimention.LuminousIntensity = baseTimeSeries.Unit.Dimension.LuminousIntensity;
                dimention.Mass = baseTimeSeries.Unit.Dimension.Mass;
                dimention.Time = baseTimeSeries.Unit.Dimension.Time;

                HydroNumerics.OpenMI.Sdk.Backbone.Unit unit = new HydroNumerics.OpenMI.Sdk.Backbone.Unit();
                unit.ID                   = baseTimeSeries.Unit.ID;
                unit.Description          = baseTimeSeries.Unit.Description;
                unit.ConversionFactorToSI = baseTimeSeries.Unit.ConversionFactorToSI;
                unit.OffSetToSI           = baseTimeSeries.Unit.OffSetToSI;

                TsQuantity quantity = new TsQuantity();
                quantity.ID             = baseTimeSeries.Name;
                quantity.Description    = baseTimeSeries.Description;
                quantity.Dimension      = dimention;
                quantity.Unit           = unit;
                quantity.BaseTimeSeries = baseTimeSeries;

                ElementSet elementSet = new ElementSet();
                elementSet.ID               = "IDBased";
                elementSet.Description      = "IDBased";
                elementSet.ElementType      = global::OpenMI.Standard.ElementType.IDBased;
                elementSet.SpatialReference = new SpatialReference("Undefined");
                Element element = new Element();
                element.ID = "IDBased";
                elementSet.AddElement(element);

                OutputExchangeItem outputExchangeItem = new OutputExchangeItem();
                outputExchangeItem.Quantity   = quantity;
                outputExchangeItem.ElementSet = elementSet;
                this.AddOutputExchangeItem(outputExchangeItem);

                InputExchangeItem inputExchangeItem = new InputExchangeItem();
                inputExchangeItem.Quantity   = quantity;
                inputExchangeItem.ElementSet = elementSet;
                this.AddInputExchangeItem(inputExchangeItem);
            }

            initializeWasInvoked = true;
            SendEvent(new Event(EventType.Informative, this, "Completed initialization"));
        }
Beispiel #29
0
        public override void Initialize()
        {
            Dictionary <string, string> argumentsDictionary = new Dictionary <string, string>();

            //TODO: Check that you can assume that e.g. a configuration editor will populate the Argumenst, based on data from the OMI file
            foreach (IArgument argument in this.Arguments)
            {
                argumentsDictionary.Add(argument.Id, argument.ValueAsString);
            }
            filename = argumentsDictionary["Filename"];
            //outputFilename = argumentsDictionary["OutputFilename"];

            timeSeriesGroup = TimeSeriesGroupFactory.Create(filename);

            Outputs = new List <IBaseOutput>();


            foreach (var ts in timeSeriesGroup.Items)
            {
                Dimension dimention = new Dimension();
                dimention.SetPower(DimensionBase.AmountOfSubstance, ts.Unit.Dimension.AmountOfSubstance);
                dimention.SetPower(DimensionBase.Currency, ts.Unit.Dimension.Currency);
                dimention.SetPower(DimensionBase.ElectricCurrent, ts.Unit.Dimension.ElectricCurrent);
                dimention.SetPower(DimensionBase.Length, ts.Unit.Dimension.Length);
                dimention.SetPower(DimensionBase.LuminousIntensity, ts.Unit.Dimension.LuminousIntensity);
                dimention.SetPower(DimensionBase.Mass, ts.Unit.Dimension.Mass);
                dimention.SetPower(DimensionBase.Time, ts.Unit.Dimension.Time);

                Unit unit = new Unit(ts.Unit.ID);
                unit.Description          = ts.Unit.Description;
                unit.ConversionFactorToSI = ts.Unit.ConversionFactorToSI;
                unit.OffSetToSI           = ts.Unit.OffSetToSI;
                unit.Dimension            = dimention;

                Quantity quantity = new Quantity();
                quantity.Caption     = ts.Name;
                quantity.Description = ts.Description;
                quantity.Unit        = unit;

                ElementSet elementSet = new ElementSet("IDBased");
                elementSet.Description = "IDBased";
                elementSet.ElementType = global::OpenMI.Standard2.TimeSpace.ElementType.IdBased;
                Element element = new Element();
                element.Caption = "IDBased";
                elementSet.AddElement(element);



                Output o = new Output(ts.Name, quantity, elementSet);

                o.TimeSet = new TimeSet();
                o.Values  = new HydroNumerics.OpenMI.Sdk.Backbone.Generic.TimeSpaceValueSet <double>();

                if (ts is TimespanSeries)
                {
                    foreach (var tsi in ((TimespanSeries)ts).Items)
                    {
                        o.TimeSet.Times.Add(new HydroNumerics.OpenMI.Sdk.Backbone.Time(ts.StartTime, ts.EndTime));
                        o.Values.Values2D.Add(new List <double> {
                            tsi.Value
                        });
                    }
                }
                else
                {
                    foreach (var tsi in ((TimestampSeries)ts).Items)
                    {
                        o.TimeSet.Times.Add(new HydroNumerics.OpenMI.Sdk.Backbone.Time(ts.StartTime));
                        o.Values.Values2D.Add(new List <double> {
                            tsi.Value
                        });
                    }
                }

                Outputs.Add(o);
            }

            Caption     = timeSeriesGroup.Name;
            Description = timeSeriesGroup.Name;
        }
 public TimeSeriesGroupPropertiesDialog(TimeSeriesGroup timeSeriesGroup)
 {
     InitializeComponent();
     propertyGrid1.SelectedObject = timeSeriesGroup;
 }