Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/UpliftHelper.cs =================================================================== diff -u -r4000 -r4052 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/UpliftHelper.cs (.../UpliftHelper.cs) (revision 4000) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/UpliftHelper.cs (.../UpliftHelper.cs) (revision 4052) @@ -25,90 +25,89 @@ using Deltares.DamEngine.Data.General.Sensors; using Deltares.DamEngine.Data.Geotechnics; -namespace Deltares.DamEngine.Calculators.KernelWrappers.Common +namespace Deltares.DamEngine.Calculators.KernelWrappers.Common; + +/// +/// Helper for Uplift +/// +public class UpliftHelper { /// - /// Helper for Uplift + /// Determines the stability uplift situation. /// - public class UpliftHelper + /// The dam kernel input. + /// if set to true [use rivel level low]. + /// The uplift situation + public UpliftSituation DetermineStabilityUplift(DamKernelInput damKernelInput, bool useRivelLevelLow) { - /// - /// Determines the stability uplift situation. - /// - /// The dam kernel input. - /// if set to true [use rivel level low]. - /// The uplift situation - public UpliftSituation DetermineStabilityUplift(DamKernelInput damKernelInput, bool useRivelLevelLow) - { - UpliftSituation upliftSituation; - PlLines plLines = DeterminePlLinesForStability(damKernelInput, useRivelLevelLow, out upliftSituation); - upliftSituation.IsUplift = DetermineIsUplift(plLines, damKernelInput.Location, damKernelInput.SubSoilScenario); - return upliftSituation; - } + UpliftSituation upliftSituation; + PlLines plLines = DeterminePlLinesForStability(damKernelInput, useRivelLevelLow, out upliftSituation); + upliftSituation.IsUplift = DetermineIsUplift(plLines, damKernelInput.Location, damKernelInput.SubSoilScenario); + return upliftSituation; + } - /// - /// Determines the pl lines for stability. - /// - /// The dam kernel input. - /// if set to true [use rivel level low]. - /// The uplift situation. - /// pl lines - public PlLines DeterminePlLinesForStability(DamKernelInput damKernelInput, bool useRivelLevelLow, - out UpliftSituation upliftSituation) + /// + /// Determines the pl lines for stability. + /// + /// The dam kernel input. + /// if set to true [use rivel level low]. + /// The uplift situation. + /// pl lines + public PlLines DeterminePlLinesForStability(DamKernelInput damKernelInput, bool useRivelLevelLow, + out UpliftSituation upliftSituation) + { + double riverLevel = damKernelInput.RiverLevelHigh; + double? riverLevelLow = null; + if (useRivelLevelLow) { - double riverLevel = damKernelInput.RiverLevelHigh; - double? riverLevelLow = null; - if (useRivelLevelLow) - { - riverLevelLow = damKernelInput.RiverLevelLow; - } - - var sensorPlLineCreatorSettings = new SensorPlLineCreatorSettings(); - sensorPlLineCreatorSettings.SensorLocation = damKernelInput.Location.SensorLocation; - sensorPlLineCreatorSettings.DateTime = damKernelInput.TimeStepDateTime; - PlLines plLines = PlLinesHelper.CreatePlLinesForStability(damKernelInput.Location, damKernelInput.SubSoilScenario, riverLevel, - riverLevelLow, sensorPlLineCreatorSettings, out upliftSituation); - return plLines; + riverLevelLow = damKernelInput.RiverLevelLow; } - /// - /// Determines if there is uplift. - /// - /// The pl lines. - /// The location. - /// The sub soil scenario. - /// true if there is uplift - public bool DetermineIsUplift(PlLines plLines, Location location, SoilGeometryProbability subSoilScenario) - { - if (plLines == null) - { - return false; - } + var sensorPlLineCreatorSettings = new SensorPlLineCreatorSettings(); + sensorPlLineCreatorSettings.SensorLocation = damKernelInput.Location.SensorLocation; + sensorPlLineCreatorSettings.DateTime = damKernelInput.TimeStepDateTime; + PlLines plLines = PlLinesHelper.CreatePlLinesForStability(damKernelInput.Location, damKernelInput.SubSoilScenario, riverLevel, + riverLevelLow, sensorPlLineCreatorSettings, out upliftSituation); + return plLines; + } - double upliftCriterion = location.ModelFactors.UpliftCriterionStability; - SurfaceLine2 surfaceLineWithNewHeight = location.SurfaceLine; - double? upliftFactor = GetLowestUpliftFactor(surfaceLineWithNewHeight, - subSoilScenario.SoilProfile1D, subSoilScenario.FullStiFileName, - subSoilScenario.SoilProfile2D, plLines, location); - return upliftFactor < upliftCriterion; + /// + /// Determines if there is uplift. + /// + /// The pl lines. + /// The location. + /// The sub soil scenario. + /// true if there is uplift + public bool DetermineIsUplift(PlLines plLines, Location location, SoilGeometryProbability subSoilScenario) + { + if (plLines == null) + { + return false; } - private double? GetLowestUpliftFactor(SurfaceLine2 surfaceLine, SoilProfile1D soilProfile1D, string soilGeometry2DName, - SoilProfile2D soilProfile2D, PlLines plLines, Location location) + double upliftCriterion = location.ModelFactors.UpliftCriterionStability; + SurfaceLine2 surfaceLineWithNewHeight = location.SurfaceLine; + double? upliftFactor = GetLowestUpliftFactor(surfaceLineWithNewHeight, + subSoilScenario.SoilProfile1D, subSoilScenario.FullStiFileName, + subSoilScenario.SoilProfile2D, plLines, location); + return upliftFactor < upliftCriterion; + } + + private double? GetLowestUpliftFactor(SurfaceLine2 surfaceLine, SoilProfile1D soilProfile1D, string soilGeometry2DName, + SoilProfile2D soilProfile2D, PlLines plLines, Location location) + { + var upliftLocationDeterminator = new UpliftLocationDeterminator { - var upliftLocationDeterminator = new UpliftLocationDeterminator - { - SurfaceLine = surfaceLine, - SoilProfile = soilProfile1D, - SoilProfile2D = soilProfile2D, - SoilGeometry2DName = soilGeometry2DName, - SoilList = location.SoilList, - DikeEmbankmentMaterial = location.GetDikeEmbankmentSoil(), - PlLines = plLines, - XSoilGeometry2DOrigin = location.XSoilGeometry2DOrigin - }; - UpliftLocationAndResult upliftLocationAndResult = upliftLocationDeterminator.GetLocationAtWithLowestUpliftFactor(); - return upliftLocationAndResult?.UpliftFactor; - } + SurfaceLine = surfaceLine, + SoilProfile = soilProfile1D, + SoilProfile2D = soilProfile2D, + SoilGeometry2DName = soilGeometry2DName, + SoilList = location.SoilList, + DikeEmbankmentMaterial = location.GetDikeEmbankmentSoil(), + PlLines = plLines, + XSoilGeometry2DOrigin = location.XSoilGeometry2DOrigin + }; + UpliftLocationAndResult upliftLocationAndResult = upliftLocationDeterminator.GetLocationAtWithLowestUpliftFactor(); + return upliftLocationAndResult?.UpliftFactor; } } \ No newline at end of file