Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverterTests.cs =================================================================== diff -u -r6404 -r6917 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverterTests.cs (.../PlLinesToWaternetConverterTests.cs) (revision 6404) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverterTests.cs (.../PlLinesToWaternetConverterTests.cs) (revision 6917) @@ -348,14 +348,7 @@ // Setup SurfaceLine2 surfaceLine = FactoryForSurfaceLines.CreateSurfaceLineWithDikeAndDitch(0, -12.5); SoilProfile1D soilProfile1D = FactoryForSoilProfiles.Create4LayersProfileWith1BottomAquifer(); - var soilSurfaceProfile = new SoilSurfaceProfile - { - SoilProfile = soilProfile1D, - SurfaceLine2 = surfaceLine, - DikeEmbankmentMaterial = new Soil(), - Name = "Test" - }; - SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); + SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DBasedOnSoilProfile1D(soilProfile1D, surfaceLine); const double xLeft = 0; const double xPointF = 59.3; @@ -419,14 +412,7 @@ SurfaceLine2 surfaceLine = FactoryForSurfaceLines.CreateSurfaceLineWithDikeAndDitch(10, -8); SoilProfile1D soilProfile1D = FactoryForSoilProfiles.CreateClaySandClaySandClaySandProfile(10, 6, 2, 0 - 2, -4, -6); soilProfile1D.BottomLevel = -10; - var soilSurfaceProfile = new SoilSurfaceProfile - { - SoilProfile = soilProfile1D, - SurfaceLine2 = surfaceLine, - DikeEmbankmentMaterial = new Soil(), - Name = "Test" - }; - SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); + SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DBasedOnSoilProfile1D(soilProfile1D, surfaceLine); const double pL1Level = 0; PlLines plLines = CreateAllPlLines(pL1Level); @@ -512,28 +498,6 @@ }); } - private static SoilLayer2D CreateSoilLayer2D(Point2D topLeftCoordinate, Point2D topRightCoordinate, - Point2D bottomRightCoordinate, Point2D bottomLeftCoordinate, bool isAquifer) - { - return new SoilLayer2D - { - GeometrySurface = new GeometrySurface - { - OuterLoop = new GeometryLoop - { - CurveList = - { - new GeometryCurve(topLeftCoordinate, topRightCoordinate), - new GeometryCurve(topRightCoordinate, bottomRightCoordinate), - new GeometryCurve(bottomRightCoordinate, bottomLeftCoordinate), - new GeometryCurve(bottomLeftCoordinate, topLeftCoordinate) - } - } - }, - IsAquifer = isAquifer - }; - } - private static void AssertGeometry(IEnumerable expectedPoints, IEnumerable actualPoints) { int expectedNrOfPoints = expectedPoints.Count(); @@ -551,23 +515,6 @@ } } - private static void AssertGeometry(IEnumerable expectedPoints, IEnumerable actualPoints) - { - int expectedNrOfPoints = expectedPoints.Count(); - Assert.That(actualPoints.Count(), Is.EqualTo(expectedNrOfPoints)); - - for (var i = 0; i < expectedNrOfPoints; i++) - { - GeometryPoint expectedPoint = expectedPoints.ElementAt(i); - GeometryPoint actualPoint = actualPoints.ElementAt(i); - Assert.Multiple(() => - { - Assert.That(actualPoint.X, Is.EqualTo(expectedPoint.X).Within(precision5Decimals)); - Assert.That(actualPoint.Z, Is.EqualTo(expectedPoint.Z).Within(precision5Decimals)); - }); - } - } - private static PlLines CreateAllPlLines(double pl1Level = -5) { return CreateAllPlLines(leftCoordinate, rightCoordinate, pl1Level); @@ -600,15 +547,21 @@ public class Given1DSoilProfileWithTwoClustersOfInBetweenAquifers { - private static SurfaceLine2 surfaceLine; - private readonly SoilProfile1D soilProfile1D = FactoryForSoilProfiles.CreateSoilProfile1DWithTwoClustersOfInBetweenAquifers(out surfaceLine); + private static readonly SurfaceLine2 surfaceLine; + private static readonly SoilProfile1D soilProfile1D = FactoryForSoilProfiles.CreateSoilProfile1DWithTwoClustersOfInBetweenAquifers(out surfaceLine); + private readonly SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DBasedOnSoilProfile1D(soilProfile1D, surfaceLine); - [TestCase(IntrusionVerticalWaterPressureType.Standard, -2.110, 6)] - [TestCase(IntrusionVerticalWaterPressureType.Linear, 1.212, 6)] - [TestCase(IntrusionVerticalWaterPressureType.HydroStatic, -2.110, 6)] - [TestCase(IntrusionVerticalWaterPressureType.FullHydroStatic, -30.000, 1)] - [TestCase(IntrusionVerticalWaterPressureType.SemiTimeDependent, -2.110, 7)] - public void WhenCreatingWaternetBasedOnPlLinesWithPhreaticLineInTopOfHighestAquitard_ThenReturnsValidWaternet(IntrusionVerticalWaterPressureType? pressureType, double levelWaternetPl1, int waternetLineCount) + [TestCase(IntrusionVerticalWaterPressureType.Standard, -2.110, 6, false)] + [TestCase(IntrusionVerticalWaterPressureType.Standard, -2.110, 6, true)] + [TestCase(IntrusionVerticalWaterPressureType.Linear, 1.212, 6, false)] + [TestCase(IntrusionVerticalWaterPressureType.Linear, 1.212, 6, true)] + [TestCase(IntrusionVerticalWaterPressureType.HydroStatic, -2.110, 6, false)] + [TestCase(IntrusionVerticalWaterPressureType.HydroStatic, -2.110, 6, true)] + [TestCase(IntrusionVerticalWaterPressureType.FullHydroStatic, -30.000, 1, false)] + [TestCase(IntrusionVerticalWaterPressureType.FullHydroStatic, -30.000, 1, true)] + [TestCase(IntrusionVerticalWaterPressureType.SemiTimeDependent, -2.110, 7, false)] + [TestCase(IntrusionVerticalWaterPressureType.SemiTimeDependent, -2.110, 7, true)] + public void WhenCreatingWaternetBasedOnPlLinesWithPhreaticLineInTopOfHighestAquitard_ThenReturnsValidWaternet(IntrusionVerticalWaterPressureType? pressureType, double levelWaternetPl1, int waternetLineCount, bool is2DBasedOn1D) { const double pL1Level = 0.0; const double xLeft = 0.0; @@ -626,7 +579,9 @@ }); const double penetrateLength = 2.1; - Waternet waternet = PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, surfaceLine, penetrateLength, pressureType); + Waternet waternet = is2DBasedOn1D ? + PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile2D, surfaceLine, penetrateLength, pressureType) : + PlLinesToWaternetConverter.CreateWaternetBasedOnPlLines(plLines, soilProfile1D, surfaceLine, penetrateLength, 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 @@ -933,7 +888,7 @@ { double xA = leftCoordinate + (rightCoordinate - leftCoordinate) / 3; double xB = rightCoordinate - (rightCoordinate - leftCoordinate) / 3; - var soilProfile = new SoilProfile2D + var soilProfile2D = new SoilProfile2D { Geometry = new GeometryData { @@ -944,54 +899,54 @@ }; // Setup - SoilLayer2D aquitard1 = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(20, 10, leftCoordinate, rightCoordinate, soilProfile); - SoilLayer2D aquifer2A = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(10, 0, leftCoordinate, xA, soilProfile, null, true); - SoilLayer2D aquifer2B = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(10, 0, xA, xB, soilProfile, null, true); - SoilLayer2D aquifer2C = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(10, 0, xB, rightCoordinate, soilProfile, null, true); - SoilLayer2D aquitard3 = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(0, -10, leftCoordinate, rightCoordinate, soilProfile); - SoilLayer2D aquifer4A = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-10, -20, leftCoordinate, xA, soilProfile, null, true); - SoilLayer2D aquifer4B = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-10, -20, xA, xB, soilProfile, null, true); - SoilLayer2D aquifer4C = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-10, -20, xB, rightCoordinate, soilProfile, null, true); - SoilLayer2D aquitard5 = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-20, -25, leftCoordinate, rightCoordinate, soilProfile); - SoilLayer2D aquifer6A = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-25, -30, leftCoordinate, xA, soilProfile, null, true); - SoilLayer2D aquifer6B = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-25, -30, xA, xB, soilProfile, null, true); - SoilLayer2D aquifer6C = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-25, -30, xB, rightCoordinate, soilProfile, null, true); - SoilLayer2D aquifer7A = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-30, -35, leftCoordinate, xA, soilProfile, null, true); - SoilLayer2D aquifer7B = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-30, -35, xA, xB, soilProfile, null, true); - SoilLayer2D aquifer7C = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-30, -35, xB, rightCoordinate, soilProfile, null, true); + SoilLayer2D aquitard1 = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(20, 10, leftCoordinate, rightCoordinate, soilProfile2D); + SoilLayer2D aquifer2A = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(10, 0, leftCoordinate, xA, soilProfile2D, null, true); + SoilLayer2D aquifer2B = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(10, 0, xA, xB, soilProfile2D, null, true); + SoilLayer2D aquifer2C = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(10, 0, xB, rightCoordinate, soilProfile2D, null, true); + SoilLayer2D aquitard3 = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(0, -10, leftCoordinate, rightCoordinate, soilProfile2D); + SoilLayer2D aquifer4A = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-10, -20, leftCoordinate, xA, soilProfile2D, null, true); + SoilLayer2D aquifer4B = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-10, -20, xA, xB, soilProfile2D, null, true); + SoilLayer2D aquifer4C = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-10, -20, xB, rightCoordinate, soilProfile2D, null, true); + SoilLayer2D aquitard5 = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-20, -25, leftCoordinate, rightCoordinate, soilProfile2D); + SoilLayer2D aquifer6A = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-25, -30, leftCoordinate, xA, soilProfile2D, null, true); + SoilLayer2D aquifer6B = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-25, -30, xA, xB, soilProfile2D, null, true); + SoilLayer2D aquifer6C = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-25, -30, xB, rightCoordinate, soilProfile2D, null, true); + SoilLayer2D aquifer7A = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-30, -35, leftCoordinate, xA, soilProfile2D, null, true); + SoilLayer2D aquifer7B = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-30, -35, xA, xB, soilProfile2D, null, true); + SoilLayer2D aquifer7C = FactoryForSoilProfiles.CreateRectangularSoilLayer2D(-30, -35, xB, rightCoordinate, soilProfile2D, null, true); - soilProfile.Surfaces.Add(aquitard1); - soilProfile.Surfaces.Add(aquifer2A); - soilProfile.Surfaces.Add(aquifer2B); - soilProfile.Surfaces.Add(aquifer2C); - soilProfile.Surfaces.Add(aquitard3); - soilProfile.Surfaces.Add(aquifer4A); - soilProfile.Surfaces.Add(aquifer4B); - soilProfile.Surfaces.Add(aquifer4C); - soilProfile.Surfaces.Add(aquitard5); - soilProfile.Surfaces.Add(aquifer6A); - soilProfile.Surfaces.Add(aquifer6B); - soilProfile.Surfaces.Add(aquifer6C); - soilProfile.Surfaces.Add(aquifer7A); - soilProfile.Surfaces.Add(aquifer7B); - soilProfile.Surfaces.Add(aquifer7C); - soilProfile.Geometry.Surfaces.Add(aquitard1.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquifer2A.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquifer2B.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquifer2C.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquitard3.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquifer4A.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquifer4B.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquifer4C.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquitard5.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquifer6A.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquifer6B.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquifer6C.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquifer7A.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquifer7B.GeometrySurface); - soilProfile.Geometry.Surfaces.Add(aquifer7C.GeometrySurface); + soilProfile2D.Surfaces.Add(aquitard1); + soilProfile2D.Surfaces.Add(aquifer2A); + soilProfile2D.Surfaces.Add(aquifer2B); + soilProfile2D.Surfaces.Add(aquifer2C); + soilProfile2D.Surfaces.Add(aquitard3); + soilProfile2D.Surfaces.Add(aquifer4A); + soilProfile2D.Surfaces.Add(aquifer4B); + soilProfile2D.Surfaces.Add(aquifer4C); + soilProfile2D.Surfaces.Add(aquitard5); + soilProfile2D.Surfaces.Add(aquifer6A); + soilProfile2D.Surfaces.Add(aquifer6B); + soilProfile2D.Surfaces.Add(aquifer6C); + soilProfile2D.Surfaces.Add(aquifer7A); + soilProfile2D.Surfaces.Add(aquifer7B); + soilProfile2D.Surfaces.Add(aquifer7C); + soilProfile2D.Geometry.Surfaces.Add(aquitard1.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquifer2A.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquifer2B.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquifer2C.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquitard3.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquifer4A.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquifer4B.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquifer4C.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquitard5.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquifer6A.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquifer6B.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquifer6C.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquifer7A.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquifer7B.GeometrySurface); + soilProfile2D.Geometry.Surfaces.Add(aquifer7C.GeometrySurface); - return soilProfile; + return soilProfile2D; } } } \ No newline at end of file