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); }
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); }
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); }