Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs
===================================================================
diff -u -r6539 -r6659
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 6539)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 6659)
@@ -120,15 +120,6 @@
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;
@@ -207,22 +198,32 @@
/// 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;
}
- MacroStabilityCommonHelper.PerformStabilityCalculation(macroStabilityKernelDataInput,
- macroStabilityOutput, fileNameForCalculation,
- stabilityCalculator, out messages);
- AddFileNameToLogMessages(messages, fileNameForCalculation);
+ if (isBishop || isBishopUpliftVan || (isUpliftVan && macroStabilityOutput.UpliftSituation.IsUplift))
+ {
+ MacroStabilityCommonHelper.PerformStabilityCalculation(macroStabilityKernelDataInput,
+ macroStabilityOutput, fileNameForCalculation,
+ stabilityCalculator, out messages);
+ AddFileNameToLogMessages(messages, fileNameForCalculation);
+ }
+ else
+ {
+ messages = [];
+ }
if (isBishopUpliftVan && macroStabilityOutput.UpliftSituation.IsUplift)
{
@@ -261,21 +262,31 @@
AddDesignResult(damKernelInput, designScenario, designResults, macroStabilityOutputItem, macroStabilityOutput);
bool isBishopUpliftVan = FailureMechanismParametersMStab.MStabParameters.Model == StabilityModelType.BishopUpliftVan;
- if (isBishopUpliftVan)
+ bool isUpliftVan = FailureMechanismParametersMStab.MStabParameters.Model == StabilityModelType.UpliftVan;
+ if (isBishopUpliftVan || isUpliftVan)
{
var isUplift = true;
- macroStabilityOutputItem = ProperMacroStabilityResultsItem(macroStabilityOutput, 1);
- AddDesignResult(damKernelInput, designScenario, designResults, macroStabilityOutputItem, macroStabilityOutput);
+ macroStabilityOutputItem = ProperMacroStabilityResultsItem(macroStabilityOutput, 0);
+ if (isBishopUpliftVan)
+ {
+ 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;
+ macroStabilityOutputItem.StabilityModelType = FailureMechanismParametersMStab.MStabParameters.Model;
AddDesignResult(damKernelInput, designScenario, designResults, macroStabilityOutputItem, macroStabilityOutput);
}
+ if (!isBishopUpliftVan)
+ {
+ return;
+ }
+
// Now add the overall result for Bishop/UpliftVan only if both results are available.
if (macroStabilityOutput!.StabilityOutputItems.Count == 2)
{
@@ -496,7 +507,7 @@
designResultUpliftNoRun.CalculationResult = CalculationResult.NoRun;
designResultUpliftNoRun.SafetyFactor = null;
designResultUpliftNoRun.StabilityDesignResults.UpliftSituation = macroStabilityOutput.UpliftSituation;
- if (designResults[0].CalculationSubDir != null)
+ if ((designResults.Count > 0) && (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/MacroStabilityInwardsTests.cs
===================================================================
diff -u -r6557 -r6659
--- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 6557)
+++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 6659)
@@ -45,7 +45,7 @@
private const double tolerance = 0.00051;
private const string tutorialStability2D = @"TestFiles\InputTutorialStability2D.xml";
- [Test, Category(Categories.Slow)]
+ [Test]
public void TestRunMacroStabilityTutorialDesignUpliftVan()
{
// Based on ".data\DamEngineTestProjects\DAM Tutorial Design\DAM Tutorial Design.damx"
@@ -68,6 +68,7 @@
inputString = XmlAdapter.ChangeValueInXml(inputString, "CalculationMap", calcDir); // Current directory will be used
Output output = GeneralHelper.RunAfterInputValidation(inputString);
+ Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(1));
Assert.Multiple(() =>
{
@@ -103,6 +104,43 @@
});
}
+ [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.That(output.Results.CalculationResults, Has.Length.EqualTo(1));
+
+ // 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()
{
@@ -126,6 +164,7 @@
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];
@@ -187,6 +226,7 @@
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;
@@ -225,13 +265,10 @@
});
}
- [Test, Category(Categories.Slow)]
+ [Test]
public void TestRunMacroStabilityTutorialDesignBishopUpliftVan_NoUplift()
{
- // 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
+ // Based on DAM UI tutorial for stability, for location DWP_18
const string calcDir = "TestStabInwardsBishopUpliftVan_NoUplift";
if (Directory.Exists(calcDir))
{
@@ -247,6 +284,7 @@
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
DesignResultStabilityDesignResults result = output.Results.CalculationResults[0].StabilityDesignResults;
@@ -548,14 +586,22 @@
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 no result
- Assert.That(output.Results.CalculationResults.Length, Is.EqualTo(2));
+ // However, profile 6-4-1-A-1-F_3_s has no UpliftVan occuring and thus has result NoRun
+ Assert.That(output.Results.CalculationResults.Length, Is.EqualTo(3));
Assert.Multiple(() =>
{
- 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];
+ 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));
});
DesignResult result = output.Results.CalculationResults[0];
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs
===================================================================
diff -u -r6532 -r6659
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 6532)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 6659)
@@ -51,7 +51,7 @@
private readonly string inputXmlForDamEngine = Path.Combine(testFolder, "StabilityDesign1Dbased.xml");
[Test]
- [TestCase(0.8, true, false, PrepareResult.NotRelevant)]
+ [TestCase(0.8, true, false, PrepareResult.Successful)] // no uplift
[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,34 +434,6 @@
}
[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 -r6533 -r6659
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs (.../MacroStabilityCommonHelperTests.cs) (revision 6533)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs (.../MacroStabilityCommonHelperTests.cs) (revision 6659)
@@ -20,15 +20,21 @@
// 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;
@@ -333,4 +339,23 @@
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