Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverter.cs =================================================================== diff -u -r4927 -r4928 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverter.cs (.../PlLinesToWaternetConverter.cs) (revision 4927) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverter.cs (.../PlLinesToWaternetConverter.cs) (revision 4928) @@ -56,11 +56,14 @@ /// /// The pl lines. /// The 1D soil profile. + /// The points of the surface line. /// Length of the penetration. /// Left side of the 2D profile. /// Right side of the 2D profile. + /// The type of distribution of the vertical water pressures. /// - public static Waternet CreateWaternetBasedOnPlLines(PlLines plLines, SoilProfile1D soilProfile1D, double penetrationLength, double xLeft, double xRight) + public static Waternet CreateWaternetBasedOnPlLines(PlLines plLines, SoilProfile1D soilProfile1D, GeometryPointString surfaceLine, + double penetrationLength, double xLeft, double xRight, IntrusionVerticalWaterPressureType? pressureType) { ThrowWhenPlLinesIsNull(plLines); ThrowWhenSoilProfileIsNull(soilProfile1D); @@ -71,8 +74,17 @@ if (plLine != null && !IsBelowSoilProfile(soilProfile1D, plLine)) { waternet.PhreaticLine = CreateLine(plLine, headLine1Name); - double level = soilProfile1D.GetLayerAt(headLine.GetMinZ()).BottomLevel; - WaternetLine waternetLine = CreateWaternetLine(level, xLeft, xRight); + WaternetLine waternetLine; + if (pressureType == IntrusionVerticalWaterPressureType.Linear) + { + List coordinates = surfaceLine.Points.Select(point => new Point2D(point.X, point.Z)).ToList(); + waternetLine = CreateWaternetLine(coordinates); + } + else + { + double level = soilProfile1D.GetLayerAt(headLine.GetMinZ()).BottomLevel; + waternetLine = CreateWaternetLine(level, xLeft, xRight); + } waternetLine.Name = waternetLine1Name; waternetLine.HeadLine = headLine; waternetLine.HeadLine.SyncCalcPoints(); @@ -124,7 +136,7 @@ /// A . /// Thrown when or /// is null. - public static Waternet CreateWaternetBasedOnPlLines(PlLines plLines, SoilProfile2D soilProfile, double penetrationLength) + public static Waternet CreateWaternetBasedOnPlLines(PlLines plLines, SoilProfile2D soilProfile, double penetrationLength, IntrusionVerticalWaterPressureType? pressureType) { ThrowWhenPlLinesIsNull(plLines); ThrowWhenSoilProfileIsNull(soilProfile); @@ -138,7 +150,7 @@ { var headLine = CreateLine(plLine, headLine1Name); waternet.PhreaticLine = CreateLine(plLine, headLine1Name); - WaternetLine waternetLine = CreateWaternetLineForPhreaticLine(soilProfile, plLine); + WaternetLine waternetLine = CreateWaternetLineForPhreaticLine(soilProfile, plLine, pressureType); waternetLine.Name = waternetLine1Name; waternetLine.HeadLine = headLine; waternet.WaternetLineList.Add(waternetLine); @@ -302,13 +314,8 @@ return waternetLine; } - private static WaternetLine CreateWaternetLine(IEnumerable coordinates) + private static WaternetLine CreateWaternetLine(IEnumerable coordinates, double zOffSet = 0) { - return CreateWaternetLine(coordinates, 0); - } - - private static WaternetLine CreateWaternetLine(IEnumerable coordinates, double zOffSet) - { var line = new WaternetLine(); foreach (Point2D coordinate in coordinates) { @@ -423,6 +430,17 @@ return null; } + private static WaternetLine CreateWaternetLineForPhreaticLine(SoilProfile2D soilProfile2D, PlLine plLine, IntrusionVerticalWaterPressureType? pressureType) + { + if (pressureType != IntrusionVerticalWaterPressureType.Linear) + { + return CreateWaternetLineForPhreaticLineForDamStandard(soilProfile2D, plLine); + } + + List coordinates = soilProfile2D.Geometry.SurfaceLine.Points.Select(point => new Point2D(point.X, point.Z)).ToList(); + return CreateWaternetLine(coordinates); + } + /// /// Create the waternet line associated to the phreatic line (PL1). /// For the waternet type "Dam Standard", this line lies on the bottom of the soil layers “in which the phreatic plane lies”. @@ -432,7 +450,7 @@ /// /// /// - private static WaternetLine CreateWaternetLineForPhreaticLine(SoilProfile2D soilProfile2D, PlLine plLine) + private static WaternetLine CreateWaternetLineForPhreaticLineForDamStandard(SoilProfile2D soilProfile2D, PlLine plLine) { var waternetLine = new WaternetLine(); var curves = new List(); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverterTests.cs =================================================================== diff -u -r4927 -r4928 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverterTests.cs (.../PlLinesToWaternetConverterTests.cs) (revision 4927) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverterTests.cs (.../PlLinesToWaternetConverterTests.cs) (revision 4928) @@ -50,7 +50,7 @@ public void CreateWaternetBasedOnPlLines_PlLinesFullyDefinedAtOrBelowBottomSoil1DProfile_ReturnsEmptyWaternet(double offsetFromBottomOfProfile) { // Setup - SoilProfile1D soilProfile = CreateSoilProfile1DForTest(); + SoilProfile1D soilProfile = CreateSoilProfile1DForTest(out GeometryPointString surfaceLine); double bottomLevel = soilProfile.BottomLevel; double plLineZCoordinate = bottomLevel - offsetFromBottomOfProfile; @@ -72,20 +72,21 @@ plLine.Points.Add(new PlLinePoint(rightCoordinate, plLineZCoordinate)); // Call - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength, leftCoordinate, rightCoordinate); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, surfaceLine, penetrationLength, leftCoordinate, rightCoordinate, IntrusionVerticalWaterPressureType.Standard); // Assert Assert.That(waternet.PhreaticLine, Is.Null); Assert.That(waternet.HeadLineList, Is.Empty); Assert.That(waternet.WaternetLineList, Is.Empty); } - [Test] - public void TestConvertPlLinesToWaternet_1DSoilProfile() + [TestCase(IntrusionVerticalWaterPressureType.Standard, -2.110)] + [TestCase(IntrusionVerticalWaterPressureType.Linear, 1.212)] + public void TestConvertPlLinesToWaternet_1DSoilProfile(IntrusionVerticalWaterPressureType? pressureType, double levelWaternetPl1) { PlLines plLines = CreatePlLinesForTest(); - SoilProfile1D soilProfile1D = CreateSoilProfile1DForTest(); + SoilProfile1D soilProfile1D = CreateSoilProfile1DForTest(out GeometryPointString surfaceLine); Assert.Multiple(() => { Assert.That(soilProfile1D.GetInBetweenAquiferClusters, Has.Count.EqualTo(2).Within(precision3Decimals)); @@ -99,7 +100,7 @@ const double penetrateLength = 2.1; const double left = 0; const double right = 100; - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, penetrateLength, left, right); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, surfaceLine, penetrateLength, left, right, pressureType); // Pl 1 is the phreatic line and gets waternet line to bottom level of the deepest layer where PL 1 lies // Pl 2 gets waternet line to level of BottomAquiferLayer.TopLevel + penetrationLength @@ -144,14 +145,16 @@ Assert.Multiple(() => { - // expected waternet line 0 is connected to pl1 with level -2.111 m + 1 mm + // expected waternet line 0 is connected to pl1 with level: + // for DAM Standard type, -2.111 m + 1 mm (Pl1 is in layer 2 from 0 m to -2.111 m) + // for Linear type, 1.212 (the surface level) Assert.That(waternet.WaternetLineList[0].HeadLine.Points, Is.EqualTo(waternet.PhreaticLine.Points)); Assert.That(waternet.WaternetLineList[0].HeadLine.Name, Is.EqualTo(waternet.PhreaticLine.Name)); Assert.That(waternet.WaternetLineList[0].Points, Has.Count.EqualTo(2)); Assert.That(waternet.WaternetLineList[0].Points[0].X, Is.EqualTo(0).Within(precision3Decimals)); - Assert.That(waternet.WaternetLineList[0].Points[0].Z, Is.EqualTo(-2.110).Within(precision3Decimals)); + Assert.That(waternet.WaternetLineList[0].Points[0].Z, Is.EqualTo(levelWaternetPl1).Within(precision3Decimals)); Assert.That(waternet.WaternetLineList[0].Points[1].X, Is.EqualTo(100).Within(precision3Decimals)); - Assert.That(waternet.WaternetLineList[0].Points[1].Z, Is.EqualTo(-2.110).Within(precision3Decimals)); + Assert.That(waternet.WaternetLineList[0].Points[1].Z, Is.EqualTo(levelWaternetPl1).Within(precision3Decimals)); // expected waternet line 1 is connected to pl2 with level -6.111 + 2.1 = -4.011 Assert.That(waternet.WaternetLineList[1].HeadLine, Is.EqualTo(waternet.HeadLineList[0])); @@ -200,8 +203,8 @@ public void TestConvertPlLinesToWaternetWhenNoHeadLinesExpected() { PlLines plLines = CreatePlLinesForTest(); - SoilProfile1D soilProfile1D = CreateSoilProfile1DForTest(); - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, 0, 0, 0); + SoilProfile1D soilProfile1D = CreateSoilProfile1DForTest(out GeometryPointString surfaceLine); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, surfaceLine, 0, 0, 0, IntrusionVerticalWaterPressureType.Standard); // head lines Assert.That(waternet.HeadLineList, Has.Count.EqualTo(3)); Assert.Multiple(() => @@ -216,7 +219,7 @@ // check that no headline are added when Pl2, Pl3 or Pl4 does not exist or has no points plLines.Lines[PlLineType.Pl3] = null; plLines.Lines[PlLineType.Pl4].Points.Clear(); - waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, 0, 0, 0); + waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, surfaceLine, 0, 0, 0, IntrusionVerticalWaterPressureType.Standard); // head lines Assert.That(waternet.HeadLineList, Has.Count.EqualTo(1)); Assert.Multiple(() => @@ -231,9 +234,9 @@ public void TestConvertPlLinesToWaternetWhenNoWaternetLinesExpected() { PlLines plLines = CreatePlLinesForTest(); - SoilProfile1D soilProfile1D = CreateSoilProfile1DForTest(); + SoilProfile1D soilProfile1D = CreateSoilProfile1DForTest(out GeometryPointString surfaceLine); const double penetrateLength = 2.1; - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, penetrateLength, 0, 0); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, surfaceLine, penetrateLength, 0, 0, IntrusionVerticalWaterPressureType.Standard); Assert.Multiple(() => { Assert.That(waternet.HeadLineList, Has.Count.EqualTo(3)); @@ -242,7 +245,7 @@ // check that no waternetlines are added for pl3 when InBetweenAquiferLayer is null soilProfile1D = CreateSoilProfile1DWith1AquiferForTest(); - waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, penetrateLength, 0, 0); + waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, surfaceLine, penetrateLength, 0, 0, IntrusionVerticalWaterPressureType.Standard); Assert.Multiple(() => { Assert.That(waternet.HeadLineList, Has.Count.EqualTo(3)); @@ -260,7 +263,7 @@ // check that no waternetlines are added for pl2, pl3 and pl4 when BottomAquiferLayer is null soilProfile1D = CreateSoilProfile1DWithoutAquifersForTest(); - waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, penetrateLength, 0, 0); + waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, surfaceLine, penetrateLength, 0, 0, IntrusionVerticalWaterPressureType.Standard); Assert.Multiple(() => { Assert.That(waternet.HeadLineList, Has.Count.EqualTo(3)); @@ -306,7 +309,7 @@ PlLines plLines = CreateAllPlLines(5); // Call - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength, IntrusionVerticalWaterPressureType.Standard); // Assert AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); @@ -378,7 +381,7 @@ PlLines plLines = CreateAllPlLines(); // Call - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength, IntrusionVerticalWaterPressureType.Standard); // Assert AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); @@ -437,15 +440,16 @@ /// bottom aquifer layer /// --------------------------------------------------- Level -30 m /// - [Test] - public void CreateWaternetBasedOnPlLines_ValidPLLinesAndSoilProfile2DWithContinuousInBetweenAquiferLayerConsistOfOnePart_ReturnsExpectedWaternet() + [TestCase(IntrusionVerticalWaterPressureType.Standard, -9.999)] + [TestCase(IntrusionVerticalWaterPressureType.Linear, 0)] + public void CreateWaternetBasedOnPlLines_ValidPLLinesAndSoilProfile2DWithContinuousInBetweenAquiferLayerConsistOfOnePart_ReturnsExpectedWaternet(IntrusionVerticalWaterPressureType? pressureType, double levelWaternetPl1) { // Setup SoilLayer2D soilLayer = CreateRectangularSoilLayer2D(0, -10, leftCoordinate, rightCoordinate, false); SoilLayer2D soilLayerAquiferInBetween = CreateRectangularSoilLayer2D(-10, -20, leftCoordinate, rightCoordinate, true); SoilLayer2D soilLayerInBetween = CreateRectangularSoilLayer2D(-20, -25, leftCoordinate, rightCoordinate, false); SoilLayer2D soilLayerAquiferBottom = CreateRectangularSoilLayer2D(-25, -30, leftCoordinate, rightCoordinate, true); - + var soilProfile = new SoilProfile2D { Geometry = new GeometryData @@ -459,11 +463,11 @@ soilProfile.Surfaces.Add(soilLayerAquiferInBetween); soilProfile.Surfaces.Add(soilLayerInBetween); soilProfile.Surfaces.Add(soilLayerAquiferBottom); - + PlLines plLines = CreateAllPlLines(); // Call - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength, pressureType); // Assert AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); @@ -479,8 +483,8 @@ Assert.That(pl1WaternetLine.HeadLine.Name, Is.SameAs(waternet.PhreaticLine.Name)); Point2D[] expectedWaternetLine1 = [ - new Point2D(leftCoordinate, -9.999), - new Point2D(rightCoordinate, -9.999) + new Point2D(leftCoordinate, levelWaternetPl1), + new Point2D(rightCoordinate, levelWaternetPl1) ]; AssertGeometry(expectedWaternetLine1, pl1WaternetLine.Points); @@ -583,7 +587,7 @@ PlLines plLines = CreateAllPlLines(); // Call - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength, IntrusionVerticalWaterPressureType.Standard); // Assert AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); @@ -701,7 +705,7 @@ PlLines plLines = CreateAllPlLines(); // Call - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength, IntrusionVerticalWaterPressureType.Standard); // Assert AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); @@ -848,7 +852,7 @@ PlLines plLines = CreateAllPlLines(); // Call - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength, IntrusionVerticalWaterPressureType.Standard); // Assert AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); @@ -995,7 +999,7 @@ PlLines plLines = CreateAllPlLines(); // Call - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength, IntrusionVerticalWaterPressureType.Standard); // Assert AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); @@ -1092,7 +1096,7 @@ PlLines plLines = CreateAllPlLines(); // Call - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength, IntrusionVerticalWaterPressureType.Standard); // Assert AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); @@ -1166,7 +1170,7 @@ PlLines plLines = CreateAllPlLines(); // Call - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength, IntrusionVerticalWaterPressureType.Standard); // Assert AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); @@ -1212,7 +1216,7 @@ PlLines plLines = CreateAllPlLines(); // Call - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength); + Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile, penetrationLength, IntrusionVerticalWaterPressureType.Standard); // Assert AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); @@ -1229,31 +1233,31 @@ public void TestLanguageNLThrowsExceptionWhenSoilProfile1DIsNull() { var plLines = new PlLines(); - Assert.That(() => PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, null, 0, 0, 0), Throws.InstanceOf().With.Message.EqualTo("Geen ondergrond profiel gedefinieerd")); + Assert.That(() => PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, null, null, 0, 0, 0, IntrusionVerticalWaterPressureType.Standard), Throws.InstanceOf().With.Message.EqualTo("Geen ondergrond profiel gedefinieerd")); } [Test] [SetUICulture("nl-NL")] public void TestLanguageNLThrowsExceptionWhenPlLinesIsNull() { var soilProfile1D = new SoilProfile1D(); - Assert.That(() => PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(null, soilProfile1D, 0, 0, 0), Throws.InstanceOf().With.Message.EqualTo("Geen object voor pn-lijnen gedefinieerd")); + Assert.That(() => PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(null, soilProfile1D, null, 0, 0, 0, IntrusionVerticalWaterPressureType.Standard), Throws.InstanceOf().With.Message.EqualTo("Geen object voor pn-lijnen gedefinieerd")); } [Test] [SetUICulture("nl-NL")] public void CreateWaternetBasedOnPlLines_SoilProfileNull_ThrowsException() { var plLines = new PlLines(); - Assert.That(() => PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, null, 0), Throws.InstanceOf().With.Message.EqualTo("Geen ondergrond profiel gedefinieerd")); + Assert.That(() => PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, null, 0, IntrusionVerticalWaterPressureType.Standard), Throws.InstanceOf().With.Message.EqualTo("Geen ondergrond profiel gedefinieerd")); } [Test] [SetUICulture("nl-NL")] public void CreateWaternetBasedOnPlLines_ProfileLinesNull_ThrowsException() { var soilProfile = new SoilProfile2D(); - Assert.That(() => PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(null, soilProfile, 0), Throws.InstanceOf().With.Message.EqualTo("Geen object voor pn-lijnen gedefinieerd")); + Assert.That(() => PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(null, soilProfile, 0, IntrusionVerticalWaterPressureType.Standard), Throws.InstanceOf().With.Message.EqualTo("Geen object voor pn-lijnen gedefinieerd")); } private static PlLines CreatePlLinesForTest() @@ -1282,8 +1286,13 @@ return plLines; } - private static SoilProfile1D CreateSoilProfile1DForTest() + private static SoilProfile1D CreateSoilProfile1DForTest(out GeometryPointString surfaceLine) { + const double topLevel = 1.212; + surfaceLine = new GeometryPointString(); + surfaceLine.Points.Add(new PlLinePoint(0, topLevel)); + surfaceLine.Points.Add(new PlLinePoint(100, topLevel)); + var soilProfile1D = new SoilProfile1D { BottomLevel = -30.0 @@ -1292,7 +1301,7 @@ var layer = new SoilLayer1D { Name = "L1a", - TopLevel = 1.212, + TopLevel = topLevel, IsAquifer = true // aquifer at top }; soilProfile1D.Layers.Add(layer); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/PlLinesHelper.cs =================================================================== diff -u -r4540 -r4928 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/PlLinesHelper.cs (.../PlLinesHelper.cs) (revision 4540) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/PlLinesHelper.cs (.../PlLinesHelper.cs) (revision 4928) @@ -103,7 +103,6 @@ /// The location. /// The sub soil scenario. /// The water level. - /// Name of the soil geometry2 d. /// The water level river low. /// The uplift situation. /// The created Pl-lines Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityOutwards/MacroStabilityOutwardsKernelWrapper.cs =================================================================== diff -u -r4896 -r4928 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityOutwards/MacroStabilityOutwardsKernelWrapper.cs (.../MacroStabilityOutwardsKernelWrapper.cs) (revision 4896) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityOutwards/MacroStabilityOutwardsKernelWrapper.cs (.../MacroStabilityOutwardsKernelWrapper.cs) (revision 4928) @@ -117,9 +117,11 @@ double left = damKernelInput.Location.SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelOutside).X; double right = damKernelInput.Location.SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside).X; double penetrationLength = damKernelInput.Location.ModelParametersForPlLines.PenetrationLength; + GeometryPointString surfaceLine = damKernelInput.Location.SurfaceLine.Geometry; SoilProfile1D soilProfile1D = damKernelInput.SubSoilScenario.SoilProfile2D.GetSoilProfile1D( damKernelInput.Location.SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).X); - Waternet waterNet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, penetrationLength, left, right); + IntrusionVerticalWaterPressureType? pressureType = damKernelInput.Location.IntrusionVerticalWaterPressure; + Waternet waterNet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, surfaceLine, penetrationLength, left, right, pressureType); macroStabilityInput.Input = fillMacroStabilityWrapperFromEngine.CreateMacroStabilityInput(damKernelInput, FailureMechanismParametersMStab.MStabParameters, waterNet); fileNameForCalculation = macroStabilityCommonHelper.GetStabilityInputFileName(damKernelInput, iterationIndex, FailureMechanismParametersMStab.MStabParameters.Model); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r4896 -r4928 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 4896) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 4928) @@ -149,9 +149,11 @@ double left = damKernelInput.Location.SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelOutside).X; double right = damKernelInput.Location.SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside).X; double penetrationLength = damKernelInput.Location.ModelParametersForPlLines.PenetrationLength; + GeometryPointString surfaceLine = damKernelInput.Location.SurfaceLine.Geometry; SoilProfile1D soilProfile1D = damKernelInput.SubSoilScenario.SoilProfile2D.GetSoilProfile1D( damKernelInput.Location.SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).X); - Waternet waterNet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, penetrationLength, left, right); + IntrusionVerticalWaterPressureType? pressureType = damKernelInput.Location.IntrusionVerticalWaterPressure; + Waternet waterNet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, surfaceLine, penetrationLength, left, right, pressureType); macroStabilityInput.Input = fillMacroStabilityWrapperFromEngine.CreateMacroStabilityInput(damKernelInput, FailureMechanismParametersMStab.MStabParameters, waterNet); fileNameForCalculation = macroStabilityCommonHelper.GetStabilityInputFileName(damKernelInput, iterationIndex, FailureMechanismParametersMStab.MStabParameters.Model);