Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs
===================================================================
diff -u -r770 -r814
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 770)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 814)
@@ -29,7 +29,7 @@
///
/// Result of the prepare
///
- public PrepareResult Prepare(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput)
+ public PrepareResult Prepare(DamKernelInput damKernelInput, int iterationIndex, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput)
{
var damOutput = new DamPipingSellmeijer4ForcesOutput()
{
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs
===================================================================
diff -u -r783 -r814
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs (.../DamPipingSellmeijerVnkKernelWrapper.cs) (revision 783)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs (.../DamPipingSellmeijerVnkKernelWrapper.cs) (revision 814)
@@ -52,7 +52,7 @@
throw new NotImplementedException();
}
- public PrepareResult Prepare(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput)
+ public PrepareResult Prepare(DamKernelInput damKernelInput, int iterationIndex, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput)
{
var damOutput = new DamPipingSellmeijerVnkOutput()
{
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs
===================================================================
diff -u -r805 -r814
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs (.../DamMacroStabilityOutwardsKernelWrapper.cs) (revision 805)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs (.../DamMacroStabilityOutwardsKernelWrapper.cs) (revision 814)
@@ -23,6 +23,7 @@
using System.Collections.Generic;
using System.Data;
using System.IO;
+using System.Text.RegularExpressions;
using System.Xml.Linq;
using Deltares.DamEngine.Calculators.KernelWrappers.Common;
using Deltares.DamEngine.Calculators.KernelWrappers.DamMacroStability;
@@ -56,15 +57,24 @@
public FailureMechanismeParamatersMStab FailureMechanismeParamatersMStab { get; set; }
///
+ /// Gets or sets the index of the iteration.
+ ///
+ ///
+ /// The index of the iteration.
+ ///
+ public int IterationIndex { get; set; }
+
+ ///
/// Prepares the specified dam kernel input.
///
/// The dam kernel input.
+ ///
/// The kernel data input.
/// The kernel data output
///
/// Result of the prepare
///
- public PrepareResult Prepare(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput)
+ public PrepareResult Prepare(DamKernelInput damKernelInput, int iterationIndex, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput)
{
var damMacroStabilityOutput = new DamMacroStabilityOutput()
{
@@ -76,23 +86,10 @@
// Make sure the gridposition is Left.
FailureMechanismeParamatersMStab.MStabParameters.GridPosition = MStabGridPosition.Left;
- //damKernelInput.Location.StabilityOptions.
- // ToDo zant set stiFileName
- // string stabilityDirectory = GetStabilityCalculationDirectory();
- // string filenameExtension = GetFilenameExtension();
- // string fileName = calculationName + filenameExtension;
- // var stabilityProjectFilename = Path.Combine(stabilityDirectory, fileName);
-
- 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");
-
-
var damMacroStabilityInput = new DamMacroStabilityInput()
{
DGeoStabilityExePath = Path.Combine(DamMacroStabilityFolder, DGeoStabilityExe),
- DGeoStabilityInputFileName = stiFileName,
+ DGeoStabilityInputFileName = GetStabilityInputFileName(damKernelInput, iterationIndex),
FailureMechanismeParamatersMStab = FailureMechanismeParamatersMStab
};
kernelDataInput = damMacroStabilityInput;
@@ -269,5 +266,53 @@
}
designResult.StabilityDesignResults = stabilityDesignResults;
}
+
+ private string GetStabilityInputFileName(DamKernelInput damKernelInput, int iterationIndex)
+ {
+ // Assume 2D sti-file, then check on type being 1D
+ string soilGeometryName = damKernelInput.SubSoilScenario.StiFileName;
+ if (damKernelInput.SubSoilScenario.SoilProfileType == SoilProfileType.ProfileType1D)
+ {
+ soilGeometryName = damKernelInput.SubSoilScenario.SoilProfile1DName;
+ }
+
+ string calculationName = DetermineCalculationFilename(damKernelInput.DesignScenario.Location.Name,
+ damKernelInput.DesignScenario.LocationScenarioID, soilGeometryName, iterationIndex);
+ const string filenameExtension = ".sti";
+ string fileName = calculationName + filenameExtension;
+ string stabilityDirectory = GetStabilityCalculationDirectory();
+ return Path.Combine(stabilityDirectory, fileName);
+
+ }
+
+ private string DetermineCalculationFilename(string locationName, string scenarioName,
+ string soilGeometryName, int iterationIndex)
+ {
+ string calculationName;
+ if (iterationIndex <= 0)
+ {
+ calculationName = String.Format("Loc({0})_Sce({1})_Pro({2})", locationName, scenarioName,
+ soilGeometryName);
+ }
+ else
+ {
+ calculationName = String.Format("Loc({0})_Sce({1})_Pro({2})_Ite({3})", locationName, scenarioName,
+ soilGeometryName, iterationIndex);
+ }
+ return Regex.Replace(calculationName, @"[\\\/:\*\?""'<>|.]", "_");
+ }
+
+ private string GetStabilityCalculationDirectory()
+ {
+ string calculationBaseDirectory = DamProjectData.ProjectWorkingPath;
+ const string stabilitySubDir = @"Stability\";
+ string stabilityDirectory = Path.Combine(calculationBaseDirectory, stabilitySubDir);
+ var modelSubDirectory = FailureMechanismeParamatersMStab.MStabParameters.Model.ToString();
+ if (modelSubDirectory != "")
+ stabilityDirectory = Path.Combine(stabilityDirectory, modelSubDirectory);
+ if (!Directory.Exists(stabilityDirectory))
+ Directory.CreateDirectory(stabilityDirectory);
+ return stabilityDirectory;
+ }
}
}
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/MStabXmlDoc.cs
===================================================================
diff -u -r787 -r814
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/MStabXmlDoc.cs (.../MStabXmlDoc.cs) (revision 787)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/MStabXmlDoc.cs (.../MStabXmlDoc.cs) (revision 814)
@@ -167,7 +167,6 @@
if (failureMechanismeParamatersMStab.MStabParameters.GridPosition == MStabGridPosition.Left && scenario.RiverLevelLow.HasValue)
{
riverLevelLow = scenario.RiverLevelLow.Value;
- // ToDo bka #zant: riverLevelLow is not used. In classic it was used in CreateAllPLLines
}
double? riverLevelHigh = riverLevel;
var surfaceLevelOutside = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelOutside);
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapperTests.cs
===================================================================
diff -u -r772 -r814
--- dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapperTests.cs (.../DamPipingBlighKernelWrapperTests.cs) (revision 772)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapperTests.cs (.../DamPipingBlighKernelWrapperTests.cs) (revision 814)
@@ -80,7 +80,7 @@
// Prepare the wrapper. Result is input for the calculation dll
IKernelDataInput damPipingInput;
IKernelDataOutput kernelDataOutput;
- kernelWrapper.Prepare(damKernelInput, out damPipingInput, out kernelDataOutput);
+ kernelWrapper.Prepare(damKernelInput, 0, out damPipingInput, out kernelDataOutput);
// Validate the input
List messages;
@@ -139,7 +139,7 @@
var kernelWrapper = new DamPipingBlighKernelWrapper();
IKernelDataInput kernelDataInput;
IKernelDataOutput kernelDataOutput;
- kernelWrapper.Prepare(damKernelInput, out kernelDataInput, out kernelDataOutput);
+ kernelWrapper.Prepare(damKernelInput, 0, out kernelDataInput, out kernelDataOutput);
DamPipingBlighInput damPipingInput = (DamPipingBlighInput)kernelDataInput;
Assert.AreEqual(2.0, damPipingInput.HRiver, diff);
Assert.AreEqual(0.0, damPipingInput.HExit, diff);
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapper.cs
===================================================================
diff -u -r805 -r814
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapper.cs (.../DamMacroStabilityKernelWrapper.cs) (revision 805)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStability/DamMacroStabilityKernelWrapper.cs (.../DamMacroStabilityKernelWrapper.cs) (revision 814)
@@ -63,7 +63,7 @@
///
/// Result of the prepare
///
- public PrepareResult Prepare(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput)
+ public PrepareResult Prepare(DamKernelInput damKernelInput, int iterationIndex, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput)
{
var damMacroStabilityOutput = new DamMacroStabilityOutput()
{
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs
===================================================================
diff -u -r787 -r814
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs (.../DesignCalculator.cs) (revision 787)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/Dikes Design/DesignCalculator.cs (.../DesignCalculator.cs) (revision 814)
@@ -72,7 +72,7 @@
IKernelDataInput kernelDataInput;
IKernelDataOutput kernelDataOutput;
- PrepareResult prepareResult = kernelWrapper.Prepare(damKernelInput, out kernelDataInput, out kernelDataOutput);
+ PrepareResult prepareResult = kernelWrapper.Prepare(damKernelInput, 0, out kernelDataInput, out kernelDataOutput);
// 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.
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs
===================================================================
diff -u -r694 -r814
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 694)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Interfaces/IKernelWrapper.cs (.../IKernelWrapper.cs) (revision 814)
@@ -26,12 +26,13 @@
/// Prepares the failure mechanism input based on general dam kernel input.
///
/// The dam kernel input.
+ /// The number of the current iteration
/// The kernel data input.
/// The kernel data output.
///
/// Result of the prepare
///
- PrepareResult Prepare(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput);
+ PrepareResult Prepare(DamKernelInput damKernelInput, int iterationIndex, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput);
///
/// Validates the kernel data input.
///
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapperTests.cs
===================================================================
diff -u -r784 -r814
--- dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapperTests.cs (.../DamPipingSellmeijerVnkKernelWrapperTests.cs) (revision 784)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapperTests.cs (.../DamPipingSellmeijerVnkKernelWrapperTests.cs) (revision 814)
@@ -106,7 +106,7 @@
// Prepare the wrapper. Result is input for the calculation dll
IKernelDataInput damPipingInput;
IKernelDataOutput kernelDataOutput;
- kernelWrapper.Prepare(damKernelInput, out damPipingInput, out kernelDataOutput);
+ kernelWrapper.Prepare(damKernelInput, 0, out damPipingInput, out kernelDataOutput);
// Validate the input
List messages;
@@ -165,7 +165,7 @@
var kernelWrapper = new DamPipingSellmeijerVnkKernelWrapper();
IKernelDataInput kernelDataInput;
IKernelDataOutput kernelDataOutput;
- kernelWrapper.Prepare(damKernelInput, out kernelDataInput, out kernelDataOutput);
+ kernelWrapper.Prepare(damKernelInput, 0, out kernelDataInput, out kernelDataOutput);
DamPipingSellmeijerVnkInput damPipingInput = (DamPipingSellmeijerVnkInput)kernelDataInput;
Assert.AreEqual(1.0, damPipingInput.HRiver, diff);
Assert.AreEqual(0.0, damPipingInput.HExit, diff);
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs
===================================================================
diff -u -r772 -r814
--- dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 772)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 814)
@@ -32,7 +32,7 @@
///
/// Result of the prepare
///
- public PrepareResult Prepare(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput)
+ public PrepareResult Prepare(DamKernelInput damKernelInput, int iterationIndex, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput)
{
var damPipingBlighOutput = new DamPipingBlighOutput()
{
Index: dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs
===================================================================
diff -u -r765 -r814
--- dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs (.../DamPipingSellmeijer4ForcesKernelWrapperTests.cs) (revision 765)
+++ dam engine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs (.../DamPipingSellmeijer4ForcesKernelWrapperTests.cs) (revision 814)
@@ -83,7 +83,7 @@
// Prepare the wrapper. Result is input for the calculation dll
IKernelDataInput damPipingInput;
IKernelDataOutput kernelDataOutput;
- kernelWrapper.Prepare(damKernelInput, out damPipingInput, out kernelDataOutput);
+ kernelWrapper.Prepare(damKernelInput, 0, out damPipingInput, out kernelDataOutput);
// Validate the input
List messages;
@@ -142,7 +142,7 @@
var kernelWrapper = new DamPipingSellmeijer4ForcesKernelWrapper();
IKernelDataInput kernelDataInput;
IKernelDataOutput kernelDataOutput;
- kernelWrapper.Prepare(damKernelInput, out kernelDataInput, out kernelDataOutput);
+ kernelWrapper.Prepare(damKernelInput, 0, out kernelDataInput, out kernelDataOutput);
DamPipingSellmeijer4ForcesInput damPipingInput = (DamPipingSellmeijer4ForcesInput) kernelDataInput;
Assert.AreEqual(1.0, damPipingInput.HRiver, diff);
Assert.AreEqual(0.0, damPipingInput.HExit, diff);