Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/UpliftHelper.cs
===================================================================
diff -u -r1965 -r2049
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/UpliftHelper.cs (.../UpliftHelper.cs) (revision 1965)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/UpliftHelper.cs (.../UpliftHelper.cs) (revision 2049)
@@ -32,37 +32,66 @@
///
public class UpliftHelper
{
+ ///
+ /// Determines the stability uplift situation.
+ ///
+ /// The dam kernel input.
+ /// if set to true [use rivel level low].
+ /// The uplift situation
public static UpliftSituation DetermineStabilityUplift(DamKernelInput damKernelInput, bool useRivelLevelLow)
{
- var location = damKernelInput.Location;
- var upliftCriterion = damKernelInput.Location.ModelFactors.UpliftCriterionStability;
+ UpliftSituation upliftSituation;
+ var 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 static PlLines DeterminePlLinesForStability(DamKernelInput damKernelInput, bool useRivelLevelLow,
+ out UpliftSituation upliftSituation)
+ {
var riverLevel = damKernelInput.RiverLevelHigh;
double? riverLevelLow = null;
if (useRivelLevelLow)
{
riverLevelLow = damKernelInput.RiverLevelLow;
}
- UpliftSituation upliftSituation;
SensorPlLineCreatorSettings sensorPlLineCreatorSettings = new SensorPlLineCreatorSettings();
- sensorPlLineCreatorSettings.SensorLocation = location.SensorLocation;
+ sensorPlLineCreatorSettings.SensorLocation = damKernelInput.Location.SensorLocation;
sensorPlLineCreatorSettings.DateTime = damKernelInput.TimeStepDateTime;
- var plLines = PlLinesHelper.CreatePlLinesForStability(location, damKernelInput.SubSoilScenario, riverLevel,
+ var plLines = PlLinesHelper.CreatePlLinesForStability(damKernelInput.Location, damKernelInput.SubSoilScenario, riverLevel,
riverLevelLow, damKernelInput.DamFailureMechanismeCalculationSpecification.AssessmentScenarioJobSettings,
sensorPlLineCreatorSettings,
out upliftSituation);
+ return plLines;
+ }
+
+ ///
+ /// Determines if there is uplift.
+ ///
+ /// The pl lines.
+ /// The location.
+ /// The sub soil scenario.
+ /// true if there is uplift
+ public static bool DetermineIsUplift(PlLines plLines, Location location, SoilGeometryProbability subSoilScenario)
+ {
+ var isUplift = false;
+ var upliftCriterion = location.ModelFactors.UpliftCriterionStability;
if (plLines != null)
{
var surfaceLineWithNewHeight = location.SurfaceLine;
double? upliftFactor = GetLowestUpliftFactor(surfaceLineWithNewHeight,
- damKernelInput.SubSoilScenario.SoilProfile1D, damKernelInput.SubSoilScenario.FullStiFileName,
- damKernelInput.SubSoilScenario.SoilProfile2D, plLines, location);
- upliftSituation.IsUplift = (upliftFactor < upliftCriterion);
+ subSoilScenario.SoilProfile1D, subSoilScenario.FullStiFileName,
+ subSoilScenario.SoilProfile2D, plLines, location);
+ isUplift = (upliftFactor < upliftCriterion);
}
- else
- {
- upliftSituation.IsUplift = false;
- }
- return upliftSituation;
+ return isUplift;
}
private static double? GetLowestUpliftFactor(SurfaceLine2 surfaceLine, SoilProfile1D soilProfile1D, string soilGeometry2DName,