Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/GeneralHelper.cs =================================================================== diff -u -r5767 -r5823 --- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/GeneralHelper.cs (.../GeneralHelper.cs) (revision 5767) +++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/GeneralHelper.cs (.../GeneralHelper.cs) (revision 5823) @@ -140,8 +140,10 @@ } string fileName = calculationResult.BaseFileName; + // Note: only check for the iterated file if the design calculation was successful isIteratedFilePresent = isIteratedFilePresent || - (!fileName.IsNullOrEmpty() && fileName.Contains("Ite(") && !fileName.Contains("Ite(1)")); + (!fileName.IsNullOrEmpty() && fileName.Contains("Ite(") && !fileName.Contains("Ite(1)")) + || !isDesignSuccessful; } // The iterated file is created only for the stability mechanism (not for piping) to be opened in D-Stability Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorCombinedSlopeAndShoulderAdaption.cs =================================================================== diff -u -r5811 -r5823 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorCombinedSlopeAndShoulderAdaption.cs (.../DesignCalculatorCombinedSlopeAndShoulderAdaption.cs) (revision 5811) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorCombinedSlopeAndShoulderAdaption.cs (.../DesignCalculatorCombinedSlopeAndShoulderAdaption.cs) (revision 5823) @@ -179,6 +179,10 @@ calculationMessages.AddRange(locationCalculationMessages); isRedesignRequired = !kernelWrapper.EvaluateDesign(damKernelInput, kernelDataInput, kernelDataOutput, out designAdvise, out evaluationMessage); + if (designAdvise == DesignAdvise.Abort) + { + throw new DesignCalculatorException(Resources.DesignUnsuccessful + " " + evaluationMessage); + } } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r5811 -r5823 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 5811) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 5823) @@ -257,9 +257,9 @@ MacroStabilityCommonHelper.ThrowWhenMacroStabilityDamKernelInputNull(damKernelInput); var macroStabilityOutput = kernelDataOutput as MacroStabilityOutput; MacroStabilityCommonHelper.ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); - if (macroStabilityOutput!.CalculationResult != CalculationResult.Succeeded) + if (designScenario.CalculationResult == CalculationResult.Succeeded) { - designScenario.CalculationResult = macroStabilityOutput.CalculationResult; + designScenario.CalculationResult = macroStabilityOutput!.CalculationResult; } designResults = new List(); @@ -386,6 +386,15 @@ double fosRequired = damKernelInput.Location.ModelFactors.RequiredSafetyFactorStabilityInnerSlope; if (macroStabilityOutput != null) { + // Abort if calculation failed + if (macroStabilityOutput.StabilityOutputItems[0].CalculationResult != CalculationResult.Succeeded) + { + designAdvise = DesignAdvise.Abort; + evaluationMessage = "Stability calculation failed."; + return true; + } + + // Check if the factor of safety is achieved double fosAchieved = macroStabilityOutput.StabilityOutputItems[0].SafetyFactor; double exitPointXCoordinate = macroStabilityOutput.StabilityOutputItems[0].CircleSurfacePointRightXCoordinate; GeometryPoint limitPointForShoulderDesign = damKernelInput.Location.SurfaceLine.GetLimitPointForShoulderDesign(); Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs =================================================================== diff -u -r5811 -r5823 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 5811) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 5823) @@ -943,6 +943,7 @@ [TestCase("DWP_2", "SlopeAdaptionBeforeShoulderAdaption", CalculationResult.RunFailed, 1.5, 1.348, 14, "After height adaption ditch does not fit inside surfaceline anymore.")] [TestCase("DWP_2", "OptimizedSlopeAndShoulderAdaption", CalculationResult.RunFailed, 1.5, 1.072, 17)] [TestCase("DWP_13", "OptimizedSlopeAndShoulderAdaption", CalculationResult.RunFailed, 1.5, 0.943, 23, "The characteristic points of the surfaceline are not ascending in X-direction.")] + [TestCase("DWP_10", "OptimizedSlopeAndShoulderAdaption", CalculationResult.RunFailed, 1.5, 0.0, 7, "Location 'DWP_10', subsoil scenario 'DWP_10.stix', design scenario '3': The calculation failed with error message 'The design was not successful. The design was not successful. Stability calculation failed.'")] public void GivenTutorialDesign_WhenSpecifiedLocationRunWithGeometryAdaption_ThenGivesExpectedResults(string locationId, string designMethod, CalculationResult calculationResult, double requiredSafetyFactor, double actualSafetyFactor, int iterationCount, string errorMessage = "") { Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs =================================================================== diff -u -r4540 -r5823 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 4540) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 5823) @@ -79,7 +79,8 @@ None, ShoulderInwards, SlopeInwards, - Height + Height, + Abort // The design is not possible (e.g. because of a calculation failure) } ///