Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighOutput.cs =================================================================== diff -u -r638 -r672 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighOutput.cs (.../DamPipingBlighOutput.cs) (revision 638) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighOutput.cs (.../DamPipingBlighOutput.cs) (revision 672) @@ -3,10 +3,32 @@ namespace Deltares.DamEngine.Calculators.KernelWrappers.DamPipingBligh { + /// + /// Output class for piping Bligh + /// + /// public class DamPipingBlighOutput : IKernelDataOutput { + /// + /// Gets or sets the calculation result. + /// + /// + /// The calculation result. + /// public CalculationResult CalculationResult { get; set; } + /// + /// Gets or sets the safetyfactor for Bligh. + /// + /// + /// The fo sp. + /// public double FoSp { get; set; } + /// + /// Gets or sets the H-critical. + /// + /// + /// The hc. + /// public double Hc { get; set; } } } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelDataInput.cs =================================================================== diff -u -r495 -r672 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelDataInput.cs (.../IKernelDataInput.cs) (revision 495) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelDataInput.cs (.../IKernelDataInput.cs) (revision 672) @@ -1,5 +1,8 @@ namespace Deltares.DamEngine.Calculators.KernelWrappers.Interfaces { + /// + /// Interface for generic input for Failure mechanims wrapper + /// public interface IKernelDataInput { } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs =================================================================== diff -u -r649 -r672 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs (.../DesignCalculator.cs) (revision 649) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs (.../DesignCalculator.cs) (revision 672) @@ -44,11 +44,12 @@ damKernelInput.Location = location; damKernelInput.SubSoilScenario = soiProfileProbability; damKernelInput.DesignScenario = location.Scenarios[designScenarioIndex]; - IKernelDataInput kernelDataInput = kernelWrapper.Prepare(damKernelInput); + IKernelDataInput kernelDataInput; + PrepareResult prepareResult = kernelWrapper.Prepare(damKernelInput, out kernelDataInput); // Sometimes the kernelDataInput is not created (p.e when soilprofileprobablility is meant for // stability where Piping calc is wanted). In that case, do nothing but just skip. - if (kernelDataInput != null) + if (prepareResult == PrepareResult.Successful) { // Perform calculation List locationCalculationMessages; Index: dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs =================================================================== diff -u -r656 -r672 --- dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs (.../DamPipingSellmeijer4ForcesKernelWrapperTests.cs) (revision 656) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs (.../DamPipingSellmeijer4ForcesKernelWrapperTests.cs) (revision 672) @@ -23,6 +23,7 @@ using System.Data; using Deltares.DamEngine.Calculators.KernelWrappers.Common; using Deltares.DamEngine.Calculators.KernelWrappers.DamPipingSellmeijer4Forces; +using Deltares.DamEngine.Calculators.KernelWrappers.Interfaces; using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.General.Results; @@ -70,7 +71,8 @@ var kernelWrapper = new DamPipingSellmeijer4ForcesKernelWrapper(); // Prepare the wrapper. Result is input for the calculation dll - var damPipingInput = kernelWrapper.Prepare(damKernelInput); + IKernelDataInput damPipingInput; + kernelWrapper.Prepare(damKernelInput, out damPipingInput); // Validate the input List messages; @@ -114,7 +116,9 @@ SubSoilScenario = subSoilScenario }; var kernelWrapper = new DamPipingSellmeijer4ForcesKernelWrapper(); - var damPipingInput = (DamPipingSellmeijer4ForcesInput)kernelWrapper.Prepare(damKernelInput); + IKernelDataInput kernelDataInput; + kernelWrapper.Prepare(damKernelInput, out kernelDataInput); + DamPipingSellmeijer4ForcesInput damPipingInput = (DamPipingSellmeijer4ForcesInput) kernelDataInput; Assert.AreEqual(1.0, damPipingInput.HRiver, diff); Assert.AreEqual(0.0, damPipingInput.HExit, diff); Assert.AreEqual(0.3, damPipingInput.Rc, diff); Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelDataOutput.cs =================================================================== diff -u -r495 -r672 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelDataOutput.cs (.../IKernelDataOutput.cs) (revision 495) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelDataOutput.cs (.../IKernelDataOutput.cs) (revision 672) @@ -1,5 +1,8 @@ namespace Deltares.DamEngine.Calculators.KernelWrappers.Interfaces { + /// + /// Interface for generic outpu for Failure mechanims wrapper + /// public interface IKernelDataOutput { } Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs =================================================================== diff -u -r670 -r672 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 670) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 672) @@ -28,7 +28,7 @@ /// /// The dam kernel input. /// - public IKernelDataInput Prepare(DamKernelInput damKernelInput) + public PrepareResult Prepare(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput) { if (damKernelInput.SubSoilScenario.SegmentFailureMechanismType == FailureMechanismSystemType.Piping) { @@ -71,7 +71,7 @@ // rekening houdend met zeespiegelrijzing etc.(zie paragraaf 3.7.2). In dien ter plaatse van het uittreepunt of de opbarstlocatie // geen vrije waterstand heerst kan gerekend worden met het maaiveldniveau, rekening houdend met eventuele maaiveld daling (zie paragraaf 3.7.2)." var referenceLevel = Math.Max(location.PolderLevel, surfaceLevel); - return new DamPipingBlighInput() + kernelDataInput = new DamPipingBlighInput() { HRiver = riverLevel, HExit = referenceLevel, @@ -82,7 +82,8 @@ IsUplift = isUplift }; } - return null; + kernelDataInput = null; + return PrepareResult.NotRelevant; } /// @@ -172,7 +173,7 @@ } /// - /// Fills the design results with the kernel output. + /// Fills the design results from the kernel output. /// /// The dam kernel input. /// The kernel data output. Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs =================================================================== diff -u -r670 -r672 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 670) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 672) @@ -25,7 +25,7 @@ /// /// The dam kernel input. /// - public IKernelDataInput Prepare(DamKernelInput damKernelInput) + public PrepareResult Prepare(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput) { if (damKernelInput.SubSoilScenario.SegmentFailureMechanismType == FailureMechanismSystemType.Piping) { @@ -82,7 +82,7 @@ inBetweenAquiferlayerSoil = soilProfile1D.InBetweenAquiferLayer.Soil; } - return new DamPipingSellmeijer4ForcesInput() + kernelDataInput = new DamPipingSellmeijer4ForcesInput() { HRiver = riverLevel, HExit = referenceLevel, @@ -98,8 +98,10 @@ AquiferHeight = aquiferHeight, PermeabilityKx = permeabilityKx, }; + return PrepareResult.Successful; } - return null; + kernelDataInput = null; + return PrepareResult.NotRelevant; } /// Index: dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapperTests.cs =================================================================== diff -u -r644 -r672 --- dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapperTests.cs (.../DamMacroStabilityKernelWrapperTests.cs) (revision 644) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapperTests.cs (.../DamMacroStabilityKernelWrapperTests.cs) (revision 672) @@ -28,6 +28,7 @@ using Deltares.DamEngine.Calculators.KernelWrappers.Common; using Deltares.DamEngine.Calculators.KernelWrappers.DamMacroStability; using Deltares.DamEngine.Calculators.KernelWrappers.DamMacroStability.Assemblers; +using Deltares.DamEngine.Calculators.KernelWrappers.Interfaces; using Deltares.DamEngine.Data.General.Results; using Deltares.DamEngine.Data.Standard.Logging; using NUnit.Framework; @@ -48,7 +49,8 @@ var kernelWrapper = new DamMacroStabilityKernelWrapper(); // Prepare the wrapper. Result is input for the calculation dll - var damStabilityInput = kernelWrapper.Prepare(damKernelInput); + IKernelDataInput damStabilityInput; + kernelWrapper.Prepare(damKernelInput, out damStabilityInput); // Validate the input List messages; Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapper.cs =================================================================== diff -u -r670 -r672 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapper.cs (.../DamMacroStabilityKernelWrapper.cs) (revision 670) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapper.cs (.../DamMacroStabilityKernelWrapper.cs) (revision 672) @@ -28,18 +28,19 @@ /// /// The dam kernel input. /// - public IKernelDataInput Prepare(DamKernelInput damKernelInput) + public PrepareResult Prepare(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput) { // TODO: this is just fake data const string testFolder = @"..\..\Deltares.DamEngine.Calculators.Tests\Files\MacroStability"; // Relative paths in ini file do not work yet in DGeoStability 16.2. This is fixed in 18.1. var absoluteFolder = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), testFolder)); var stiFileName = Path.Combine(absoluteFolder, "test.sti"); - return new DamMacroStabilityInput() + kernelDataInput = new DamMacroStabilityInput() { DGeoStabilityExePath = Path.Combine(DamMacroStabilityFolder, DGeoStabilityExe), DGeoStabilityInputFileName = stiFileName }; + return PrepareResult.Successful; } /// Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs =================================================================== diff -u -r564 -r672 --- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 564) +++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 672) @@ -5,11 +5,50 @@ namespace Deltares.DamEngine.Calculators.KernelWrappers.Interfaces { + /// + /// Result of the Prepare method + /// Successful : the input data was created susccesfully + /// Failed : the input data could not be created + /// NotRelevant: the DamKernelInput contains data that is not a relevant input for this mechanism + /// + public enum PrepareResult + { + Successful, + Failed, + NotRelevant + }; + /// + /// Interface to implement external failure mechanisms + /// interface IKernelWrapper { - IKernelDataInput Prepare(DamKernelInput damKernelInput); + /// + /// Prepares the failure mechanism input based on general dam kernel input. + /// + /// The dam kernel input. + /// The kernel data input. + /// + PrepareResult Prepare(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput); + /// + /// Validates the kernel data input. + /// + /// The kernel data input. + /// The messages. + /// int Validate(IKernelDataInput kernelDataInput, out List messages); + /// + /// Performs a failure mechanism calcualtion based on the input. + /// + /// The kernel data input. + /// The messages. + /// IKernelDataOutput Execute(IKernelDataInput kernelDataInput, out List messages); + /// + /// Fills the dam result based on the kernel output. + /// + /// The dam kernel input. + /// The kernel data output. + /// The design result. void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, out DesignResult designResult); } }