Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs
===================================================================
diff -u -r1119 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 1119)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 1129)
@@ -97,5 +97,15 @@
/// The messages.
///
ShoulderDesign CalculateDesignAtPoint(DamKernelInput damKernelInput, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, GeometryPoint point, out List messages);
+
+ ///
+ /// Evaluates the design (current factor greater than desired factor)
+ ///
+ /// The dam kernel input.
+ /// The kernel data input.
+ /// The kernel data output.
+ /// The evaluation message.
+ /// if the design was succesful
+ bool EvaluateDesign(DamKernelInput damKernelInput, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out string evaluationMessage);
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/PipingBlighTests.cs
===================================================================
diff -u -r1114 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/PipingBlighTests.cs (.../PipingBlighTests.cs) (revision 1114)
+++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/PipingBlighTests.cs (.../PipingBlighTests.cs) (revision 1129)
@@ -20,6 +20,8 @@
// All rights reserved.
using System.IO;
+using System.Threading;
+using Deltares.DamEngine.Calculators.DikesDesign;
using Deltares.DamEngine.Data.General;
using Deltares.DamEngine.Data.Geotechnics;
using Deltares.DamEngine.Io;
@@ -153,6 +155,27 @@
}
[Test]
+ [SetUICulture("en-US")]
+ [ExpectedException(typeof(DesignCalculatorException))]
+ public void CanPerformBlighFailingDesignWithAdaptionRechterDiezedijk1Location()
+ {
+ Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
+ const string fileName = @"TestFiles\Rechter Diezedijk_BlighFailedDesignInputFile_1Location.xml";
+ string inputString = File.ReadAllText(fileName);
+ EngineInterface engineInterface = new EngineInterface(inputString);
+ Assert.IsNotNull(engineInterface.DamProjectData);
+ try
+ {
+ string outputString = engineInterface.Run();
+ }
+ catch(DesignCalculatorException e)
+ {
+ Assert.AreEqual("The design was not successful in location '101', soilprofile 'segment1_1D1', Factor achieved = 2.870, Factor required = 8.000.", e.Message);
+ throw e;
+ }
+ }
+
+ [Test]
public void CanPerformBlighDesignWithAdaptionRechterDiezedijk()
{
const string fileName = @"TestFiles\Rechter Diezedijk_BlighDesignInputFile.xml";
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs
===================================================================
diff -u -r1122 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs (.../DamPipingSellmeijerVnkKernelWrapper.cs) (revision 1122)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs (.../DamPipingSellmeijerVnkKernelWrapper.cs) (revision 1129)
@@ -261,6 +261,22 @@
throw new NotImplementedException();
}
+ ///
+ /// Evaluates the design (current factor greater than desired factor)
+ ///
+ /// The dam kernel input.
+ /// The kernel data input.
+ /// The kernel data output.
+ /// The evaluation message.
+ ///
+ /// if the design was succesful
+ ///
+ ///
+ public bool EvaluateDesign(DamKernelInput damKernelInput, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out string evaluationMessage)
+ {
+ throw new NotImplementedException();
+ }
+
private static PipingCalculatorSellmeijerVNK CreatePipingCalculatorSellmeijerVnk(IKernelDataInput kernelDataInput)
{
DamPipingSellmeijerVnkInput damPipingInput = kernelDataInput as DamPipingSellmeijerVnkInput;
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs
===================================================================
diff -u -r1040 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs (.../DamMacroStabilityOutwardsKernelWrapper.cs) (revision 1040)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs (.../DamMacroStabilityOutwardsKernelWrapper.cs) (revision 1129)
@@ -315,5 +315,20 @@
throw new NotImplementedException();
}
+ ///
+ /// Evaluates the design (current factor greater than desired factor)
+ ///
+ /// The dam kernel input.
+ /// The kernel data input.
+ /// The kernel data output.
+ /// The evaluation message.
+ ///
+ /// if the design was succesful
+ ///
+ ///
+ public bool EvaluateDesign(DamKernelInput damKernelInput, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out string evaluationMessage)
+ {
+ throw new NotImplementedException();
+ }
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/Properties/Resources.Designer.cs
===================================================================
diff -u -r1101 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 1101)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 1129)
@@ -119,6 +119,15 @@
///
/// Looks up a localized string similar to No input object defined for Bligh.
///
+ internal static string DamPipingBlighKernelWrapper_NoDamInputObjectDefinedForBligh {
+ get {
+ return ResourceManager.GetString("DamPipingBlighKernelWrapper_NoDamInputObjectDefinedForBligh", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No input object defined for Bligh.
+ ///
internal static string DamPipingBlighKernelWrapper_NoInputObjectDefinedForBligh {
get {
return ResourceManager.GetString("DamPipingBlighKernelWrapper_NoInputObjectDefinedForBligh", resourceCulture);
@@ -217,6 +226,24 @@
}
///
+ /// Looks up a localized string similar to The design was not successful in location '{0}', soilprofile '{1}'.
+ ///
+ internal static string DesignUnsuccessful {
+ get {
+ return ResourceManager.GetString("DesignUnsuccessful", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Factor achieved = {0:0.000}, Factor required = {1:0.000}..
+ ///
+ internal static string FactorAchievedVsFactorRequired {
+ get {
+ return ResourceManager.GetString("FactorAchievedVsFactorRequired", resourceCulture);
+ }
+ }
+
+ ///
/// Looks up a localized string similar to River level ({0}) is below surface level at river side ({1})..
///
internal static string MStabXmlDoc_CreateMStabXmlDoc_RiverLevelHighIsBelowSurfaceLevelOutside {
Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/Deltares.DamEngine.Interface.Tests.csproj
===================================================================
diff -u -r1111 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/Deltares.DamEngine.Interface.Tests.csproj (.../Deltares.DamEngine.Interface.Tests.csproj) (revision 1111)
+++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/Deltares.DamEngine.Interface.Tests.csproj (.../Deltares.DamEngine.Interface.Tests.csproj) (revision 1129)
@@ -53,6 +53,10 @@
+
+ {E943B1D5-FAFA-4AFE-9071-F8B22CF612EA}
+ Deltares.DamEngine.Calculators
+
{b7a49c1a-1c91-4d72-aba9-9fbac2509d8e}
Deltares.DamEngine.Data
@@ -148,6 +152,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/Properties/Resources.resx
===================================================================
diff -u -r1101 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/Properties/Resources.resx (.../Resources.resx) (revision 1101)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/Properties/Resources.resx (.../Resources.resx) (revision 1129)
@@ -240,4 +240,13 @@
The new shoulder width is too large to fit in the current surface line.
+
+ No input object defined for Bligh
+
+
+ The design was not successful in location '{0}', soilprofile '{1}'
+
+
+ Factor achieved = {0:0.000}, Factor required = {1:0.000}.
+
\ No newline at end of file
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/Properties/Resources.nl-NL.resx
===================================================================
diff -u -r1053 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/Properties/Resources.nl-NL.resx (.../Resources.nl-NL.resx) (revision 1053)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/Properties/Resources.nl-NL.resx (.../Resources.nl-NL.resx) (revision 1129)
@@ -135,6 +135,9 @@
De vereiste veiligheidsfactor ontbreekt
+
+ Geen Dam invoer object gedefinieerd voor Bligh
+
Geen invoer object gedefinieerd voor Bligh
@@ -168,6 +171,12 @@
Validatie faalt voor locatie '{0}', ondergrond scenario '{1}', ontwerp scenario '{2}'
+
+ Het ontwerpen is niet gelukt in locatie '{0}', ondergrondprofiel '{1}'
+
+
+ Factor bereikt = {1:0.000}, Factor benodigd = {1:0.000}.
+
De buitenwaartse waterstand ({0}) ligt onder het buitenwaartse maaiveld ({1}).
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityHorizontalBalance/DamMacroStabilityHorizontalBalanceKernelWrapper.cs
===================================================================
diff -u -r1128 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityHorizontalBalance/DamMacroStabilityHorizontalBalanceKernelWrapper.cs (.../DamMacroStabilityHorizontalBalanceKernelWrapper.cs) (revision 1128)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityHorizontalBalance/DamMacroStabilityHorizontalBalanceKernelWrapper.cs (.../DamMacroStabilityHorizontalBalanceKernelWrapper.cs) (revision 1129)
@@ -210,6 +210,22 @@
}
///
+ /// Evaluates the design (current factor greater than desired factor)
+ ///
+ /// The dam kernel input.
+ /// The kernel data input.
+ /// The kernel data output.
+ /// The evaluation message.
+ ///
+ /// if the design was succesful
+ ///
+ ///
+ public bool EvaluateDesign(DamKernelInput damKernelInput, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out string evaluationMessage)
+ {
+ throw new NotImplementedException();
+ }
+
+ ///
/// Creates the mstab dam XML document.
///
/// The dam kernel input.
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs
===================================================================
diff -u -r1102 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs (.../DamMacroStabilityInwardsKernelWrapper.cs) (revision 1102)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs (.../DamMacroStabilityInwardsKernelWrapper.cs) (revision 1129)
@@ -416,6 +416,22 @@
throw new NotImplementedException();
}
+ ///
+ /// Evaluates the design (current factor greater than desired factor)
+ ///
+ /// The dam kernel input.
+ /// The kernel data input.
+ /// The kernel data output.
+ /// The evaluation message.
+ ///
+ /// if the design was succesful
+ ///
+ ///
+ public bool EvaluateDesign(DamKernelInput damKernelInput, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out string evaluationMessage)
+ {
+ throw new NotImplementedException();
+ }
+
private DesignResult NewDesignResult(DamKernelInput damKernelInput)
{
string soilProfile2DName = damKernelInput.SubSoilScenario.ToString();
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs
===================================================================
diff -u -r1122 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 1122)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 1129)
@@ -26,7 +26,6 @@
using Deltares.DamEngine.Calculators.KernelWrappers.Interfaces;
using Deltares.DamEngine.Calculators.Properties;
using Deltares.DamEngine.Calculators.Uplift;
-using Deltares.DamEngine.Data.Standard;
using Deltares.DamEngine.Data.General;
using Deltares.DamEngine.Data.General.PlLines;
using Deltares.DamEngine.Data.General.Results;
@@ -70,7 +69,6 @@
var damPipingBlighInput = new DamPipingBlighInput();
var soilProfile1D = damKernelInput.SubSoilScenario.SoilProfile1D;
- var surfaceLine = damKernelInput.Location.SurfaceLine;
var location = damKernelInput.Location;
double waterLevel = damKernelInput.RiverLevelHigh;
UpliftSituation upliftSituation;
@@ -180,14 +178,8 @@
{
DamPipingBlighInput damPipingBlighInput = kernelDataInput as DamPipingBlighInput;
DamPipingBlighOutput damPipingBlighOutput = (DamPipingBlighOutput)kernelDataOutput;
- if (damPipingBlighInput == null)
- {
- throw new NoNullAllowedException(Resources.DamPipingBlighKernelWrapper_NoInputObjectDefinedForBligh);
- }
- if (damPipingBlighOutput == null)
- {
- throw new NoNullAllowedException(Resources.DamPipingBlighKernelWrapper_NoOutputObjectDefinedForBligh);
- }
+ ThrowWhenKernelInputNull(damPipingBlighInput);
+ ThrowWhenKernelOutputNull(damPipingBlighOutput);
PerformSingleCalculationBligh(out messages, damPipingBlighOutput, damPipingBlighInput);
}
@@ -223,10 +215,7 @@
private static PipingCalculatorBligh CreatePipingCalculatorBligh(IKernelDataInput kernelDataInput)
{
DamPipingBlighInput damPipingBlighInput = kernelDataInput as DamPipingBlighInput;
- if (damPipingBlighInput == null)
- {
- throw new NoNullAllowedException(Resources.DamPipingBlighKernelWrapper_NoInputObjectDefinedForBligh);
- }
+ ThrowWhenKernelInputNull(damPipingBlighInput);
var calculator = new PipingCalculatorBligh
{
HRiver = damPipingBlighInput.HRiver,
@@ -250,7 +239,7 @@
public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, string resultMessage, out List designResults)
{
DamPipingBlighOutput damPipingBlighOutput = kernelDataOutput as DamPipingBlighOutput;
- ThrowWhenKernelInputNull(damKernelInput);
+ ThrowWhenDamKernelInputNull(damKernelInput);
ThrowWhenKernelOutputNull(damPipingBlighOutput);
designResults = new List();
@@ -273,28 +262,21 @@
designResults.Add(designResult);
}
- private static void ThrowWhenKernelOutputNull(DamPipingBlighOutput damPipingBlighOutput)
- {
- if (damPipingBlighOutput == null)
- {
- throw new NoNullAllowedException(Resources.DamPipingBlighKernelWrapper_NoOutputObjectDefinedForBligh);
- }
- }
-
- private static void ThrowWhenKernelInputNull(DamKernelInput damKernelInput)
- {
- if (damKernelInput == null)
- {
- throw new NoNullAllowedException(Resources.DamPipingBlighKernelWrapper_NoInputObjectDefinedForBligh);
- }
- }
-
+ ///
+ /// Calculates the design at point.
+ ///
+ /// The dam kernel input.
+ /// The kernel data input.
+ /// The kernel data output.
+ /// The point.
+ /// The messages.
+ ///
public ShoulderDesign CalculateDesignAtPoint(DamKernelInput damKernelInput, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, GeometryPoint point, out List messages)
{
messages = new List();
DamPipingBlighInput damPipingBlighInput = kernelDataInput as DamPipingBlighInput;
DamPipingBlighOutput damPipingBlighOutput = (DamPipingBlighOutput)kernelDataOutput;
- ThrowWhenKernelInputNull(damKernelInput);
+ ThrowWhenDamKernelInputNull(damKernelInput);
ThrowWhenKernelOutputNull(damPipingBlighOutput);
Location location = damKernelInput.Location;
SoilProfile1D soilProfile = damKernelInput.SubSoilScenario.SoilProfile1D;
@@ -337,5 +319,52 @@
}
return null;
}
+
+ ///
+ /// Evaluates the design (current factor greater than desired factor)
+ ///
+ /// The dam kernel input.
+ /// The kernel data input.
+ /// The kernel data output.
+ /// The evaluation message.
+ ///
+ /// if the design was succesful
+ ///
+ ///
+ public bool EvaluateDesign(DamKernelInput damKernelInput, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out string evaluationMessage)
+ {
+ DamPipingBlighInput damPipingBlighInput = kernelDataInput as DamPipingBlighInput;
+ DamPipingBlighOutput damPipingBlighOutput = (DamPipingBlighOutput)kernelDataOutput;
+ ThrowWhenKernelInputNull(damPipingBlighInput);
+ ThrowWhenDamKernelInputNull(damKernelInput);
+ ThrowWhenKernelOutputNull(damPipingBlighOutput);
+ double fosRequiered = damKernelInput.Location.ModelFactors.RequiredSafetyFactorPiping.Value;
+ double fosAchieved = damPipingBlighOutput.FoSp;
+ evaluationMessage = String.Format(Resources.FactorAchievedVsFactorRequired, fosAchieved, fosRequiered);
+ return (fosAchieved >= fosRequiered);
+ }
+ private static void ThrowWhenKernelInputNull(DamPipingBlighInput damPipingBlighInput)
+ {
+ if (damPipingBlighInput == null)
+ {
+ throw new NoNullAllowedException(Resources.DamPipingBlighKernelWrapper_NoInputObjectDefinedForBligh);
+ }
+ }
+ private static void ThrowWhenKernelOutputNull(DamPipingBlighOutput damPipingBlighOutput)
+ {
+ if (damPipingBlighOutput == null)
+ {
+ throw new NoNullAllowedException(Resources.DamPipingBlighKernelWrapper_NoOutputObjectDefinedForBligh);
+ }
+ }
+
+ private static void ThrowWhenDamKernelInputNull(DamKernelInput damKernelInput)
+ {
+ if (damKernelInput == null)
+ {
+ throw new NoNullAllowedException(Resources.DamPipingBlighKernelWrapper_NoDamInputObjectDefinedForBligh);
+ }
+ }
+
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs
===================================================================
diff -u -r1080 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs (.../DesignCalculator.cs) (revision 1080)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs (.../DesignCalculator.cs) (revision 1129)
@@ -96,7 +96,7 @@
switch (analysisType)
{
case AnalysisType.AdaptGeometry:
- PerformDesignCalculation(kernelWrapper, kernelDataInput, kernelDataOutput,
+ PerformDesignCalculationShoulderIterativePerPoint(kernelWrapper, kernelDataInput, kernelDataOutput,
damKernelInput, calculationMessages, damProjectData.DesignCalculations);
break;
case AnalysisType.NoAdaption:
@@ -280,7 +280,18 @@
double maxHeight = Math.Abs((top - bottom) * maxFractionOfDikeHeightForShoulderHeight);
return bottom + maxHeight;
}
- private static void PerformDesignCalculation(IKernelWrapper kernelWrapper, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, DamKernelInput damKernelInput,
+ ///
+ /// Performs the design calculation shoulder iterative per point.
+ /// This is a design strategy used for Piping
+ ///
+ /// The kernel wrapper.
+ /// The kernel data input.
+ /// The kernel data output.
+ /// The dam kernel input.
+ /// The calculation messages.
+ /// The design calculations.
+ ///
+ private static void PerformDesignCalculationShoulderIterativePerPoint(IKernelWrapper kernelWrapper, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, DamKernelInput damKernelInput,
List calculationMessages, List designCalculations)
{
var designResults = new List();
@@ -310,15 +321,15 @@
pointCount++;
// Calculate the piping design at the given point. This returns the required adaption (berm length and height) if any.
- var pipingDesign = kernelWrapper.CalculateDesignAtPoint(damKernelInput, kernelDataInput, kernelDataOutput, point, out locationCalculationMessages);
- if (pipingDesign != null)
+ ShoulderDesign shoulderDesign = kernelWrapper.CalculateDesignAtPoint(damKernelInput, kernelDataInput, kernelDataOutput, point, out locationCalculationMessages);
+ if (shoulderDesign != null)
{
// Piping is an issue so adapt the surfaceline for it
- desiredShoulderLength = pipingDesign.ShoulderLengthFromToe;
+ desiredShoulderLength = shoulderDesign.ShoulderLengthFromToe;
desiredShoulderLength = Math.Max(desiredShoulderLength, oldDesiredShoulderLength);
oldDesiredShoulderLength = desiredShoulderLength;
// shoulder height is height above surfacelevel!!
- desiredShoulderHeight = pipingDesign.ShoulderHeightFromToe;
+ desiredShoulderHeight = shoulderDesign.ShoulderHeightFromToe;
desiredShoulderHeight = Math.Max(desiredShoulderHeight, oldDesiredShoulderHeight);
oldDesiredShoulderHeight = desiredShoulderHeight;
}
@@ -374,12 +385,14 @@
designCalculations.Add(designResult);
}
}
- // safetyFactor = pipingCalculator.CalculatePipingFactor(location, newSurfaceLine, soilProfileProbability.SoilProfile, scenario.RiverLevel);
- // if (safetyFactor < scenario.RequiredSafetyFactorPiping)
- // {
- // throw new DamFailureMechanismeCalculatorException("Deterministic Design: Piping is not safe yet.");
- // }
- // return newSurfaceLine;
+
+ string evaluationMessage;
+ bool designSuccessful = kernelWrapper.EvaluateDesign(damKernelInput, kernelDataInput, kernelDataOutput, out evaluationMessage);
+ if (!designSuccessful)
+ {
+ throw new DesignCalculatorException(String.Format(Resources.DesignUnsuccessful,
+ damKernelInput.Location.Name, damKernelInput.SubSoilScenario) + ", " + evaluationMessage);
+ }
}
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs
===================================================================
diff -u -r1122 -r1129
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 1122)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 1129)
@@ -275,5 +275,20 @@
throw new NotImplementedException();
}
+ ///
+ /// Evaluates the design (current factor greater than desired factor)
+ ///
+ /// The dam kernel input.
+ /// The kernel data input.
+ /// The kernel data output.
+ /// The evaluation message.
+ ///
+ /// if the design was succesful
+ ///
+ ///
+ public bool EvaluateDesign(DamKernelInput damKernelInput, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out string evaluationMessage)
+ {
+ throw new NotImplementedException();
+ }
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/TestFiles/Rechter Diezedijk_BlighFailedDesignInputFile_1Location.xml
===================================================================
diff -u
--- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/TestFiles/Rechter Diezedijk_BlighFailedDesignInputFile_1Location.xml (revision 0)
+++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/TestFiles/Rechter Diezedijk_BlighFailedDesignInputFile_1Location.xml (revision 1129)
@@ -0,0 +1,2775 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file