Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs =================================================================== diff -u -r5215 -r5259 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs (.../SoilProfile2DSurfaceLineHelper.cs) (revision 5215) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs (.../SoilProfile2DSurfaceLineHelper.cs) (revision 5259) @@ -23,7 +23,7 @@ using System.Collections.Generic; using System.Linq; using Deltares.DamEngine.Data.Geometry; -using Deltares.DamEngine.Data.Standard.Language; +using Deltares.DamEngine.Data.Standard; namespace Deltares.DamEngine.Data.Geotechnics; @@ -347,9 +347,15 @@ if (layerFromOldSurfaces == null) { - SoilLayer2D oldLayer = GetLayerIfSurfaceIsLeftOrRightOfOldSurfaces(surface, oldSurfaces); - if (oldLayer != null) + SoilLayer2D oldLayer = null; + bool isDefaultLayer = IsLayerAboveOriginalSurfaceLine(soilLayer2D2, soilProfile2D.Geometry.SurfaceLine); + if (!isDefaultLayer) { + oldLayer = GetLayerIfSurfaceIsLeftOrRightOfOldSurfaces(surface, oldSurfaces); + isDefaultLayer = oldLayer == null; + } + if (!isDefaultLayer) + { soilLayer2D2.IsAquifer = oldLayer.IsAquifer; soilLayer2D2.WaterpressureInterpolationModel = oldLayer.WaterpressureInterpolationModel; soilLayer2D2.SoilName = oldLayer.SoilName; @@ -366,6 +372,22 @@ result.Surfaces.Add(soilLayer2D2); } } + + private static bool IsLayerAboveOriginalSurfaceLine(SoilLayer2D layer, GeometryPointString surfaceLine) + { + if (layer == null || surfaceLine == null) + { + return false; + } + foreach (GeometryPoint point in layer.GeometrySurface.OuterLoop.Points) + { + if (point.Z.IsLessThan(surfaceLine.GetZatX(point.X))) + { + return false; + } + } + return true; + } private static void ReconstructPreConsolidations(ref SoilProfile2D result, SoilProfile2D cloneProfile, double shift) {