Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamFailureMechanismeCalculationSpecification.cs
===================================================================
diff -u -r6822 -r6946
--- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamFailureMechanismeCalculationSpecification.cs (.../DamFailureMechanismeCalculationSpecification.cs) (revision 6822)
+++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamFailureMechanismeCalculationSpecification.cs (.../DamFailureMechanismeCalculationSpecification.cs) (revision 6946)
@@ -35,24 +35,42 @@
///
///
///
-public class DamFailureMechanismeCalculationSpecification : IDomain, IVisibleEnabled
+public class DamFailureMechanismeCalculationSpecification : IDomain, IVisibleEnabled, ICloneable
{
private FailureMechanismSystemType failureMechanismSystemType;
private PipingModelType pipingModelType = PipingModelType.Wti2017;
- private Enum calculationModel;
+ private StabilityModelType stabilityModelType = StabilityModelType.UpliftVan;
+ private Enum calculationModel = StabilityModelType.UpliftVan;
private Boolean firstTime = true;
public DamFailureMechanismeCalculationSpecification()
{
//Todo interface
failureMechanismSystemType = FailureMechanismSystemType.StabilityInside;
- StabilityParameters = new StabilityParameters();
- CalculationModel = StabilityParameters.MStabParameters.Model;
+ SearchMethod = StabilitySearchMethod.BeeSwarm;
+ IsUpliftVanRunOnlyWhenUpliftOccurs = true;
+ SlipCircleDefinition = new SlipCircleDefinition();
ReadUserSettingsSlipCircleDefinition();
}
-
- [Browsable(false)] [Validate] public StabilityParameters StabilityParameters { get; set; }
-
+
+ ///
+ /// The search method to use for stability calculations.
+ ///
+ [Validate] public StabilitySearchMethod SearchMethod { get; set; }
+
+ ///
+ /// When true, the uplift van calculation is only run when an uplift occurs.
+ ///
+ [Validate] public bool IsUpliftVanRunOnlyWhenUpliftOccurs { get; set; }
+
+ ///
+ /// The slip circle definition.
+ ///
+ [Validate] public SlipCircleDefinition SlipCircleDefinition { get; set; }
+
+ ///
+ /// The failure mechanism system type.
+ ///
[Label("Failure mechanism")]
[PropertyOrder(1, 0)]
public FailureMechanismSystemType FailureMechanismSystemType
@@ -88,6 +106,14 @@
}
}
+ ///
+ /// The dam project type.
+ ///
+ [Browsable(false)] public static DamProjectType DamProjectType { get; set; }
+
+ ///
+ /// The piping model type.
+ ///
[Browsable(false)]
public PipingModelType PipingModelType
{
@@ -104,10 +130,28 @@
}
}
}
-
- [Browsable(false)] public static DamProjectType DamProjectType { get; set; }
-
+
///
+ /// The stability model type.
+ ///
+ [Browsable(false)]
+ public StabilityModelType StabilityModelType
+ {
+ get
+ {
+ return stabilityModelType;
+ }
+ set
+ {
+ stabilityModelType = value;
+ if (failureMechanismSystemType != FailureMechanismSystemType.Piping)
+ {
+ CalculationModel = value;
+ }
+ }
+ }
+
+ ///
/// The calculationmodel is only needed to support the selection of the modeltype in the UI. The dropdownlist
/// in the UI depends on this. This set can be filled with any proper types (for piping, stabilty etc) for any
/// mechanism instead of the fixed types per mechanism.
@@ -131,47 +175,44 @@
}
else
{
- StabilityParameters.MStabParameters.Model = (StabilityModelType) value;
- if (StabilityParameters.MStabParameters.Model != StabilityModelType.Bishop)
+ stabilityModelType = (StabilityModelType) value;
+ if (stabilityModelType != StabilityModelType.Bishop)
{
- StabilityParameters.MStabParameters.SearchMethod = StabilitySearchMethod.BeeSwarm;
+ SearchMethod = StabilitySearchMethod.BeeSwarm;
}
}
DataEventPublisher.AfterChange(this, "CalculationModel");
}
}
- [Browsable(false)]
- public StabilityModelType StabilityModelType
+ private void Assign(DamFailureMechanismeCalculationSpecification damFailureMechanismCalculation)
{
- get
+ failureMechanismSystemType = damFailureMechanismCalculation.FailureMechanismSystemType;
+ calculationModel = damFailureMechanismCalculation.CalculationModel;
+ pipingModelType = damFailureMechanismCalculation.PipingModelType;
+ stabilityModelType = damFailureMechanismCalculation.StabilityModelType;
+ SearchMethod = damFailureMechanismCalculation.SearchMethod;
+ IsUpliftVanRunOnlyWhenUpliftOccurs = damFailureMechanismCalculation.IsUpliftVanRunOnlyWhenUpliftOccurs;
+ if (SlipCircleDefinition != null)
{
- return StabilityParameters.MStabParameters.Model;
+ SlipCircleDefinition.Assign(damFailureMechanismCalculation.SlipCircleDefinition);
}
- set
+ else
{
- StabilityParameters.MStabParameters.Model = value;
- if (failureMechanismSystemType != FailureMechanismSystemType.Piping)
- {
- CalculationModel = value;
- }
+ SlipCircleDefinition = null;
}
- }
-
- private void Assign(DamFailureMechanismeCalculationSpecification damFailureMechanismeCalculation)
- {
- failureMechanismSystemType = damFailureMechanismeCalculation.FailureMechanismSystemType;
- calculationModel = damFailureMechanismeCalculation.CalculationModel;
- pipingModelType = damFailureMechanismeCalculation.pipingModelType;
- StabilityParameters.Assign(damFailureMechanismeCalculation.StabilityParameters);
- StabilityModelType = damFailureMechanismeCalculation.StabilityModelType;
//assign interface
}
public DamFailureMechanismeCalculationSpecification Clone()
{
var damFailureMechanismeCalculation = new DamFailureMechanismeCalculationSpecification();
+
+ if (SlipCircleDefinition != null)
+ {
+ SlipCircleDefinition = SlipCircleDefinition.Clone();
+ }
damFailureMechanismeCalculation.Assign(this);
@@ -183,28 +224,28 @@
///
private void ReadUserSettingsSlipCircleDefinition()
{
- if (StabilityParameters.MStabParameters.SlipCircleDefinition == null)
+ if (SlipCircleDefinition == null)
{
- StabilityParameters.MStabParameters.SlipCircleDefinition = new SlipCircleDefinition();
+ SlipCircleDefinition = new SlipCircleDefinition();
}
- StabilityParameters.MStabParameters.SlipCircleDefinition.UpliftVanTangentLinesDefinition = Settings.Default.SlipCircleUpliftVanTangentLinesDefinition;
- StabilityParameters.MStabParameters.SlipCircleDefinition.UpliftVanTangentLinesDistance = Settings.Default.SlipCircleUpliftVanTangentLinesDistance;
- StabilityParameters.MStabParameters.SlipCircleDefinition.BishopSearchAreaDetermination = Settings.Default.SlipCircleBishopSearchAreaDetermination;
- StabilityParameters.MStabParameters.SlipCircleDefinition.BishopTangentLinesDistance = Settings.Default.SlipCircleBishopTangentLinesDistance;
- StabilityParameters.MStabParameters.SlipCircleDefinition.UpliftVanGridSizeDetermination = Settings.Default.SlipCircleUpliftVanGridSizeDetermination;
- StabilityParameters.MStabParameters.SlipCircleDefinition.UpliftVanLeftGridVerticalPointCount = Settings.Default.SlipCircleUpliftVanLeftGridVerticalPointCount;
- StabilityParameters.MStabParameters.SlipCircleDefinition.UpliftVanLeftGridVerticalPointDistance = Settings.Default.SlipCircleUpliftVanLeftGridVerticalPointDistance;
- StabilityParameters.MStabParameters.SlipCircleDefinition.UpliftVanLeftGridHorizontalPointCount = Settings.Default.SlipCircleUpliftVanLeftGridHorizontalPointCount;
- StabilityParameters.MStabParameters.SlipCircleDefinition.UpliftVanLeftGridHorizontalPointDistance = Settings.Default.SlipCircleUpliftVanLeftGridHorizontalPointDistance;
- StabilityParameters.MStabParameters.SlipCircleDefinition.UpliftVanRightGridVerticalPointCount = Settings.Default.SlipCircleUpliftVanRightGridVerticalPointCount;
- StabilityParameters.MStabParameters.SlipCircleDefinition.UpliftVanRightGridVerticalPointDistance = Settings.Default.SlipCircleUpliftVanRightGridVerticalPointDistance;
- StabilityParameters.MStabParameters.SlipCircleDefinition.UpliftVanRightGridHorizontalPointCount = Settings.Default.SlipCircleUpliftVanRightGridHorizontalPointCount;
- StabilityParameters.MStabParameters.SlipCircleDefinition.UpliftVanRightGridHorizontalPointDistance = Settings.Default.SlipCircleUpliftVanRightGridHorizontalPointDistance;
- StabilityParameters.MStabParameters.SlipCircleDefinition.BishopGridVerticalPointCount = Settings.Default.SlipCircleBishopGridVerticalPointCount;
- StabilityParameters.MStabParameters.SlipCircleDefinition.BishopGridVerticalPointDistance = Settings.Default.SlipCircleBishopGridVerticalPointDistance;
- StabilityParameters.MStabParameters.SlipCircleDefinition.BishopGridHorizontalPointCount = Settings.Default.SlipCircleBishopGridHorizontalPointCount;
- StabilityParameters.MStabParameters.SlipCircleDefinition.BishopGridHorizontalPointDistance = Settings.Default.SlipCircleBishopGridHorizontalPointDistance;
+ SlipCircleDefinition.UpliftVanTangentLinesDefinition = Settings.Default.SlipCircleUpliftVanTangentLinesDefinition;
+ SlipCircleDefinition.UpliftVanTangentLinesDistance = Settings.Default.SlipCircleUpliftVanTangentLinesDistance;
+ SlipCircleDefinition.BishopSearchAreaDetermination = Settings.Default.SlipCircleBishopSearchAreaDetermination;
+ SlipCircleDefinition.BishopTangentLinesDistance = Settings.Default.SlipCircleBishopTangentLinesDistance;
+ SlipCircleDefinition.UpliftVanGridSizeDetermination = Settings.Default.SlipCircleUpliftVanGridSizeDetermination;
+ SlipCircleDefinition.UpliftVanLeftGridVerticalPointCount = Settings.Default.SlipCircleUpliftVanLeftGridVerticalPointCount;
+ SlipCircleDefinition.UpliftVanLeftGridVerticalPointDistance = Settings.Default.SlipCircleUpliftVanLeftGridVerticalPointDistance;
+ SlipCircleDefinition.UpliftVanLeftGridHorizontalPointCount = Settings.Default.SlipCircleUpliftVanLeftGridHorizontalPointCount;
+ SlipCircleDefinition.UpliftVanLeftGridHorizontalPointDistance = Settings.Default.SlipCircleUpliftVanLeftGridHorizontalPointDistance;
+ SlipCircleDefinition.UpliftVanRightGridVerticalPointCount = Settings.Default.SlipCircleUpliftVanRightGridVerticalPointCount;
+ SlipCircleDefinition.UpliftVanRightGridVerticalPointDistance = Settings.Default.SlipCircleUpliftVanRightGridVerticalPointDistance;
+ SlipCircleDefinition.UpliftVanRightGridHorizontalPointCount = Settings.Default.SlipCircleUpliftVanRightGridHorizontalPointCount;
+ SlipCircleDefinition.UpliftVanRightGridHorizontalPointDistance = Settings.Default.SlipCircleUpliftVanRightGridHorizontalPointDistance;
+ SlipCircleDefinition.BishopGridVerticalPointCount = Settings.Default.SlipCircleBishopGridVerticalPointCount;
+ SlipCircleDefinition.BishopGridVerticalPointDistance = Settings.Default.SlipCircleBishopGridVerticalPointDistance;
+ SlipCircleDefinition.BishopGridHorizontalPointCount = Settings.Default.SlipCircleBishopGridHorizontalPointCount;
+ SlipCircleDefinition.BishopGridHorizontalPointDistance = Settings.Default.SlipCircleBishopGridHorizontalPointDistance;
}
public override string ToString()
@@ -215,7 +256,7 @@
(FailureMechanismSystemType == FailureMechanismSystemType.StabilityOutside))
{
//interface?
- description += $" ({StabilityParameters.MStabParameters.Model})";
+ description += $" ({StabilityModelType})";
}
return description;
@@ -231,6 +272,30 @@
return ConfigurationManager.Instance.GetAvailableMechanismModels(DamProjectType, FailureMechanismSystemType.Piping);
case "FailureMechanismSystemType":
return ConfigurationManager.Instance.GetAvailableFailureMechanisms(DamProjectType);
+ case "SearchMethod":
+ if (SlipCircleDefinition.Specification.FailureMechanismSystemType ==
+ FailureMechanismSystemType.StabilityInside &&
+ (StabilityModelType == StabilityModelType.UpliftVan || StabilityModelType == StabilityModelType.BishopUpliftVan))
+ {
+ return new[]
+ {
+ StabilitySearchMethod.BeeSwarm,
+ StabilitySearchMethod.Grid
+ };
+ }
+
+ // Make sure that grid is reset and updated too when needed.
+ if (SearchMethod != StabilitySearchMethod.Grid)
+ {
+ DataEventPublisher.BeforeChange(this, "SearchMethod");
+ SearchMethod = StabilitySearchMethod.Grid;
+ DataEventPublisher.AfterChange(this, "SearchMethod");
+ }
+
+ return new[]
+ {
+ StabilitySearchMethod.Grid
+ };
default: return null;
}
}
@@ -242,13 +307,19 @@
{
return false; // Disable model selection when stability outside is active, as only Bishop is currently supported.
}
-
- return true;
+
+ switch (property)
+ {
+ case "SearchMethod":
+ case "IsUpliftVanRunOnlyWhenUpliftOccurs":
+ return Location.DamProjectType == DamProjectType.Design;
+ default: return true;
+ }
}
public bool IsVisible(string property)
{
- if (Equals(property, nameof(StabilityParameters)))
+ if (Equals(property, nameof(StabilityModelType)))
{
switch (FailureMechanismSystemType)
{
@@ -258,7 +329,16 @@
default: return true;
}
}
-
- return true;
+
+ switch (property)
+ {
+ case "SearchMethod":
+ case "IsUpliftVanRunOnlyWhenUpliftOccurs":
+ return
+ (SlipCircleDefinition.Specification.FailureMechanismSystemType == FailureMechanismSystemType.StabilityInside ||
+ SlipCircleDefinition.Specification.FailureMechanismSystemType == FailureMechanismSystemType.StabilityOutside) &&
+ (stabilityModelType == StabilityModelType.BishopUpliftVan || stabilityModelType == StabilityModelType.UpliftVan);
+ default: return true;
+ }
}
}
\ No newline at end of file