Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs =================================================================== diff -u -r4994 -r4995 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs (.../MacroStabilityCommonHelperTests.cs) (revision 4994) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs (.../MacroStabilityCommonHelperTests.cs) (revision 4995) @@ -118,6 +118,32 @@ }); } + [Test] + public void GivenSoilGeometryProbabilityWithSoilProfile2DAndMatchingSurfaceLineLongerOnLeftWhenCombiningThenSoilProfile2DIsExtendedToTheLeft() + { + SoilGeometryProbability soilGeometryProbability = CreateSoilGeometryProbabilityWithSoilProfile2DWithSurfaceLineDitchDike(); + // Create the same surfaceline as is used for creating the SoilProfile2D in the SoilGeometryProbability + // But now the SurfaceLine2 is longer on the left side (-5.0 instead of 0.0) + SurfaceLine2 surfaceLine = FactoryForSurfaceLines.CreateSurfaceLineWithDikeAndDitch(); + surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelOutside).X = + surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelOutside).X - 5.0; + // Now combine the soilGeometryProbability with the same SurfaceLine2 which should result the SoilProfile2D + // being extended to the left with 5.0 meters + MacroStabilityCommonHelper.CombineSoilProfileWithSurfaceLine(soilGeometryProbability, surfaceLine, new Soil()); + GeometryData geometry = soilGeometryProbability.SoilProfile2D.Geometry; + // For debugging purposes + // GeometryExporter.ExportToFile(geometry, visualizationFolder + "Geometry.txt"); + // GeometryExporter.ExportToJsonFile(geometry, visualizationFolder + "Geometry.json"); + Assert.Multiple(() => + { + Assert.That(soilGeometryProbability.SoilProfileType, Is.EqualTo(SoilProfileType.ProfileType2D)); + Assert.That(geometry.Surfaces, Has.Count.EqualTo(2)); + Assert.That(geometry.Left, Is.EqualTo(-5.0).Within(cTolerance)); + Assert.That(geometry.Right, Is.EqualTo(75.0).Within(cTolerance)); + Assert.That(geometry.Bottom, Is.EqualTo(-20.0).Within(cTolerance)); + }); + } + private SoilGeometryProbability CreateSoilGeometryProbabilityWithSoilProfile2DWithSurfaceLineDitchDike() { SoilGeometryProbability soilGeometryProbability = FactoryForSoilGeometryProbabilities.CreateSoilGeometryProbabilityWithSoilProfile1D(); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs =================================================================== diff -u -r4994 -r4995 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs (.../MacroStabilityCommonHelper.cs) (revision 4994) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs (.../MacroStabilityCommonHelper.cs) (revision 4995) @@ -431,6 +431,11 @@ { GeometryHelper.CutGeometryLeft(subSoilScenario.SoilProfile2D.Geometry, surfaceLine2LeftX); } + + if (surfaceLine2LeftX < subSoilScenario.SoilProfile2D.Geometry.GetGeometryBounds().Left) + { + GeometryHelper.ExtendGeometryLeft(subSoilScenario.SoilProfile2D.Geometry, surfaceLine2LeftX); + } } ///