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);
}
}