Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r5930 -r5931 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 5930) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 5931) @@ -46,7 +46,7 @@ public class MacroStabilityInwardsKernelWrapper : IKernelWrapper { - readonly MacroStabilityCommonHelper macroStabilityCommonHelper; + private readonly MacroStabilityCommonHelper macroStabilityCommonHelper; private Calculator stabilityCalculator; private Calculator stabilityCalculatorForSecondCalculation; private string fileNameForCalculation; @@ -91,8 +91,8 @@ }; kernelDataOutput = macroStabilityOutput; if (damKernelInput.SubSoilScenario.SegmentFailureMechanismType != null && - damKernelInput.SubSoilScenario.SegmentFailureMechanismType.Value.In(SegmentFailureMechanismType.Stability, - SegmentFailureMechanismType.All)) + damKernelInput.SubSoilScenario.SegmentFailureMechanismType.Value.In(SegmentFailureMechanismType.Stability, + SegmentFailureMechanismType.All)) { try { @@ -118,7 +118,7 @@ var upliftHelper = new UpliftHelper(); PlLines plLines = upliftHelper.DeterminePlLinesForStability(damKernelInput, useRiverLevelLow, out UpliftSituation upliftSituation); macroStabilityOutput.UpliftSituation = upliftSituation; - + Waternet waterNet = MacroStabilityCommonHelper.CreateWaternet(damKernelInput, plLines); var fillMacroStabilityWrapperFromEngine = new FillMacroStabilityWrapperInputFromEngine @@ -261,6 +261,7 @@ { designScenario.CalculationResult = macroStabilityOutput!.CalculationResult; } + designResults = new List(); MacroStabilityOutputItem macroStabilityOutputItem = ProperMacroStabilityResultsItem(macroStabilityOutput, 0); @@ -272,11 +273,11 @@ macroStabilityOutputItem = ProperMacroStabilityResultsItem(macroStabilityOutput, 1); AddDesignResult(damKernelInput, designScenario, designResults, macroStabilityOutputItem, macroStabilityOutput); // If no uplift therefore no UpliftVan calculation was made. So add a fictive (empty) design result. - if(macroStabilityOutputItem == null && !macroStabilityOutput!.UpliftSituation.IsUplift) + if (macroStabilityOutputItem == null && !macroStabilityOutput!.UpliftSituation.IsUplift) { AddDesignResultNoRun(damKernelInput, designScenario, designResults, macroStabilityOutput); } - + // Now add the overall result for Bishop/UpliftVan only if both results are available. if (designResults.Count == 2) { @@ -310,9 +311,10 @@ overallResult.StabilityDesignResults.StabilityModelType = MStabModelType.BishopUpliftVan; if (macroStabilityOutputItem.CalculationResult != CalculationResult.Succeeded) { - var subSoilScenario = damKernelInput.SubSoilScenario; + SoilGeometryProbability subSoilScenario = damKernelInput.SubSoilScenario; overallResult.StabilityDesignResults.ResultMessage = designScenario.GetResultMessage(subSoilScenario.SoilProfile1D, subSoilScenario.SoilProfile2D); } + designResults.Add(overallResult); } // If not both Bishop and Uplift-Van results are available, this is unexpected. @@ -321,41 +323,13 @@ DesignResult overallResult = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); overallResult.StabilityDesignResults.StabilityModelType = MStabModelType.BishopUpliftVan; overallResult.CalculationResult = CalculationResult.UnexpectedError; - var subSoilScenario = damKernelInput.SubSoilScenario; + SoilGeometryProbability subSoilScenario = damKernelInput.SubSoilScenario; overallResult.StabilityDesignResults.ResultMessage = designScenario.GetResultMessage(subSoilScenario.SoilProfile1D, subSoilScenario.SoilProfile2D); designResults.Add(overallResult); } } } - private static void AddDesignResultNoRun(DamKernelInput damKernelInput, DesignScenario designScenario, List designResults, MacroStabilityOutput macroStabilityOutput) - { - DesignResult designResultUpliftNoRun = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); - designResultUpliftNoRun.StabilityDesignResults.StabilityModelType = MStabModelType.UpliftVan; - designResultUpliftNoRun.CalculationResult = CalculationResult.NoRun; - designResultUpliftNoRun.SafetyFactor = null; - designResultUpliftNoRun.StabilityDesignResults.UpliftSituation = macroStabilityOutput.UpliftSituation; - designResultUpliftNoRun.CalculationSubDir = designResults.Count == 1 ? designResults[0].CalculationSubDir.Replace(MStabModelType.Bishop.ToString(), MStabModelType.UpliftVan.ToString()) : ""; - designResults.Add(designResultUpliftNoRun); - } - - private void AddDesignResult(DamKernelInput damKernelInput, DesignScenario designScenario, List designResults, MacroStabilityOutputItem macroStabilityOutputItem, MacroStabilityOutput macroStabilityOutput) - { - if (macroStabilityOutputItem != null) - { - DesignResult designResult = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); - MacroStabilityCommonHelper.FillDesignResult(macroStabilityOutputItem, designResult, lastIterationIndex); - designResult.StabilityDesignResults.NumberOfIterations = lastIterationIndex; - designResult.StabilityDesignResults.UpliftSituation = macroStabilityOutput.UpliftSituation; - if (macroStabilityOutputItem.CalculationResult != CalculationResult.Succeeded) - { - var subSoilScenario = damKernelInput.SubSoilScenario; - designResult.StabilityDesignResults.ResultMessage = designScenario.GetResultMessage(subSoilScenario.SoilProfile1D, subSoilScenario.SoilProfile2D); - } - designResults.Add(designResult); - } - } - /// /// Calculates the design at point. /// @@ -405,7 +379,7 @@ evaluationMessage = "Stability calculation failed."; return true; } - + // Check if the factor of safety is achieved double fosAchieved = leadingStabilityOutputItem.SafetyFactor; double exitPointXCoordinate = leadingStabilityOutputItem.CircleSurfacePointRightXCoordinate; @@ -434,20 +408,6 @@ return false; } - private MacroStabilityOutputItem DetemineLeadingOutputItem(List stabilityOutputItems) - { - if (stabilityOutputItems.Count == 1) - { - return stabilityOutputItems[0]; - } - if (stabilityOutputItems[0].CalculationResult == CalculationResult.Succeeded && stabilityOutputItems[1].CalculationResult == CalculationResult.Succeeded) - { - return stabilityOutputItems[0].SafetyFactor < stabilityOutputItems[1].SafetyFactor ? stabilityOutputItems[0] : stabilityOutputItems[1]; - } - return null; - - } - /// /// Prepares the design. /// @@ -511,6 +471,50 @@ } } + private static void AddDesignResultNoRun(DamKernelInput damKernelInput, DesignScenario designScenario, List designResults, MacroStabilityOutput macroStabilityOutput) + { + DesignResult designResultUpliftNoRun = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); + designResultUpliftNoRun.StabilityDesignResults.StabilityModelType = MStabModelType.UpliftVan; + designResultUpliftNoRun.CalculationResult = CalculationResult.NoRun; + designResultUpliftNoRun.SafetyFactor = null; + designResultUpliftNoRun.StabilityDesignResults.UpliftSituation = macroStabilityOutput.UpliftSituation; + designResultUpliftNoRun.CalculationSubDir = designResults.Count == 1 ? designResults[0].CalculationSubDir.Replace(MStabModelType.Bishop.ToString(), MStabModelType.UpliftVan.ToString()) : ""; + designResults.Add(designResultUpliftNoRun); + } + + private void AddDesignResult(DamKernelInput damKernelInput, DesignScenario designScenario, List designResults, MacroStabilityOutputItem macroStabilityOutputItem, MacroStabilityOutput macroStabilityOutput) + { + if (macroStabilityOutputItem != null) + { + DesignResult designResult = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); + MacroStabilityCommonHelper.FillDesignResult(macroStabilityOutputItem, designResult, lastIterationIndex); + designResult.StabilityDesignResults.NumberOfIterations = lastIterationIndex; + designResult.StabilityDesignResults.UpliftSituation = macroStabilityOutput.UpliftSituation; + if (macroStabilityOutputItem.CalculationResult != CalculationResult.Succeeded) + { + SoilGeometryProbability subSoilScenario = damKernelInput.SubSoilScenario; + designResult.StabilityDesignResults.ResultMessage = designScenario.GetResultMessage(subSoilScenario.SoilProfile1D, subSoilScenario.SoilProfile2D); + } + + designResults.Add(designResult); + } + } + + private MacroStabilityOutputItem DetemineLeadingOutputItem(List stabilityOutputItems) + { + if (stabilityOutputItems.Count == 1) + { + return stabilityOutputItems[0]; + } + + if (stabilityOutputItems[0].CalculationResult == CalculationResult.Succeeded && stabilityOutputItems[1].CalculationResult == CalculationResult.Succeeded) + { + return stabilityOutputItems[0].SafetyFactor < stabilityOutputItems[1].SafetyFactor ? stabilityOutputItems[0] : stabilityOutputItems[1]; + } + + return null; + } + private static UpliftVanCalculationGrid FillUpliftVanCalculationGrid(DamKernelInput damKernelInput, double xCoordinateLastUpliftPoint) { SlipCircleDefinition slipCircleDefinition = damKernelInput.DamFailureMechanismeCalculationSpecification