public void GetSourceWaterTest()
        {
            s.WaterLevel = 18;
            TimeSpan TimeStep = new TimeSpan(1, 0, 0);
            DateTime Start    = DateTime.Now;

            int          ID       = 1;
            IWaterPacket expected = new WaterPacket(ID, area * hydraulicConductivity * (head - s.WaterLevel) / distance * TimeStep.TotalSeconds);
            IWaterPacket actual;

            actual = target.GetSourceWater(Start, TimeStep);
            Assert.AreEqual(ID, actual.Composition.Keys.First());
            Assert.AreEqual(expected.Volume, actual.Volume, 0.000001);
        }
Beispiel #2
0
        public void GroundwaterBoundaryTest()
        {
            Stream stream = new Stream("S", 1, 1, 1);

            stream.WaterLevel = 2;
            GroundWaterBoundary gwb = new GroundWaterBoundary(stream, 2, 4, 5, XYPolygon.GetSquare(23));

            gwb.WaterSample = new WaterPacket(1);

            GroundWaterBoundary gwb2 = (GroundWaterBoundary)ReadWrite(gwb);

            Assert.AreEqual(gwb.IsSource(DateTime.Now), gwb2.IsSource(DateTime.Now));
            WaterEquals(gwb.GetSourceWater(DateTime.Now, TimeSpan.FromDays(1)), gwb2.GetSourceWater(DateTime.Now, TimeSpan.FromDays(1)));
        }
Beispiel #3
0
        public void RoutingOfGroundwaterTest()
        {
            Lake S = new Lake("L", 100);

            S.SetState("Initial", DateTime.Now, new WaterPacket(100));

            Lake storage = new Lake("Storage", 10000);

            S.AddDownStreamWaterBody(storage);

            TimeSpan ts = new TimeSpan(1, 0, 0);

            int          Id       = 2;
            IWaterPacket expected = new WaterPacket(Id, 200);
            IWaterPacket actual;

            S.WaterLevel = 8;
            GroundWaterBoundary b = new GroundWaterBoundary(S, 0.001, 100, 10, XYPolygon.GetSquare(2.5));

            b.WaterSample = expected;
            S.GroundwaterBoundaries.Add(b);
            S.Update(S.CurrentTime.Add(ts));

            actual = storage.CurrentStoredWater;
            double ExpectedVolume = b.GetSourceWater(DateTime.Now, ts).Volume;

            Assert.AreEqual(expected.Composition.Keys.First(), actual.Composition.Keys.First());
            Assert.AreEqual(ExpectedVolume, actual.Volume, 0.000001);

            S.Update(S.CurrentTime.Add(new TimeSpan(2, 0, 0)));

            actual = storage.CurrentStoredWater;
            Assert.AreEqual(expected.Composition.Keys.First(), actual.Composition.Keys.First());
            Assert.AreEqual(0.54, actual.Volume, 0.000001);

            S.AddWaterPacket(DateTime.Now, DateTime.Now, expected);
            S.Update(S.CurrentTime.Add(new TimeSpan(2, 0, 0)));
            actual = storage.CurrentStoredWater;

            Assert.AreEqual(200.9, actual.Volume, 0.000001);
        }
Beispiel #4
0
        public void RoutingOfGroundwaterTest()
        {
            Stream S = new Stream("S", 100, 1, 1);

            S.SetState("Initial", DateTime.Now, new WaterPacket(100));

            TimeSpan ts = new TimeSpan(0, 1, 0);

            int          Id       = 2;
            IWaterPacket expected = new WaterPacket(Id, 200);
            IWaterPacket actual;

            S.WaterLevel = 8;
            GroundWaterBoundary b = new GroundWaterBoundary(S, 0.001, 10, 100, XYPolygon.GetSquare(250));

            b.WaterSample = expected;
            S.GroundwaterBoundaries.Add(b);
            S.Update(S.CurrentTime.Add(ts));

            actual = S.CurrentStoredWater;
            double ExpectedVolume = b.GetSourceWater(DateTime.Now, ts).Volume;

            Assert.AreEqual(expected.Composition.Keys.First(), actual.Composition.Keys.First());
            Assert.AreEqual(100, actual.Volume, 0.000001);

            S.Update(S.CurrentTime.Add(ts));

            actual = S.CurrentStoredWater;
            Assert.AreEqual(expected.Composition.Keys.First(), actual.Composition.Keys.First());
            Assert.AreEqual(100, actual.Volume, 0.000001);

            S.AddWaterPacket(DateTime.Now, DateTime.Now, expected);
            S.Update(S.CurrentTime.Add(ts));
            actual = S.CurrentStoredWater;

            Assert.AreEqual(100, actual.Volume, 0.000001);
        }