public void TestMethod1() { Lake Hampen = LakeFactory.GetLake("Hampen Sø"); Hampen.Depth = 3.2e6 / 760000/1000; DateTime start = new DateTime(2008, 1, 1); DateTime end = new DateTime(2008, 12, 31); Assert.AreEqual(Hampen.Area, 722200,1); EvaporationRateBoundary er = new EvaporationRateBoundary(407.0 / 1000 / 365 / 86400); er.ContactGeometry = Hampen.Geometry; er.Name = "Fordampning"; Hampen.EvaporationBoundaries.Add(er); SourceBoundary pr = new SourceBoundary(901.0 / 1000 / 365 / 86400); pr.ContactGeometry = Hampen.Geometry; pr.Name = "Nedbør"; Hampen.Precipitation.Add(pr); SinkSourceBoundary outlet = new SinkSourceBoundary(-200.0 / 1000 / 365 / 86400); outlet.ContactGeometry = Hampen.Geometry; outlet.Name = "Udløb"; Hampen.Sinks.Add(outlet); GroundWaterBoundary gwb = new GroundWaterBoundary(); gwb.FlowType = GWType.Flow; gwb.Name = "Ud"; gwb.WaterFlow = new HydroNumerics.Time.Core.TimespanSeries("inflow", new DateTime(2008, 1, 1), 2, 1, HydroNumerics.Time.Core.TimestepUnit.Years, -294.0 / 1000 / 365 / 86400*Hampen.Area); Hampen.GroundwaterBoundaries.Add(gwb); Model m = new Model(); m._waterBodies.Add(Hampen); m.SetState("start", start , new WaterPacket(1)); m.SimulationStartTime = start; m.SimulationEndTime = end; m.MoveInTime(end,TimeSpan.FromDays(30)); m.Save(@"..\..\..\TestData\Hampen1.xml"); WaterPacket ChlorideWater = new WaterPacket(1); ChlorideWater.SetConcentration(ChemicalNames.Cl, 20); ChlorideWater.SetConcentration(ChemicalNames.IsotopeFraction, 4); ChlorideWater.SetConcentration(ChemicalNames.Nitrate, 0.2); ChlorideWater.SetConcentration(ChemicalNames.Phosphate, 0.02); m.SetState("start", start, ChlorideWater); Hampen.Output.LogAllChemicals = true; double gwinflow = 1000.0; gwb.WaterFlow = new HydroNumerics.Time.Core.TimespanSeries("inflow", new DateTime(2008, 1, 1), 2, 1, HydroNumerics.Time.Core.TimestepUnit.Years, -(294.0 + gwinflow) / 1000 / 365 / 86400 * Hampen.Area); GroundWaterBoundary gwbin = new GroundWaterBoundary(); gwbin.FlowType = GWType.Flow; gwbin.WaterFlow = new HydroNumerics.Time.Core.TimespanSeries("inflow", new DateTime(2008, 1, 1), 2, 1, HydroNumerics.Time.Core.TimestepUnit.Years, 0.955*gwinflow / 1000 / 365 / 86400 * Hampen.Area); ChlorideWater.SetConcentration(ChemicalNames.Cl, 30); ChlorideWater.SetConcentration(ChemicalNames.IsotopeFraction, 8); ChlorideWater.SetConcentration(ChemicalNames.Nitrate, 1.6); ChlorideWater.SetConcentration(ChemicalNames.Phosphate, 0.017); gwbin.Name = "Ind Skov"; gwbin.WaterSample = ChlorideWater.DeepClone(); Hampen.GroundwaterBoundaries.Add(gwbin); GroundWaterBoundary gwbin2 = new GroundWaterBoundary(); gwbin2.FlowType = GWType.Flow; gwbin2.WaterFlow = new HydroNumerics.Time.Core.TimespanSeries("inflow", new DateTime(2008, 1, 1), 2, 1, HydroNumerics.Time.Core.TimestepUnit.Years, 0.045 * gwinflow / 1000 / 365 / 86400 * Hampen.Area); ChlorideWater.SetConcentration(ChemicalNames.Nitrate, 65.3); gwbin2.Name = "Ind Landbrug"; gwbin2.WaterSample = ChlorideWater.DeepClone(); Hampen.GroundwaterBoundaries.Add(gwbin2); ChlorideWater.SetConcentration(ChemicalNames.Cl, 10); ChlorideWater.SetConcentration(ChemicalNames.Phosphate, 0); ChlorideWater.SetConcentration(ChemicalNames.Nitrate, 1.7); pr.WaterSample = ChlorideWater.DeepClone(); m.MoveInTime(end, TimeSpan.FromDays(30)); m.Save(@"..\..\..\TestData\Hampen2.xml"); }
public void KrabbenhoftExample() { Lake L = new Lake("Sparkling Lake", XYPolygon.GetSquare(0.81e6)); L.Depth = 8.84e6 / L.Area; L.Output.LogAllChemicals = true; IsotopeWater LakeWater = new IsotopeWater(1); LakeWater.SetIsotopeRatio(5.75); TimestampSeries EvapoConcentrations = new TimestampSeries(); EvapoConcentrations.AddSiValue(new DateTime(1985, 4, 1), 3.95); EvapoConcentrations.AddSiValue(new DateTime(1985, 5, 1), 13.9); EvapoConcentrations.AddSiValue(new DateTime(1985, 6, 1), 25.24); EvapoConcentrations.AddSiValue(new DateTime(1985, 7, 1), 23.97); EvapoConcentrations.AddSiValue(new DateTime(1985, 8, 1), 17.13); EvapoConcentrations.AddSiValue(new DateTime(1985, 9, 1), 10.40); EvapoConcentrations.AddSiValue(new DateTime(1985, 10, 1), 6.12); EvapoConcentrations.AddSiValue(new DateTime(1985, 10, 1), 33.24); EvapoConcentrations.AllowExtrapolation = true; EvapoConcentrations.ExtrapolationMethod = ExtrapolationMethods.RecycleYear; LakeWater.EvaporationConcentration = EvapoConcentrations; TimestampSeries PrecipConcentrations = new TimestampSeries(); PrecipConcentrations.AddSiValue(new DateTime(1985, 1, 1), 22.8); PrecipConcentrations.AddSiValue(new DateTime(1985, 2, 1), 22.8); PrecipConcentrations.AddSiValue(new DateTime(1985, 3, 1), 22.8); PrecipConcentrations.AddSiValue(new DateTime(1985, 4, 1), 14.8); PrecipConcentrations.AddSiValue(new DateTime(1985, 5, 1), 10.7); PrecipConcentrations.AddSiValue(new DateTime(1985, 6, 1), 6.3); PrecipConcentrations.AddSiValue(new DateTime(1985, 7, 1), 5.1); PrecipConcentrations.AddSiValue(new DateTime(1985, 8, 1), 8.4); PrecipConcentrations.AddSiValue(new DateTime(1985, 9, 1), 11.1); PrecipConcentrations.AddSiValue(new DateTime(1985, 10, 1), 13.8); PrecipConcentrations.AddSiValue(new DateTime(1985, 10, 1), 21.9); PrecipConcentrations.AllowExtrapolation = true; PrecipConcentrations.ExtrapolationMethod = ExtrapolationMethods.RecycleYear; TimespanSeries Precipitation = new TimespanSeries(); Precipitation.Unit = new HydroNumerics.Core.Unit("cm/month", 1.0 / 100.0 / (86400.0 * 30.0), 0); Precipitation.AddValue(new DateTime(1985, 1, 1), new DateTime(1985, 3, 1), 0); Precipitation.AddValue(new DateTime(1985, 3, 1), new DateTime(1985, 3, 31), 12.5); Precipitation.AddValue(new DateTime(1985, 4, 1), new DateTime(1985, 4, 30), 7.1); Precipitation.AddValue(new DateTime(1985, 5, 1), new DateTime(1985, 5, 31), 7.6); Precipitation.AddValue(new DateTime(1985, 6, 1), new DateTime(1985, 6, 30), 8.8); Precipitation.AddValue(new DateTime(1985, 7, 1), new DateTime(1985, 7, 31), 8.6); Precipitation.AddValue(new DateTime(1985, 8, 1), new DateTime(1985, 8, 31), 12.7); Precipitation.AddValue(new DateTime(1985, 9, 1), new DateTime(1985, 9, 30), 11); Precipitation.AddValue(new DateTime(1985, 10, 1), new DateTime(1985, 10, 31), 6.2); Precipitation.AddValue(new DateTime(1985, 11, 1), new DateTime(1985, 11, 30), 4.8); Precipitation.AddValue(new DateTime(1985, 11, 30), new DateTime(1985, 12, 31), 0); Precipitation.AllowExtrapolation = true; Precipitation.ExtrapolationMethod = ExtrapolationMethods.RecycleYear; Assert.AreEqual(79, 12*Precipitation.GetValue(new DateTime(1985,1,1), new DateTime(1985,12,31)),3); SourceBoundary Precip = new SourceBoundary(Precipitation); Precip.WaterSample = new IsotopeWater(1); Precip.AddChemicalConcentrationSeries(ChemicalFactory.Instance.GetChemical(ChemicalNames.IsotopeFraction), PrecipConcentrations); TimespanSeries Evaporation = new TimespanSeries(); Evaporation.Unit = new HydroNumerics.Core.Unit("cm/month", 1.0 / 100.0 / (86400.0 * 30.0), 0); Evaporation.AddValue(new DateTime(1985, 1, 1), new DateTime(1985, 4, 1), 0); Evaporation.AddValue(new DateTime(1985, 4, 1), new DateTime(1985, 4, 30), 2.8); Evaporation.AddValue(new DateTime(1985, 5, 1), new DateTime(1985, 5, 31), 7.0); Evaporation.AddValue(new DateTime(1985, 6, 1), new DateTime(1985, 6, 30), 10.5); Evaporation.AddValue(new DateTime(1985, 7, 1), new DateTime(1985, 7, 31), 11.1); Evaporation.AddValue(new DateTime(1985, 8, 1), new DateTime(1985, 8, 31), 10.0); Evaporation.AddValue(new DateTime(1985, 9, 1), new DateTime(1985, 9, 30), 7.0); Evaporation.AddValue(new DateTime(1985, 10, 1), new DateTime(1985, 10, 31), 4.7); Evaporation.AddValue(new DateTime(1985, 11, 1), new DateTime(1985, 11, 30), 0.6); Evaporation.AddValue(new DateTime(1985, 11, 30), new DateTime(1985, 12, 31), 0); Evaporation.AllowExtrapolation = true; Evaporation.ExtrapolationMethod = ExtrapolationMethods.RecycleYear; EvaporationRateBoundary erb = new EvaporationRateBoundary(Evaporation); Assert.AreEqual(54, 12*Evaporation.GetValue(new DateTime(1985,1,1), new DateTime(1985,12,31)),3); GroundWaterBoundary grb = new GroundWaterBoundary(L, 1e-7, 1, 1, (XYPolygon) L.Geometry); grb.FlowType = GWType.Flow; grb.WaterFlow = new TimespanSeries(); grb.WaterFlow.AddSiValue(DateTime.MinValue,DateTime.MaxValue, Evaporation.Unit.ToSiUnit(29/12) * L.Area); IsotopeWater gwsp25 = new IsotopeWater(1); gwsp25.SetIsotopeRatio(11.5); grb.WaterSample = gwsp25; GroundWaterBoundary gout = new GroundWaterBoundary(L, 1e-7, 1, -1, (XYPolygon)L.Geometry); gout.FlowType = GWType.Flow; gout.WaterFlow = new TimespanSeries(); gout.WaterFlow.AddSiValue(DateTime.MinValue, DateTime.MaxValue, - Evaporation.Unit.ToSiUnit(54/12) * L.Area); DateTime Start = new DateTime(1985,1,1); L.Precipitation.Add(Precip); Precip.ContactGeometry = L.Geometry; L.EvaporationBoundaries.Add(erb); erb.ContactGeometry = L.Geometry; L.GroundwaterBoundaries.Add(grb); L.GroundwaterBoundaries.Add(gout); Model M = new Model(); M.WaterBodies.Add(L); M.SetState("Initial", Start, LakeWater); L.Depth *= 1.5; ((IsotopeWater)L.CurrentStoredWater).CurrentTime = Start; M.MoveInTime(new DateTime(1985, 12, 31), TimeSpan.FromDays(10)); M.Save(@"..\..\..\TestData\Krabbenhoft.xml"); }