Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs =================================================================== diff -u -r3035 -r3038 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 3035) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 3038) @@ -106,12 +106,10 @@ kernelInput.Location.ModelFactors.UpliftCriterionStability = 1.2; var prepareResult = kernelWrapper.Prepare(kernelInput, 0, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput); Assert.IsTrue(prepareResult == PrepareResult.Successful); - var macroStabilityOutput2 = new MacroStabilityOutput(); - macroStabilityOutput2.CalculationResult = CalculationResult.NoRun; messages.Clear(); - errorCount = kernelWrapper.Validate(kernelDataInput, macroStabilityOutput2, out messages); + errorCount = kernelWrapper.Validate(kernelDataInput, kernelDataOutput, out messages); Assert.IsTrue(errorCount == 0); - Assert.AreEqual(CalculationResult.NoRun, macroStabilityOutput2.CalculationResult); + Assert.AreEqual(CalculationResult.NoRun, (kernelDataOutput as MacroStabilityOutput).CalculationResult); } [Test] @@ -164,6 +162,31 @@ } [Test] + public void TestFullCalculationFailsWithNoGrid() + { + var kernelWrapper = new MacroStabilityInwardsKernelWrapper(); + kernelWrapper.FailureMechanismParametersMStab = new FailureMechanismParametersMStab(); + + // Prepare the wrapper. Result is input for the calculation dll + var kernelInput = CreateDamKernelInputForTest(); + kernelInput.Location.ModelFactors.UpliftCriterionStability = 1.2; + PrepareResult prepareResult = kernelWrapper.Prepare(kernelInput, 0, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput); + Assert.AreEqual(PrepareResult.Successful, prepareResult); + + // Validate the input + List messages; + var errorCount = kernelWrapper.Validate(kernelDataInput, kernelDataOutput, out messages); + Assert.IsTrue(errorCount == 0); + + // Run the dl; the grid position is defined i such a way that no valid circles can be found during calculation so this should fail. + kernelWrapper.Execute(kernelDataInput, kernelDataOutput, out messages); + MacroStabilityOutput macroStabilityOutput = (MacroStabilityOutput)kernelDataOutput; + Assert.AreEqual(649, messages.Count); + Assert.AreEqual(CalculationResult.RunFailed, macroStabilityOutput.CalculationResult); + Assert.AreEqual("The kernel was not able to determine valid slip circles or slip planes.", messages[648].Message); + } + + [Test] [Category(Categories.WorkInProgress)] // check input and result public void TestFullCalculationSucceeds() { Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs =================================================================== diff -u -r3029 -r3038 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 3029) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 3038) @@ -62,9 +62,9 @@ { //ToDo fill this var expectedKernelOutput = CreateKernelOutputForTest(testNumber); - + var engineOutput = new Calculators.KernelWrappers.MacroStabilityInwards.MacroStabilityOutput(); List logMessages; - var engineOutput = FillEngineFromMacroStabilityWrapperOutput.FillEngineDataWithResults(expectedKernelOutput, out logMessages); + FillEngineFromMacroStabilityWrapperOutput.FillEngineDataWithResults(expectedKernelOutput, engineOutput, out logMessages); var kernelOutput = FillMacroStabilityWrapperOutputFromEngine.FillMacroStabilityWrapperOutput(engineOutput, logMessages); var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs =================================================================== diff -u -r3004 -r3038 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs (.../FillEngineFromMacroStabilityWrapperOutput.cs) (revision 3004) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs (.../FillEngineFromMacroStabilityWrapperOutput.cs) (revision 3038) @@ -31,27 +31,31 @@ /// public class FillEngineFromMacroStabilityWrapperOutput { + /// /// Fills the engine data with results. /// - public static MacroStabilityOutput FillEngineDataWithResults(MacroStability.CSharpWrapper.Output.MacroStabilityOutput kernelOutput, out List logMessages) + /// The kernel output. + /// The macro stability output. + /// The log messages. + /// + public static void FillEngineDataWithResults(MacroStability.CSharpWrapper.Output.MacroStabilityOutput kernelOutput, + MacroStabilityOutput macroStabilityOutput, out List logMessages) { logMessages = null; - var output = new MacroStabilityOutput - { - CalculationResult = ConversionHelper.ConvertToDamResultType(kernelOutput.ResultType) - }; + + macroStabilityOutput.CalculationResult = ConversionHelper.ConvertToDamResultType(kernelOutput.ResultType); if (kernelOutput.StabilityOutput != null) { - output.StabilityOutputItems = new List(); + macroStabilityOutput.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); + macroStabilityOutput.StabilityOutputItems.Add(outputItem); if (kernelOutput.StabilityOutput.Messages != null && kernelOutput.StabilityOutput.Messages.Any()) { logMessages = new List(); @@ -69,8 +73,6 @@ } } // output.UpliftSituation = ToDo later - - return output; } } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r3035 -r3038 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 3035) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 3038) @@ -241,11 +241,12 @@ ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); messages = new List(); - PerformStabilityCalculation(out messages, macroStabilityOutput, macroStabilityKernelDataInput); + PerformStabilityCalculation(macroStabilityOutput, macroStabilityKernelDataInput, out messages); + kernelDataOutput = macroStabilityOutput; } - private void PerformStabilityCalculation(out List messages, MacroStabilityOutput macroStabilityOutput, - MacroStabilityKernelDataInput macroStabilityKernelDataInput) + private void PerformStabilityCalculation(MacroStabilityOutput macroStabilityOutput, + MacroStabilityKernelDataInput macroStabilityKernelDataInput, out List messages) { macroStabilityOutput.CalculationResult = CalculationResult.NoRun; macroStabilityOutput.StabilityOutputItems = new List(); @@ -255,8 +256,7 @@ { var macroStabilityOutputKernel = stabilityCalculator.Calculate(); //ParseRunResult(macroStabilityOutputKernel, out var macroStabilityOutputItem, out messages); - macroStabilityOutput = - FillEngineFromMacroStabilityWrapperOutput.FillEngineDataWithResults(macroStabilityOutputKernel, + FillEngineFromMacroStabilityWrapperOutput.FillEngineDataWithResults(macroStabilityOutputKernel, macroStabilityOutput, out messages); } catch (Exception e)