Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilProfile1DTests.cs
===================================================================
diff -u -r4906 -r4927
--- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilProfile1DTests.cs (.../SoilProfile1DTests.cs) (revision 4906)
+++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilProfile1DTests.cs (.../SoilProfile1DTests.cs) (revision 4927)
@@ -42,7 +42,7 @@
SoilProfile1D soilProfile1D = CreateProfileWith3Layers(true, false, true);
Assert.Multiple(() =>
{
- Assert.That(soilProfile1D.InBetweenAquiferClusters, Is.Null);
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters, Is.Empty);
Assert.That(soilProfile1D.InBetweenAquiferLayer, Is.Null);
Assert.That(soilProfile1D.BottomAquiferLayer.TopLevel, Is.EqualTo(topLevelLayer3));
Assert.That(soilProfile1D.BottomAquiferLayer.BottomLevel, Is.EqualTo(topLevelLayer4));
@@ -52,7 +52,7 @@
soilProfile1D = CreateProfileWith6Layers(true, true, false, false, true, true);
Assert.Multiple(() =>
{
- Assert.That(soilProfile1D.InBetweenAquiferClusters, Is.Null);
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters, Is.Empty);
Assert.That(soilProfile1D.InBetweenAquiferLayer, Is.Null);
Assert.That(soilProfile1D.BottomAquiferLayer.TopLevel, Is.EqualTo(topLevelLayer5));
Assert.That(soilProfile1D.BottomAquiferLayer.BottomLevel, Is.EqualTo(topLevelLayer6));
@@ -62,7 +62,7 @@
soilProfile1D = CreateProfileWith6Layers(true, true, true, true, true, true);
Assert.Multiple(() =>
{
- Assert.That(soilProfile1D.InBetweenAquiferClusters, Is.Null);
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters, Is.Empty);
Assert.That(soilProfile1D.InBetweenAquiferLayer, Is.Null);
Assert.That(soilProfile1D.BottomAquiferLayer.TopLevel, Is.EqualTo(topLevelLayer1));
Assert.That(soilProfile1D.BottomAquiferLayer.BottomLevel, Is.EqualTo(topLevelLayer2));
@@ -72,7 +72,7 @@
soilProfile1D = CreateProfileWith6Layers(false, false, false, false, false, false);
Assert.Multiple(() =>
{
- Assert.That(soilProfile1D.InBetweenAquiferClusters, Is.Null);
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters, Is.Empty);
Assert.That(soilProfile1D.InBetweenAquiferLayer, Is.Null);
Assert.That(soilProfile1D.BottomAquiferLayer, Is.Null);
});
@@ -81,7 +81,7 @@
soilProfile1D = CreateProfileWith6Layers(true, false, true, true, true, true);
Assert.Multiple(() =>
{
- Assert.That(soilProfile1D.InBetweenAquiferClusters, Is.Null);
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters, Is.Empty);
Assert.That(soilProfile1D.InBetweenAquiferLayer, Is.Null);
Assert.That(soilProfile1D.BottomAquiferLayer.TopLevel, Is.EqualTo(topLevelLayer3));
Assert.That(soilProfile1D.BottomAquiferLayer.BottomLevel, Is.EqualTo(topLevelLayer4));
@@ -91,21 +91,21 @@
soilProfile1D = CreateProfileWith6Layers(false, false, false, true, true, true);
Assert.Multiple(() =>
{
- Assert.That(soilProfile1D.InBetweenAquiferClusters, Is.Null);
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters, Is.Empty);
Assert.That(soilProfile1D.InBetweenAquiferLayer, Is.Null);
Assert.That(soilProfile1D.BottomAquiferLayer.TopLevel, Is.EqualTo(topLevelLayer4));
Assert.That(soilProfile1D.BottomAquiferLayer.BottomLevel, Is.EqualTo(topLevelLayer5));
});
// 2 in-between aquifers present (layers 2 and 4) and bottom aquifer is the lowest layer
soilProfile1D = CreateProfileWith6Layers(false, true, false, true, false, true);
- Assert.That(soilProfile1D.InBetweenAquiferClusters, Has.Count.EqualTo(2));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters, Has.Count.EqualTo(2));
Assert.Multiple(() =>
{
- Assert.That(soilProfile1D.InBetweenAquiferClusters[0].Item1.TopLevel, Is.EqualTo(topLevelLayer2));
- Assert.That(soilProfile1D.InBetweenAquiferClusters[0].Item2.BottomLevel, Is.EqualTo(topLevelLayer3));
- Assert.That(soilProfile1D.InBetweenAquiferClusters[1].Item1.TopLevel, Is.EqualTo(topLevelLayer4));
- Assert.That(soilProfile1D.InBetweenAquiferClusters[1].Item2.BottomLevel, Is.EqualTo(topLevelLayer5));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters[0].Item1.TopLevel, Is.EqualTo(topLevelLayer2));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters[0].Item2.BottomLevel, Is.EqualTo(topLevelLayer3));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters[1].Item1.TopLevel, Is.EqualTo(topLevelLayer4));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters[1].Item2.BottomLevel, Is.EqualTo(topLevelLayer5));
Assert.That(soilProfile1D.InBetweenAquiferLayer.TopLevel, Is.EqualTo(topLevelLayer2));
Assert.That(soilProfile1D.InBetweenAquiferLayer.BottomLevel, Is.EqualTo(topLevelLayer3));
Assert.That(soilProfile1D.BottomAquiferLayer.TopLevel, Is.EqualTo(topLevelLayer6));
@@ -114,11 +114,11 @@
// 1 in-between aquifers cluster present (layers 2-4) and bottom aquifer is the lowest layer
soilProfile1D = CreateProfileWith6Layers(false, true, true, true, false, true);
- Assert.That(soilProfile1D.InBetweenAquiferClusters, Has.Count.EqualTo(1));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters, Has.Count.EqualTo(1));
Assert.Multiple(() =>
{
- Assert.That(soilProfile1D.InBetweenAquiferClusters[0].Item1.TopLevel, Is.EqualTo(topLevelLayer2));
- Assert.That(soilProfile1D.InBetweenAquiferClusters[0].Item2.BottomLevel, Is.EqualTo(topLevelLayer5));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters[0].Item1.TopLevel, Is.EqualTo(topLevelLayer2));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters[0].Item2.BottomLevel, Is.EqualTo(topLevelLayer5));
Assert.That(soilProfile1D.InBetweenAquiferLayer.TopLevel, Is.EqualTo(topLevelLayer2));
Assert.That(soilProfile1D.InBetweenAquiferLayer.BottomLevel, Is.EqualTo(topLevelLayer3));
Assert.That(soilProfile1D.BottomAquiferLayer.TopLevel, Is.EqualTo(topLevelLayer6));
@@ -127,11 +127,11 @@
// 1 in-between aquifer present (layer 2) and bottom aquifer is the highest layer of cluster 4-6
soilProfile1D = CreateProfileWith6Layers(false, true, false, true, true, true);
- Assert.That(soilProfile1D.InBetweenAquiferClusters, Has.Count.EqualTo(1));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters, Has.Count.EqualTo(1));
Assert.Multiple(() =>
{
- Assert.That(soilProfile1D.InBetweenAquiferClusters[0].Item1.TopLevel, Is.EqualTo(topLevelLayer2));
- Assert.That(soilProfile1D.InBetweenAquiferClusters[0].Item2.BottomLevel, Is.EqualTo(topLevelLayer3));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters[0].Item1.TopLevel, Is.EqualTo(topLevelLayer2));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters[0].Item2.BottomLevel, Is.EqualTo(topLevelLayer3));
Assert.That(soilProfile1D.InBetweenAquiferLayer.TopLevel, Is.EqualTo(topLevelLayer2));
Assert.That(soilProfile1D.InBetweenAquiferLayer.BottomLevel, Is.EqualTo(topLevelLayer3));
Assert.That(soilProfile1D.BottomAquiferLayer.TopLevel, Is.EqualTo(topLevelLayer4));
Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile1D.cs
===================================================================
diff -u -r4909 -r4927
--- DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile1D.cs (.../SoilProfile1D.cs) (revision 4909)
+++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile1D.cs (.../SoilProfile1D.cs) (revision 4927)
@@ -205,26 +205,25 @@
///
/// The list of all clusters of in-between aquifers.
///
- public IList<(SoilLayer1D, SoilLayer1D)> InBetweenAquiferClusters
+ public IList<(SoilLayer1D, SoilLayer1D)> GetInBetweenAquiferClusters => InBetweenAquiferClusters();
+
+ private IList<(SoilLayer1D, SoilLayer1D)> InBetweenAquiferClusters()
{
- get
+ // At least 4 layers are needed (aquitard, aquifer, aquitard, aquifer) to get one in-between aquifer
+ if (LayerCount <= 3)
{
- // At least 4 layers are needed (aquitard, aquifer, aquitard, aquifer) to get one in-between aquifer
- if (LayerCount <= 3)
- {
- return null;
- }
+ return new List<(SoilLayer1D, SoilLayer1D)>();
+ }
- IList sortedLayers = Layers.OrderByDescending(l => l.TopLevel).ToList();
- IList topLayers = DetermineTopLayersOfInBetweenAquiferClusters(sortedLayers);
- if (topLayers.Count <= 0)
- {
- return null;
- }
-
- IList bottomLayers = DetermineBottomLayersOfInBetweenAquiferClusters(sortedLayers, layers.IndexOf(topLayers.First()));
- return topLayers.Count != bottomLayers.Count ? null : topLayers.Select((topLayer, i) => new ValueTuple(topLayer, bottomLayers[i])).ToList();
+ IList sortedLayers = Layers.OrderByDescending(l => l.TopLevel).ToList();
+ IList topLayers = DetermineTopLayersOfInBetweenAquiferClusters(sortedLayers);
+ if (topLayers.Count <= 0)
+ {
+ return new List<(SoilLayer1D, SoilLayer1D)>();
}
+
+ IList bottomLayers = DetermineBottomLayersOfInBetweenAquiferClusters(sortedLayers, layers.IndexOf(topLayers.First()));
+ return topLayers.Count != bottomLayers.Count ? null : topLayers.Select((topLayer, i) => new ValueTuple(topLayer, bottomLayers[i])).ToList();
}
///
@@ -238,7 +237,7 @@
{
get
{
- return InBetweenAquiferClusters?.First().Item1;
+ return GetInBetweenAquiferClusters.Count == 0 ? null : GetInBetweenAquiferClusters.First().Item1;
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverter.cs
===================================================================
diff -u -r4920 -r4927
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverter.cs (.../PlLinesToWaternetConverter.cs) (revision 4920)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverter.cs (.../PlLinesToWaternetConverter.cs) (revision 4927)
@@ -200,9 +200,9 @@
if (headLine != null && !IsBelowSoilProfile(soilProfile1D, plLine))
{
waternet.HeadLineList.Add(headLine);
- if (soilProfile1D.InBetweenAquiferClusters != null)
+ if (soilProfile1D.GetInBetweenAquiferClusters != null)
{
- foreach ((SoilLayer1D, SoilLayer1D) inBetweenAquiferCluster in soilProfile1D.InBetweenAquiferClusters.Where(layer => layer is { Item1: not null, Item2: not null }))
+ foreach ((SoilLayer1D, SoilLayer1D) inBetweenAquiferCluster in soilProfile1D.GetInBetweenAquiferClusters.Where(layer => layer is { Item1: not null, Item2: not null }))
{
double levelTop = inBetweenAquiferCluster.Item1.TopLevel;
double levelBottom = inBetweenAquiferCluster.Item2.BottomLevel;
@@ -254,7 +254,7 @@
for (var i = 0; i < xCoordinates.Length; i++)
{
SoilProfile1D crossSection = soilProfile.GetSoilProfile1D(xCoordinates[i]);
- currentCount = crossSection.InBetweenAquiferClusters?.Count ?? 0;
+ currentCount = crossSection.GetInBetweenAquiferClusters?.Count ?? 0;
if (i > 0 && currentCount != previousCount)
{
return 0;
@@ -415,9 +415,9 @@
case LayerType.BottomAquifer:
return soilProfile1D.BottomAquiferLayer;
case LayerType.TopLayerInBetweenAquiferCluster:
- return soilProfile1D.InBetweenAquiferClusters[indexInBetweenAquifer].Item1;
+ return soilProfile1D.GetInBetweenAquiferClusters[indexInBetweenAquifer].Item1;
case LayerType.BottomLayerInBetweenAquiferCluster:
- return soilProfile1D.InBetweenAquiferClusters[indexInBetweenAquifer].Item2;
+ return soilProfile1D.GetInBetweenAquiferClusters[indexInBetweenAquifer].Item2;
}
return null;
@@ -623,14 +623,14 @@
private static List DivideCurvesIntoLines(List curves)
{
var lines = new List();
- foreach (GeometryPointString curve in curves)
+ foreach (IList points in curves.Select(curve => curve.Points))
{
- for (var i = 0; i < curve.Points.Count - 1; i++)
+ for (var i = 0; i < points.Count - 1; i++)
{
var line = new Line
{
- BeginPoint = new Point2D(curve.Points[i].X, curve.Points[i].Z),
- EndPoint = new Point2D(curve.Points[i + 1].X, curve.Points[i + 1].Z)
+ BeginPoint = new Point2D(points[i].X, points[i].Z),
+ EndPoint = new Point2D(points[i + 1].X, points[i + 1].Z)
};
lines.Add(line);
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverterTests.cs
===================================================================
diff -u -r4909 -r4927
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverterTests.cs (.../PlLinesToWaternetConverterTests.cs) (revision 4909)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverterTests.cs (.../PlLinesToWaternetConverterTests.cs) (revision 4927)
@@ -88,11 +88,11 @@
SoilProfile1D soilProfile1D = CreateSoilProfile1DForTest();
Assert.Multiple(() =>
{
- Assert.That(soilProfile1D.InBetweenAquiferClusters, Has.Count.EqualTo(2).Within(precision3Decimals));
- Assert.That(soilProfile1D.InBetweenAquiferClusters[0].Item1.TopLevel, Is.EqualTo(-2.111).Within(precision3Decimals));
- Assert.That(soilProfile1D.InBetweenAquiferClusters[0].Item2.BottomLevel, Is.EqualTo(-3.373).Within(precision3Decimals));
- Assert.That(soilProfile1D.InBetweenAquiferClusters[1].Item1.TopLevel, Is.EqualTo(-4.151).Within(precision3Decimals));
- Assert.That(soilProfile1D.InBetweenAquiferClusters[1].Item2.BottomLevel, Is.EqualTo(-5.373).Within(precision3Decimals));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters, Has.Count.EqualTo(2).Within(precision3Decimals));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters[0].Item1.TopLevel, Is.EqualTo(-2.111).Within(precision3Decimals));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters[0].Item2.BottomLevel, Is.EqualTo(-3.373).Within(precision3Decimals));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters[1].Item1.TopLevel, Is.EqualTo(-4.151).Within(precision3Decimals));
+ Assert.That(soilProfile1D.GetInBetweenAquiferClusters[1].Item2.BottomLevel, Is.EqualTo(-5.373).Within(precision3Decimals));
Assert.That(soilProfile1D.BottomAquiferLayer.TopLevel, Is.EqualTo(-6.111).Within(precision3Decimals));
});