Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityCommon/DamMacroStabilityOutputItem.cs =================================================================== diff -u -r999 -r1028 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityCommon/DamMacroStabilityOutputItem.cs (.../DamMacroStabilityOutputItem.cs) (revision 999) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityCommon/DamMacroStabilityOutputItem.cs (.../DamMacroStabilityOutputItem.cs) (revision 1028) @@ -38,14 +38,6 @@ public CalculationResult CalculationResult { get; set; } /// - /// Gets or sets the uplift situation. - /// - /// - /// The uplift situation. - /// - public UpliftSituation UpliftSituation { get; set; } - - /// /// Structure holding the resuls per zone /// public struct ResultsSingleZone Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityTests.cs =================================================================== diff -u -r1026 -r1028 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityTests.cs (.../MacroStabilityTests.cs) (revision 1026) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/MacroStabilityTests.cs (.../MacroStabilityTests.cs) (revision 1028) @@ -21,7 +21,6 @@ using System.IO; using System.Text.RegularExpressions; -using Deltares.DamEngine.Data.Standard; using Deltares.DamEngine.Data.Standard.Calculation; using Deltares.DamEngine.Io; using Deltares.DamEngine.Io.XmlInput; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs =================================================================== diff -u -r1019 -r1028 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs (.../DamMacroStabilityOutwardsKernelWrapper.cs) (revision 1019) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs (.../DamMacroStabilityOutwardsKernelWrapper.cs) (revision 1028) @@ -95,6 +95,11 @@ damKernelInput.SubSoilScenario.StiFileName)); } + // Determine whether there is uplift + var upliftSituation = UpliftHelper.DetermineStabilityUplift(damKernelInput, true); + damMacroStabilityOutput.UpliftSituation = upliftSituation; + kernelDataOutput = damMacroStabilityOutput; + var damMacroStabilityInput = new DamMacroStabilityInput() { DGeoStabilityExePath = FailureMechanismParametersMStab.DGeoStabilityExePath, @@ -264,7 +269,7 @@ LocalZone1EntryPointX = damMacroStabilityOutputItem.Zone1Results.CircleSurfacePointRightXCoordinate, LocalZone1ExitPointX = damMacroStabilityOutputItem.Zone1Results.CircleSurfacePointLeftXCoordinate, ResultMessage = resultMessage, - UpliftSituation = damMacroStabilityOutputItem.UpliftSituation + UpliftSituation = damMacroStabilityOutput.UpliftSituation }; stabilityDesignResults.SafetyFactor = stabilityDesignResults.Zone1SafetyFactor; if (damMacroStabilityOutputItem.Zone2Results != null) Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj =================================================================== diff -u -r1009 -r1028 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj (.../Deltares.DamEngine.Calculators.csproj) (revision 1009) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj (.../Deltares.DamEngine.Calculators.csproj) (revision 1028) @@ -62,6 +62,7 @@ + Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/UpliftHelper.cs =================================================================== diff -u --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/UpliftHelper.cs (revision 0) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/UpliftHelper.cs (revision 1028) @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Deltares.DamEngine.Calculators.Uplift; +using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Data.General.PlLines; +using Deltares.DamEngine.Data.Geotechnics; + +namespace Deltares.DamEngine.Calculators.KernelWrappers.Common +{ + /// + /// Helper for Uplift + /// + public class UpliftHelper + { + public static UpliftSituation DetermineStabilityUplift(DamKernelInput damKernelInput, bool useRivelLevelLow) + { + var location = damKernelInput.Location; + var upliftCriterion = damKernelInput.DesignScenario.GetUpliftCriterionStability(location.ModelFactors.UpliftCriterionStability); + var riverLevel = damKernelInput.DesignScenario.RiverLevel; + double? riverLevelLow = null; + if (useRivelLevelLow) + { + riverLevelLow = damKernelInput.DesignScenario.RiverLevelLow; + } + var soilGeometry2DName = damKernelInput.SubSoilScenario.FullStiFileName; + UpliftSituation upliftSituation; + var plLines = PlLinesHelper.CreatePlLinesForStability(location, damKernelInput.SubSoilScenario, riverLevel, + soilGeometry2DName, riverLevelLow, out upliftSituation); + if (plLines != null) + { + var surfaceLineWithNewHeight = location.SurfaceLine; + double? upliftFactor = GetLowestUpliftFactor(surfaceLineWithNewHeight, + damKernelInput.SubSoilScenario.SoilProfile1D, soilGeometry2DName, plLines, location); + upliftSituation.IsUplift = (upliftFactor < upliftCriterion); + } + else + { + upliftSituation.IsUplift = false; + } + return upliftSituation; + } + + public static double? GetLowestUpliftFactor(SurfaceLine2 surfaceLine, SoilProfile1D soilProfile, string soilGeometry2DName, + PLLines plLines, Location location) + { + var upliftLocationDeterminator = new UpliftLocationDeterminator() + { + SurfaceLine = surfaceLine, + SoilProfile = soilProfile, + SoilGeometry2DName = soilGeometry2DName, + SoilList = location.SoilList, + DikeEmbankmentMaterial = location.GetDikeEmbankmentSoil(), + PLLines = plLines, + XSoilGeometry2DOrigin = location.XSoilGeometry2DOrigin + }; + UpliftLocationAndResult upliftLocationAndResult = upliftLocationDeterminator.GetLocationAtWithLowestUpliftFactor(); + return upliftLocationAndResult?.UpliftFactor; + } + + } +} Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r1026 -r1028 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs (.../DamMacroStabilityInwardsKernelWrapper.cs) (revision 1026) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs (.../DamMacroStabilityInwardsKernelWrapper.cs) (revision 1028) @@ -98,7 +98,7 @@ }; // Determine whether there is uplift - var upliftSituation = DetermineStabilityUplift(damKernelInput); + var upliftSituation = UpliftHelper.DetermineStabilityUplift(damKernelInput, false); damMacroStabilityOutput.UpliftSituation = upliftSituation; kernelDataOutput = damMacroStabilityOutput; @@ -170,47 +170,6 @@ return PrepareResult.NotRelevant; } - private UpliftSituation DetermineStabilityUplift(DamKernelInput damKernelInput) - { - var location = damKernelInput.Location; - var upliftCriterion = damKernelInput.DesignScenario.GetUpliftCriterionStability(location.ModelFactors.UpliftCriterionStability); - var riverLevel = damKernelInput.DesignScenario.RiverLevel; - double? riverLevelLow = null; // Use value only for Outside - var soilGeometry2DName = damKernelInput.SubSoilScenario.FullStiFileName; - UpliftSituation upliftSituation; - var plLines = PlLinesHelper.CreatePlLinesForStability(location, damKernelInput.SubSoilScenario, riverLevel, - soilGeometry2DName, riverLevelLow, out upliftSituation); - if (plLines != null) - { - var surfaceLineWithNewHeight = location.SurfaceLine; - double? upliftFactor = GetLowestUpliftFactor(surfaceLineWithNewHeight, - damKernelInput.SubSoilScenario.SoilProfile1D, soilGeometry2DName, plLines, location); - upliftSituation.IsUplift = (upliftFactor < upliftCriterion); - } - else - { - upliftSituation.IsUplift = false; - } - return upliftSituation; - } - - private double? GetLowestUpliftFactor(SurfaceLine2 surfaceLine, SoilProfile1D soilProfile, string soilGeometry2DName, - PLLines plLines, Location location) - { - var upliftLocationDeterminator = new UpliftLocationDeterminator() - { - SurfaceLine = surfaceLine, - SoilProfile = soilProfile, - SoilGeometry2DName = soilGeometry2DName, - SoilList = location.SoilList, - DikeEmbankmentMaterial = location.GetDikeEmbankmentSoil(), - PLLines = plLines, - XSoilGeometry2DOrigin = location.XSoilGeometry2DOrigin - }; - UpliftLocationAndResult upliftLocationAndResult = upliftLocationDeterminator.GetLocationAtWithLowestUpliftFactor(); - return upliftLocationAndResult?.UpliftFactor; - } - /// /// Validates the specified kernel data input. /// @@ -447,8 +406,6 @@ designResult.StabilityDesignResults.LocalZone2ExitPointX = zone2.CircleSurfacePointRightXCoordinate; designResult.StabilityDesignResults.SafetyFactor = Math.Min(damMacroStabilityOutputItem.Zone1Results.SafetyFactor, zone2.SafetyFactor); } - - designResult.StabilityDesignResults.UpliftSituation = damMacroStabilityOutputItem.UpliftSituation; } } }