Index: dam engine/trunk/src/Deltares.DamEngine.Data/General/Results/StabilityDesignResults.cs =================================================================== diff -u -r452 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Data/General/Results/StabilityDesignResults.cs (.../StabilityDesignResults.cs) (revision 452) +++ dam engine/trunk/src/Deltares.DamEngine.Data/General/Results/StabilityDesignResults.cs (.../StabilityDesignResults.cs) (revision 599) @@ -32,7 +32,6 @@ private int? numberOfIterations; private string resultMessage = ""; private double? safetyFactor; - private double? failureProbability; private double? zone1SafetyFactor; private double? localZone1EntryPointX; private double? localZone1ExitPointX; @@ -97,24 +96,6 @@ } /// - /// Gets or sets the stability failure probability. - /// - /// - /// The stability failure probability. - /// - public double? FailureProbability - { - get - { - return failureProbability; - } - set - { - failureProbability = value; - } - } - - /// /// Gets or sets the zone1 safety factor stability. /// /// Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/General/DamProjectCalculatorCsvExportDataBuilder.cs =================================================================== diff -u -r586 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/General/DamProjectCalculatorCsvExportDataBuilder.cs (.../DamProjectCalculatorCsvExportDataBuilder.cs) (revision 586) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/General/DamProjectCalculatorCsvExportDataBuilder.cs (.../DamProjectCalculatorCsvExportDataBuilder.cs) (revision 599) @@ -36,7 +36,6 @@ private DesignScenario Scenario { get; set; } private DamFailureMechanismeCalculationSpecification FailureMechanismSystemType { get; set; } private AnalysisType AnalysisType { get; set; } - private ProbabilisticType ProbabilisticType { get; set; } private StringBuilder Message { get; set; } /// @@ -48,13 +47,12 @@ /// The for which to create . /// The for which to create . /// The for which to create - public DamProjectCalculatorCsvExportDataBuilder(Dike dike, DesignScenario scenario, DamFailureMechanismeCalculationSpecification damFailureMechanismCalculationSpecification, AnalysisType analysisType, ProbabilisticType probabilisticType) + public DamProjectCalculatorCsvExportDataBuilder(Dike dike, DesignScenario scenario, DamFailureMechanismeCalculationSpecification damFailureMechanismCalculationSpecification, AnalysisType analysisType) { Dike = dike; Scenario = scenario; FailureMechanismSystemType = damFailureMechanismCalculationSpecification; AnalysisType = analysisType; - ProbabilisticType = probabilisticType; Message = new StringBuilder(); } Index: dam engine/trunk/src/Deltares.DamEngine.Data/General/Location.cs =================================================================== diff -u -r597 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Data/General/Location.cs (.../Location.cs) (revision 597) +++ dam engine/trunk/src/Deltares.DamEngine.Data/General/Location.cs (.../Location.cs) (revision 599) @@ -1061,7 +1061,7 @@ { foreach (var scenario in scenarios) { - if (scenario.ModelFactors.RequiredProbabilityOfFailureStabilityInnerslope == null) + if (scenario.ModelFactors.RequiredSafetyFactorStabilityInnerSlope == null) { return new[] { Index: dam engine/trunk/src/Deltares.DamEngine.Data/General/DamProjectCalculationSpecification.cs =================================================================== diff -u -r452 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Data/General/DamProjectCalculationSpecification.cs (.../DamProjectCalculationSpecification.cs) (revision 452) +++ dam engine/trunk/src/Deltares.DamEngine.Data/General/DamProjectCalculationSpecification.cs (.../DamProjectCalculationSpecification.cs) (revision 599) @@ -34,7 +34,6 @@ private readonly List damCalculationSpecifications; private static AnalysisType selectedAnalysisType = AnalysisType.AdaptGeometry; - private ProbabilisticType selectedProbabilisticType; private DamFailureMechanismeCalculationSpecification currentSpecification; private StabilityKernelType selectedStabilityKernelType; @@ -49,11 +48,6 @@ { get { - - if (currentSpecification != null && currentSpecification.FailureMechanismSystemType != FailureMechanismSystemType.Piping) - { - selectedProbabilisticType = ProbabilisticType.Deterministic; - } return damCalculationSpecifications; } } @@ -94,16 +88,6 @@ } } - public ProbabilisticType SelectedProbabilisticType - { - get { return selectedProbabilisticType; } - set - { - selectedProbabilisticType = value; - DamFailureMechanismeCalculationSpecification.ProbabilisticType = selectedProbabilisticType; - } - } - public DamFailureMechanismeCalculationSpecification CurrentSpecification { get Index: dam engine/trunk/src/Deltares.DamEngine.Data/General/LocationJob.cs =================================================================== diff -u -r452 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Data/General/LocationJob.cs (.../LocationJob.cs) (revision 452) +++ dam engine/trunk/src/Deltares.DamEngine.Data/General/LocationJob.cs (.../LocationJob.cs) (revision 599) @@ -49,8 +49,7 @@ private static string currentCalculation = ""; private static DateTime currentTime = DateTime.Today; private static DamProjectType damProjectType = DamProjectType.Operational; - private static ProbabilisticType probabilisticType = ProbabilisticType.Deterministic; - + private double designRequiredFactor = 0.0; public LocationJob(object subject) @@ -191,20 +190,10 @@ { foreach (var calculationResult in scenario.CalculationResults) { - if (ProbabilisticType == ProbabilisticType.Deterministic) + if ((calculationResult.SafetyFactor != null) || (calculationResult.CalculationResult == CalculationResult.UnexpectedError) ) { - if ((calculationResult.SafetyFactor != null) || (calculationResult.CalculationResult == CalculationResult.UnexpectedError) ) - { - return true; - } - } - else - { - if (calculationResult.FailureProbability != null) - { - return true; - } - } + return true; + } } } return false; @@ -244,36 +233,6 @@ return res; } - /// - /// Get highest porbability of failure of all scenarios - /// - /// - private double GetHighestRealPropbabilityFromScenarios() - { - var res = double.MinValue; - List scenarios = Location.Scenarios; - foreach (var scenario in scenarios) - { - foreach (var calculationResult in scenario.CalculationResults) - { - if (calculationResult.FailureProbability != null) - { - if (calculationResult.FailureProbability.Value > res && - calculationResult.FailureProbability.Value < DamGlobalConstants.NoRunValue) - { - res = calculationResult.FailureProbability.Value; -// if (calculationResult.RequiredFailureProbability != null) #Bka required value must come from input, not results -// { -// designRequiredFactor = calculationResult.RequiredFailureProbability.Value; -// } - } - } - } - } - if (res == double.MinValue) res = DamGlobalConstants.NoRunValue; - return res; - } - public double SafetyFactor { get @@ -342,44 +301,6 @@ } } - public double FailureProbability - { - get - { - if (DamProjectType == DamProjectType.Operational) - { - return DamGlobalConstants.NoRunValue; - } - else if (DamProjectType == DamProjectType.Assessment) - { - return DamGlobalConstants.NoRunValue; - } - else if (DamProjectType == DamProjectType.Design) - { - return GetHighestRealPropbabilityFromScenarios(); - } - else - { - return DamGlobalConstants.NoRunValue; - } - } - } - - public double RequiredProbability - { - get - { - if (DamProjectType == DamProjectType.Design) - { - return designRequiredFactor; // only for piping at the moment - } - else - { - return 1; //#Bka: for now return 1 if not piping probabilistic. - } - } - } - public bool AreRWScenarioResultsMixed(ScenarioType scenarioType) { if (this.HasRWScenarioResults) @@ -410,18 +331,11 @@ { get { - if (ProbabilisticType == ProbabilisticType.Deterministic) + if (DamProjectType == DamProjectType.Assessment && AreRWScenarioResultsMixed(currentScenarioType)) { - if (DamProjectType == DamProjectType.Assessment && AreRWScenarioResultsMixed(currentScenarioType)) - { - return JobResult.Mixed; - } - return JobResultInterpreter.GetJobResult(SafetyFactor, DetrimentFactor, true); + return JobResult.Mixed; } - else - { - return JobResultInterpreter.GetJobResult(FailureProbability, RequiredProbability, false); - } + return JobResultInterpreter.GetJobResult(SafetyFactor, DetrimentFactor, true); } } @@ -436,13 +350,7 @@ get { return damProjectType; } set { damProjectType = value; } } - - public static ProbabilisticType ProbabilisticType - { - get { return probabilisticType; } - set { probabilisticType = value; } - } - + public override string ToString() { return this.Location != null ? this.Location.ToString() : ""; Index: dam engine/trunk/src/Deltares.DamEngine.Data/Design/DesignScenario.cs =================================================================== diff -u -r595 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Data/Design/DesignScenario.cs (.../DesignScenario.cs) (revision 595) +++ dam engine/trunk/src/Deltares.DamEngine.Data/Design/DesignScenario.cs (.../DesignScenario.cs) (revision 599) @@ -71,7 +71,6 @@ private static readonly Expression> ExpressionRequiredSafetyFactorStabilityInnerSlope = x => x.RequiredSafetyFactorStabilityInnerSlope; private static readonly Expression> ExpressionRequiredSafetyFactorStabilityOuterSlope = x => x.RequiredSafetyFactorStabilityOuterSlope; private static readonly Expression> ExpressionRequiredSafetyFactorPiping = x => x.RequiredSafetyFactorPiping; - private static readonly Expression> ExpressionRequiredProbabilityOfFailurePiping = x => x.RequiredProbabilityOfFailurePiping; private static readonly Expression> ExpressionUpliftCriterionPiping = x => x.UpliftCriterionPiping; private static readonly Expression> ExpressionUpliftCriterionStability = x => x.UpliftCriterionStability; private static readonly Expression> ExpressionPlLineOffsetBelowDikeTopAtRiver = x => x.PlLineOffsetBelowDikeTopAtRiver; @@ -96,9 +95,7 @@ private Dictionary stabilityUpliftSituations; private Dictionary pipingResults; private Dictionary mStabResults; - private Dictionary failureProbabilitiesStability; private Dictionary safetyFactorsPiping; - private Dictionary failureProbabilitiesPiping; private Dictionary redesignedSurfaceLines; private Dictionary resultMessages; @@ -169,8 +166,6 @@ mStabResults = new Dictionary(); safetyFactorsPiping = new Dictionary(); resultMessages = new Dictionary(); - failureProbabilitiesStability = new Dictionary(); - failureProbabilitiesPiping = new Dictionary(); redesignedSurfaceLines = new Dictionary(); NwoResults = new List(); calculationResults.Clear(); @@ -303,22 +298,6 @@ } /// - /// Gets or sets the required probability of failure piping. - /// - /// - /// The required probability of failure piping. - /// - [Description("Required probability of failure piping")] - public double? RequiredProbabilityOfFailurePiping - { - get { return ModelFactors.RequiredProbabilityOfFailurePiping; } - set - { - ModelFactors.RequiredProbabilityOfFailurePiping = value; - } - } - - /// /// Gets or sets the uplift criterion piping. /// /// @@ -834,54 +813,6 @@ } /// - /// Get Failure Probability piping - /// - /// - /// - private double? GetFailureProbabilityPiping(Object objectAsKey) - { - if (objectAsKey != null) - { - return failureProbabilitiesPiping.ContainsKey(objectAsKey) ? failureProbabilitiesPiping[objectAsKey] : null; - } - return null; - } - - /// - /// Get Failure Probability piping - /// - /// - /// - /// - public double? GetFailureProbabilityPiping(SoilProfile1D soilProfile, string soilGeometry2DName) - { - Object objectAsKey = GetObjectAsKey(soilProfile, soilGeometry2DName); - return GetFailureProbabilityPiping(objectAsKey); - } - - /// - /// Set Failure Probability piping - /// - /// - /// - /// - public void SetFailureProbabilityPiping(SoilProfile1D soilProfile, string soilGeometry2DName, double? failureProbability) - { - Object objectAsKey = GetObjectAsKey(soilProfile, soilGeometry2DName); - SetFailureProbabilityPiping(objectAsKey, failureProbability); - } - - /// - /// Set Failure Probability piping - /// - /// - /// - private void SetFailureProbabilityPiping(Object objectAsKey, double? failureProbability) - { - failureProbabilitiesPiping[objectAsKey] = failureProbability; - } - - /// /// Get Result Message /// /// @@ -930,54 +861,6 @@ } /// - /// Return probability stability - /// - /// - /// - private double? GetFailureProbabilityStability(Object objectAsKey) - { - if (objectAsKey != null) - { - return failureProbabilitiesStability.ContainsKey(objectAsKey) ? failureProbabilitiesStability[objectAsKey] : null; - } - return null; - } - - /// - /// Return probability stability - /// - /// - /// - /// - public double? GetFailureProbabilityStability(SoilProfile1D soilProfile, string soilGeometry2DName) - { - Object objectAsKey = GetObjectAsKey(soilProfile, soilGeometry2DName); - return GetFailureProbabilityStability(objectAsKey); - } - - /// - /// Set probability stability - /// - /// - /// - private void SetFailureProbabilityStability(Object objectAsKey, double? failureProbability) - { - failureProbabilitiesStability[objectAsKey] = failureProbability; - } - - /// - /// Set probability stability - /// - /// - /// - /// - public void SetFailureProbabilityStability(SoilProfile1D soilProfile, string soilGeometry2DName, double? failureProbability) - { - Object objectAsKey = GetObjectAsKey(soilProfile, soilGeometry2DName); - SetFailureProbabilityStability(objectAsKey, failureProbability); - } - - /// /// Get Redesigned surfaceline /// /// @@ -1074,16 +957,14 @@ /// public override string ToString() { - return String.Format("Location={0}, ID={1} RiverLevel={2} RiverLevelLow={3} DikeTableHeight={4} SafetyFactorStabilityInnerSlope={5} RequiredSafetyFactorStabilityOuterSlope={6} WaterHeightDecimeringsHoogte= {7} MaxWaterheight={8} ProbabilityOfFailureStabilityInnerslope={9} ProbabilityOfFailurePiping={10} PlLineOffsetBelowDikeTopAtRiver={11} PlLineOffsetBelowDikeToeAtPolder={12} PlLineOffsetBelowDikeTopAtPolder={13} PlLineOffsetBelowShoulderBaseInside={14} UsePlLineOffsetBelowDikeCrestMiddle {15} PlLineOffsetBelowDikeCrestMiddle {16} UsePlLineOffsetFactorBelowShoulderCrest {17} PlLineOffsetFactorBelowShoulderCrest {18} HeadPl3={19} HeadPl4={20}", + return String.Format("Location={0}, ID={1} RiverLevel={2} RiverLevelLow={3} DikeTableHeight={4} SafetyFactorStabilityInnerSlope={5} RequiredSafetyFactorStabilityOuterSlope={6} WaterHeightDecimeringsHoogte= {7} MaxWaterheight={8} PlLineOffsetBelowDikeTopAtRiver={11} PlLineOffsetBelowDikeToeAtPolder={12} PlLineOffsetBelowDikeTopAtPolder={13} PlLineOffsetBelowShoulderBaseInside={14} UsePlLineOffsetBelowDikeCrestMiddle {15} PlLineOffsetBelowDikeCrestMiddle {16} UsePlLineOffsetFactorBelowShoulderCrest {17} PlLineOffsetFactorBelowShoulderCrest {18} HeadPl3={19} HeadPl4={20}", Location.Name, LocationScenarioID, RiverLevel, RiverLevelLow.HasValue ? RiverLevelLow.ToString() : "?", DikeTableHeight.HasValue ? DikeTableHeight.ToString() : "?", ModelFactors.RequiredSafetyFactorStabilityInnerSlope.HasValue ? ModelFactors.RequiredSafetyFactorStabilityInnerSlope.ToString() : "?", ModelFactors.RequiredSafetyFactorStabilityOuterSlope.HasValue ? ModelFactors.RequiredSafetyFactorStabilityOuterSlope.ToString() : "?", WaterHeightDecimeringsHoogte.HasValue ? WaterHeightDecimeringsHoogte.ToString() : "?", MaxWaterLevel.HasValue ? MaxWaterLevel.ToString() : "?", - ModelFactors.RequiredProbabilityOfFailureStabilityInnerslope.HasValue ? ModelFactors.RequiredProbabilityOfFailureStabilityInnerslope.ToString() : "?", - ModelFactors.RequiredProbabilityOfFailurePiping.HasValue ? ModelFactors.RequiredProbabilityOfFailurePiping.ToString() : "?", PlLineOffsetBelowDikeTopAtRiver.HasValue ? PlLineOffsetBelowDikeToeAtPolder.ToString() : "?", PlLineOffsetBelowDikeToeAtPolder.HasValue ? MaxWaterLevel.ToString() : "?", PlLineOffsetBelowDikeTopAtPolder.HasValue ? PlLineOffsetBelowDikeTopAtPolder.ToString() : "?", @@ -1096,45 +977,6 @@ HeadPl4.HasValue ? HeadPl4.ToString() : "?"); } - /// - /// Determine waterlevels based on waterlevel, max waterlevel and decimeringshoogte - /// - /// - public double[] DetermineProperWaterlevelsForProbabilisticAdvanced() - { - double[] waterLevels = new double[3]; - - waterLevels[0] = (double)MaxWaterLevel; - waterLevels[1] = (double)MaxWaterLevel; - waterLevels[2] = (double)MaxWaterLevel; - - if (MaxWaterLevel > RiverLevel + WaterHeightDecimeringsHoogte) - { - waterLevels[0] = (double)(RiverLevel + WaterHeightDecimeringsHoogte); - waterLevels[1] = (double)RiverLevel; - waterLevels[2] = (double)(RiverLevel - WaterHeightDecimeringsHoogte); - } - else - { - if (MaxWaterLevel > RiverLevel) - { - waterLevels[0] = (double)MaxWaterLevel; - waterLevels[1] = (double)RiverLevel; - waterLevels[2] = (double)(RiverLevel - WaterHeightDecimeringsHoogte); - } - else - { - if (MaxWaterLevel > RiverLevel - WaterHeightDecimeringsHoogte) - { - waterLevels[0] = (double)MaxWaterLevel; - waterLevels[1] = (double)MaxWaterLevel; - waterLevels[2] = (double)(RiverLevel - WaterHeightDecimeringsHoogte); - } - } - } - return waterLevels; - } - public Dictionary GetParametersAsNameValuePairs() { var numberFormatInfo = new NumberFormatInfo(); @@ -1172,18 +1014,6 @@ { nameValuePairs.Add(ScenarioParameterNames.RequiredSafetyFactorPiping, ModelFactors.RequiredSafetyFactorPiping.Value.ToString(numberFormatInfo)); } - if (ModelFactors.RequiredProbabilityOfFailureStabilityInnerslope != null) - { - nameValuePairs.Add(ScenarioParameterNames.RequiredProbabilityOfFailureStabilityInnerslope, ModelFactors.RequiredProbabilityOfFailureStabilityInnerslope.Value.ToString(numberFormatInfo)); - } - if (ModelFactors.RequiredProbabilityOfFailureStabilityOuterslope != null) - { - nameValuePairs.Add(ScenarioParameterNames.RequiredProbabilityOfFailureStabilityOuterslope, ModelFactors.RequiredProbabilityOfFailureStabilityOuterslope.Value.ToString(numberFormatInfo)); - } - if (ModelFactors.RequiredProbabilityOfFailurePiping != null) - { - nameValuePairs.Add(ScenarioParameterNames.RequiredProbabilityOfFailurePiping, ModelFactors.RequiredProbabilityOfFailurePiping.Value.ToString(numberFormatInfo)); - } if (ModelFactors.UpliftCriterionPiping != null) { nameValuePairs.Add(ScenarioParameterNames.UpliftCriterionPiping, ModelFactors.UpliftCriterionPiping.Value.ToString(numberFormatInfo)); @@ -1258,12 +1088,6 @@ ModelFactors.RequiredSafetyFactorStabilityOuterSlope = Convert.ToDouble(parameterValue, numberFormatInfo); if (parameterName.Equals(ScenarioParameterNames.RequiredSafetyFactorPiping)) ModelFactors.RequiredSafetyFactorPiping = Convert.ToDouble(parameterValue, numberFormatInfo); - if (parameterName.Equals(ScenarioParameterNames.RequiredProbabilityOfFailureStabilityInnerslope)) - ModelFactors.RequiredProbabilityOfFailureStabilityInnerslope = Convert.ToDouble(parameterValue, numberFormatInfo); - if (parameterName.Equals(ScenarioParameterNames.RequiredProbabilityOfFailureStabilityOuterslope)) - ModelFactors.RequiredProbabilityOfFailureStabilityOuterslope = Convert.ToDouble(parameterValue, numberFormatInfo); - if (parameterName.Equals(ScenarioParameterNames.RequiredProbabilityOfFailurePiping)) - ModelFactors.RequiredProbabilityOfFailurePiping = Convert.ToDouble(parameterValue, numberFormatInfo); if (parameterName.Equals(ScenarioParameterNames.UpliftCriterionPiping)) ModelFactors.UpliftCriterionPiping = Convert.ToDouble(parameterValue, numberFormatInfo); if (parameterName.Equals(ScenarioParameterNames.UpliftCriterionStability)) @@ -1303,9 +1127,6 @@ public const string RequiredSafetyFactorStabilityInnerSlope = "RequiredSafetyFactorStabilityInnerSlope"; public const string RequiredSafetyFactorStabilityOuterSlope = "RequiredSafetyFactorStabilityOuterSlope"; public const string RequiredSafetyFactorPiping = "RequiredSafetyFactorPiping"; - public const string RequiredProbabilityOfFailureStabilityInnerslope = "RequiredProbabilityOfFailureStabilityInnerslope"; - public const string RequiredProbabilityOfFailureStabilityOuterslope = "RequiredProbabilityOfFailureStabilityOuterslope"; - public const string RequiredProbabilityOfFailurePiping = "RequiredProbabilityOfFailurePiping"; public const string UpliftCriterionPiping = "UpliftCriterionPiping"; public const string UpliftCriterionStability = "UpliftCriterionStability"; public const string PlLineOffsetBelowDikeTopAtRiver = "PLLineOffsetBelowDikeTopAtRiver"; Index: dam engine/trunk/src/Deltares.DamEngine.Data/General/Results/DesignResult.cs =================================================================== diff -u -r595 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Data/General/Results/DesignResult.cs (.../DesignResult.cs) (revision 595) +++ dam engine/trunk/src/Deltares.DamEngine.Data/General/Results/DesignResult.cs (.../DesignResult.cs) (revision 599) @@ -35,8 +35,7 @@ public class DesignResult : ICloneable { private double? safetyFactor; - private double? failureProbability; - + private string baseFileName; private string locationName; @@ -63,24 +62,6 @@ } /// - /// Gets or sets the failure probability (derived result). - /// Note: this is a placeholder, not to be part of the results as written to xml - /// - /// - /// The failure probability. - /// - public double? FailureProbability - { - get - { - return failureProbability; - } - set - { - failureProbability = value; - } - } - /// /// Gets or sets the dam failure mechanisme calculation. /// Note: this is a placeholder, not to be part of the results as written to xml /// @@ -208,9 +189,7 @@ stabilityDesignResults.LocalZone2ExitPointX = mstabResults.Value.zone2.Value.exitPointXCoordinate; } } - stabilityDesignResults.FailureProbability = scenario.GetFailureProbabilityStability(soilProfile, soilGeometry2DName); stabilityDesignResults.RedesignedSurfaceLine = scenario.GetRedesignedSurfaceLine(soilProfile, soilGeometry2DName); - failureProbability = stabilityDesignResults.FailureProbability; safetyFactor = stabilityDesignResults.SafetyFactor; UpliftSituation? upliftSituation = scenario.GetStabilityUpliftSituation(soilProfile, soilGeometry2DName); if (upliftSituation != null) @@ -222,8 +201,6 @@ case FailureMechanismSystemType.Piping: pipingDesignResults = new PipingDesignResults(damFailureMechanismeCalculationSpecification.PipingModelType); profileName = soilProfile.Name; - pipingDesignResults.FailureProbability = scenario.GetFailureProbabilityPiping(soilProfile, soilGeometry2DName); - failureProbability = pipingDesignResults.FailureProbability; pipingDesignResults.ResultMessage = scenario.GetResultMessage(soilProfile, soilGeometry2DName); pipingDesignResults.RedesignedSurfaceLine = scenario.GetRedesignedSurfaceLine(soilProfile, soilGeometry2DName); UpliftSituation? upliftSituationPiping = scenario.GetStabilityUpliftSituation(soilProfile, soilGeometry2DName); @@ -248,7 +225,7 @@ pipingDesignResults.UpliftFactor = pipingResults.Value.UpliftFactor; } safetyFactor = pipingDesignResults.SafetyFactor(); - calculationResult = (pipingDesignResults.SafetyFactor() == null && pipingDesignResults.FailureProbability == null) ? CalculationResult.RunFailed : CalculationResult.Succeeded; + calculationResult = (pipingDesignResults.SafetyFactor() == null) ? CalculationResult.RunFailed : CalculationResult.Succeeded; break; } } @@ -377,7 +354,6 @@ profileName = designResult.ProfileName; calculationResult = designResult.calculationResult; safetyFactor = designResult.SafetyFactor; - failureProbability = designResult.FailureProbability; stabilityDesignResults = new StabilityDesignResults(); designResult.StabilityDesignResults.CloneProperties(stabilityDesignResults); pipingDesignResults = new PipingDesignResults(DamFailureMechanismeCalculation.PipingModelType); Index: dam engine/trunk/src/Deltares.DamEngine.Data/General/ModelParameters.cs =================================================================== diff -u -r452 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Data/General/ModelParameters.cs (.../ModelParameters.cs) (revision 452) +++ dam engine/trunk/src/Deltares.DamEngine.Data/General/ModelParameters.cs (.../ModelParameters.cs) (revision 599) @@ -46,9 +46,6 @@ RequiredSafetyFactorStabilityInnerSlope = 1.0, RequiredSafetyFactorStabilityOuterSlope = 1.0, RequiredSafetyFactorPiping = 1.0, - RequiredProbabilityOfFailureStabilityInnerslope = 0.00000001, - RequiredProbabilityOfFailureStabilityOuterslope = 0.00000001, - RequiredProbabilityOfFailurePiping = 0.00000001, UpliftCriterionPiping = 1.2, UpliftCriterionStability = 1.2 }; Index: dam engine/trunk/src/Deltares.DamEngine.Data/General/DAMEnumerations.cs =================================================================== diff -u -r578 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Data/General/DAMEnumerations.cs (.../DAMEnumerations.cs) (revision 578) +++ dam engine/trunk/src/Deltares.DamEngine.Data/General/DAMEnumerations.cs (.../DAMEnumerations.cs) (revision 599) @@ -91,13 +91,6 @@ AdaptNWO }; - public enum ProbabilisticType - { - Deterministic, - Probabilistic, - ProbabilisticFragility - }; - public enum FailureMechanismSystemType { StabilityInside, Index: dam engine/trunk/src/Deltares.DamEngine.Data/General/Results/PipingDesignResults.cs =================================================================== diff -u -r452 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Data/General/Results/PipingDesignResults.cs (.../PipingDesignResults.cs) (revision 452) +++ dam engine/trunk/src/Deltares.DamEngine.Data/General/Results/PipingDesignResults.cs (.../PipingDesignResults.cs) (revision 599) @@ -27,7 +27,6 @@ public class PipingDesignResults { private string resultMessage = ""; - private double? failureProbability; private double? upliftFactor; private double? heaveFactor; private double? blighFactor; @@ -85,24 +84,6 @@ } /// - /// Gets or sets the failure probability. - /// - /// - /// The failure probability. - /// - public double? FailureProbability - { - get - { - return failureProbability; - } - set - { - failureProbability = value; - } - } - - /// /// Gets or sets the uplift factor. /// /// Index: dam engine/trunk/src/Deltares.DamEngine.Data/General/DamFailureMechanismeCalculationSpecification.cs =================================================================== diff -u -r452 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Data/General/DamFailureMechanismeCalculationSpecification.cs (.../DamFailureMechanismeCalculationSpecification.cs) (revision 452) +++ dam engine/trunk/src/Deltares.DamEngine.Data/General/DamFailureMechanismeCalculationSpecification.cs (.../DamFailureMechanismeCalculationSpecification.cs) (revision 599) @@ -33,7 +33,6 @@ private PipingModelType pipingModelType = PipingModelType.Sellmeijer4Forces; private Enum calculationModel; private FailureMechanismeParamatersMStab failureMechanismeParamatersMStab; - private static ProbabilisticType probabilisticType; private static DamProjectType damProjectType; private StabilityKernelType stabilityKernelType = StabilityKernelType.DamClassic; @@ -106,12 +105,6 @@ set { damProjectType = value; } } - public static ProbabilisticType ProbabilisticType - { - get { return probabilisticType; } - set { probabilisticType = 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 Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/General/DamProjectCalculator.cs =================================================================== diff -u -r595 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/General/DamProjectCalculator.cs (.../DamProjectCalculator.cs) (revision 595) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/General/DamProjectCalculator.cs (.../DamProjectCalculator.cs) (revision 599) @@ -296,20 +296,19 @@ foreach (var calculationSpecification in damProjectCalculationSpecification.DamCalculationSpecifications) { - var selectedProbabilisticType = damProjectCalculationSpecification.SelectedProbabilisticType; var analysisType = DamProjectCalculationSpecification.SelectedAnalysisType; Debug.WriteLine("Location '{0}', scenario '{1}' 10", scenarioName, scenarioId); ValidateSpecification(); if (IsStabilityBishopLiftVanCalculation(calculationSpecification)) { Debug.WriteLine("Location '{0}', scenario '{1}' 11", scenarioName, scenarioId); - CalculateStabilityBishopUpliftvanForScenario(scenario, calculationSpecification, selectedProbabilisticType, analysisType); + CalculateStabilityBishopUpliftvanForScenario(scenario, calculationSpecification, analysisType); } else { Debug.WriteLine("Location '{0}', scenario '{1}' 15", scenarioName, scenarioId); - CalculateOneCalculationTypeForScenario(scenario, calculationSpecification, selectedProbabilisticType, analysisType); + CalculateOneCalculationTypeForScenario(scenario, calculationSpecification, analysisType); } Debug.WriteLine("Location '{0}', scenario '{1}' 20", scenarioName, scenarioId); calculationresults.AddRange(scenario.CalculationResults); @@ -351,7 +350,7 @@ /// The calculation specification. /// Type of the probabilistic. /// Type of the analysis. - private void CalculateStabilityBishopUpliftvanForScenario(DesignScenario scenario, DamFailureMechanismeCalculationSpecification calculationSpecification, ProbabilisticType probabilisticType, AnalysisType analysisType) + private void CalculateStabilityBishopUpliftvanForScenario(DesignScenario scenario, DamFailureMechanismeCalculationSpecification calculationSpecification, AnalysisType analysisType) { var bishopCalculationSpecification = new DamFailureMechanismeCalculationSpecification(); bishopCalculationSpecification.Assign(calculationSpecification); @@ -363,12 +362,12 @@ liftvanCalculationSpecification.FailureMechanismeParamatersMStab.IsStabilityCheckOnUplift = true; // First perform calculate Bishop - CalculateOneCalculationTypeForScenario(scenario, bishopCalculationSpecification, probabilisticType, analysisType); + CalculateOneCalculationTypeForScenario(scenario, bishopCalculationSpecification, analysisType); // Save the results, because these will be deleted in the next calculation var calculationresults = new List(); calculationresults.AddRange(scenario.CalculationResults); // Now run LiftVan calculation - CalculateOneCalculationTypeForScenario(scenario, liftvanCalculationSpecification, probabilisticType, analysisType); + CalculateOneCalculationTypeForScenario(scenario, liftvanCalculationSpecification, analysisType); // Combine Bishop and Liftvan results and assign them to the scenario calculationresults.AddRange(scenario.CalculationResults); scenario.CalculationResults.Clear(); @@ -385,7 +384,6 @@ private void CalculateOneCalculationTypeForScenario( DesignScenario scenario, DamFailureMechanismeCalculationSpecification damFailureMechanismeCalculationSpecification, - ProbabilisticType probabilisticType, AnalysisType analysisType) { var dike = damProjectData.Dike; @@ -394,8 +392,7 @@ dike, scenario, damFailureMechanismeCalculationSpecification, - analysisType, - probabilisticType + analysisType ); scenario.ClearResults(); @@ -406,8 +403,7 @@ damFailureMechanismeCalculationSpecification, MStabProgramPath, SlopeWProgramPath, - dike.MapForSoilGeometries2D, - probabilisticType); + dike.MapForSoilGeometries2D); damFailureMechanismeCalculator.CalculationBaseDirectory = CalculationBaseDirectory; if (analysisType == AnalysisType.AdaptNWO) Index: dam engine/trunk/src/Deltares.DamEngine.Data/General/ModelFactors.cs =================================================================== diff -u -r452 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Data/General/ModelFactors.cs (.../ModelFactors.cs) (revision 452) +++ dam engine/trunk/src/Deltares.DamEngine.Data/General/ModelFactors.cs (.../ModelFactors.cs) (revision 599) @@ -24,12 +24,13 @@ public class ModelFactors { public virtual double? RequiredSafetyFactorStabilityInnerSlope { get; set; } + public virtual double? RequiredSafetyFactorStabilityOuterSlope { get; set; } + public virtual double? RequiredSafetyFactorPiping { get; set; } - public virtual double? RequiredProbabilityOfFailureStabilityInnerslope { get; set; } - public virtual double? RequiredProbabilityOfFailureStabilityOuterslope { get; set; } - public virtual double? RequiredProbabilityOfFailurePiping { get; set; } + public virtual double? UpliftCriterionPiping { get; set; } + public virtual double? UpliftCriterionStability { get; set; } public double?[] AllValues @@ -41,9 +42,6 @@ RequiredSafetyFactorStabilityInnerSlope, RequiredSafetyFactorStabilityOuterSlope, RequiredSafetyFactorPiping, - RequiredProbabilityOfFailureStabilityInnerslope, - RequiredProbabilityOfFailureStabilityOuterslope, - RequiredProbabilityOfFailurePiping, UpliftCriterionPiping, UpliftCriterionStability }; Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/General/DAMFailureMechanismeCalculator.cs =================================================================== diff -u -r578 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/General/DAMFailureMechanismeCalculator.cs (.../DAMFailureMechanismeCalculator.cs) (revision 578) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/General/DAMFailureMechanismeCalculator.cs (.../DAMFailureMechanismeCalculator.cs) (revision 599) @@ -73,19 +73,19 @@ private int progressSofar; public DamFailureMechanismeCalculator(ProgramType programType, DamFailureMechanismeCalculationSpecification damFailureMechanismeCalculationSpecification, - string mstabProgramPath, string slopeWProgramPath, string mapForSoilGeometries2D, ProbabilisticType probabilisticType) + string mstabProgramPath, string slopeWProgramPath, string mapForSoilGeometries2D) { this.programType = programType; this.damFailureMechanismeCalculationSpecification = damFailureMechanismeCalculationSpecification; this.mstabProgramPath = mstabProgramPath; this.slopeWProgramPath = slopeWProgramPath; - MapForSoilGeometries2D = mapForSoilGeometries2D; - ProbabilisticType = probabilisticType; + MapForSoilGeometries2D = mapForSoilGeometries2D; } public string CalculationBaseDirectory { get; set; } + public string MapForSoilGeometries2D { get; set; } - public ProbabilisticType ProbabilisticType { get; set; } + public NonWaterRetainingObject NonWaterRetainingObject { get; set; } public List ErrorMessages @@ -210,136 +210,8 @@ // } } + /// - /// Checks the and adapt betas water levels when needed. - /// - /// The betas. - /// The water levels. - /// The scenario. - /// The new surface line. - /// The piping calculator. - /// The soil profile probability. - /// -// private bool CheckAndAdaptBetasWaterLevelsWhenNeeded(double[] betas, double[] waterLevels, Scenario scenario, SurfaceLine2 newSurfaceLine, PipingCalculator pipingCalculator, SoilGeometryProbability soilProfileProbability) -// { -// int nrValidItems = 0; -// for (int i = 0; i < 3; i++) -// { -// // If beta >= 10, then in fact no uplift occured and probability of failure is in fact 0. Such a value would be invalid for the design point calculation. -// if (betas[i] < 10) -// { -// nrValidItems++; -// } -// } -// if ((nrValidItems == 0) || (nrValidItems == 3)) -// { -// return (nrValidItems == 3); -// } -// else -// { -// if (nrValidItems == 1) -// { -// // extra calculation(s) needed to determine a second valid beta (<10) to be able to perform a design point calculation. Search between toplevel -// // (beta[0]) and middle level a waterlevel at which a beta is valid and use that one (adapt the levels too of course). -// double? betaloc = null; -// bool lReady = false; -// double locLevel = (waterLevels[0] + waterLevels[1])*0.5; -// var waterLevelProbabilistic = new ProbabilisticStruct(0.0, 0.01, (int) DistributionType.LogNormal, false); -// waterLevelProbabilistic.Distribution = (int) DistributionType.LogNormal; -// waterLevelProbabilistic.StandardDeviation = 0.01; -// waterLevelProbabilistic.IsUsed = false; -// while (!lReady) -// { -// waterLevelProbabilistic.Mean = locLevel; -// betaloc = CalculatePipingReliabilityIndexForSurface(scenario, newSurfaceLine, pipingCalculator, soilProfileProbability, -// waterLevelProbabilistic); -// lReady = betaloc.Value < 10; -// if (lReady) -// { -// betas[1] = betaloc.Value; -// waterLevels[1] = locLevel; -// } -// else -// { -// locLevel = locLevel + (waterLevels[0] + locLevel)*0.5; -// lReady = Math.Abs(locLevel - waterLevels[0]) < 0.0001; -// } -// } -// -// // now set nrValidItems to 2 to get the required third valid beta by axtrapolation -// nrValidItems = 2; -// } -// if (nrValidItems == 2) -// { -// // use the 2 valid betas to extrapolate a valid third beta value. -// betas[2] = Routines2D.LinInpolY(waterLevels[0], betas[0], waterLevels[1], betas[1], waterLevels[2]); -// } -// return true; -// } -// } - -// private double? CalculatePipingFailureProbabilityAdvanced(PipingCalculator pipingCalculator, Scenario scenario, -// SoilGeometryProbability soilProfileProbability, SurfaceLine2 newSurfaceLine) -// { -// double[] waterLevels = scenario.DetermineProperWaterlevelsForProbabilisticAdvanced(); -// var betas = new double[3]; -// var waterLevelProbabilistic = new ProbabilisticStruct(0.0, 0.01, (int) DistributionType.LogNormal, false); -// for (int i = 0; i < 3; i++) -// { -// betas[i] = 1; -// waterLevelProbabilistic.Mean = waterLevels[i]; -// string calculationName = String.Format("Prob{0}_Loc({1})_Sce({2})_Pro({3})_wl({4})", -// PipingModelType.SellmeijerVnk.ToString(), scenario.Location.Name, scenario.LocationScenarioID, soilProfileProbability.SoilGeometryName, i); -// calculationName = Regex.Replace(calculationName, @"[\\\/:\*\?""'<>|.]", "_"); -// pipingCalculator.FilenameCalculation = pipingCalculator.PipingCalculationDirectory + calculationName; -// -// double? betaloc = CalculatePipingReliabilityIndexForSurface(scenario, newSurfaceLine, pipingCalculator, soilProfileProbability, waterLevelProbabilistic); -// if (betaloc != null) -// { -// betas[i] = betaloc.Value; -// } -// } - - // Note Bka: For now, set MHW to original max water level (= river level + WaterHeightDecimeringsHoogte) and set - // Decimate to the original WaterHeightDecimeringsHoogte. Han Best has to approve this! - // After consulting Best, the next decision is made. MHW should be the riverlevel. And if the maxwaterlevel is smaller than MHW,then a designpoint - // calculation is not longer required as the safety is determined by the maxwaterlevel. So just return the Beta[0] (= beta at maxwaterlevel) in - // that case. -// if (scenario.RiverLevel > scenario.MaxWaterLevel) -// { -// return Probabilistic.Probabilistic.NormalDistribution(-betas[0]); -// } -// else -// { -// if (CheckAndAdaptBetasWaterLevelsWhenNeeded(betas, waterLevels, scenario, newSurfaceLine, pipingCalculator, soilProfileProbability)) -// { -// var designPointWater = new DesignPointCalculation(); -// designPointWater.Betas = betas; -// designPointWater.Waterlevels = waterLevels; -// designPointWater.MHW = (double) (scenario.RiverLevel); -// designPointWater.Decimate = (double) scenario.WaterHeightDecimeringsHoogte; -// designPointWater.Exceed = DesignPointCalculation.ExceedingSet.twoThousend; -// designPointWater.IsMaxLevelUsed = false; -// designPointWater.MaxLevel = 0; -// if (designPointWater.CalculateTheWaterDesignpoint()) -// { -// return Probabilistic.Probabilistic.NormalDistribution(-designPointWater.Beta); -// } -// else -// { -// // result could not be determined. -// throw new DamFailureMechanismeCalculatorException("Water design point calculation failed"); -// } -// } -// else -// { -// // total situation is safe, so return 0. -// return 0; -// } -// } -// } - - /// /// /// /// @@ -396,47 +268,25 @@ // pipingProbabilisticParameters); // pipingCalculator.PipingCalculationDirectory = pipingCalculationDirectory; // double? safetyFactor = null; -// double? failureProbability = null; -// double? failureProbabilityAdvanced = null; // double? pipingExitPointX = null; // double? upliftFactor = null; // double? heaveFactor = null; // try // { -// switch (ProbabilisticType) +// +// safetyFactor = pipingCalculator.CalculatePipingFactor( +// scenario.Location, +// scenario.GetMostRecentSurfaceLine(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName), +// soilProfileProbability.SoilProfile1D, +// scenario.RiverLevel); +// if (pipingCalculator.UpliftLocationAndResult != null) // { -// case ProbabilisticType.Deterministic: -// safetyFactor = pipingCalculator.CalculatePipingFactor( -// scenario.Location, -// scenario.GetMostRecentSurfaceLine(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName), -// soilProfileProbability.SoilProfile1D, -// scenario.RiverLevel); -// if (pipingCalculator.UpliftLocationAndResult != null) -// { -// pipingExitPointX = pipingCalculator.UpliftLocationAndResult.X; -// upliftFactor = pipingCalculator.UpliftLocationAndResult.UpliftFactor; -// heaveFactor = pipingCalculator.HeaveFactor; -// } -// break; -// case ProbabilisticType.Probabilistic: -// waterLevelProbabilistic.Mean = scenario.RiverLevel; -// -// string calculationName = String.Format("Prob{0}_Loc({1})_Sce({2})_Pro({3})", -// pipingCalculationType.ToString(), scenario.Location.Name, scenario.LocationScenarioID, soilProfileProbability.SoilGeometryName); -// calculationName = Regex.Replace(calculationName, @"[\\\/:\*\?""'<>|.]", "_"); -// pipingCalculator.FilenameCalculation = pipingCalculator.PipingCalculationDirectory + calculationName; -// -// failureProbability = -// pipingCalculator.CalculatePipingFailureProbability( -// scenario.Location, -// scenario.GetMostRecentSurfaceLine(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName), -// soilProfileProbability.SoilProfile1D, -// waterLevelProbabilistic); -// break; -// case ProbabilisticType.ProbabilisticFragility: -// failureProbabilityAdvanced = CalculatePipingFailureProbabilityAdvanced(pipingCalculator, scenario, soilProfileProbability, null); -// break; +// pipingExitPointX = pipingCalculator.UpliftLocationAndResult.X; +// upliftFactor = pipingCalculator.UpliftLocationAndResult.UpliftFactor; +// heaveFactor = pipingCalculator.HeaveFactor; // } +// break; +// // } // catch (Exception exception) // { @@ -445,17 +295,7 @@ // // if (pipingCalculationType == PipingModelType.SellmeijerVnk) // { -// scenario.SetSafetyFactorPiping(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, safetyFactor); -// if (ProbabilisticType == ProbabilisticType.ProbabilisticFragility) -// { -// scenario.SetFailureProbabilityPiping(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, -// failureProbabilityAdvanced); -// } -// else -// { -// scenario.SetFailureProbabilityPiping(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, -// failureProbability); -// } +// scenario.SetSafetyFactorPiping(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, safetyFactor); // } // pipingResults.CalculationName = pipingCalculator.FilenameCalculation; // pipingResults.CalculationSubDir = @"PipingCalculation\\"; @@ -989,200 +829,18 @@ // try // { // SurfaceLine2 newSurfaceLine = surfaceLine.FullDeepClone(); -// switch (ProbabilisticType) +// var newCandidate = DetermineNewSafeSurfaceLinePipingDeterministic(scenario, soilProfileProbability, pipingCalculator, newSurfaceLine, ref safetyFactor); +// if (!ReferenceEquals(newSurfaceLine, newCandidate)) // { -// case ProbabilisticType.Deterministic: -// { -// var newCandidate = DetermineNewSafeSurfaceLinePipingDeterministic(scenario, soilProfileProbability, pipingCalculator, newSurfaceLine, ref safetyFactor); -// if (!ReferenceEquals(newSurfaceLine, newCandidate)) -// { -// newSurfaceLine.Dispose(); -// newSurfaceLine = newCandidate; -// } -// -// scenario.SetRedesignedSurfaceLine(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, newSurfaceLine); -// scenario.SetSafetyFactorPiping(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, safetyFactor); -// PipingResults pipingResults = GetPipingResults(safetyFactor, pipingModelType, pipingCalculator); -// scenario.SetPipingResults(soilProfileProbability.SoilProfile1D, -// soilProfileProbability.StiFileName, pipingResults); -// break; -// } -// -// case ProbabilisticType.Probabilistic: -// case ProbabilisticType.ProbabilisticFragility: -// { -// //Todo Adapt the determination of the piping design to the way it should be (See Detrministic and functional design) -// double[] waterLevels = scenario.DetermineProperWaterlevelsForProbabilisticAdvanced(); -// double waterLevel = scenario.RiverLevel; -// -// // for test of deterministic as initialisation for probabilistic, use next line. -// // newSurfaceLine = GetNewSafeSurfaceLine(scenario, soilProfileProbability, pipingCalculator, newSurfaceLine, ref requiredSafetyFactor); -// -// bool upLiftOccured = false; -// if (ProbabilisticType == ProbabilisticType.ProbabilisticFragility) -// { -// waterLevel = waterLevels[1]; -// } -// // start by checking the uplift first (if so, a newShoulderHeight can be determined). If uplift is not an issue then -// // probability of failure = 0. If uplift is an issue, add a berm until uplift is no longer an issue. -// double? newShoulderHeight = pipingCalculator.CalculateDesignShoulderHeight(scenario.Location, newSurfaceLine, -// soilProfileProbability.SoilProfile1D, waterLevel); -// -// double currentShoulderHeight = 0; -// double currentShoulderWidth = 0; -// double newShoulderWidth = 0; -// double slopeFactor = 0; -// if (newShoulderHeight != null) -// { -// // Debug.Write(String.Format("New Shoulder Height {0:0.000}\n", newShoulderHeight)); -// -// // if a new shoulderheight could be found, uplift is an issue. The new found shoulderheight might however not be the correct one -// // as with this height we insert or adjust a berm. This new/adjusted berm has to be checked until uplift is no longer an issue. -// upLiftOccured = true; -// -// // Start by adding the new shoulder. Note that there might be an existing shoulder. -// var shoulderTopInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside); -// var dikeToeAtPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); -// if (newSurfaceLine.HasShoulderInside()) -// { -// // there was a shoulder which now has to be extended. -// currentShoulderWidth = shoulderTopInside.X - -// newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside).X; -// currentShoulderHeight = shoulderTopInside.Z - dikeToeAtPolder.Z; -// // shoulder must grow in length, it should be passed the uplift location -// newShoulderWidth = currentShoulderWidth + pipingCalculator.UpliftLocationAndResult.X - shoulderTopInside.X; -// // in height it should grow with the calculated amount. -// newShoulderHeight = newShoulderHeight.Value + currentShoulderHeight; -// } -// else -// { -// // there was no shoulder, so create one -// var dikeTopAtPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); -// slopeFactor = (dikeToeAtPolder.X - dikeTopAtPolder.X)/(dikeTopAtPolder.Z - dikeToeAtPolder.Z); -// newShoulderWidth = 0.5 + newShoulderHeight.Value*slopeFactor; -// } -// // Make sure new berm is not too small -// newShoulderHeight = Math.Max(newShoulderHeight.Value, CMinimumShoulderElevation); -// newShoulderWidth = Math.Max(newShoulderWidth, CMinimumShoulderWidth); -// currentShoulderWidth = newShoulderWidth; -// currentShoulderHeight = newShoulderHeight.Value; -// -// bool finished = false; -// double maxShoulderLevel = CalculateMaximumShoulderLevel(newSurfaceLine, 1.0); // no limit to height of shoulder -// while ((newShoulderHeight != null) && (!finished)) -// { -// var surfaceLineShoulderAdapter = new SurfaceLineShoulderAdapter(newSurfaceLine, scenario.Location); -// surfaceLineShoulderAdapter.MaxShoulderLevel = maxShoulderLevel; -// newSurfaceLine = surfaceLineShoulderAdapter.ConstructNewSurfaceLine(newShoulderWidth, newShoulderHeight.Value, true); -// newShoulderHeight = pipingCalculator.CalculateDesignShoulderHeight(scenario.Location, newSurfaceLine, -// soilProfileProbability.SoilProfile1D, waterLevel); -// finished = (pipingCalculator.UpliftLocationAndResult.X > shoulderTopInside.X); -// if (newShoulderHeight != null && (!finished)) -// { -// // make sure new height is at least cMinimumShoulderExtraElevation higher -// if (newShoulderHeight.Value < CMinimumShoulderExtraElevation) -// { -// newShoulderHeight = currentShoulderHeight + CMinimumShoulderExtraElevation; -// } -// else -// { -// newShoulderHeight = currentShoulderHeight + newShoulderHeight.Value; -// } -// // shoulder must grow in length, it should be passed the uplift location and at least the minimum grow value -// newShoulderWidth = currentShoulderWidth + CMinimumShoulderExtraWidth; -// currentShoulderWidth = currentShoulderWidth + pipingCalculator.UpliftLocationAndResult.X - -// shoulderTopInside.X; -// newShoulderWidth = Math.Max(currentShoulderWidth, newShoulderWidth); -// -// currentShoulderWidth = newShoulderWidth; -// currentShoulderHeight = newShoulderHeight.Value; -// } -// } -// } -// -// // if no shoulder needed (i.e. when no uplift occurs) then failure probability is always cDefaultMinReturnValue = 0.0 -// double? failureProbability = PipingCalculator.cDefaultMinReturnValue; -// if (upLiftOccured) -// { -// // Uplift occured, so calculate failureProbability -// if (ProbabilisticType == ProbabilisticType.Probabilistic) -// { -// var waterLevelProbabilistic = new ProbabilisticStruct(0.0, 0.01, (int) DistributionType.LogNormal, false); -// waterLevelProbabilistic.Mean = scenario.RiverLevel; -// failureProbability = pipingCalculator.CalculatePipingFailureProbability(scenario.Location, newSurfaceLine, -// soilProfileProbability.SoilProfile1D, waterLevelProbabilistic); -// } -// else -// { -// failureProbability = CalculatePipingFailureProbabilityAdvanced(pipingCalculator, scenario, soilProfileProbability, -// newSurfaceLine); -// } -// -// if (failureProbability != null) -// { -// int iterationIndex = 1; -// bool isRedesignRequired = (failureProbability.Value > scenario.ModelFactors.RequiredProbabilityOfFailurePiping); -// -// double maxShoulderLevel = CalculateMaximumShoulderLevel(newSurfaceLine, 1.0); // no limit to height of shoulder -// while (isRedesignRequired && newSurfaceLine != null) -// { -// // Debug.Write(String.Format("Iteration {0} failureProbability {1:0.0000000000}, currentShoulderWidth {2:0.000}, currentShoulderHeight {3:0.000}\n", iterationIndex, failureProbability, currentShoulderWidth, currentShoulderHeight)); -// iterationIndex++; -// currentShoulderWidth = currentShoulderWidth + 1; -// // Due to different calculation types, raise the shoulder too next to making it wider. -// currentShoulderHeight = currentShoulderHeight + CMinimumShoulderExtraElevation; -// var surfaceLineShoulderAdapter = new SurfaceLineShoulderAdapter(newSurfaceLine, scenario.Location); -// surfaceLineShoulderAdapter.MaxShoulderLevel = maxShoulderLevel; -// newSurfaceLine = surfaceLineShoulderAdapter.ConstructNewSurfaceLine(currentShoulderWidth, currentShoulderHeight, true); -// if (ProbabilisticType == ProbabilisticType.Probabilistic) -// { -// var waterLevelProbabilistic = new ProbabilisticStruct(0.0, 0.01, (int) DistributionType.LogNormal, false); -// waterLevelProbabilistic.Mean = scenario.RiverLevel; -// failureProbability = pipingCalculator.CalculatePipingFailureProbability( -// scenario.Location, newSurfaceLine, -// soilProfileProbability.SoilProfile1D, waterLevelProbabilistic); -// } -// else -// { -// failureProbability = CalculatePipingFailureProbabilityAdvanced(pipingCalculator, scenario, -// soilProfileProbability, newSurfaceLine); -// } -// -// if (failureProbability != null) -// { -// isRedesignRequired = (failureProbability.Value > scenario.ModelFactors.RequiredProbabilityOfFailurePiping); -// } -// else -// { -// isRedesignRequired = true; -// } -// if (iterationIndex >= PipingRedesingMaxIterations) -// { -// // #BKA: vraag voor Ray set the results in case of failure too to provide feedback. (of niet Tom???) Voorlopig even niet. Ray was net naar huis dus nog navragen. -// // scenario.SetFailureProbabilityPiping(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, -// // failureProbability); -// // scenario.SetRedesignedSurfaceLine(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, -// // newSurfaceLine); -// throw new MaximumRedesignIterationsReachedException(); -// } -// } -// } -// } -// if (failureProbability != null) -// { -// scenario.SetFailureProbabilityPiping(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, -// failureProbability); -// } -// else -// { -// scenario.SetFailureProbabilityPiping(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, -// 999); -// } -// scenario.SetRedesignedSurfaceLine(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, newSurfaceLine); -// break; -// } +// newSurfaceLine.Dispose(); +// newSurfaceLine = newCandidate; // } // +// scenario.SetRedesignedSurfaceLine(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, newSurfaceLine); +// scenario.SetSafetyFactorPiping(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, safetyFactor); +// PipingResults pipingResults = GetPipingResults(safetyFactor, pipingModelType, pipingCalculator); +// scenario.SetPipingResults(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, pipingResults); +// // scenario.SetResultMessage(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName, "Succes"); // } // catch (Exception exception) @@ -1449,8 +1107,6 @@ // Location location = scenario.Location; // double requiredSafetyFactor = scenario.ModelFactors.RequiredSafetyFactorStabilityInnerSlope ?? // scenario.Location.ModelFactors.RequiredSafetyFactorStabilityInnerSlope.Value; -// double betaRequired = scenario.ModelFactors.RequiredProbabilityOfFailureStabilityInnerslope ?? -// scenario.Location.ModelFactors.RequiredProbabilityOfFailureStabilityInnerslope.Value; // const int maxRedesignIterations = 200; // int iterationIndex = 1; // string previousFilename; @@ -1468,7 +1124,6 @@ // // try // { -// double? beta; // bool isRedesignRequired; // double? exitPointXCoordinate; // scenario.Location.AlignBoundaryPointsOfPL1LineWithAdaptedSurfaceLine(surfaceLine); @@ -1480,9 +1135,7 @@ // MStabResults? mStabResults = scenario.GetMStabResults(soilProfileProbability.SoilProfile1D, // soilProfileProbability.StiFileName); // double? safetyFactor = mStabResults.Value.zone1.safetyFactor; -// beta = scenario.GetFailureProbabilityStability(soilProfileProbability.SoilProfile1D, -// soilProfileProbability.StiFileName); -// isRedesignRequired = IsRedesignRequired(safetyFactor, requiredSafetyFactor, betaRequired, beta); +// isRedesignRequired = IsRedesignRequired(safetyFactor, requiredSafetyFactor); // exitPointXCoordinate = mStabResults.Value.zone1.circleSurfacePointRightXCoordinate; // // if (!isRedesignRequired && surfaceLine != null) @@ -1551,9 +1204,7 @@ // mStabResults = scenario.GetMStabResults(soilProfileProbability.SoilProfile1D, // soilProfileProbability.StiFileName); // safetyFactor = mStabResults.Value.zone1.safetyFactor; -// beta = scenario.GetFailureProbabilityStability(soilProfileProbability.SoilProfile1D, -// soilProfileProbability.StiFileName); -// isRedesignRequired = IsRedesignRequired(safetyFactor, requiredSafetyFactor, betaRequired, beta); +// isRedesignRequired = IsRedesignRequired(safetyFactor, requiredSafetyFactor); // exitPointXCoordinate = mStabResults.Value.zone1.circleSurfacePointRightXCoordinate; // } // } @@ -1624,8 +1275,6 @@ // Location location = scenario.Location; // double requiredSafetyFactor = scenario.ModelFactors.RequiredSafetyFactorStabilityInnerSlope ?? // scenario.Location.ModelFactors.RequiredSafetyFactorStabilityInnerSlope.Value; -// double betaRequired = scenario.ModelFactors.RequiredProbabilityOfFailureStabilityInnerslope ?? -// scenario.Location.ModelFactors.RequiredProbabilityOfFailureStabilityInnerslope.Value; // const int maxRedesignIterations = 200; // int iterationIndex = 1; // string previousFilename; @@ -1643,7 +1292,6 @@ // // try // { -// double? beta; // bool isRedesignRequired; // double? exitPointXCoordinate; // scenario.Location.AlignBoundaryPointsOfPL1LineWithAdaptedSurfaceLine(surfaceLine); @@ -1655,9 +1303,7 @@ // MStabResults? mStabResults = scenario.GetMStabResults(soilProfileProbability.SoilProfile1D, // soilProfileProbability.StiFileName); // double? safetyFactor = mStabResults.Value.zone1.safetyFactor; -// beta = scenario.GetFailureProbabilityStability(soilProfileProbability.SoilProfile1D, -// soilProfileProbability.StiFileName); -// isRedesignRequired = IsRedesignRequired(safetyFactor, requiredSafetyFactor, betaRequired, beta); +// isRedesignRequired = IsRedesignRequired(safetyFactor, requiredSafetyFactor); // exitPointXCoordinate = mStabResults.Value.zone1.circleSurfacePointRightXCoordinate; // // if (!isRedesignRequired && surfaceLine != null) @@ -1718,9 +1364,7 @@ // soilProfileProbability.StiFileName); // safetyFactor = mStabResults.Value.zone1.safetyFactor; // exitPointXCoordinate = mStabResults.Value.zone1.circleSurfacePointRightXCoordinate; -// beta = scenario.GetFailureProbabilityStability(soilProfileProbability.SoilProfile1D, -// soilProfileProbability.StiFileName); -// isRedesignRequired = IsRedesignRequired(safetyFactor, requiredSafetyFactor, betaRequired, beta); +// isRedesignRequired = IsRedesignRequired(safetyFactor, requiredSafetyFactor); // limitPointForShoulderDesign = surfaceLine.GetLimitPointForShoulderDesign(); // // coTangent += stepCoTangent; @@ -1761,8 +1405,7 @@ // iterationIndex, mstabDesignEmbankment); // mStabResults = scenario.GetMStabResults(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName); // safetyFactor = mStabResults.Value.zone1.safetyFactor; -// beta = scenario.GetFailureProbabilityStability(soilProfileProbability.SoilProfile1D, soilProfileProbability.StiFileName); -// isRedesignRequired = IsRedesignRequired(safetyFactor, requiredSafetyFactor, betaRequired, beta); +// isRedesignRequired = IsRedesignRequired(safetyFactor, requiredSafetyFactor); // limitPointForShoulderDesign = surfaceLine.GetLimitPointForShoulderDesign(); // } // } @@ -1793,22 +1436,11 @@ /// Check if a stability redesign is required /// /// - /// - /// - /// + /// /// - private bool IsRedesignRequired(double? safetyFactor, double requiredSafetyFactor, double betaRequired, double? beta) + private bool IsRedesignRequired(double? safetyFactor, double requiredSafetyFactor) { - bool isRedesignRequired; - if (ProbabilisticType == ProbabilisticType.ProbabilisticFragility) - { - isRedesignRequired = beta > betaRequired; - } - else - { - isRedesignRequired = safetyFactor < requiredSafetyFactor; - } - return isRedesignRequired; + return safetyFactor < requiredSafetyFactor; } /// Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/Stability/StabilityCalculator.cs =================================================================== diff -u -r578 -r599 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/Stability/StabilityCalculator.cs (.../StabilityCalculator.cs) (revision 578) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/Stability/StabilityCalculator.cs (.../StabilityCalculator.cs) (revision 599) @@ -64,7 +64,7 @@ ModelParametersForPLLines modelParametersForPLLines, double trafficLoad, double minimalCircleDepth, double requiredSafetyFactor, string mstabProgramPath, string slopeWProgramPath, IList gaugePLLines, - IList gauges, SoilList soilList, ProbabilisticType probabilisticType) + IList gauges, SoilList soilList) { this.programType = programType; this.modelParametersForPLLines = modelParametersForPLLines; @@ -81,13 +81,12 @@ this.gaugePLLines = gaugePLLines; this.gauges = gauges; this.SoilList = soilList; - ProbabilisticType = probabilisticType; CalculationBaseDirectory = ""; } public string CalculationBaseDirectory { get; set; } public SoilList SoilList { get; set; } - public ProbabilisticType ProbabilisticType { get; set; } + public static string ModelSubDirectory = ""; private MStabProject dotNetMstabProjectResults; public PhreaticAdaptionType? NWOPhreaticAdaption { get; set; } @@ -623,56 +622,8 @@ // // MStabResults mStabResults = new MStabResults(); // mStabResults.Init(); -// switch (ProbabilisticType) -// { -// case ProbabilisticType.Deterministic: -// { -// CalculateType(stabilityProjectFilename, scenario, soilProfile, soilGeometry2DName, -// stabilityServiceAgent, scenario.RiverLevel, mstabDesignEmbankment); -// scenario.SetFailureProbabilityStability(soilProfile, Path.GetFileName(soilGeometry2DName), null); -// break; -// } -// case ProbabilisticType.Probabilistic: -// { -// CalculateType(stabilityProjectFilename, scenario, soilProfile, soilGeometry2DName, -// stabilityServiceAgent, scenario.RiverLevel, mstabDesignEmbankment); -// double beta = 0; -// beta = stabilityServiceAgent.ExtractBeta(stabilityProjectFilename); -// scenario.SetFailureProbabilityStability(soilProfile, soilGeometry2DName, -// Probabilistic.Probabilistic.NormalDistribution(-beta)); -// break; -// } -// case ProbabilisticType.ProbabilisticFragility: -// { -// double[] waterLevels = scenario.DetermineProperWaterlevelsForProbabilisticAdvanced(); -// double[] betas = new double[3]; -// for (int i = 0; i < 3; i++) -// { -// string fileNameAdvanced = calculationName + "_WL" + i + ".sti"; -// stabilityProjectFilename = Path.Combine(stabilityDirectory, fileNameAdvanced); -// CalculateType(stabilityProjectFilename, scenario, soilProfile, soilGeometry2DName, -// stabilityServiceAgent, waterLevels[i], mstabDesignEmbankment); -// betas[i] = stabilityServiceAgent.ExtractBeta(stabilityProjectFilename); -// } -// var designPointWater = new DesignPointCalculation(); -// designPointWater.Waterlevels = waterLevels; -// designPointWater.Betas = betas; -// // Note Bka: For now, set MHW to original max water level (= river level + WaterHeightDecimeringsHoogte) and set -// // Decimate to the original WaterHeightDecimeringsHoogte. Han Best has to approve this! -// designPointWater.MHW = (double)(scenario.RiverLevel + scenario.WaterHeightDecimeringsHoogte); -// designPointWater.Decimate = (double)scenario.WaterHeightDecimeringsHoogte; -// designPointWater.Exceed = DesignPointCalculation.ExceedingSet.twoThousend; -// designPointWater.IsMaxLevelUsed = false; -// designPointWater.MaxLevel = 0; -// -// if (designPointWater.CalculateTheWaterDesignpoint()) -// { -// scenario.SetFailureProbabilityStability(soilProfile, soilGeometry2DName, -// Probabilistic.Probabilistic.NormalDistribution(-designPointWater.Beta)); -// } -// break; -// } -// } +// CalculateType(stabilityProjectFilename, scenario, soilProfile, soilGeometry2DName, +// stabilityServiceAgent, scenario.RiverLevel, mstabDesignEmbankment); // if (SelectedStabilityKernelType == StabilityKernelType.DamClassic) // { // mStabResults = stabilityServiceAgent.ExtractStabilityResults(stabilityProjectFilename);