Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs =================================================================== diff -u -r814 -r815 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs (.../DamPipingSellmeijerVnkKernelWrapper.cs) (revision 814) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs (.../DamPipingSellmeijerVnkKernelWrapper.cs) (revision 815) @@ -47,7 +47,7 @@ } } - public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out DesignResult designResult) + public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out List designResult) { throw new NotImplementedException(); } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs =================================================================== diff -u -r814 -r815 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 814) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 815) @@ -202,9 +202,9 @@ /// The dam kernel input. /// The kernel data output. /// The result message. - /// The design result. + /// The design results. /// No input or output object defined - public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out DesignResult designResult) + public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out List designResults) { DamPipingSellmeijer4ForcesOutput damPipingOutput = kernelDataOutput as DamPipingSellmeijer4ForcesOutput; if (damPipingOutput == null) @@ -224,7 +224,8 @@ }; var designScenario = damKernelInput.DesignScenario; var soilProfile1D = damKernelInput.SubSoilScenario.SoilProfile1D; - designResult = new DesignResult(damFailureMechanismeCalculationSpecification, designScenario, soilProfile1D, soilProfile2DName, AnalysisType.NoAdaption); + designResults = new List(); + var designResult = new DesignResult(damFailureMechanismeCalculationSpecification, designScenario, soilProfile1D, soilProfile2DName, AnalysisType.NoAdaption); designResult.CalculationResult = damPipingOutput.CalculationResult; var pipingDesignResults = new PipingDesignResults(PipingModelType.Sellmeijer4Forces); @@ -237,6 +238,7 @@ pipingDesignResults.LocalExitPointX = damPipingOutput.ExitPointX; pipingDesignResults.UpliftFactor = damPipingOutput.UpliftFactor; pipingDesignResults.UpliftSituation = damPipingOutput.UpliftSituation; + designResults.Add(designResult); } } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapperTests.cs =================================================================== diff -u -r801 -r815 --- dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapperTests.cs (.../DamMacroStabilityKernelWrapperTests.cs) (revision 801) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapperTests.cs (.../DamMacroStabilityKernelWrapperTests.cs) (revision 815) @@ -186,15 +186,15 @@ zone2.ExitPointXCoordinate = 2.3; output.Zone2Results = zone2; - DesignResult result; - kernelWrapper.PostProcess(null, output, "", out result); - Assert.AreEqual(0.9, result.StabilityDesignResults.SafetyFactor); - Assert.AreEqual(1.1, result.StabilityDesignResults.Zone1SafetyFactor); - Assert.AreEqual(1.2, result.StabilityDesignResults.LocalZone1EntryPointX); - Assert.AreEqual(1.3, result.StabilityDesignResults.LocalZone1ExitPointX); - Assert.AreEqual(0.9, result.StabilityDesignResults.Zone2SafetyFactor); - Assert.AreEqual(2.2, result.StabilityDesignResults.LocalZone2EntryPointX); - Assert.AreEqual(2.3, result.StabilityDesignResults.LocalZone2ExitPointX); + List results; + kernelWrapper.PostProcess(null, output, "", out results); + Assert.AreEqual(0.9, results[0].StabilityDesignResults.SafetyFactor); + Assert.AreEqual(1.1, results[0].StabilityDesignResults.Zone1SafetyFactor); + Assert.AreEqual(1.2, results[0].StabilityDesignResults.LocalZone1EntryPointX); + Assert.AreEqual(1.3, results[0].StabilityDesignResults.LocalZone1ExitPointX); + Assert.AreEqual(0.9, results[0].StabilityDesignResults.Zone2SafetyFactor); + Assert.AreEqual(2.2, results[0].StabilityDesignResults.LocalZone2EntryPointX); + Assert.AreEqual(2.3, results[0].StabilityDesignResults.LocalZone2ExitPointX); } [Test] @@ -219,8 +219,8 @@ public void TestThrowsExceptionWhenOutputIsNull() { var kernelWrapper = new DamMacroStabilityKernelWrapper(); - DesignResult result; - kernelWrapper.PostProcess(null, null, "", out result); + List results; + kernelWrapper.PostProcess(null, null, "", out results); } } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs =================================================================== diff -u -r814 -r815 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs (.../DesignCalculator.cs) (revision 814) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs (.../DesignCalculator.cs) (revision 815) @@ -98,16 +98,19 @@ } // Process output calculationMessages.AddRange(locationCalculationMessages); - DesignResult designResult; + List designResults; StringBuilder sb = new StringBuilder(); foreach (var message in locationCalculationMessages) { sb.Append(message.Message + Environment.NewLine); } string resultMessage = sb.ToString(); - kernelWrapper.PostProcess(damKernelInput, kernelDataOutput, resultMessage, out designResult); - damProjectData.DesignCalculations.Add(designResult); + kernelWrapper.PostProcess(damKernelInput, kernelDataOutput, resultMessage, out designResults); + foreach (var designResult in designResults) + { + damProjectData.DesignCalculations.Add(designResult); + } } } } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs =================================================================== diff -u -r814 -r815 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 814) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 815) @@ -205,9 +205,9 @@ /// The dam kernel input. /// The kernel data output. /// The result message. - /// The design result. + /// The design results. /// No output object defined for Bligh - public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out DesignResult designResult) + public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out List designResults) { DamPipingBlighOutput damPipingBlighOutput = kernelDataOutput as DamPipingBlighOutput; if (damKernelInput == null) @@ -228,8 +228,8 @@ }; var designScenario = damKernelInput.DesignScenario; var soilProfile1D = damKernelInput.SubSoilScenario.SoilProfile1D; - - designResult = new DesignResult(damFailureMechanismeCalculationSpecification, + designResults = new List(); + var designResult = new DesignResult(damFailureMechanismeCalculationSpecification, designScenario, soilProfile1D, soilProfile2DName, DamProjectCalculationSpecification.SelectedAnalysisType); designResult.CalculationResult = damPipingBlighOutput.CalculationResult; @@ -242,7 +242,8 @@ pipingDesignResults.RedesignedSurfaceLine = damKernelInput.Location.SurfaceLine; pipingDesignResults.UpliftSituation = damPipingBlighOutput.UpliftSituation; pipingDesignResults.LocalExitPointX = damPipingBlighOutput.ExitPointX; - pipingDesignResults.UpliftFactor = damPipingBlighOutput.UpliftFactor; + pipingDesignResults.UpliftFactor = damPipingBlighOutput.UpliftFactor; + designResults.Add(designResult); } } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapperTests.cs =================================================================== diff -u -r814 -r815 --- dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapperTests.cs (.../DamPipingSellmeijerVnkKernelWrapperTests.cs) (revision 814) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapperTests.cs (.../DamPipingSellmeijerVnkKernelWrapperTests.cs) (revision 815) @@ -121,22 +121,25 @@ Assert.AreEqual(3.65, damPipingOutput.Hc, diff); // Fill the design results - DesignResult result; - kernelWrapper.PostProcess(damKernelInput, damPipingOutput, "", out result); - Assert.AreEqual(FailureMechanismSystemType.Piping, result.DamFailureMechanismeCalculation.FailureMechanismSystemType); - Assert.AreEqual(PipingModelType.SellmeijerVnk, result.DamFailureMechanismeCalculation.PipingModelType); - Assert.IsNotNullOrEmpty(result.LocationName); - Assert.IsNotNullOrEmpty(result.ScenarioName); - Assert.IsNotNullOrEmpty(result.ProfileName); - Assert.AreEqual(3.65, result.PipingDesignResults.SellmeijerVnkFactor, diff); - Assert.AreEqual(3.65, result.PipingDesignResults.SellmeijerVnkHcritical, diff); + List results; + kernelWrapper.PostProcess(damKernelInput, damPipingOutput, "", out results); + foreach (var result in results) + { + Assert.AreEqual(FailureMechanismSystemType.Piping, result.DamFailureMechanismeCalculation.FailureMechanismSystemType); + Assert.AreEqual(PipingModelType.SellmeijerVnk, result.DamFailureMechanismeCalculation.PipingModelType); + Assert.IsNotNullOrEmpty(result.LocationName); + Assert.IsNotNullOrEmpty(result.ScenarioName); + Assert.IsNotNullOrEmpty(result.ProfileName); + Assert.AreEqual(3.65, result.PipingDesignResults.SellmeijerVnkFactor, diff); + Assert.AreEqual(3.65, result.PipingDesignResults.SellmeijerVnkHcritical, diff); - Assert.AreEqual(50.5, result.PipingDesignResults.LocalExitPointX); - Assert.AreEqual(0.067957866123003738, result.PipingDesignResults.UpliftFactor); - Assert.AreEqual(true, result.PipingDesignResults.UpliftSituation != null && ((UpliftSituation)result.PipingDesignResults.UpliftSituation).IsUplift); - Assert.AreEqual(CalculationResult.Succeeded, result.CalculationResult); + Assert.AreEqual(50.5, result.PipingDesignResults.LocalExitPointX); + Assert.AreEqual(0.067957866123003738, result.PipingDesignResults.UpliftFactor); + Assert.AreEqual(true, result.PipingDesignResults.UpliftSituation != null && ((UpliftSituation)result.PipingDesignResults.UpliftSituation).IsUplift); + Assert.AreEqual(CalculationResult.Succeeded, result.CalculationResult); - Assert.AreEqual(location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + Assert.AreEqual(location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + } } [Test] @@ -255,17 +258,20 @@ CalculationResult = calculationResult }; - DesignResult result; - kernelWrapper.PostProcess(input, output, "", out result); - Assert.AreEqual(output.FoSp, result.PipingDesignResults.SellmeijerVnkFactor); - Assert.AreEqual(output.Hc, result.PipingDesignResults.SellmeijerVnkHcritical); + List results; + kernelWrapper.PostProcess(input, output, "", out results); + foreach (var result in results) + { + Assert.AreEqual(output.FoSp, result.PipingDesignResults.SellmeijerVnkFactor); + Assert.AreEqual(output.Hc, result.PipingDesignResults.SellmeijerVnkHcritical); - Assert.AreEqual(output.ExitPointX, result.PipingDesignResults.LocalExitPointX); - Assert.AreEqual(output.UpliftFactor, result.PipingDesignResults.UpliftFactor); - Assert.AreEqual(output.UpliftSituation, result.PipingDesignResults.UpliftSituation); - Assert.AreEqual(output.CalculationResult, result.CalculationResult); + Assert.AreEqual(output.ExitPointX, result.PipingDesignResults.LocalExitPointX); + Assert.AreEqual(output.UpliftFactor, result.PipingDesignResults.UpliftFactor); + Assert.AreEqual(output.UpliftSituation, result.PipingDesignResults.UpliftSituation); + Assert.AreEqual(output.CalculationResult, result.CalculationResult); - Assert.AreEqual(input.Location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + Assert.AreEqual(input.Location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + } } [Test] @@ -297,8 +303,8 @@ public void TestThrowsExceptionInPostProcessWhenOutputIsNull() { var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); - DesignResult result; - kernelWrapper.PostProcess(new DamKernelInput(), null, "", out result); + List results; + kernelWrapper.PostProcess(new DamKernelInput(), null, "", out results); } [Test] @@ -308,8 +314,8 @@ public void TestThrowsExceptionInPostProcessWhenInputIsNull() { var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper(); - DesignResult result; - kernelWrapper.PostProcess(null, new DamPipingSellmeijerVnkOutput(), "", out result); + List results; + kernelWrapper.PostProcess(null, new DamPipingSellmeijerVnkOutput(), "", out results); } } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapperTests.cs =================================================================== diff -u -r814 -r815 --- dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapperTests.cs (.../DamPipingBlighKernelWrapperTests.cs) (revision 814) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapperTests.cs (.../DamPipingBlighKernelWrapperTests.cs) (revision 815) @@ -95,22 +95,25 @@ Assert.AreEqual(2.25, damPipingOutput.Hc, diff); // Fill the design results - DesignResult result; - kernelWrapper.PostProcess(damKernelInput, damPipingOutput, "", out result); - Assert.AreEqual(FailureMechanismSystemType.Piping, result.DamFailureMechanismeCalculation.FailureMechanismSystemType); - Assert.AreEqual(PipingModelType.Bligh, result.DamFailureMechanismeCalculation.PipingModelType); - Assert.IsNotNullOrEmpty(result.LocationName); - Assert.IsNotNullOrEmpty(result.ScenarioName); - Assert.IsNotNullOrEmpty(result.ProfileName); - Assert.AreEqual(4.5, result.PipingDesignResults.BlighFactor, diff); - Assert.AreEqual(2.25, result.PipingDesignResults.BlighHcritical, diff); + List results; + kernelWrapper.PostProcess(damKernelInput, damPipingOutput, "", out results); + foreach (var result in results) + { + Assert.AreEqual(FailureMechanismSystemType.Piping, result.DamFailureMechanismeCalculation.FailureMechanismSystemType); + Assert.AreEqual(PipingModelType.Bligh, result.DamFailureMechanismeCalculation.PipingModelType); + Assert.IsNotNullOrEmpty(result.LocationName); + Assert.IsNotNullOrEmpty(result.ScenarioName); + Assert.IsNotNullOrEmpty(result.ProfileName); + Assert.AreEqual(4.5, result.PipingDesignResults.BlighFactor, diff); + Assert.AreEqual(2.25, result.PipingDesignResults.BlighHcritical, diff); - Assert.AreEqual(50.5, result.PipingDesignResults.LocalExitPointX); - Assert.AreEqual(0.072811999417504, result.PipingDesignResults.UpliftFactor); - Assert.AreEqual(true, result.PipingDesignResults.UpliftSituation != null && ((UpliftSituation)result.PipingDesignResults.UpliftSituation).IsUplift); - Assert.AreEqual(CalculationResult.Succeeded, result.CalculationResult); + Assert.AreEqual(50.5, result.PipingDesignResults.LocalExitPointX); + Assert.AreEqual(0.072811999417504, result.PipingDesignResults.UpliftFactor); + Assert.AreEqual(true, result.PipingDesignResults.UpliftSituation != null && ((UpliftSituation)result.PipingDesignResults.UpliftSituation).IsUplift); + Assert.AreEqual(CalculationResult.Succeeded, result.CalculationResult); - Assert.AreEqual(location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + Assert.AreEqual(location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + } } [Test] @@ -205,17 +208,20 @@ CalculationResult = calculationResult }; - DesignResult result; - kernelWrapper.PostProcess(input, output, "", out result); - Assert.AreEqual(output.FoSp, result.PipingDesignResults.BlighFactor); - Assert.AreEqual(output.Hc, result.PipingDesignResults.BlighHcritical); + List results; + kernelWrapper.PostProcess(input, output, "", out results); + foreach (var result in results) + { + Assert.AreEqual(output.FoSp, result.PipingDesignResults.BlighFactor); + Assert.AreEqual(output.Hc, result.PipingDesignResults.BlighHcritical); - Assert.AreEqual(output.ExitPointX, result.PipingDesignResults.LocalExitPointX); - Assert.AreEqual(output.UpliftFactor, result.PipingDesignResults.UpliftFactor); - Assert.AreEqual(output.UpliftSituation, result.PipingDesignResults.UpliftSituation); - Assert.AreEqual(output.CalculationResult, result.CalculationResult); + Assert.AreEqual(output.ExitPointX, result.PipingDesignResults.LocalExitPointX); + Assert.AreEqual(output.UpliftFactor, result.PipingDesignResults.UpliftFactor); + Assert.AreEqual(output.UpliftSituation, result.PipingDesignResults.UpliftSituation); + Assert.AreEqual(output.CalculationResult, result.CalculationResult); - Assert.AreEqual(input.Location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + Assert.AreEqual(input.Location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + } } [Test] @@ -244,8 +250,8 @@ public void TestThrowsExceptionInPostProcessWhenOutputIsNull() { var kernelWrapper = new DamPipingBlighKernelWrapper(); - DesignResult result; - kernelWrapper.PostProcess(new DamKernelInput(), null, "", out result); + List results; + kernelWrapper.PostProcess(new DamKernelInput(), null, "", out results); } [Test] @@ -254,8 +260,8 @@ public void TestThrowsExceptionInPostProcessWhenInputIsNull() { var kernelWrapper = new DamPipingBlighKernelWrapper(); - DesignResult result; - kernelWrapper.PostProcess(null, new DamPipingBlighOutput(), "", out result); + List results; + kernelWrapper.PostProcess(null, new DamPipingBlighOutput(), "", out results); } } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs =================================================================== diff -u -r814 -r815 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs (.../DamMacroStabilityOutwardsKernelWrapper.cs) (revision 814) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs (.../DamMacroStabilityOutwardsKernelWrapper.cs) (revision 815) @@ -232,9 +232,9 @@ /// The dam kernel input. /// The kernel data output. /// The result message. - /// The design result. + /// The design results. /// - public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out DesignResult designResult) + public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out List designResults) { DamMacroStabilityOutput damMacroStabilityOutput = kernelDataOutput as DamMacroStabilityOutput; if (damMacroStabilityOutput == null) @@ -243,13 +243,13 @@ } // TODO: this is just fake data - string id = "id"; string soilProfile2DName = "soilProfile2DName"; var d = new DamFailureMechanismeCalculationSpecification(); var s = new DesignScenario(); s.Location = new Location(); var p = new SoilProfile1D(); - designResult = new DesignResult(d, s, p, soilProfile2DName, AnalysisType.NoAdaption); + designResults = new List(); + var designResult = new DesignResult(d, s, p, soilProfile2DName, AnalysisType.NoAdaption); designResult.CalculationResult = damMacroStabilityOutput.CalculationResult; var stabilityDesignResults = new StabilityDesignResults(); stabilityDesignResults.Zone1SafetyFactor = damMacroStabilityOutput.Zone1Results.SafetyFactor; @@ -265,6 +265,7 @@ stabilityDesignResults.SafetyFactor = Math.Min(damMacroStabilityOutput.Zone1Results.SafetyFactor, zone2.SafetyFactor); } designResult.StabilityDesignResults = stabilityDesignResults; + designResults.Add(designResult); } private string GetStabilityInputFileName(DamKernelInput damKernelInput, int iterationIndex) Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapper.cs =================================================================== diff -u -r814 -r815 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapper.cs (.../DamMacroStabilityKernelWrapper.cs) (revision 814) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapper.cs (.../DamMacroStabilityKernelWrapper.cs) (revision 815) @@ -230,9 +230,9 @@ /// The dam kernel input. /// The kernel data output. /// The result message. - /// The design result. + /// The design results. /// - public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out DesignResult designResult) + public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out List designResults) { DamMacroStabilityOutput damPipingOutput = kernelDataOutput as DamMacroStabilityOutput; if (damPipingOutput == null) @@ -241,13 +241,13 @@ } // TODO: this is just fake data - string id = "id"; string soilProfile2DName = "soilProfile2DName"; var d = new DamFailureMechanismeCalculationSpecification(); var s = new DesignScenario(); s.Location = new Location(); var p = new SoilProfile1D(); - designResult = new DesignResult(d, s, p, soilProfile2DName, AnalysisType.NoAdaption); + designResults = new List(); + var designResult = new DesignResult(d, s, p, soilProfile2DName, AnalysisType.NoAdaption); var stabilityDesignResults = new StabilityDesignResults(); stabilityDesignResults.Zone1SafetyFactor = damPipingOutput.Zone1Results.SafetyFactor; @@ -263,6 +263,7 @@ stabilityDesignResults.SafetyFactor = Math.Min(damPipingOutput.Zone1Results.SafetyFactor, zone2.SafetyFactor); } designResult.StabilityDesignResults = stabilityDesignResults; + designResults.Add(designResult); } } } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs =================================================================== diff -u -r814 -r815 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 814) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 815) @@ -50,13 +50,14 @@ /// The kernel data output. /// The messages. void Execute(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages); + /// /// Fills the dam result based on the kernel output. /// /// The dam kernel input. /// The kernel data output. /// The result message. - /// The design result. - void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out DesignResult designResult); + /// The design results + void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out List designResults); } } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityInput.cs =================================================================== diff -u -r805 -r815 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityInput.cs (.../DamMacroStabilityInput.cs) (revision 805) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityInput.cs (.../DamMacroStabilityInput.cs) (revision 815) @@ -31,19 +31,28 @@ public class DamMacroStabilityInput : IKernelDataInput { /// - /// Gets or sets the name of the d geo stability input file. + /// Gets or sets the name of the DGeoStability input file. /// /// - /// The name of the d geo stability input file. + /// The name of the DGeoStability input file. /// public string DGeoStabilityInputFileName { get; set; } /// - /// Gets or sets the d geo stability executable path. + /// Gets or sets the DGeoStability file name for the second model. + /// This is required for BishopUpliftVan model which can require two calculations /// /// - /// The d geo stability executable path. + /// The DGeoStability file name for the second model. /// + public string DGeoStabilityInputFileNameSecondModel { get; set; } + + /// + /// Gets or sets the DGeoStability executable path. + /// + /// + /// The DGeoStability executable path. + /// public string DGeoStabilityExePath { get; set; } /// Index: dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs =================================================================== diff -u -r814 -r815 --- dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs (.../DamPipingSellmeijer4ForcesKernelWrapperTests.cs) (revision 814) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs (.../DamPipingSellmeijer4ForcesKernelWrapperTests.cs) (revision 815) @@ -98,22 +98,25 @@ Assert.AreEqual(4.7596469835953883, damPipingOutput.Hc, diff); // Fill the design results - DesignResult result; - kernelWrapper.PostProcess(damKernelInput, damPipingOutput, "", out result); - Assert.AreEqual(FailureMechanismSystemType.Piping, result.DamFailureMechanismeCalculation.FailureMechanismSystemType); - Assert.AreEqual(PipingModelType.Sellmeijer4Forces, result.DamFailureMechanismeCalculation.PipingModelType); - Assert.IsNotNullOrEmpty(result.LocationName); - Assert.IsNotNullOrEmpty(result.ScenarioName); - Assert.IsNotNullOrEmpty(result.ProfileName); - Assert.AreEqual(11.899117458988471, result.PipingDesignResults.Sellmeijer4ForcesFactor, diff); - Assert.AreEqual(4.7596469835953883, result.PipingDesignResults.Sellmeijer4ForcesHcritical, diff); + List results; + kernelWrapper.PostProcess(damKernelInput, damPipingOutput, "", out results); + foreach (var result in results) + { + Assert.AreEqual(FailureMechanismSystemType.Piping, result.DamFailureMechanismeCalculation.FailureMechanismSystemType); + Assert.AreEqual(PipingModelType.Sellmeijer4Forces, result.DamFailureMechanismeCalculation.PipingModelType); + Assert.IsNotNullOrEmpty(result.LocationName); + Assert.IsNotNullOrEmpty(result.ScenarioName); + Assert.IsNotNullOrEmpty(result.ProfileName); + Assert.AreEqual(11.899117458988471, result.PipingDesignResults.Sellmeijer4ForcesFactor, diff); + Assert.AreEqual(4.7596469835953883, result.PipingDesignResults.Sellmeijer4ForcesHcritical, diff); - Assert.AreEqual(50.5, result.PipingDesignResults.LocalExitPointX); - Assert.AreEqual(0.067957866123003738, result.PipingDesignResults.UpliftFactor); - Assert.AreEqual(true, result.PipingDesignResults.UpliftSituation != null && ((UpliftSituation)result.PipingDesignResults.UpliftSituation).IsUplift); - Assert.AreEqual(CalculationResult.Succeeded, result.CalculationResult); + Assert.AreEqual(50.5, result.PipingDesignResults.LocalExitPointX); + Assert.AreEqual(0.067957866123003738, result.PipingDesignResults.UpliftFactor); + Assert.AreEqual(true, result.PipingDesignResults.UpliftSituation != null && ((UpliftSituation)result.PipingDesignResults.UpliftSituation).IsUplift); + Assert.AreEqual(CalculationResult.Succeeded, result.CalculationResult); - Assert.AreEqual(location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + Assert.AreEqual(location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + } } [Test] @@ -218,17 +221,20 @@ CalculationResult = calculationResult }; - DesignResult result; - kernelWrapper.PostProcess(input, output, "", out result); - Assert.AreEqual(output.FoSp, result.PipingDesignResults.Sellmeijer4ForcesFactor); - Assert.AreEqual(output.Hc, result.PipingDesignResults.Sellmeijer4ForcesHcritical); + List results; + kernelWrapper.PostProcess(input, output, "", out results); + foreach (var result in results) + { + Assert.AreEqual(output.FoSp, result.PipingDesignResults.Sellmeijer4ForcesFactor); + Assert.AreEqual(output.Hc, result.PipingDesignResults.Sellmeijer4ForcesHcritical); - Assert.AreEqual(output.ExitPointX, result.PipingDesignResults.LocalExitPointX); - Assert.AreEqual(output.UpliftFactor, result.PipingDesignResults.UpliftFactor); - Assert.AreEqual(output.UpliftSituation, result.PipingDesignResults.UpliftSituation); - Assert.AreEqual(output.CalculationResult, result.CalculationResult); + Assert.AreEqual(output.ExitPointX, result.PipingDesignResults.LocalExitPointX); + Assert.AreEqual(output.UpliftFactor, result.PipingDesignResults.UpliftFactor); + Assert.AreEqual(output.UpliftSituation, result.PipingDesignResults.UpliftSituation); + Assert.AreEqual(output.CalculationResult, result.CalculationResult); - Assert.AreEqual(input.Location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + Assert.AreEqual(input.Location.SurfaceLine, result.PipingDesignResults.RedesignedSurfaceLine); + } } [Test] @@ -257,8 +263,8 @@ public void TestThrowsExceptionInPostProcessWhenOutputIsNull() { var kernelWrapper = new DamPipingSellmeijer4ForcesKernelWrapper(); - DesignResult result; - kernelWrapper.PostProcess(new DamKernelInput(), null, "", out result); + List results; + kernelWrapper.PostProcess(new DamKernelInput(), null, "", out results); } [Test] @@ -267,8 +273,8 @@ public void TestThrowsExceptionInPostProcessWhenInputIsNull() { var kernelWrapper = new DamPipingSellmeijer4ForcesKernelWrapper(); - DesignResult result; - kernelWrapper.PostProcess(null, new DamPipingSellmeijer4ForcesOutput(), "", out result); + List results; + kernelWrapper.PostProcess(null, new DamPipingSellmeijer4ForcesOutput(), "", out results); } }