using Deltares.AssessmentMechanism;
using Deltares.Standard.Reflection;
namespace Deltares.Stability
{
///
/// Controller for managing instances for a
/// with regards to Stability calculations.
///
public class StabilityScenarioManager : AssessmentScenarioManager
{
///
/// Creates a scenario controller for managing stability related scenarios.
///
/// The owner of the scenarios.
public StabilityScenarioManager(StabilityDikeLocationInfo stabilityDikeLocationInfo)
: base(stabilityDikeLocationInfo) {}
protected override bool SupportsSoilProfile1D
{
get
{
return true;
}
}
protected override bool SupportsSoilProfile2D
{
get
{
return true;
}
}
protected override void AddAssessmentMechanismSpecificScenarioItems(AssessmentScenario scenario)
{
var location = ScenarioOwner.Location;
scenario.AddScenarioItem(location, location.GetMemberName(l => l.PlLineCreationMethod), location.PlLineCreationMethod, location.GetMemberName(l => l.PlLineCreationMethod), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.DikeSoilScenario), location.DikeSoilScenario, location.GetMemberName(l => l.DikeSoilScenario), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.WaterLevelRiverAverage), location.WaterLevelRiverAverage, location.GetMemberName(l => l.WaterLevelRiverAverage), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.WaterLevelPolder), location.WaterLevelPolder, location.GetMemberName(l => l.WaterLevelPolder), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.DrainageConstructionPresent), location.DrainageConstructionPresent, location.GetMemberName(l => l.DrainageConstructionPresent), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.XCoordMiddleDrainageConstruction), location.XCoordMiddleDrainageConstruction, location.GetMemberName(l => l.XCoordMiddleDrainageConstruction), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.ZCoordMiddleDrainageConstruction), location.ZCoordMiddleDrainageConstruction, location.GetMemberName(l => l.ZCoordMiddleDrainageConstruction), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.MinimumLevelPhreaticLineAtDikeTopPolder), location.MinimumLevelPhreaticLineAtDikeTopPolder, location.GetMemberName(l => l.MinimumLevelPhreaticLineAtDikeTopPolder), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.MinimumLevelPhreaticLineAtDikeTopRiver), location.MinimumLevelPhreaticLineAtDikeTopRiver, location.GetMemberName(l => l.MinimumLevelPhreaticLineAtDikeTopRiver), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.UseDefaultOffsets), location.UseDefaultOffsets, location.GetMemberName(l => l.UseDefaultOffsets), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.PlLineOffsetBelowDikeToeAtPolder), location.PlLineOffsetBelowDikeToeAtPolder, location.GetMemberName(l => l.PlLineOffsetBelowDikeToeAtPolder), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.PlLineOffsetBelowDikeTopAtPolder), location.PlLineOffsetBelowDikeTopAtPolder, location.GetMemberName(l => l.PlLineOffsetBelowDikeTopAtPolder), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.PlLineOffsetBelowDikeTopAtRiver), location.PlLineOffsetBelowDikeTopAtRiver, location.GetMemberName(l => l.PlLineOffsetBelowDikeTopAtRiver), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.PlLineOffsetBelowPointBRingtoetsWti2017), location.PlLineOffsetBelowPointBRingtoetsWti2017, location.GetMemberName(l => l.PlLineOffsetBelowPointBRingtoetsWti2017), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.PlLineOffsetBelowShoulderBaseInside), location.PlLineOffsetBelowShoulderBaseInside, location.GetMemberName(l => l.PlLineOffsetBelowShoulderBaseInside), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.LeakageLengthInwardsPl3), location.LeakageLengthInwardsPl3, location.GetMemberName(l => l.LeakageLengthInwardsPl3), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.LeakageLengthOutwardsPl3), location.LeakageLengthOutwardsPl3, location.GetMemberName(l => l.LeakageLengthOutwardsPl3), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.LeakageLengthInwardsPl4), location.LeakageLengthInwardsPl4, location.GetMemberName(l => l.LeakageLengthInwardsPl4), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.LeakageLengthOutwardsPl4), location.LeakageLengthOutwardsPl4, location.GetMemberName(l => l.LeakageLengthOutwardsPl4), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.HeadInPLLine2Inwards), location.HeadInPLLine2Inwards, location.GetMemberName(l => l.HeadInPLLine2Inwards), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.HeadInPLLine2Outwards), location.HeadInPLLine2Outwards, location.GetMemberName(l => l.HeadInPLLine2Outwards), true);
scenario.AddScenarioItem(location, location.GetMemberName(l => l.PenetrationLength), location.PenetrationLength, location.GetMemberName(l => l.PenetrationLength), true);
// Output:
scenario.AddScenarioItem(ScenarioOwner, ScenarioOwner.GetMemberName(dli => dli.AllowedFailureProbability), ScenarioOwner.AllowedFailureProbability, ScenarioOwner.GetMemberName(l => l.AllowedFailureProbability), true);
scenario.AddScenarioItem(ScenarioOwner, ScenarioOwner.GetMemberName(dli => dli.SafetyFactor), ScenarioOwner.SafetyFactor, ScenarioOwner.GetMemberName(l => l.SafetyFactor), true);
scenario.AddScenarioItem(ScenarioOwner.StabilityModel, ScenarioOwner.StabilityModel.GetMemberName(sm => sm.MinimumSafetyCurve), ScenarioOwner.StabilityModel.MinimumSafetyCurve, "SlidingCurve", false);
}
}
}