Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/CalamityTests.cs =================================================================== diff -u -r6668 -r6673 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/CalamityTests.cs (.../CalamityTests.cs) (revision 6668) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/CalamityTests.cs (.../CalamityTests.cs) (revision 6673) @@ -42,8 +42,8 @@ private const string inputFileName = @"TestFiles\Calamity\PulauTekongCalamity.xml"; private const string calcDir = "TestCalamity"; + [Test] [Category(Categories.Slow)] - [Test, Ignore("This test fails but Calamity is deprecated")] public void GivenCalamityInputFile_WhenRun_ThenOutputIsCorrect() { if (Directory.Exists(calcDir)) Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/DesignCalculatorTests.cs =================================================================== diff -u -r6670 -r6673 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/DesignCalculatorTests.cs (.../DesignCalculatorTests.cs) (revision 6670) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/DesignCalculatorTests.cs (.../DesignCalculatorTests.cs) (revision 6673) @@ -93,6 +93,6 @@ Output output = GeneralHelper.RunAfterInputValidation(inputString); - Assert.That(output.Results.CalculationMessages, Has.Length.EqualTo(0), "Number of messages found = " + output.Results.CalculationMessages.Length); + Assert.That(output.Results.CalculationMessages, Has.Length.EqualTo(10), "Number of messages found = " + output.Results.CalculationMessages.Length); } } \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs =================================================================== diff -u -r6670 -r6673 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs (.../MacroStabilityCommonHelper.cs) (revision 6670) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelper.cs (.../MacroStabilityCommonHelper.cs) (revision 6673) @@ -268,8 +268,6 @@ designResult.StabilityDesignResults.StabilityModelType = macroStabilityOutputItem.StabilityModelType; if (macroStabilityOutputItem.CalculationResult == CalculationResult.Succeeded) { - designResult.CalculationResult = macroStabilityOutputItem.CalculationResult; - designResult.StabilityDesignResults.SafetyFactor = macroStabilityOutputItem.SafetyFactor; designResult.StabilityDesignResults.NumberOfIterations = lastIterationIndex; @@ -287,6 +285,11 @@ macroStabilityOutputItem.PassiveCenterPointRadius; } } + + if (designResult.CalculationResult == CalculationResult.Succeeded) + { + designResult.CalculationResult = macroStabilityOutputItem.CalculationResult; + } } /// Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs =================================================================== diff -u -r6668 -r6673 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 6668) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 6673) @@ -45,7 +45,7 @@ private const double tolerance = 0.00051; private const string tutorialStability2D = @"TestFiles\InputTutorialStability2D.xml"; - [Test] + [Test, Category(Categories.Slow)] public void TestRunMacroStabilityTutorialDesignUpliftVan() { // Based on ".data\DamEngineTestProjects\DAM Tutorial Design\DAM Tutorial Design.damx" @@ -68,11 +68,6 @@ inputString = XmlAdapter.ChangeValueInXml(inputString, "CalculationMap", calcDir); // Current directory will be used Output output = GeneralHelper.RunAfterInputValidation(inputString); - Assert.Multiple(() => - { - Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(1)); - Assert.That(output.Results.CalculationMessages, Has.Length.EqualTo(0)); - }); Assert.Multiple(() => { @@ -108,47 +103,6 @@ }); } - [Test] - public void TestRunMacroStabilityTutorialDesignUpliftVan_NoUplift() - { - // Based on DAM UI tutorial for stability, for location DWP_18 - const string calcDir = "TestStabInwardsUpliftVan_NoUplift"; - if (Directory.Exists(calcDir)) - { - Directory.Delete(calcDir, true); // delete previous results - } - - string inputString = File.ReadAllText(tutorialStability2D); - string[] locations = ["DWP_18"]; - inputString = XmlAdapter.SelectLocations(inputString, locations); - - inputString = XmlAdapter.ChangeStabilityInputModel(inputString, InputStabilityModelType.UpliftVan); - inputString = XmlAdapter.ChangeValueInXml(inputString, "ProjectPath", ""); // Current directory will be used - inputString = XmlAdapter.ChangeValueInXml(inputString, "CalculationMap", calcDir); // Current directory will be used - - Output output = GeneralHelper.RunAfterInputValidation(inputString); - Assert.Multiple(() => - { - Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(1)); - Assert.That(output.Results.CalculationMessages, Has.Length.EqualTo(0)); - }); - - // Uplift Van - DesignResultStabilityDesignResults result = output.Results.CalculationResults[0].StabilityDesignResults; - Assert.Multiple(() => - { - Assert.That(result.SafetyFactorSpecified, Is.False); - Assert.That(result.UpliftSituation, Is.Not.Null); - Assert.That(result.StabilityModelType, Is.EqualTo(DesignResultStabilityDesignResultsStabilityModelType.UpliftVan)); - }); - Assert.Multiple(() => - { - // Calculation Result - Assert.That(ConversionHelper.ConvertToCalculationResult(output.Results.CalculationResults[0].CalculationResult), - Is.EqualTo(CalculationResult.NoRun)); - }); - } - [Test, Category(Categories.Slow)] public void TestRunMacroStabilityTutorialDesignBishopUpliftVan_UpliftVanLowest() { @@ -172,7 +126,6 @@ inputString = XmlAdapter.ChangeValueInXml(inputString, "CalculationMap", calcDir); // Current directory will be used Output output = GeneralHelper.RunAfterInputValidation(inputString); - Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(3)); // Bishop DesignResult result = output.Results.CalculationResults[0]; @@ -234,7 +187,6 @@ inputString = XmlAdapter.ChangeValueInXml(inputString, "SearchMethod", "BeeSwarm"); Output output = GeneralHelper.RunAfterInputValidation(inputString); - Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(3)); // Bishop DesignResultStabilityDesignResults result = output.Results.CalculationResults[0].StabilityDesignResults; @@ -273,10 +225,13 @@ }); } - [Test] + [Test, Category(Categories.Slow)] public void TestRunMacroStabilityTutorialDesignBishopUpliftVan_NoUplift() { - // Based on DAM UI tutorial for stability, for location DWP_18 + // Based on ".data\DamEngineTestProjects\DAM Tutorial Design\DAM Tutorial Design.damx" + // with Dam Classic rev.1059 + // Select 10th location (DWP_18) + // with Dam Classic rev.833 const string calcDir = "TestStabInwardsBishopUpliftVan_NoUplift"; if (Directory.Exists(calcDir)) { @@ -292,11 +247,6 @@ inputString = XmlAdapter.ChangeValueInXml(inputString, "CalculationMap", calcDir); // Current directory will be used Output output = GeneralHelper.RunAfterInputValidation(inputString); - Assert.Multiple(() => - { - Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(3)); - Assert.That(output.Results.CalculationMessages, Has.Length.EqualTo(0)); - }); // Bishop DesignResultStabilityDesignResults result = output.Results.CalculationResults[0].StabilityDesignResults; @@ -598,22 +548,14 @@ Output output = GeneralHelper.RunAfterInputValidation(engineInterface); // one location is calculated with 3 1D profiles - // However, profile 6-4-1-A-1-F_3_s has no UpliftVan occuring and thus has result NoRun - Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(3)); + // However, profile 6-4-1-A-1-F_3_s has no UpliftVan occuring and thus has no result + Assert.That(output.Results.CalculationResults.Length, Is.EqualTo(2)); Assert.Multiple(() => { - DesignResult result = output.Results.CalculationResults[0]; - Assert.That(result.LocationName, Is.EqualTo("6-4-1-A-1-F")); - Assert.That(result.ProfileName, Is.EqualTo("6-4-1-A-1-F_1_s")); - Assert.That(ConversionHelper.ConvertToCalculationResult(result.CalculationResult), Is.EqualTo(CalculationResult.Succeeded)); - result = output.Results.CalculationResults[1]; - Assert.That(result.LocationName, Is.EqualTo("6-4-1-A-1-F")); - Assert.That(result.ProfileName, Is.EqualTo("6-4-1-A-1-F_2_s")); - Assert.That(ConversionHelper.ConvertToCalculationResult(result.CalculationResult), Is.EqualTo(CalculationResult.Succeeded)); - result = output.Results.CalculationResults[2]; - Assert.That(result.LocationName, Is.EqualTo("6-4-1-A-1-F")); - Assert.That(result.ProfileName, Is.EqualTo("6-4-1-A-1-F_3_s")); - Assert.That(ConversionHelper.ConvertToCalculationResult(result.CalculationResult), Is.EqualTo(CalculationResult.NoRun)); + Assert.That(output.Results.CalculationResults[0].LocationName, Is.EqualTo("6-4-1-A-1-F")); + Assert.That(output.Results.CalculationResults[0].ProfileName, Is.EqualTo("6-4-1-A-1-F_1_s")); + Assert.That(output.Results.CalculationResults[1].LocationName, Is.EqualTo("6-4-1-A-1-F")); + Assert.That(output.Results.CalculationResults[1].ProfileName, Is.EqualTo("6-4-1-A-1-F_2_s")); }); DesignResult result = output.Results.CalculationResults[0]; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs =================================================================== diff -u -r6659 -r6673 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 6659) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 6673) @@ -51,7 +51,7 @@ private readonly string inputXmlForDamEngine = Path.Combine(testFolder, "StabilityDesign1Dbased.xml"); [Test] - [TestCase(0.8, true, false, PrepareResult.Successful)] // no uplift + [TestCase(0.8, true, false, PrepareResult.NotRelevant)] [TestCase(1.4, true, true, PrepareResult.Successful)] [TestCase(1.2, false, false, PrepareResult.Failed)] public void TestPrepare(double upliftCriterionStability, bool isInputValid, bool expectedIsUplift, PrepareResult expectedPrepareResult) @@ -434,6 +434,34 @@ } [Test] + public void TestFullCalculationFails() + { + var kernelWrapper = new MacroStabilityInwardsKernelWrapper + { + FailureMechanismParametersMStab = new FailureMechanismParametersMStab + { + MStabParameters = + { + Model = StabilityModelType.UpliftVan + } + } + }; + + IKernelDataInput kernelDataInput = new MacroStabilityKernelDataInput(); + + IKernelDataOutput kernelDataOutput = new MacroStabilityOutput(); + // Run the dll + kernelWrapper.Execute(kernelDataInput, kernelDataOutput, out List messages); + var macroStabilityOutput = (MacroStabilityOutput) kernelDataOutput; + Assert.Multiple(() => + { + Assert.That(messages, Is.Not.Empty); + // as there is no data at all, expect unexpected error + Assert.That(macroStabilityOutput.CalculationResult, Is.EqualTo(CalculationResult.UnexpectedError)); + }); + } + + [Test] public void TestFullCalculationSucceedsWithWarningsWithBadTangentLines() { // Prepare the wrapper. Result is input for the calculation dll Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs =================================================================== diff -u -r6659 -r6673 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs (.../MacroStabilityCommonHelperTests.cs) (revision 6659) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs (.../MacroStabilityCommonHelperTests.cs) (revision 6673) @@ -20,21 +20,15 @@ // All rights reserved. using System; -using System.Collections.Generic; using System.Linq; using Deltares.DamEngine.Calculators.KernelWrappers.Common; using Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon; -using Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; -using Deltares.DamEngine.Data.Standard.Calculation; -using Deltares.DamEngine.Data.Standard.Logging; using Deltares.DamEngine.TestHelpers.Factories; using NUnit.Framework; -using CharacteristicPointType = Deltares.DamEngine.Data.Geotechnics.CharacteristicPointType; using Soil = Deltares.DamEngine.Data.Geotechnics.Soil; -using SoilProfileType = Deltares.DamEngine.Data.General.SoilProfileType; namespace Deltares.DamEngine.Calculators.Tests.KernelWrappers.MacroStabilityCommon; @@ -339,23 +333,4 @@ MacroStabilityCommonHelper.CombineSoilProfileWithSurfaceLine(soilGeometryProbability, surfaceLine, new Soil()); return soilGeometryProbability; } - - [Test] - public void TestUnexpectedErrorIsReturned() - { - var kernelDataInput = new MacroStabilityKernelDataInput(); - var kernelDataOutput = new MacroStabilityOutput(); - // Perform the calculation - MacroStabilityCommonHelper.PerformStabilityCalculation(kernelDataInput, kernelDataOutput, "", null, out List errorMessages); - - var macroStabilityOutput = (MacroStabilityOutput) kernelDataOutput; - Assert.Multiple(() => - { - Assert.That(errorMessages, Is.Not.Empty); - // as there is no data at all, expect unexpected error - Assert.That(macroStabilityOutput.CalculationResult, Is.EqualTo(CalculationResult.UnexpectedError)); - }); - } - - } \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r6668 -r6673 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 6668) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 6673) @@ -120,6 +120,15 @@ Waternet waterNet = MacroStabilityCommonHelper.CreateWaternet(damKernelInput, plLines); + if (FailureMechanismParametersMStab.MStabParameters.Model == StabilityModelType.UpliftVan || + FailureMechanismParametersMStab.MStabParameters.Model == StabilityModelType.BishopUpliftVan) + { + if (!upliftSituation.IsUplift && !isBishopUpliftVan) + { + return PrepareResult.NotRelevant; + } + } + FailureMechanismParametersMStab.MStabParameters.Model = model; macroStabilityInput.WaterNet = waterNet; @@ -198,32 +207,22 @@ /// The return messages. public void Execute(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages) { - messages = null; var macroStabilityKernelDataInput = (MacroStabilityKernelDataInput) kernelDataInput; var macroStabilityOutput = (MacroStabilityOutput) kernelDataOutput; MacroStabilityCommonHelper.ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); MacroStabilityCommonHelper.ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); - bool isBishop = FailureMechanismParametersMStab.MStabParameters.Model == StabilityModelType.Bishop; bool isBishopUpliftVan = FailureMechanismParametersMStab.MStabParameters.Model == StabilityModelType.BishopUpliftVan; - bool isUpliftVan = FailureMechanismParametersMStab.MStabParameters.Model == StabilityModelType.UpliftVan; if (isBishopUpliftVan) { macroStabilityKernelDataInput.Input.StabilityModel.ModelOption = StabilityModelOption.Bishop; macroStabilityKernelDataInput.MStabParameters.Model = StabilityModelType.Bishop; } - if (isBishop || isBishopUpliftVan || (isUpliftVan && macroStabilityOutput.UpliftSituation.IsUplift)) - { - MacroStabilityCommonHelper.PerformStabilityCalculation(macroStabilityKernelDataInput, - macroStabilityOutput, fileNameForCalculation, - stabilityCalculator, out messages); - AddFileNameToLogMessages(messages, fileNameForCalculation); - } - else - { - messages = []; - } + MacroStabilityCommonHelper.PerformStabilityCalculation(macroStabilityKernelDataInput, + macroStabilityOutput, fileNameForCalculation, + stabilityCalculator, out messages); + AddFileNameToLogMessages(messages, fileNameForCalculation); if (isBishopUpliftVan && macroStabilityOutput.UpliftSituation.IsUplift) { @@ -262,96 +261,82 @@ AddDesignResult(damKernelInput, designScenario, designResults, macroStabilityOutputItem, macroStabilityOutput); bool isBishopUpliftVan = FailureMechanismParametersMStab.MStabParameters.Model == StabilityModelType.BishopUpliftVan; - bool isUpliftVan = FailureMechanismParametersMStab.MStabParameters.Model == StabilityModelType.UpliftVan; - - if (isUpliftVan) + if (isBishopUpliftVan) { + var isUplift = true; + 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) { AddDesignResultNoRun(damKernelInput, designScenario, designResults, macroStabilityOutput); + isUplift = false; + macroStabilityOutputItem = ProperMacroStabilityResultsItem(macroStabilityOutput, 0); + macroStabilityOutputItem.StabilityModelType = StabilityModelType.BishopUpliftVan; + AddDesignResult(damKernelInput, designScenario, designResults, macroStabilityOutputItem, macroStabilityOutput); } - } - if (!isBishopUpliftVan) - { - return; - } - - macroStabilityOutputItem = ProperMacroStabilityResultsItem(macroStabilityOutput, 1); - AddDesignResult(damKernelInput, designScenario, designResults, macroStabilityOutputItem, macroStabilityOutput); - - var isUplift = true; - // If no uplift therefore no UpliftVan calculation was made. So add a fictive (empty) design result. - if (macroStabilityOutputItem == null && !macroStabilityOutput!.UpliftSituation.IsUplift) - { - AddDesignResultNoRun(damKernelInput, designScenario, designResults, macroStabilityOutput); - isUplift = false; - macroStabilityOutputItem = ProperMacroStabilityResultsItem(macroStabilityOutput, 0); - macroStabilityOutputItem.StabilityModelType = FailureMechanismParametersMStab.MStabParameters.Model; - AddDesignResult(damKernelInput, designScenario, designResults, macroStabilityOutputItem, macroStabilityOutput); - } - - // Now add the overall result for Bishop/UpliftVan only if both results are available. - if (macroStabilityOutput!.StabilityOutputItems.Count == 2) - { - int index; - // Add worst result from Bishop/UpliftVan, but only if both succeeded. - if (designResults[0].CalculationResult == CalculationResult.Succeeded && - designResults[1].CalculationResult == CalculationResult.Succeeded) + // Now add the overall result for Bishop/UpliftVan only if both results are available. + if (macroStabilityOutput!.StabilityOutputItems.Count == 2) { - index = designResults[0].StabilityDesignResults.SafetyFactor <= designResults[1].StabilityDesignResults.SafetyFactor ? 0 : 1; - } - else if (designResults[0].CalculationResult != CalculationResult.Succeeded) - { - // For a design calculation, when design fails to reach required safety factor, both runs are set to fail - // but even then the worst result should be determined. - if (designResults[0].CalculationResult == CalculationResult.RunFailed && - designResults[1].CalculationResult == CalculationResult.RunFailed) + int index; + // Add worst result from Bishop/UpliftVan, but only if both succeeded. + if (designResults[0].CalculationResult == CalculationResult.Succeeded && + designResults[1].CalculationResult == CalculationResult.Succeeded) { index = designResults[0].StabilityDesignResults.SafetyFactor <= designResults[1].StabilityDesignResults.SafetyFactor ? 0 : 1; } + else if (designResults[0].CalculationResult != CalculationResult.Succeeded) + { + // For a design calculation, when design fails to reach required safety factor, both runs are set to fail + // but even then the worst result should be determined. + if (designResults[0].CalculationResult == CalculationResult.RunFailed && + designResults[1].CalculationResult == CalculationResult.RunFailed) + { + index = designResults[0].StabilityDesignResults.SafetyFactor <= designResults[1].StabilityDesignResults.SafetyFactor ? 0 : 1; + } + else + { + index = 0; + } + } + else if (designResults[1].CalculationResult == CalculationResult.NoRun) + { + // No uplift therefore no UpliftVan calculation was made. Present Bishop result. + index = 0; + } else { - index = 0; + // UpliftVan calculation failed. No end results can be given + index = 1; } - } - else if (designResults[1].CalculationResult == CalculationResult.NoRun) - { - // No uplift therefore no UpliftVan calculation was made. Present Bishop result. - index = 0; - } - else - { - // UpliftVan calculation failed. No end results can be given - index = 1; - } - macroStabilityOutputItem = ProperMacroStabilityResultsItem(macroStabilityOutput, index); - DesignResult overallResult = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); - MacroStabilityCommonHelper.FillDesignResult(macroStabilityOutputItem, overallResult, lastIterationIndex); - overallResult.StabilityDesignResults.UpliftSituation = macroStabilityOutput!.UpliftSituation; - overallResult.StabilityDesignResults.StabilityModelType = StabilityModelType.BishopUpliftVan; - if (macroStabilityOutputItem.CalculationResult != CalculationResult.Succeeded) - { - 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. - else - { - if (isUplift) - { + macroStabilityOutputItem = ProperMacroStabilityResultsItem(macroStabilityOutput, index); DesignResult overallResult = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); + MacroStabilityCommonHelper.FillDesignResult(macroStabilityOutputItem, overallResult, lastIterationIndex); + overallResult.StabilityDesignResults.UpliftSituation = macroStabilityOutput!.UpliftSituation; overallResult.StabilityDesignResults.StabilityModelType = StabilityModelType.BishopUpliftVan; - overallResult.CalculationResult = CalculationResult.UnexpectedError; - SoilGeometryProbability subSoilScenario = damKernelInput.SubSoilScenario; - overallResult.StabilityDesignResults.ResultMessage = designScenario.GetResultMessage(subSoilScenario.SoilProfile1D, subSoilScenario.SoilProfile2D); + if (macroStabilityOutputItem.CalculationResult != CalculationResult.Succeeded) + { + 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. + else + { + if (isUplift) + { + DesignResult overallResult = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); + overallResult.StabilityDesignResults.StabilityModelType = StabilityModelType.BishopUpliftVan; + overallResult.CalculationResult = CalculationResult.UnexpectedError; + SoilGeometryProbability subSoilScenario = damKernelInput.SubSoilScenario; + overallResult.StabilityDesignResults.ResultMessage = designScenario.GetResultMessage(subSoilScenario.SoilProfile1D, subSoilScenario.SoilProfile2D); + designResults.Add(overallResult); + } + } } } @@ -511,7 +496,7 @@ designResultUpliftNoRun.CalculationResult = CalculationResult.NoRun; designResultUpliftNoRun.SafetyFactor = null; designResultUpliftNoRun.StabilityDesignResults.UpliftSituation = macroStabilityOutput.UpliftSituation; - if ((designResults.Count > 0) && (designResults[0].CalculationSubDir != null)) + if (designResults[0].CalculationSubDir != null) { designResultUpliftNoRun.CalculationSubDir = designResults.Count == 1 ? designResults[0].CalculationSubDir.Replace(StabilityModelType.Bishop.ToString(), StabilityModelType.UpliftVan.ToString()) : ""; } Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MultiCoreMacroStabilityInwardsTests.cs =================================================================== diff -u -r6668 -r6673 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MultiCoreMacroStabilityInwardsTests.cs (.../MultiCoreMacroStabilityInwardsTests.cs) (revision 6668) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MultiCoreMacroStabilityInwardsTests.cs (.../MultiCoreMacroStabilityInwardsTests.cs) (revision 6673) @@ -44,14 +44,14 @@ [Test, Category(Categories.MultiCore)] [TestCase(4, InputStabilityModelType.Bishop, "SlopeAdaptionBeforeShoulderAdaption", 18, 9)] [TestCase(8, InputStabilityModelType.Bishop, "SlopeAdaptionBeforeShoulderAdaption", 18, 9)] - [TestCase(4, InputStabilityModelType.UpliftVan, "SlopeAdaptionBeforeShoulderAdaption", 8, 18, 1)] - [TestCase(8, InputStabilityModelType.UpliftVan, "SlopeAdaptionBeforeShoulderAdaption", 8, 18, 1)] + [TestCase(4, InputStabilityModelType.UpliftVan, "SlopeAdaptionBeforeShoulderAdaption", 8, 18)] + [TestCase(8, InputStabilityModelType.UpliftVan, "SlopeAdaptionBeforeShoulderAdaption", 8, 18)] [TestCase(4, InputStabilityModelType.Bishop, "OptimizedSlopeAndShoulderAdaption", 9, 18)] [TestCase(8, InputStabilityModelType.Bishop, "OptimizedSlopeAndShoulderAdaption", 9, 18)] - [TestCase(4, InputStabilityModelType.UpliftVan, "OptimizedSlopeAndShoulderAdaption", 6, 20, 1)] - [TestCase(8, InputStabilityModelType.UpliftVan, "OptimizedSlopeAndShoulderAdaption", 6, 20, 1)] + [TestCase(4, InputStabilityModelType.UpliftVan, "OptimizedSlopeAndShoulderAdaption", 6, 20)] + [TestCase(8, InputStabilityModelType.UpliftVan, "OptimizedSlopeAndShoulderAdaption", 6, 20)] public void GivenTutorialDesign_WhenCalculateAllWithGeometryAdaption_ThenGivesExpectedResults(int maxCores, InputStabilityModelType stabilityModelType, string designMethod, - int expectedSucceeded = 21, int expectedFailed = 6, int expectedNoRun = 0) + int expectedSucceeded = 21, int expectedFailed = 6) { int processorCount = Environment.ProcessorCount; if (maxCores > processorCount) Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesOperational/OperationalCalculator.cs =================================================================== diff -u -r6670 -r6673 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesOperational/OperationalCalculator.cs (.../OperationalCalculator.cs) (revision 6670) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesOperational/OperationalCalculator.cs (.../OperationalCalculator.cs) (revision 6673) @@ -363,7 +363,7 @@ calculationResult = CalculationResult.Succeeded; DesignScenario designScenario = damKernelInput.Location.CurrentScenario; kernelWrapper.PostProcess(damKernelInput, kernelDataOutput, designScenario, resultMessage, out designResults); - if (designResults.Count > 0 && designResults[0].CalculationResult != CalculationResult.NoRun) + if (designResults.Count > 0) { timeSerieEntry.Value = designResults[0].SafetyFactor.Value; if (damKernelInput.DamFailureMechanismeCalculationSpecification.FailureMechanismSystemType is