Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/ConversionHelperTests.cs
===================================================================
diff -u -r2966 -r2970
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 2966)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 2970)
@@ -70,30 +70,30 @@
#region ModelType
[Test]
//[TestCase(StabilityModelOption.Bishop, MStabModelType.BishopWti)]
- [TestCase(MacroStability.CSharpWrapper.Output.StabilityModelOptionType.UpliftVan, MStabModelType.UpliftVanWti)]
- public void CanConvertToMStabModelType(MacroStability.CSharpWrapper.Output.StabilityModelOptionType modelOption, MStabModelType mStabModelType)
+ [TestCase(StabilityModelOptionType.UpliftVan, MStabModelType.UpliftVanWti)]
+ public void CanConvertToMStabModelType(StabilityModelOptionType modelOption, MStabModelType mStabModelType)
{
Assert.AreEqual(mStabModelType, ConversionHelper.ConvertToMStabModelType(modelOption));
}
[Test]
- [TestCase(MacroStability.CSharpWrapper.Output.StabilityModelOptionType.Bishop, MStabModelType.BishopWti)]
- [TestCase(MacroStability.CSharpWrapper.Output.StabilityModelOptionType.UpliftVan, MStabModelType.UpliftVanWti)]
- public void CanConvertToMStabModelTypeFromOutput(MacroStability.CSharpWrapper.Output.StabilityModelOptionType modelOption, MStabModelType mStabModelType)
+ [TestCase(StabilityModelOptionType.Bishop, MStabModelType.BishopWti)]
+ [TestCase(StabilityModelOptionType.UpliftVan, MStabModelType.UpliftVanWti)]
+ public void CanConvertToMStabModelTypeFromOutput(StabilityModelOptionType modelOption, MStabModelType mStabModelType)
{
Assert.AreEqual(mStabModelType, ConversionHelper.ConvertToMStabModelTypeFromOutput(modelOption));
}
[Test]
- [TestCase(MStabModelType.UpliftVanWti, MacroStability.CSharpWrapper.Output.StabilityModelOptionType.UpliftVan)]
- public void CanConvertToModelOptions(MStabModelType mStabModelType, MacroStability.CSharpWrapper.Output.StabilityModelOptionType modelOption)
+ [TestCase(MStabModelType.UpliftVanWti, StabilityModelOptionType.UpliftVan)]
+ public void CanConvertToModelOptions(MStabModelType mStabModelType, StabilityModelOptionType modelOption)
{
Assert.AreEqual(modelOption, ConversionHelper.ConvertToModelOptions(mStabModelType));
}
[Test]
- [TestCase(MStabModelType.UpliftVanWti, MacroStability.CSharpWrapper.Output.StabilityModelOptionType.UpliftVan)]
- public void CanConvertToModelOptionsOutput(MStabModelType mStabModelType, MacroStability.CSharpWrapper.Output.StabilityModelOptionType modelOption)
+ [TestCase(MStabModelType.UpliftVanWti, StabilityModelOptionType.UpliftVan)]
+ public void CanConvertToModelOptionsOutput(MStabModelType mStabModelType, StabilityModelOptionType modelOption)
{
Assert.AreEqual(modelOption, ConversionHelper.ConvertToModelOptionsOutput(mStabModelType));
}
@@ -272,19 +272,19 @@
#endregion
#region LogMessages
- [TestCase(MacroStability.CSharpWrapper.Output.MessageType.Info, Data.Standard.Logging.LogMessageType.Info)]
- [TestCase(MacroStability.CSharpWrapper.Output.MessageType.Warning, Data.Standard.Logging.LogMessageType.Warning)]
- [TestCase(MacroStability.CSharpWrapper.Output.MessageType.Error, Data.Standard.Logging.LogMessageType.Error)]
- public void CanConvertKernelValidationResultTypeToLogMessageType(MacroStability.CSharpWrapper.Output.MessageType validationResultType, LogMessageType logMessageType)
+ [TestCase(LogMessageType.Info, MessageType.Info)]
+ [TestCase(LogMessageType.Warning, MessageType.Warning)]
+ [TestCase(LogMessageType.Error, MessageType.Error)]
+ public void CanConvertLogMessageTypeToKernelLogMessageType(LogMessageType logMessageType, MessageType messageType)
{
- Assert.AreEqual(logMessageType,
- ConversionHelper.ConvertKernelValidationResultTypeToLogMessageType(validationResultType));
+ Assert.AreEqual(messageType,
+ ConversionHelper.ConvertLogMessageTypeToKernelLogMessageType(logMessageType));
}
- [TestCase(MacroStability.CSharpWrapper.Output.MessageType.Info, LogMessageType.Info)]
- [TestCase(MacroStability.CSharpWrapper.Output.MessageType.Warning, LogMessageType.Warning)]
- [TestCase(MacroStability.CSharpWrapper.Output.MessageType.Error, LogMessageType.Error)]
- public void CanConvertKernelLogMessageTypeToLogMessageType(MacroStability.CSharpWrapper.Output.MessageType kernelLogMessageType,
+ [TestCase(MessageType.Info, LogMessageType.Info)]
+ [TestCase(MessageType.Warning, LogMessageType.Warning)]
+ [TestCase(MessageType.Error, LogMessageType.Error)]
+ public void CanConvertKernelLogMessageTypeToLogMessageType(MessageType kernelLogMessageType,
LogMessageType logMessageType)
{
Assert.AreEqual(logMessageType,
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperOutputFromEngine.cs
===================================================================
diff -u -r2906 -r2970
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperOutputFromEngine.cs (.../FillMacroStabilityWrapperOutputFromEngine.cs) (revision 2906)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperOutputFromEngine.cs (.../FillMacroStabilityWrapperOutputFromEngine.cs) (revision 2970)
@@ -24,14 +24,48 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards;
+using Deltares.DamEngine.Data.Standard.Logging;
+using Deltares.MacroStability.CSharpWrapper.Output;
+using MacroStabilityOutput = Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards.MacroStabilityOutput;
namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo
{
+ ///
+ /// Fills the the MacroStabilityWrapper output with Fills the engine results
+ ///
public class FillMacroStabilityWrapperOutputFromEngine
{
- public void FillMacroStabilityWrapperOutput()
+ public static MacroStability.CSharpWrapper.Output.MacroStabilityOutput FillMacroStabilityWrapperOutput(MacroStabilityOutput output, List logMessages)
{
+ var kernelOutput = new MacroStability.CSharpWrapper.Output.MacroStabilityOutput();
+ kernelOutput.ResultType = ConversionHelper.ConvertToMacroStabilityResultType(output.CalculationResult);
+ kernelOutput.StabilityOutput = new StabilityOutput();
+ if (kernelOutput.ResultType == CalculationResultType.Succeeded)
+ {
+ var outputItem = output.StabilityOutputItems.First();
+ kernelOutput.StabilityOutput.SafetyFactor = outputItem.SafetyFactor;
+ kernelOutput.StabilityOutput.ModelOptionType = ConversionHelper.ConvertToModelOptionsOutput(outputItem.StabilityModelType);
+ // Todo rest of kernel output to be converted later.
+ }
+ else
+ {
+ kernelOutput.StabilityOutput.SafetyFactor = double.NaN;
+ }
+ if (logMessages != null && logMessages.Any())
+ {
+ var messagesOutput = new List();
+ foreach (var logMessage in logMessages)
+ {
+ var message = new Message();
+ message.Content = logMessage.Message;
+ message.MessageType = ConversionHelper.ConvertLogMessageTypeToKernelLogMessageType(logMessage.MessageType);
+ messagesOutput.Add(message);
+ }
+ kernelOutput.StabilityOutput.Messages = messagesOutput;
+ }
+ return kernelOutput;
}
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs
===================================================================
diff -u -r2964 -r2970
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 2964)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 2970)
@@ -121,46 +121,7 @@
}
[Test]
- public void TestParseValidationResultOk()
- {
- List messages;
- var kernelWrapper = new MacroStabilityInwardsKernelWrapper();
- var xmlFileName = Path.Combine(TestFolder, "ValidateOk.xml");
- string xmlValidationResult = File.ReadAllText(xmlFileName);
- kernelWrapper.ParseValidationResult(xmlValidationResult, out messages);
- Assert.AreEqual(0, messages.Count);
- }
-
- [TestCase("ValidateInfo.xml", LogMessageType.Info, "Dit is een Info bericht voor test")]
- [TestCase("ValidateWarning.xml", LogMessageType.Warning, "Dit is een Waarschuwings bericht voor test")]
- [TestCase("ValidateError.xml", LogMessageType.Error, "Voor geval 'Klei dijk op klei' (1A) moet de laag onder de dijk geen watervoerende laag zijn.")]
[Category(Categories.WorkInProgress)] // based on wti so can probably be removed
- public void TestParseValidationResultMessages(string fileName, LogMessageType logMessageType, string message)
- {
- List messages;
- var kernelWrapper = new MacroStabilityInwardsKernelWrapper();
- var xmlFileName = Path.Combine(TestFolder, fileName);
- string xmlValidationResult = File.ReadAllText(xmlFileName);
- kernelWrapper.ParseValidationResult(xmlValidationResult, out messages);
- Assert.AreEqual(1, messages.Count);
- Assert.AreEqual(logMessageType, messages[0].MessageType);
- Assert.AreEqual(message, messages[0].Message);
- }
-
- [Test]
- [Category(Categories.WorkInProgress)] // based on wti so can probably be removed
- [ExpectedException(typeof(XmlSchemaValidationException), ExpectedMessage = "The 'Severity' attribute is invalid - The value 'Wrong' is invalid according to its datatype 'ValidationType' - The Enumeration constraint failed.")]
- public void TestParseValidationResultMessageWrongType()
- {
- List messages;
- var kernelWrapper = new MacroStabilityInwardsKernelWrapper();
- var xmlFileName = Path.Combine(TestFolder, "ValidateWrong.xml");
- string xmlValidationResult = File.ReadAllText(xmlFileName);
- kernelWrapper.ParseValidationResult(xmlValidationResult, out messages);
- }
-
- [Test]
- [Category(Categories.WorkInProgress)] // based on wti so can probably be removed
// Result1True.xml is generated with BmMacrostabiliteit 'Benchmark 1-01b.wti'
// Result2True.xml is generated with BmMacrostabiliteit 'Benchmark 4-01b.wti'
// An info and warning message were manually added
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs
===================================================================
diff -u -r2960 -r2970
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs (.../FillEngineFromMacroStabilityWrapperOutput.cs) (revision 2960)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs (.../FillEngineFromMacroStabilityWrapperOutput.cs) (revision 2970)
@@ -24,6 +24,8 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards;
+using Deltares.DamEngine.Data.Standard.Logging;
namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo
{
@@ -32,15 +34,47 @@
///
public class FillEngineFromMacroStabilityWrapperOutput
{
+ public List LogMessages { get; set; }
-
///
/// Fills the engine data with results.
///
- public static void FillEngineDataWithResults()
+ public MacroStabilityOutput FillEngineDataWithResults(MacroStability.CSharpWrapper.Output.MacroStabilityOutput kernelOutput)
{
-
-
+ var output = new MacroStabilityOutput
+ {
+ CalculationResult = ConversionHelper.ConvertToDamResultType(kernelOutput.ResultType)
+ };
+ if (kernelOutput.StabilityOutput != null)
+ {
+ output.StabilityOutputItems = new List();
+ var outputItem = new MacroStabilityOutputItem
+ {
+ CalculationResult = ConversionHelper.ConvertToDamResultType(kernelOutput.ResultType),
+ SafetyFactor = kernelOutput.StabilityOutput.SafetyFactor,
+ StabilityModelType =
+ ConversionHelper.ConvertToMStabModelTypeFromOutput(kernelOutput.StabilityOutput.ModelOptionType)
+ };
+ output.StabilityOutputItems.Add(outputItem);
+ if (kernelOutput.StabilityOutput.Messages != null && kernelOutput.StabilityOutput.Messages.Any())
+ {
+ LogMessages = new List();
+ foreach (var stabilityOutputMessage in kernelOutput.StabilityOutput.Messages)
+ {
+ var logMessage = new LogMessage
+ {
+ Message = stabilityOutputMessage.Content,
+ MessageType = ConversionHelper.ConvertKernelLogMessageTypeToLogMessageType(
+ stabilityOutputMessage
+ .MessageType)
+ };
+ LogMessages.Add(logMessage);
+ }
+ }
+ }
+ // output.UpliftSituation = ToDo later
+
+ return output;
}
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs
===================================================================
diff -u -r2963 -r2970
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 2963)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 2970)
@@ -175,20 +175,6 @@
return 0;
}
- internal void ParseValidationResult(string xmlValidationResult, out List messages)
- {
- messages = new List();
- //var validationResults = WtiDeserializer.DeserializeValidation(xmlValidationResult);
- // foreach (var result in validationResults)
- // {
- // messages.Add(new LogMessage
- // {
- // Message = result.Text,
- // MessageType = ConversionHelper.ConvertKernelValidationResultTypeToLogMessageType(result.MessageType)
- // });
- // }
- }
-
///
/// Executes the kernel.
///
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs
===================================================================
diff -u -r2966 -r2970
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 2966)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 2970)
@@ -183,6 +183,11 @@
/// The MacroStability Soil.
public static Soil ConvertToMacroStabilitySoil(Data.Geotechnics.Soil soil)
{
+ ShearStrengthModel shearStrengthModel = ShearStrengthModel.None;
+ if (soil.ShearStrengthModel.HasValue)
+ {
+ shearStrengthModel = soil.ShearStrengthModel.Value;
+ }
var macroStabilitySoil = new Soil()
{
Name = soil.Name,
@@ -192,7 +197,7 @@
FrictionAngle = soil.FrictionAngle,
RRatio = soil.RRatio,
RatioCuPc = soil.RatioCuPc,
- ShearStrengthModel = ConversionHelper.ConvertToMacroStabilityShearStrengthModel(soil.ShearStrengthModel.Value),
+ ShearStrengthModel = ConversionHelper.ConvertToMacroStabilityShearStrengthModel(shearStrengthModel),
//RheologicalCoefficient = 0.0, // is purely needed for Nails which are NOT yet to be implemented
StrengthIncreaseExponent = soil.StrengthIncreaseExponent,
UseSoilClassification = false, // Soil type is not given so make sure it is not used.
@@ -401,13 +406,13 @@
///
/// Type of the message.
///
- public static LogMessageType ConvertKernelValidationResultTypeToLogMessageType(MessageType messageType)
+ public static MessageType ConvertLogMessageTypeToKernelLogMessageType(LogMessageType messageType)
{
- var translationTable = new Dictionary()
+ var translationTable = new Dictionary()
{
- {MessageType.Info, LogMessageType.Info},
- {MessageType.Warning, LogMessageType.Warning},
- {MessageType.Error, LogMessageType.Error}
+ {LogMessageType.Info, MessageType.Info},
+ {LogMessageType.Warning, MessageType.Warning},
+ {LogMessageType.Error, MessageType.Error}
};
return translationTable[messageType];
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs
===================================================================
diff -u -r2965 -r2970
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 2965)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 2970)
@@ -29,13 +29,17 @@
using Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo;
using Deltares.DamEngine.Data.Geometry;
using Deltares.DamEngine.Data.Geotechnics;
+using Deltares.DamEngine.Data.Standard.Calculation;
using Deltares.DamEngine.TestHelpers;
using Deltares.DamEngine.TestHelpers.Factories;
+using Deltares.MacroStability.CSharpWrapper.Output;
using KellermanSoftware.CompareNetObjects;
using CharacteristicPointSet = Deltares.DamEngine.Data.Geotechnics.CharacteristicPointSet;
using HeadLine = Deltares.DamEngine.Data.Geometry.HeadLine;
using SoilProfile2D = Deltares.DamEngine.Data.Geotechnics.SoilProfile2D;
using SurfaceLine2 = Deltares.DamEngine.Data.Geotechnics.SurfaceLine2;
+using Waternet = Deltares.DamEngine.Data.Geometry.Waternet;
+using WaternetLine = Deltares.DamEngine.Data.Geometry.WaternetLine;
namespace Deltares.DamEngine.Calculators.Tests.KernelWrappers.MacroStabilityCommon
{
@@ -52,11 +56,28 @@
"UseDefaultShearStrengthModel"
};
- [Test]
- [Category(Categories.WorkInProgress)] // The actual code has to be implemented
- public void GivenCSharpWrapperOutputWhenGoingToAndFromEngineTheDataIsEqual()
+ [TestCase(1)]
+ [TestCase(2)]
+ [TestCase(3)]
+ public void GivenCSharpWrapperOutputWhenGoingToAndFromEngineTheDataIsEqual(int testNumber)
{
- //ToDo fill this
+ //ToDo fill this
+ var expectedKernelOutput = CreateKernelOutputForTest(testNumber);
+
+ var fillEngineFromMacroStabilityWrapperOutput = new FillEngineFromMacroStabilityWrapperOutput();
+ var dd = fillEngineFromMacroStabilityWrapperOutput.FillEngineDataWithResults(expectedKernelOutput);
+ var kernelOutput = FillMacroStabilityWrapperOutputFromEngine.FillMacroStabilityWrapperOutput(dd, fillEngineFromMacroStabilityWrapperOutput.LogMessages);
+
+ var compare = new CompareLogic { Config = { MaxDifferences = 100 } };
+ compare.Config.MembersToInclude = new List()
+ {
+ //"XEnd",
+ //"XStart",
+ //"Pressure"
+ };
+ ComparisonResult result;
+ result = compare.Compare(expectedKernelOutput, kernelOutput);
+ Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel Output");
}
[Test]
@@ -324,5 +345,56 @@
{
return FactoryForDamProjectData.CreateExampleDamProjectData();
}
+
+ private MacroStability.CSharpWrapper.Output.MacroStabilityOutput CreateKernelOutputForTest(int choice)
+ {
+ var output = new MacroStability.CSharpWrapper.Output.MacroStabilityOutput();
+ var messagesOutput = new List();
+ if (choice == 1)
+ {
+ // Result 1: succeeded, has a SafetyFactor of ca. 3.856, no messages
+ output.ResultType = CalculationResultType.Succeeded;
+ output.StabilityOutput = new StabilityOutput
+ {
+ SafetyFactor = 3.856,
+ ModelOptionType = StabilityModelOptionType.UpliftVan
+ };
+ }
+ else if (choice == 2)
+ {
+ // Result 2: succeeded, has a SafetyFactor of ca. 1.857, has info and warning, but no error messages
+ messagesOutput.Clear();
+ var infoMessage = new Message();
+ infoMessage.Content = "Info";
+ infoMessage.MessageType = MessageType.Info;
+ messagesOutput.Add(infoMessage);
+ var warningMessage = new Message();
+ warningMessage.Content = "Warning";
+ warningMessage.MessageType = MessageType.Warning;
+ messagesOutput.Add(warningMessage);
+ output.ResultType = CalculationResultType.Succeeded;
+ output.StabilityOutput = new StabilityOutput
+ {
+ SafetyFactor = 1.857,
+ Messages = messagesOutput,
+ ModelOptionType = StabilityModelOptionType.UpliftVan
+ };
+ }
+ else
+ {
+ // Result 3 failed - has a SafetyFactor of NaN, has an error message
+ messagesOutput.Clear();
+ var errorMessage = new Message();
+ errorMessage.Content = "Error";
+ errorMessage.MessageType = MessageType.Error;
+ messagesOutput.Add(errorMessage);
+ output.StabilityOutput = new StabilityOutput();
+ output.ResultType = CalculationResultType.RunFailed;
+ output.StabilityOutput.SafetyFactor = double.NaN;
+ output.StabilityOutput.Messages = messagesOutput;
+ }
+
+ return output;
+ }
}
}
\ No newline at end of file