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