Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs =================================================================== diff -u -r7017 -r7064 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 7017) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 7064) @@ -508,8 +508,11 @@ { Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; const string analysisType = "NoAdaption"; - // Test to see if calculation does NOT work in this case as it must fail with water level above dike top. - Output output = GetOutputStringForProject(analysisType, false); + // Test to see if calculation does NOT work (and return Input invalid) in this case as it must fail with water level above dike top. + Output output = GetOutputStringForProject(analysisType, true); + + Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(1)); + Assert.That(output.Results.CalculationResults[0].CalculationResult, Is.EqualTo(6)); Assert.That(output.Results.CalculationMessages, Has.Length.EqualTo(2)); Assert.Multiple(() => @@ -1024,7 +1027,7 @@ }); } - private static Output GetOutputStringForProject(string analysisType, bool isSuccessful) + private static Output GetOutputStringForProject(string analysisType, bool areResultsExpected) { // Create xml with Tutorial project // Select location DWP_1 @@ -1050,7 +1053,7 @@ inputString = XmlAdapter.ChangeValueInXml(inputString, "RiverLevel", "5.5"); inputString = XmlAdapter.ChangeValueInXml(inputString, "RequiredSafetyFactorStabilityInnerSlope", "1.2"); - return GeneralHelper.RunAfterInputValidation(inputString, isSuccessful); + return GeneralHelper.RunAfterInputValidation(inputString, areResultsExpected); } private static void CheckCalculationResults(DesignResult output, string locationName, string profileName, DesignResultStabilityDesignResultsStabilityModelType model, double safetyFactor, bool isUplift, CalculationResult result) Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs =================================================================== diff -u -r7063 -r7064 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs (.../DesignCalculator.cs) (revision 7063) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs (.../DesignCalculator.cs) (revision 7064) @@ -310,6 +310,7 @@ soilProfileProbability, designScenario.LocationScenarioID))); KernelWrapperHelper.AddKernelOutputMessageToLogMessages(originalLocation.Name, soilProfileProbability, designScenario.LocationScenarioID, kernelDataOutput, calculationMessages); + designScenario.CalculationResult = CalculationResult.InvalidInputData; kernelWrapper.PostProcess(damKernelInput, kernelDataOutput, designScenario, "", out results); designResults.AddRange(results); break; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WtiPipingSellmeijerRevised/WtiPipingSellmeijerRevisedKernelWrapper.cs =================================================================== diff -u -r6895 -r7064 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WtiPipingSellmeijerRevised/WtiPipingSellmeijerRevisedKernelWrapper.cs (.../WtiPipingSellmeijerRevisedKernelWrapper.cs) (revision 6895) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WtiPipingSellmeijerRevised/WtiPipingSellmeijerRevisedKernelWrapper.cs (.../WtiPipingSellmeijerRevisedKernelWrapper.cs) (revision 7064) @@ -259,51 +259,58 @@ { CalculationResult = pipingOutput.CalculationResult }; - - var pipingDesignResults = new PipingDesignResults(PipingModelType.Wti2017); - designResult.PipingDesignResults = pipingDesignResults; - pipingDesignResults.ResultMessage = resultMessage; - pipingDesignResults.RedesignedSurfaceLine = damKernelInput.Location.SurfaceLine; - // Make sure defaultMaxReturnValue is limit. - pipingDesignResults.Wti2017BackwardErosionSafetyFactor = Math.Min(pipingOutput.FoSbe, defaultMaxReturnValue); - pipingDesignResults.Wti2017BackwardErosionHcritical = pipingOutput.Hcbe; - pipingDesignResults.Wti2017BackwardErosionDeltaPhiC = pipingOutput.DeltaPhiCbe; - pipingDesignResults.LocalExitPointX = pipingOutput.ExitPointX; - pipingDesignResults.UpliftFactor = pipingOutput.UpliftFactor; - pipingDesignResults.UpliftSituation = pipingOutput.UpliftSituation; - // Add results of the wti-uplift calculation - pipingDesignResults.Wti2017UpliftSafetyFactor = Math.Min(pipingOutput.FoSu, defaultMaxReturnValue); - pipingDesignResults.Wti2017UpliftHcritical = pipingOutput.Hcu; - pipingDesignResults.Wti2017UpliftDeltaPhiC = pipingOutput.DeltaPhiCu; - // Add results of the wti-heave calculation - pipingDesignResults.Wti2017HeaveSafetyFactor = Math.Min(pipingOutput.FoSh, defaultMaxReturnValue); - pipingDesignResults.Wti2017HeaveHcritical = pipingOutput.Hch; - pipingDesignResults.Wti2017Gradient = pipingOutput.Gradient; - pipingDesignResults.EffectiveStress = pipingOutput.EffectiveStress; - // Add the overall results for WTI piping kernel (FoS = highest value of FoSh, FoSu and FoSbe; HcO is Hcbe belonging to FoS), see MWDAM-1370 - double maxFoS = pipingOutput.FoSbe; - double overallHc = pipingOutput.Hcbe; - if (pipingOutput.FoSu > maxFoS) + if (designScenario.CalculationResult == CalculationResult.InvalidInputData) { - maxFoS = pipingOutput.FoSu; - overallHc = pipingOutput.Hcu; + designResult.CalculationResult = CalculationResult.InvalidInputData; } - - if (pipingOutput.FoSh > maxFoS) + else { - maxFoS = pipingOutput.FoSh; - overallHc = pipingOutput.Hch; - } + var pipingDesignResults = new PipingDesignResults(PipingModelType.Wti2017); + designResult.PipingDesignResults = pipingDesignResults; + pipingDesignResults.ResultMessage = resultMessage; + pipingDesignResults.RedesignedSurfaceLine = damKernelInput.Location.SurfaceLine; + // Make sure defaultMaxReturnValue is limit. + pipingDesignResults.Wti2017BackwardErosionSafetyFactor = Math.Min(pipingOutput.FoSbe, defaultMaxReturnValue); + pipingDesignResults.Wti2017BackwardErosionHcritical = pipingOutput.Hcbe; + pipingDesignResults.Wti2017BackwardErosionDeltaPhiC = pipingOutput.DeltaPhiCbe; + pipingDesignResults.LocalExitPointX = pipingOutput.ExitPointX; + pipingDesignResults.UpliftFactor = pipingOutput.UpliftFactor; + pipingDesignResults.UpliftSituation = pipingOutput.UpliftSituation; + // Add results of the wti-uplift calculation + pipingDesignResults.Wti2017UpliftSafetyFactor = Math.Min(pipingOutput.FoSu, defaultMaxReturnValue); + pipingDesignResults.Wti2017UpliftHcritical = pipingOutput.Hcu; + pipingDesignResults.Wti2017UpliftDeltaPhiC = pipingOutput.DeltaPhiCu; + // Add results of the wti-heave calculation + pipingDesignResults.Wti2017HeaveSafetyFactor = Math.Min(pipingOutput.FoSh, defaultMaxReturnValue); + pipingDesignResults.Wti2017HeaveHcritical = pipingOutput.Hch; + pipingDesignResults.Wti2017Gradient = pipingOutput.Gradient; + pipingDesignResults.EffectiveStress = pipingOutput.EffectiveStress; + // Add the overall results for WTI piping kernel (FoS = highest value of FoSh, FoSu and FoSbe; HcO is Hcbe belonging to FoS), see MWDAM-1370 + double maxFoS = pipingOutput.FoSbe; + double overallHc = pipingOutput.Hcbe; + if (pipingOutput.FoSu > maxFoS) + { + maxFoS = pipingOutput.FoSu; + overallHc = pipingOutput.Hcu; + } - // Make sure defaultMaxReturnValue is limit. - maxFoS = Math.Min(maxFoS, defaultMaxReturnValue); + if (pipingOutput.FoSh > maxFoS) + { + maxFoS = pipingOutput.FoSh; + overallHc = pipingOutput.Hch; + } - pipingDesignResults.Wti2017SafetyFactorOverall = maxFoS; - pipingDesignResults.Wti2017HcriticalOverall = overallHc; + // Make sure defaultMaxReturnValue is limit. + maxFoS = Math.Min(maxFoS, defaultMaxReturnValue); - // Determine the values for the additional output parameters as requested in MWDAM-1370 - pipingDesignResults.Wti2017BackwardErosionDeltaPhiReduced = pipingOutput.DeltaPhibe; - pipingDesignResults.CCreep = pipingOutput.SeepageLength / pipingOutput.DeltaPhiCbe; + pipingDesignResults.Wti2017SafetyFactorOverall = maxFoS; + pipingDesignResults.Wti2017HcriticalOverall = overallHc; + + // Determine the values for the additional output parameters as requested in MWDAM-1370 + pipingDesignResults.Wti2017BackwardErosionDeltaPhiReduced = pipingOutput.DeltaPhibe; + pipingDesignResults.CCreep = pipingOutput.SeepageLength / pipingOutput.DeltaPhiCbe; + } + designResults.Add(designResult); } Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/PipingBlighTests.cs =================================================================== diff -u -r6404 -r7064 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/PipingBlighTests.cs (.../PipingBlighTests.cs) (revision 6404) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/PipingBlighTests.cs (.../PipingBlighTests.cs) (revision 7064) @@ -21,6 +21,7 @@ using System.Globalization; using System.IO; +using System.Linq; using System.Threading; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geotechnics; @@ -131,11 +132,18 @@ Output output = GeneralHelper.RunAfterInputValidation(inputString); - Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(112)); + int invalidInputCount = output.Results.CalculationResults.Count(cr => cr.CalculationResult == 6); + int succeededCount = output.Results.CalculationResults.Count(cr => cr.CalculationResult == 1); Assert.Multiple(() => { + Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(122)); + Assert.That(invalidInputCount, Is.EqualTo(10)); + Assert.That(succeededCount, Is.EqualTo(112)); + }); + Assert.Multiple(() => + { Assert.That(output.Results.CalculationResults[0].PipingDesignResults.BlighFactor, Is.EqualTo(0.782).Within(tolerance)); - Assert.That(output.Results.CalculationResults[103].PipingDesignResults.BlighFactor, Is.EqualTo(0.934).Within(tolerance)); + Assert.That(output.Results.CalculationResults[113].PipingDesignResults.BlighFactor, Is.EqualTo(0.934).Within(tolerance)); }); } Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/PipingSellmeijerRevisedTests.cs =================================================================== diff -u -r6404 -r7064 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/PipingSellmeijerRevisedTests.cs (.../PipingSellmeijerRevisedTests.cs) (revision 6404) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/PipingSellmeijerRevisedTests.cs (.../PipingSellmeijerRevisedTests.cs) (revision 7064) @@ -21,6 +21,7 @@ using System.Globalization; using System.IO; +using System.Linq; using System.Threading; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geotechnics; @@ -210,18 +211,24 @@ Output output = GeneralHelper.RunAfterInputValidation(inputString); + int runFailedCount = output.Results.CalculationResults.Count(cr => cr.CalculationResult == 7); + int invalidInputCount = output.Results.CalculationResults.Count(cr => cr.CalculationResult == 6); + int succeededCount = output.Results.CalculationResults.Count(cr => cr.CalculationResult == 1); Assert.Multiple(() => { - Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(112)); + Assert.That(output.Results.CalculationResults, Has.Length.EqualTo(122)); + Assert.That(runFailedCount, Is.EqualTo(4)); + Assert.That(invalidInputCount, Is.EqualTo(10)); + Assert.That(succeededCount, Is.EqualTo(108)); Assert.That(ConversionHelper.ConvertToCalculationResult(output.Results.CalculationResults[0].CalculationResult), Is.EqualTo(CalculationResult.Succeeded)); }); Assert.Multiple(() => { Assert.That(output.Results.CalculationResults[0].PipingDesignResults.Wti2017FactorOverall, Is.EqualTo(90.000).Within(tolerance)); Assert.That(ConversionHelper.ConvertToCalculationResult(output.Results.CalculationResults[2].CalculationResult), Is.EqualTo(CalculationResult.Succeeded)); Assert.That(output.Results.CalculationResults[2].PipingDesignResults.Wti2017FactorOverall, Is.EqualTo(49.806).Within(tolerance)); - Assert.That(ConversionHelper.ConvertToCalculationResult(output.Results.CalculationResults[111].CalculationResult), Is.EqualTo(CalculationResult.RunFailed)); - Assert.That(output.Results.CalculationResults[111].PipingDesignResults.Wti2017FactorOverall, Is.EqualTo(0.000).Within(tolerance)); + Assert.That(ConversionHelper.ConvertToCalculationResult(output.Results.CalculationResults[121].CalculationResult), Is.EqualTo(CalculationResult.RunFailed)); + Assert.That(output.Results.CalculationResults[121].PipingDesignResults.Wti2017FactorOverall, Is.EqualTo(0.000).Within(tolerance)); }); } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityOutwards/MacroStabilityOutwardsKernelWrapper.cs =================================================================== diff -u -r6895 -r7064 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityOutwards/MacroStabilityOutwardsKernelWrapper.cs (.../MacroStabilityOutwardsKernelWrapper.cs) (revision 6895) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityOutwards/MacroStabilityOutwardsKernelWrapper.cs (.../MacroStabilityOutwardsKernelWrapper.cs) (revision 7064) @@ -203,6 +203,15 @@ designResults.Add(designResult); } } + else + { + if (designScenario.CalculationResult == CalculationResult.InvalidInputData) + { + DesignResult designResultInvalidInput = MacroStabilityCommonHelper.NewDesignResult(damKernelInput, designScenario); + designResultInvalidInput.CalculationResult = CalculationResult.InvalidInputData; + designResults.Add(designResultInvalidInput); + } + } } /// Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WtiPipingBligh/WtiPipingBlighKernelWrapper.cs =================================================================== diff -u -r6936 -r7064 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WtiPipingBligh/WtiPipingBlighKernelWrapper.cs (.../WtiPipingBlighKernelWrapper.cs) (revision 6936) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WtiPipingBligh/WtiPipingBlighKernelWrapper.cs (.../WtiPipingBlighKernelWrapper.cs) (revision 7064) @@ -182,15 +182,22 @@ { CalculationResult = wtiPipingBlighOutput.CalculationResult }; - var pipingDesignResults = new PipingDesignResults(PipingModelType.Bligh); - designResult.PipingDesignResults = pipingDesignResults; - pipingDesignResults.ResultMessage = resultMessage; - pipingDesignResults.BlighFactor = wtiPipingBlighOutput.FoSp; - pipingDesignResults.BlighHcritical = wtiPipingBlighOutput.Hc; - pipingDesignResults.RedesignedSurfaceLine = damKernelInput.Location.SurfaceLine; - pipingDesignResults.UpliftSituation = wtiPipingBlighOutput.UpliftSituation; - pipingDesignResults.LocalExitPointX = wtiPipingBlighOutput.ExitPointX; - pipingDesignResults.UpliftFactor = wtiPipingBlighOutput.UpliftFactor; + if (designScenario.CalculationResult == CalculationResult.InvalidInputData) + { + designResult.CalculationResult = CalculationResult.InvalidInputData; + } + else + { + var pipingDesignResults = new PipingDesignResults(PipingModelType.Bligh); + designResult.PipingDesignResults = pipingDesignResults; + pipingDesignResults.ResultMessage = resultMessage; + pipingDesignResults.BlighFactor = wtiPipingBlighOutput.FoSp; + pipingDesignResults.BlighHcritical = wtiPipingBlighOutput.Hc; + pipingDesignResults.RedesignedSurfaceLine = damKernelInput.Location.SurfaceLine; + pipingDesignResults.UpliftSituation = wtiPipingBlighOutput.UpliftSituation; + pipingDesignResults.LocalExitPointX = wtiPipingBlighOutput.ExitPointX; + pipingDesignResults.UpliftFactor = wtiPipingBlighOutput.UpliftFactor; + } designResults.Add(designResult); }