コード例 #1
0
ファイル: RogueMinimumFlow.cs プロジェクト: woohn/Pisces
        internal static SystemState DetermineSystemState(DateTime t)
        {
            if (t.Date == DateTime.Now.Date)
            {
                t = t.Date.AddDays(-1); // we dont' have daily  value yet for today (use yesterday)
            }
            t = t.Date;                 // state is daily but we could be running previous day at 9:55 am

            var dir = GetPathToMinimumFlowFiles();
            // read avearge contents for three reservoirs
            var avg = new TextSeries(Path.Combine(dir, "talsys_afavg.csv"));

            avg.Read();
            var talsys_avg = new PeriodicSeries(avg.Table);

            var t1 = t.Date.AddDays(-1);

            // current last two days system contents
            var hmet = new HydrometDailySeries("talsys", "af");

            hmet.Read(t1, t);
            // determine state.

            Point talsys = hmet[t];

            if (talsys.IsMissing)
            {
                talsys = hmet[t.AddDays(-1).Date]; // try back one day
            }
            if (talsys.IsMissing)
            {
                return(SystemState.Unknown);
            }

            if (t.Month == 2 && t.Day == 29)// don't lookup 29th in periodic table
            {
                t = t.AddDays(-1);
            }

            double avg_af = talsys_avg.Interpolate(t);

            if (talsys.Value >= avg_af + 15000)
            {
                return(SystemState.Wet);
            }
            if (talsys.Value <= avg_af - 15000)
            {
                return(SystemState.Dry);
            }

            return(SystemState.Median);
        }
コード例 #2
0
ファイル: TestPeriodicSeries.cs プロジェクト: woohn/Pisces
        public void PeriodicSeriesBeginInNovember()
        {
            string fn  = Path.Combine(TestData.DataPath, "periodic_begininovember.csv");
            var    tbl = new CsvFile(fn);

            PeriodicSeries s = new PeriodicSeries(tbl);

            DateTime t = new DateTime(1997, 4, 30);


            double space = s.Interpolate2D(t, 150);

            space = s.Interpolate2D(DateTime.Parse("11/1/2001"), 150); // test first row.
            Assert.AreEqual(1.5, space, 0.0001);
            space = s.Interpolate2D(DateTime.Parse("5/15/2001"), 150); // test last row.
            Assert.AreEqual(197.5, space, 0.0001);
            space = s.Interpolate(DateTime.Parse("11/3/2001"));
            Assert.AreEqual(3, space, .001);
            space = s.Interpolate2D(DateTime.Parse("5/5/1965"), 150);
            Assert.AreEqual(187.5, space, 0.0001);
        }
コード例 #3
0
        public void PeriodicSeriesBeginInNovember()
        {
            string fn  = TestData.DataPath + "\\Periodic.xlsx";
            var    xls = ExcelUtility.GetWorkbookReference(fn);

            //var tbl = xls.GetTimeSeriesTable("BeginInNovember");
            var tbl = xls.Tables["BeginInNovember"];

            PeriodicSeries s = new PeriodicSeries(tbl);

            DateTime t = new DateTime(1997, 4, 30);


            double space = s.Interpolate2D(t, 150);

            space = s.Interpolate2D(DateTime.Parse("11/1/2001"), 150); // test first row.
            Assert.AreEqual(1.5, space, 0.0001);
            space = s.Interpolate2D(DateTime.Parse("5/15/2001"), 150); // test last row.
            Assert.AreEqual(197.5, space, 0.0001);
            space = s.Interpolate(DateTime.Parse("11/3/2001"));
            Assert.AreEqual(3, space, .001);
            space = s.Interpolate2D(DateTime.Parse("5/5/1965"), 150);
            Assert.AreEqual(187.5, space, 0.0001);
        }