Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs
===================================================================
diff -u -r1211 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 1211)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 1212)
@@ -74,7 +74,9 @@
var location = damKernelInput.Location;
double waterLevel = damKernelInput.RiverLevelHigh;
UpliftSituation upliftSituation;
- PlLines plLines = PlLinesHelper.CreatePlLinesForPiping(location, soilProfile1D, waterLevel, out upliftSituation);
+ PlLines plLines = PlLinesHelper.CreatePlLinesForPiping(location, soilProfile1D, waterLevel,
+ damKernelInput.DamFailureMechanismeCalculationSpecification.AssessmentScenarioJobSettings.HydraulicShortcutType,
+ out upliftSituation);
EvaluateUpliftSituation(damKernelInput, out kernelDataInput, plLines, damPipingBlighInput, waterLevel, damPipingBlighOutput);
return PrepareResult.Successful;
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs
===================================================================
diff -u -r1211 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs (.../DamMacroStabilityOutwardsKernelWrapper.cs) (revision 1211)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapper.cs (.../DamMacroStabilityOutwardsKernelWrapper.cs) (revision 1212)
@@ -205,7 +205,9 @@
damKernelInput.RiverLevelLow,
subSoilScenario,
null, requiredSafetyFactor.Value,
- kernelDataInput.FailureMechanismParametersMStab, out errorMessages);
+ kernelDataInput.FailureMechanismParametersMStab,
+ damKernelInput.DamFailureMechanismeCalculationSpecification.AssessmentScenarioJobSettings,
+ out errorMessages);
mstabXml.Save(stabilityProjectFilename + ".xml");
return mstabXml;
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityCommon/MStabXmlDoc.cs
===================================================================
diff -u -r1203 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityCommon/MStabXmlDoc.cs (.../MStabXmlDoc.cs) (revision 1203)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityCommon/MStabXmlDoc.cs (.../MStabXmlDoc.cs) (revision 1212)
@@ -64,6 +64,7 @@
/// The embankment design parameters.
/// The required safety factor.
/// The input failure mechanism parameters m stab.
+ ///
/// The error messages.
///
///
@@ -75,6 +76,7 @@
SoilGeometryProbability subSoilScenario,
EmbankmentDesignParameters embankmentDesignParameters,
double requiredSafetyFactor, FailureMechanismParametersMStab inputFailureMechanismParametersMStab,
+ RegionalAssessmentScenarioJobSettings regionalAssessmentScenarioJobSettings,
out List errorMessages)
{
@@ -199,7 +201,7 @@
var waterLevel = riverLevelHigh;
UpliftSituation upliftSituation;
failureMechanismParametersMStab.PlLines = PlLinesHelper.CreatePlLinesForStability(
- location, subSoilScenario, waterLevel, soilGeometry2DName, riverLevelLow, out upliftSituation);
+ location, subSoilScenario, waterLevel, soilGeometry2DName, riverLevelLow, regionalAssessmentScenarioJobSettings, out upliftSituation);
// Slip circle definition for Uplift Van; TODO: Combine with code in StabilityCalculation
if (failureMechanismParametersMStab.MStabParameters.Model == MStabModelType.UpliftVan)
Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/RegionalAssessmentScenarioJobSettings.cs
===================================================================
diff -u
--- DamEngine/trunk/src/Deltares.DamEngine.Data/General/RegionalAssessmentScenarioJobSettings.cs (revision 0)
+++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/RegionalAssessmentScenarioJobSettings.cs (revision 1212)
@@ -0,0 +1,87 @@
+// Copyright (C) Stichting Deltares 2018. All rights reserved.
+//
+// This file is part of the Dam Engine.
+//
+// The Dam Engine is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+namespace Deltares.DamEngine.Data.General
+{
+ ///
+ /// Class holding the settings for a regional assessment scenario job
+ ///
+ public class RegionalAssessmentScenarioJobSettings
+ {
+ private LoadSituation loadSituation = LoadSituation.Wet;
+ private DikeDrySensitivity dikeDrySensitivity = DikeDrySensitivity.None;
+ private HydraulicShortcutType hydraulicShortcutType = HydraulicShortcutType.NoHydraulicShortcut;
+
+ ///
+ /// Gets or sets the load situation.
+ ///
+ ///
+ /// The load situation.
+ ///
+ public LoadSituation LoadSituation
+ {
+ get
+ {
+ return loadSituation;
+ }
+ set
+ {
+ loadSituation = value;
+ }
+ }
+
+ ///
+ /// Gets or sets the dike dry sensitivity.
+ ///
+ ///
+ /// The dike dry sensitivity.
+ ///
+ public DikeDrySensitivity DikeDrySensitivity
+ {
+ get
+ {
+ return dikeDrySensitivity;
+ }
+ set
+ {
+ dikeDrySensitivity = value;
+ }
+ }
+
+ ///
+ /// Gets or sets the type of the hydraulic shortcut.
+ ///
+ ///
+ /// The type of the hydraulic shortcut.
+ ///
+ public HydraulicShortcutType HydraulicShortcutType
+ {
+ get
+ {
+ return hydraulicShortcutType;
+ }
+ set
+ {
+ hydraulicShortcutType = value;
+ }
+ }
+ }
+}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityCommon/MStabXmlDocTests.cs
===================================================================
diff -u -r1149 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityCommon/MStabXmlDocTests.cs (.../MStabXmlDocTests.cs) (revision 1149)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityCommon/MStabXmlDocTests.cs (.../MStabXmlDocTests.cs) (revision 1212)
@@ -85,7 +85,9 @@
riverLevelLow,
subSoilScenario,
null, requiredSafetyFactor,
- failureMechanismParametersMStab, out errorMessages);
+ failureMechanismParametersMStab,
+ new RegionalAssessmentScenarioJobSettings(),
+ out errorMessages);
mstabXml.Save(xmlFileName);
Assert.IsTrue(File.Exists(xmlFileName));
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs
===================================================================
diff -u -r1211 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs (.../DamPipingSellmeijerVnkKernelWrapper.cs) (revision 1211)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs (.../DamPipingSellmeijerVnkKernelWrapper.cs) (revision 1212)
@@ -67,7 +67,9 @@
var location = damKernelInput.Location;
double riverLevel = damKernelInput.RiverLevelHigh;
UpliftSituation upliftSituation;
- var plLines = PlLinesHelper.CreatePlLinesForPiping(location, soilProfile1D, riverLevel, out upliftSituation);
+ var plLines = PlLinesHelper.CreatePlLinesForPiping(location, soilProfile1D, riverLevel,
+ damKernelInput.DamFailureMechanismeCalculationSpecification.AssessmentScenarioJobSettings.HydraulicShortcutType,
+ out upliftSituation);
var upliftLocationDeterminator = new UpliftLocationDeterminator
{
PlLines = plLines,
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/DamPipingHelper.cs
===================================================================
diff -u -r1122 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/DamPipingHelper.cs (.../DamPipingHelper.cs) (revision 1122)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/DamPipingHelper.cs (.../DamPipingHelper.cs) (revision 1212)
@@ -76,7 +76,10 @@
ThrowHelper.ThrowIfArgumentNull(soilProfile.BottomAquiferLayer, string.Format(Resources.NoBottomAquiferLayer, soilProfile.Name));
UpliftSituation upliftSituation;
- plLines = PlLinesHelper.CreatePlLinesForPiping(damKernelInput.Location, damKernelInput.SubSoilScenario.SoilProfile1D, damKernelInput.RiverLevelHigh, out upliftSituation);
+ plLines = PlLinesHelper.CreatePlLinesForPiping(damKernelInput.Location, damKernelInput.SubSoilScenario.SoilProfile1D,
+ damKernelInput.RiverLevelHigh,
+ damKernelInput.DamFailureMechanismeCalculationSpecification.AssessmentScenarioJobSettings.HydraulicShortcutType,
+ out upliftSituation);
UpliftLocationDeterminator upliftLocationDeterminator = new UpliftLocationDeterminator
{
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/RegionalAssessment/RegionalScenariosCalculationTests.cs
===================================================================
diff -u -r1185 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/RegionalAssessment/RegionalScenariosCalculationTests.cs (.../RegionalScenariosCalculationTests.cs) (revision 1185)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/RegionalAssessment/RegionalScenariosCalculationTests.cs (.../RegionalScenariosCalculationTests.cs) (revision 1212)
@@ -54,19 +54,6 @@
var engineInterface = new EngineInterface(inputString);
Assert.IsNotNull(engineInterface.DamProjectData);
- // Fake data that is not properly cummunicated as of yet (8/2/2018)
- engineInterface.DamProjectData.DamProjectType = DamProjectType.AssessmentRegional;
- //var dj = engineInterface.DamProjectData.DikeJob;
- // engineInterface.DamProjectData.LocationJobs[0].Location.BoezemLevelHbp = -0.5;
- // engineInterface.DamProjectData.LocationJobs[0].Location.BoezemLevelTp = -0.15;
- // engineInterface.DamProjectData.LocationJobs[0].Location.BoezemLevelLbp = -0.3;
- // engineInterface.DamProjectData.LocationJobs[0].Location.DredgingDepth = -4.8;
- // engineInterface.DamProjectData.LocationJobs[0].Location.ModelFactors.RequiredSafetyFactorStabilityInnerSlope = 1;
- // engineInterface.DamProjectData.LocationJobs[0].Location.ModelFactors.RequiredSafetyFactorPiping = 1;
- // engineInterface.DamProjectData.LocationJobs[0].Location.ModelFactors.RequiredSafetyFactorStabilityOuterSlope = 1;
- // engineInterface.DamProjectData.LocationJobs[0].Location.ModelFactors.UpliftCriterionStability = 1.2;
- // engineInterface.DamProjectData.LocationJobs[0].Location.ModelFactors.UpliftCriterionPiping = 1.2;
-
engineInterface.DamProjectData.MaxCalculationCores = 1;
string outputString = engineInterface.Run();
@@ -79,47 +66,47 @@
// scenario03: 3 results
Assert.AreEqual(3, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults.Length);
Assert.AreEqual("Segment_235_1D1", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults[0].SoilProfileName);
- Assert.AreEqual(0.261, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults[0].RegionalResult.SafetyFactor);
+ Assert.AreEqual(0.261, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults[0].RegionalResult.SafetyFactor, tolerance);
Assert.AreEqual("Segment_235_1D3", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults[1].SoilProfileName);
- Assert.AreEqual(0.384, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults[1].RegionalResult.SafetyFactor);
+ Assert.AreEqual(0.384, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults[1].RegionalResult.SafetyFactor, tolerance);
Assert.AreEqual("Segment_235_1D5", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults[2].SoilProfileName);
- Assert.AreEqual(0.697, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults[2].RegionalResult.SafetyFactor);
+ Assert.AreEqual(0.697, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[0].RegionalScenarioProfileResults[2].RegionalResult.SafetyFactor, tolerance);
// scenario07: 3 results
Assert.AreEqual(3, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[1].RegionalScenarioProfileResults.Length);
Assert.AreEqual("Segment_235_1D1", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[1].RegionalScenarioProfileResults[0].SoilProfileName);
- Assert.AreEqual(0.251, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[1].RegionalScenarioProfileResults[0].RegionalResult.SafetyFactor);
+ Assert.AreEqual(0.251, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[1].RegionalScenarioProfileResults[0].RegionalResult.SafetyFactor, tolerance);
Assert.AreEqual("Segment_235_1D3", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[1].RegionalScenarioProfileResults[1].SoilProfileName);
- Assert.AreEqual(0.452, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[1].RegionalScenarioProfileResults[1].RegionalResult.SafetyFactor);
+ Assert.AreEqual(0.452, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[1].RegionalScenarioProfileResults[1].RegionalResult.SafetyFactor, tolerance);
Assert.AreEqual("Segment_235_1D5", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[1].RegionalScenarioProfileResults[2].SoilProfileName);
- Assert.AreEqual(0.576, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[1].RegionalScenarioProfileResults[2].RegionalResult.SafetyFactor);
+ Assert.AreEqual(0.576, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[1].RegionalScenarioProfileResults[2].RegionalResult.SafetyFactor, tolerance);
// scenario08: 9 results
- Assert.AreEqual(9, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults.Length);
- Assert.AreEqual("Segment_235_1D2", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[0].SoilProfileName);
- Assert.AreEqual(0.373, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[0].RegionalResult.SafetyFactor);
- Assert.AreEqual("Segment_235_1D4", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[1].SoilProfileName);
- Assert.AreEqual(0.601, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[1].RegionalResult.SafetyFactor);
- Assert.AreEqual("Segment_235_1D6", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[2].SoilProfileName);
- Assert.AreEqual(0.761, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[2].RegionalResult.SafetyFactor);
- Assert.AreEqual("Segment_235_1D7", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[3].SoilProfileName);
- Assert.AreEqual(0.389, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[3].RegionalResult.SafetyFactor);
- Assert.AreEqual("Segment_235_1D8", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[4].SoilProfileName);
- Assert.AreEqual(0.369, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[4].RegionalResult.SafetyFactor);
- Assert.AreEqual("Segment_235_1D9", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[5].SoilProfileName);
- Assert.AreEqual(0.618, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[5].RegionalResult.SafetyFactor);
- Assert.AreEqual("Segment_235_1D10", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[6].SoilProfileName);
- Assert.AreEqual(0.597, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[6].RegionalResult.SafetyFactor);
- Assert.AreEqual("Segment_235_1D11", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[7].SoilProfileName);
- Assert.AreEqual(0.779, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[7].RegionalResult.SafetyFactor);
- Assert.AreEqual("Segment_235_1D12", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[8].SoilProfileName);
- Assert.AreEqual(0.757, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[8].RegionalResult.SafetyFactor);
+ Assert.AreEqual(9, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults.Length);
+ Assert.AreEqual("Segment_235_1D2", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[0].SoilProfileName);
+ Assert.AreEqual(0.373, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[0].RegionalResult.SafetyFactor, tolerance);
+ Assert.AreEqual("Segment_235_1D4", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[1].SoilProfileName);
+ Assert.AreEqual(0.601, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[1].RegionalResult.SafetyFactor, tolerance);
+ Assert.AreEqual("Segment_235_1D6", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[2].SoilProfileName);
+ Assert.AreEqual(0.761, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[2].RegionalResult.SafetyFactor, tolerance);
+ Assert.AreEqual("Segment_235_1D7", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[3].SoilProfileName);
+ Assert.AreEqual(0.389, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[3].RegionalResult.SafetyFactor, tolerance);
+ Assert.AreEqual("Segment_235_1D8", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[4].SoilProfileName);
+ Assert.AreEqual(0.369, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[4].RegionalResult.SafetyFactor, tolerance);
+ Assert.AreEqual("Segment_235_1D9", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[5].SoilProfileName);
+ Assert.AreEqual(0.618, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[5].RegionalResult.SafetyFactor, tolerance);
+ Assert.AreEqual("Segment_235_1D10", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[6].SoilProfileName);
+ Assert.AreEqual(0.597, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[6].RegionalResult.SafetyFactor, tolerance);
+ Assert.AreEqual("Segment_235_1D11", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[7].SoilProfileName);
+ Assert.AreEqual(0.779, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[7].RegionalResult.SafetyFactor, tolerance);
+ Assert.AreEqual("Segment_235_1D12", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[8].SoilProfileName);
+ Assert.AreEqual(0.757, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[8].RegionalResult.SafetyFactor, tolerance);
// scenario10: 3 results
- Assert.AreEqual(3, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults.Length);
- Assert.AreEqual("Segment_235_1D1", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[0].SoilProfileName);
- Assert.AreEqual(90.00, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[0].RegionalResult.SafetyFactor);
- Assert.AreEqual("Segment_235_1D3", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[1].SoilProfileName);
- Assert.AreEqual(90.00, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[1].RegionalResult.SafetyFactor);
- Assert.AreEqual("Segment_235_1D5", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[2].SoilProfileName);
- Assert.AreEqual(90.00, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[3].RegionalScenarioProfileResults[2].RegionalResult.SafetyFactor);
+ Assert.AreEqual(3, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults.Length);
+ Assert.AreEqual("Segment_235_1D1", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[0].SoilProfileName);
+ Assert.AreEqual(90.00, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[0].RegionalResult.SafetyFactor, tolerance);
+ Assert.AreEqual("Segment_235_1D3", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[1].SoilProfileName);
+ Assert.AreEqual(90.00, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[1].RegionalResult.SafetyFactor, tolerance);
+ Assert.AreEqual("Segment_235_1D5", output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[2].SoilProfileName);
+ Assert.AreEqual(90.00, output.Results.CalculationResults.LocationResults[0].RegionalScenariosResult.RegionalScenarioResult[2].RegionalScenarioProfileResults[2].RegionalResult.SafetyFactor, tolerance);
}
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/PlLinesHelper.cs
===================================================================
diff -u -r1122 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/PlLinesHelper.cs (.../PlLinesHelper.cs) (revision 1122)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/PlLinesHelper.cs (.../PlLinesHelper.cs) (revision 1212)
@@ -35,12 +35,16 @@
/// Creates the pl lines.
///
/// The location.
- /// The soil profile.
+ ///
/// The water level.
+ ///
+ ///
+ ///
/// The uplift situation.
///
public static PlLines CreatePlLinesForStability(Location location, SoilGeometryProbability subSoilScenario,
- double waterLevel, string soilGeometry2DName, double? waterLevelRiverLow, out UpliftSituation upliftSituation)
+ double waterLevel, string soilGeometry2DName, double? waterLevelRiverLow, RegionalAssessmentScenarioJobSettings regionalAssessmentScenarioJobSettings,
+ out UpliftSituation upliftSituation)
{
var plLinesCreator = new PlLinesCreator.PlLinesCreator
{
@@ -63,11 +67,28 @@
PlLineOffsetBelowDikeTopAtPolder = location.PlLineOffsetBelowDikeTopAtPolder,
PlLineOffsetBelowShoulderBaseInside = location.PlLineOffsetBelowShoulderBaseInside,
PlLineOffsetBelowDikeToeAtPolder = location.PlLineOffsetBelowDikeToeAtPolder,
+ PlLineOffsetBelowDikeCrestMiddle = location.PlLineOffsetBelowDikeCrestMiddle,
+ UsePlLineOffsetFactorBelowShoulderCrest = location.UsePlLineOffsetFactorBelowShoulderCrest,
DikeEmbankmentMaterial = location.GetDikeEmbankmentSoil(),
- IsHydraulicShortcut = false, // TODO: Regional
+ IsHydraulicShortcut = (regionalAssessmentScenarioJobSettings.HydraulicShortcutType == HydraulicShortcutType.HydraulicShortcut),
XSoilGeometry2DOrigin = location.XSoilGeometry2DOrigin,
+ IsUseOvenDryUnitWeight = (regionalAssessmentScenarioJobSettings.DikeDrySensitivity == DikeDrySensitivity.Dry),
SoilList = location.SoilList
};
+ if ((regionalAssessmentScenarioJobSettings.DikeDrySensitivity == DikeDrySensitivity.Dry) &&
+ (regionalAssessmentScenarioJobSettings.LoadSituation == LoadSituation.Dry))
+ {
+ // For dry situation other offsets have to be used as in normal situation
+// plLinesCreator.PlLineOffsetBelowDikeTopAtRiver = location.PLLineOffsetDryBelowDikeTopAtRiver; Todo Bka: implement as soon as Tom has solved this.
+// plLinesCreator.PlLineOffsetBelowDikeTopAtPolder = location.PLLineOffsetDryBelowDikeTopAtPolder;
+// plLinesCreator.PlLineOffsetBelowShoulderBaseInside = location.PLLineOffsetDryBelowShoulderBaseInside;
+// plLinesCreator.PlLineOffsetBelowDikeToeAtPolder = location.PLLineOffsetDryBelowDikeToeAtPolder;
+ plLinesCreator.PlLineOffsetBelowDikeCrestMiddle = location.PlLineOffsetDryBelowDikeCrestMiddle;
+ plLinesCreator.PlLineOffsetFactorBelowShoulderCrest = location.PlLineOffsetDryFactorBelowShoulderCrest;
+ plLinesCreator.UsePlLineOffsetBelowDikeCrestMiddle = location.UsePlLineOffsetDryBelowDikeCrestMiddle;
+ plLinesCreator.UsePlLineOffsetFactorBelowShoulderCrest = location.UsePlLineOffsetDryFactorBelowShoulderCrest;
+ plLinesCreator.WaterLevelPolder = location.PolderLevelLow;
+ }
var plLines = plLinesCreator.CreateAllPlLines(location);
upliftSituation.Pl3HeadAdjusted = plLinesCreator.Pl3HeadAdjusted;
upliftSituation.Pl3LocationXMinUplift = plLinesCreator.Pl3LocationXMinUplift;
@@ -85,9 +106,11 @@
/// The location.
/// The soil profile.
/// The water level.
+ ///
/// The uplift situation.
///
- public static PlLines CreatePlLinesForPiping(Location location, SoilProfile1D soilProfile, double waterLevel, out UpliftSituation upliftSituation)
+ public static PlLines CreatePlLinesForPiping(Location location, SoilProfile1D soilProfile, double waterLevel,
+ HydraulicShortcutType hydraulicShortcut, out UpliftSituation upliftSituation)
{
var plLinesCreator = new PlLinesCreator.PlLinesCreator
{
@@ -105,7 +128,7 @@
PlLineOffsetBelowDikeTopAtRiver = location.PlLineOffsetBelowDikeTopAtRiver,
PlLineOffsetBelowDikeTopAtPolder = location.PlLineOffsetBelowDikeTopAtPolder,
DikeEmbankmentMaterial = location.GetDikeEmbankmentSoil(),
- IsHydraulicShortcut = false, // TODO: Regional
+ IsHydraulicShortcut = hydraulicShortcut == HydraulicShortcutType.HydraulicShortcut,
XSoilGeometry2DOrigin = location.XSoilGeometry2DOrigin
};
var plLines = plLinesCreator.CreateAllPlLines(location);
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesAssessmentRegional/RegionalScenariosCalculation.cs
===================================================================
diff -u -r1185 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesAssessmentRegional/RegionalScenariosCalculation.cs (.../RegionalScenariosCalculation.cs) (revision 1185)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesAssessmentRegional/RegionalScenariosCalculation.cs (.../RegionalScenariosCalculation.cs) (revision 1212)
@@ -358,16 +358,45 @@
}
///
- /// Process a job for failuremechanism Piping
+ /// Process a job for failuremechanism Stability
///
///
+ private void ProcessJobStability(RegionalScenarioProfileResult job)
+ {
+ var currentSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; // must this be a copy?
+ currentSpecification.FailureMechanismSystemType = job.FailureMechanismType;
+ currentSpecification.FailureMechanismParametersMStab.MStabParameters.Model = job.MstabModelOption;
+ currentSpecification.AssessmentScenarioJobSettings.LoadSituation = job.LoadSituation;
+ currentSpecification.AssessmentScenarioJobSettings.DikeDrySensitivity = job.DikeDrySensitivity;
+ currentSpecification.AssessmentScenarioJobSettings.HydraulicShortcutType = job.HydraulicShortcutType;
+ var calculator = CreateKernelWrapper(currentSpecification);
+ switch (job.LoadSituation)
+ {
+ case LoadSituation.Dry:
+ job.Location.BoezemLevelHbp = job.Location.BoezemLevelLbp;
+ break;
+ case LoadSituation.Wet:
+ job.Location.BoezemLevelHbp = job.Location.BoezemLevelTp;
+ job.Location.BoezemLevelLbp = job.Location.BoezemLevelTp;
+ break;
+ }
+ PerformJob(job, calculator, currentSpecification);
+ }
+
+ ///
+ /// Process a job for failuremechanism Piping
+ ///
+ ///
private void ProcessJobPiping(RegionalScenarioProfileResult job)
{
if (job.Location.ModelFactors.UpliftCriterionPiping.HasValue)
{
var currentSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; // must this be a copy?
currentSpecification.FailureMechanismSystemType = job.FailureMechanismType;
currentSpecification.PipingModelType = job.PipingModelOption;
+ currentSpecification.AssessmentScenarioJobSettings.LoadSituation = job.LoadSituation;
+ currentSpecification.AssessmentScenarioJobSettings.DikeDrySensitivity = job.DikeDrySensitivity;
+ currentSpecification.AssessmentScenarioJobSettings.HydraulicShortcutType = job.HydraulicShortcutType;
var calculator = CreateKernelWrapper(currentSpecification);
// For piping waterlevel needs to be set here. Piping kernel only uses waterlevelhigh which is set from BoezemLevelHbp.
switch (job.LoadSituation)
@@ -379,41 +408,7 @@
job.Location.BoezemLevelHbp = job.Location.BoezemLevelTp;
break;
}
- PerformJob(job, calculator, currentSpecification);
-
- // var modelParametersForPLLines = new ModelParametersForPlLines();
- // var calculator = GetCalculatorForPipingModel(job, modelParametersForPLLines);
- // double waterLevel;
- // switch (job.LoadSituation)
- // {
- // case LoadSituation.Dry:
- // waterLevel = job.Location.BoezemLevelLbp;
- // break;
- // default: // LoadSituation.Wet
- // waterLevel = job.Location.BoezemLevelTp;
- // break;
- // }
- // //job.SoilGeometryProbability.SoilProfile1D.EnsureUniqueLayerIds();
- // var calculationName = GetCalculationNameForPipingCalculator(job);
- // calculator.FilenameCalculation = Path.Combine(Path.Combine(damProjectData.ProjectPath, job.FailureMechanismType.ToString()), calculationName);
- // calculator.IsHydraulicShortcut = (job.HydraulicShortcutType == HydraulicShortcutType.HydraulicShortcut);
- // double? pipingFactor = calculator.CalculatePipingFactor(job.Location, job.Location.SurfaceLine, job.SoilGeometryProbability.SoilProfile1D, waterLevel);
- // job.BaseFileName = calculator.FilenameCalculation;
- //
- // job.RegionalResultType = RegionalResultType.SafetyFactor;
- // if (pipingFactor.HasValue)
- // {
- // job.SafetyFactor = pipingFactor.Value;
- // job.CalculationResult = CalculationResult.Succeeded;
- // job.ProbabilityOfFailure = double.NaN;
- // job.RegionalResultType = RegionalResultType.SafetyFactor;
- // }
- //
- // else
- // {
- // job.SafetyFactor = double.NaN;
- // job.CalculationResult = CalculationResult.RunFailed;
- // }
+ PerformJob(job, calculator, currentSpecification);
}
else
{
@@ -433,109 +428,6 @@
return kernelWrapper;
}
- private List CreateKernelWrapperforJob(IKernelWrapper kernelWrapper, FailureMechanismSystemType failureMechanismType, ScenarioType scenarioType,
- Location location, SoilGeometryProbability soilGeometryProbability, out IKernelDataInput kernelDataInput,
- out IKernelDataOutput kernelDataOutput, out DamKernelInput damKernelInput)
- {
- var calculationMessages = new List();
- // Prepare input
- damKernelInput = new DamKernelInput();
- var projectPath = damProjectData.ProjectPath != "" ? damProjectData.ProjectPath : Directory.GetCurrentDirectory();
- damKernelInput.ProjectDir = projectPath;
- damKernelInput.CalculationDir = Path.Combine(projectPath, damProjectData.CalculationMap);
- damKernelInput.Location = location;
- damKernelInput.SubSoilScenario = soilGeometryProbability;
- damKernelInput.DamFailureMechanismeCalculationSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification;
- damKernelInput.RiverLevelHigh = damKernelInput.Location.BoezemLevelHbp;
- damKernelInput.RiverLevelLow = damKernelInput.Location.BoezemLevelLbp;
- damKernelInput.FilenamePrefix = string.Format("Loc({0})_Sce({1})", location.Name, scenarioType);
- damKernelInput.SubSoilScenario.SegmentFailureMechanismType = failureMechanismType;
- 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.
- if (prepareResult == PrepareResult.Successful)
- {
-
- }
- else
- {
- if (prepareResult == PrepareResult.NotRelevant)
- {
- calculationMessages.Add(new LogMessage(LogMessageType.Info, null,
- string.Format(Resources.DesignCalculatorIrrelevant, location.Name,
- soilGeometryProbability.ToString(), ""))); // TODO #The correct regional scenario ID?
- }
- if (prepareResult == PrepareResult.Failed)
- {
- calculationMessages.Add(new LogMessage(LogMessageType.Error, null,
- string.Format(Resources.DesignCalculatorPrepareError, location.Name,
- soilGeometryProbability.ToString(), ""))); // TODO #The correct regional scenario ID?
- }
- }
- return calculationMessages;
- }
-
- private string GetCalculationNameForPipingCalculator(RegionalScenarioProfileResult job)
- {
- string calculationName;
- switch (job.PipingModelOption)
- {
- case PipingModelType.SellmeijerVnk : calculationName = String.Format("Calc(SellmeijerVnk)_Loc({0})_Pro({1}))",
- job.LocationName, job.SoilProfileName);
- break;
- case PipingModelType.Sellmeijer4Forces: calculationName = String.Format("Calc(Sellmeijer4Forces)_Loc({0})_Pro({1}))",
- job.LocationName, job.SoilProfileName);
- break;
- // Set Sellmeijer4Forces as default.
- default: calculationName = String.Format("Calc(Sellmeijer4Forces)_Loc({0})_Pro({1}))",
- job.LocationName, job.SoilProfileName);
- break;
- }
- calculationName = Regex.Replace(calculationName, @"[\\\/:\*\?""'<>|.]", "_");
- return calculationName;
- }
-
-// ///
-// /// Determines the proper calculator for pipng
-// ///
-// ///
-// ///
-// /// proper piping calculator
-// private PipingCalculator GetCalculatorForPipingModel(RegionalScenarioProfileResult job, ModelParametersForPLLines modelParametersForPlLines)
-// {
-// PipingCalculator calculator;
-// switch (job.PipingModelOption)
-// {
-// case PipingModelType.SellmeijerVnk: calculator = new PipingCalculatorSellmeijer(modelParametersForPLLines,
-// 1.0, null, null, null, job.Location.ModelFactors.UpliftCriterionPiping.Value);
-// break;
-// case PipingModelType.Sellmeijer4Forces: calculator = new PipingCalculatorSellmeijer4Forces(modelParametersForPLLines,
-// 1.0, null, null, job.Location.ModelFactors.UpliftCriterionPiping.Value);
-// break;
-// case PipingModelType.Bligh: calculator = new PipingCalculatorBligh(modelParametersForPLLines,
-// 1.0, null, null, job.Location.ModelFactors.UpliftCriterionPiping.Value);
-// break;
-// default:
-// throw new RegionalScenariosCalculationException(String.Format("Piping model {0} not yet implemented for scenario calculation", job.PipingModelOption));
-// }
-// return calculator;
-// }
-
- ///
- /// Process a job for failuremechanism Stability
- ///
- ///
- private void ProcessJobStability(RegionalScenarioProfileResult job)
- {
- var currentSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; // must this be a copy?
- currentSpecification.FailureMechanismSystemType = job.FailureMechanismType;
- currentSpecification.FailureMechanismParametersMStab.MStabParameters.Model = job.MstabModelOption;
- var calculator = CreateKernelWrapper(currentSpecification);
-
- PerformJob(job, calculator, currentSpecification);
- }
-
private void PerformJob(RegionalScenarioProfileResult job, IKernelWrapper calculator, DamFailureMechanismeCalculationSpecification currentSpecification)
{
IKernelDataInput kernelDataInput;
@@ -605,6 +497,50 @@
}
}
+ private List CreateKernelWrapperforJob(IKernelWrapper kernelWrapper, FailureMechanismSystemType failureMechanismType, ScenarioType scenarioType,
+ Location location, SoilGeometryProbability soilGeometryProbability, out IKernelDataInput kernelDataInput,
+ out IKernelDataOutput kernelDataOutput, out DamKernelInput damKernelInput)
+ {
+ // Todo Bka: eliminate damProjectData usages.
+ var calculationMessages = new List();
+ // Prepare input
+ damKernelInput = new DamKernelInput();
+ var projectPath = damProjectData.ProjectPath != "" ? damProjectData.ProjectPath : Directory.GetCurrentDirectory();
+ damKernelInput.ProjectDir = projectPath;
+ damKernelInput.CalculationDir = Path.Combine(projectPath, damProjectData.CalculationMap);
+ damKernelInput.Location = location;
+ damKernelInput.SubSoilScenario = soilGeometryProbability;
+ damKernelInput.DamFailureMechanismeCalculationSpecification = damProjectData.DamProjectCalculationSpecification.CurrentSpecification;
+ damKernelInput.RiverLevelHigh = damKernelInput.Location.BoezemLevelHbp;
+ damKernelInput.RiverLevelLow = damKernelInput.Location.BoezemLevelLbp;
+ damKernelInput.FilenamePrefix = string.Format("Loc({0})_Sce({1})", location.Name, scenarioType);
+ damKernelInput.SubSoilScenario.SegmentFailureMechanismType = failureMechanismType;
+ 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.
+ if (prepareResult == PrepareResult.Successful)
+ {
+
+ }
+ else
+ {
+ if (prepareResult == PrepareResult.NotRelevant)
+ {
+ calculationMessages.Add(new LogMessage(LogMessageType.Info, null,
+ string.Format(Resources.DesignCalculatorIrrelevant, location.Name,
+ soilGeometryProbability.ToString(), ""))); // TODO #The correct regional scenario ID?
+ }
+ if (prepareResult == PrepareResult.Failed)
+ {
+ calculationMessages.Add(new LogMessage(LogMessageType.Error, null,
+ string.Format(Resources.DesignCalculatorPrepareError, location.Name,
+ soilGeometryProbability.ToString(), ""))); // TODO #The correct regional scenario ID?
+ }
+ }
+ return calculationMessages;
+ }
+
///
/// Log messages
///
@@ -666,7 +602,6 @@
}
// Combine results
-
foreach (var scenarioResult in scenariosResult.RegionalScenarioResults)
{
CombineProfiles(scenarioResult);
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs
===================================================================
diff -u -r1211 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs (.../DamMacroStabilityInwardsKernelWrapper.cs) (revision 1211)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityInwards/DamMacroStabilityInwardsKernelWrapper.cs (.../DamMacroStabilityInwardsKernelWrapper.cs) (revision 1212)
@@ -68,6 +68,10 @@
CalculationResult = CalculationResult.NoRun
};
kernelDataOutput = damMacroStabilityOutput;
+ if (damKernelInput.DamFailureMechanismeCalculationSpecification == null)
+ {
+ damKernelInput.DamFailureMechanismeCalculationSpecification = new DamFailureMechanismeCalculationSpecification();
+ }
// Make sure the gridposition is Right.
FailureMechanismParametersMStab.MStabParameters.GridPosition = MStabGridPosition.Right;
@@ -325,7 +329,9 @@
damKernelInput.RiverLevelLow,
subSoilScenario,
null, requiredSafetyFactor.Value,
- kernelDataInput.FailureMechanismParametersMStab, out errorMessages);
+ kernelDataInput.FailureMechanismParametersMStab,
+ damKernelInput.DamFailureMechanismeCalculationSpecification.AssessmentScenarioJobSettings,
+ out errorMessages);
mstabXml.Save(stabilityProjectFilename + ".xml");
return mstabXml;
@@ -501,7 +507,9 @@
0.0,
subSoilScenario,
null, location.ModelFactors.RequiredSafetyFactorStabilityInnerSlope.Value,
- damMacroStabilityInput.FailureMechanismParametersMStab, out errorMessages);
+ damMacroStabilityInput.FailureMechanismParametersMStab,
+ damKernelInput.DamFailureMechanismeCalculationSpecification.AssessmentScenarioJobSettings,
+ out errorMessages);
mstabXML.Save(initialgeometryFile + ".xml");
damMacroStabilityInput.DGeoStabilityInputFileName = initialgeometryFile;
Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/DamFailureMechanismeCalculationSpecification.cs
===================================================================
diff -u -r877 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Data/General/DamFailureMechanismeCalculationSpecification.cs (.../DamFailureMechanismeCalculationSpecification.cs) (revision 877)
+++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/DamFailureMechanismeCalculationSpecification.cs (.../DamFailureMechanismeCalculationSpecification.cs) (revision 1212)
@@ -34,15 +34,17 @@
private Enum calculationModel;
private FailureMechanismParametersMStab failureMechanismParametersMStab;
private static DamProjectType damProjectType;
- private StabilityKernelType stabilityKernelType = StabilityKernelType.DamClassic;
-
+ private StabilityKernelType stabilityKernelType = StabilityKernelType.DamClassic;
+ private RegionalAssessmentScenarioJobSettings regionalAssessmentScenarioJobSettings;
+
public DamFailureMechanismeCalculationSpecification()
{
//Todo interface
failureMechanismSystemType = FailureMechanismSystemType.StabilityInside;
failureMechanismParametersMStab = new FailureMechanismParametersMStab();
CalculationModel = failureMechanismParametersMStab.MStabParameters.Model;
FailureMechanismParametersMStab.MStabParameters.GridPosition = MStabGridPosition.Right;
+ regionalAssessmentScenarioJobSettings = new RegionalAssessmentScenarioJobSettings();
ReadUserSettingsSlipCircleDefinition();
}
@@ -146,6 +148,24 @@
set { stabilityKernelType = value; }
}
+ ///
+ /// Gets or sets the assessment scenario job settings.
+ ///
+ ///
+ /// The assessment scenario job settings.
+ ///
+ public RegionalAssessmentScenarioJobSettings AssessmentScenarioJobSettings
+ {
+ get
+ {
+ return regionalAssessmentScenarioJobSettings;
+ }
+ set
+ {
+ regionalAssessmentScenarioJobSettings = value;
+ }
+ }
+
public void Assign(DamFailureMechanismeCalculationSpecification damFailureMechanismeCalculation)
{
this.FailureMechanismSystemType = damFailureMechanismeCalculation.failureMechanismSystemType;
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs
===================================================================
diff -u -r1211 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 1211)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 1212)
@@ -69,7 +69,9 @@
var location = damKernelInput.Location;
double waterLevel = damKernelInput.RiverLevelHigh;
UpliftSituation upliftSituation;
- var plLines = PlLinesHelper.CreatePlLinesForPiping(location, soilProfile1D, waterLevel, out upliftSituation);
+ var plLines = PlLinesHelper.CreatePlLinesForPiping(location, soilProfile1D, waterLevel,
+ damKernelInput.DamFailureMechanismeCalculationSpecification.AssessmentScenarioJobSettings.HydraulicShortcutType,
+ out upliftSituation);
EvaluateUpliftSituation(damKernelInput, out kernelDataInput, plLines, waterLevel, damPipingOutput);
return PrepareResult.Successful;
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Deltares.DamEngine.Data.csproj
===================================================================
diff -u -r1203 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Data/Deltares.DamEngine.Data.csproj (.../Deltares.DamEngine.Data.csproj) (revision 1203)
+++ DamEngine/trunk/src/Deltares.DamEngine.Data/Deltares.DamEngine.Data.csproj (.../Deltares.DamEngine.Data.csproj) (revision 1212)
@@ -42,6 +42,7 @@
+
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/Common/PlLinesHelperTests.cs
===================================================================
diff -u -r1121 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/Common/PlLinesHelperTests.cs (.../PlLinesHelperTests.cs) (revision 1121)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/Common/PlLinesHelperTests.cs (.../PlLinesHelperTests.cs) (revision 1212)
@@ -22,6 +22,7 @@
using Deltares.DamEngine.Calculators.KernelWrappers.Common;
using Deltares.DamEngine.Data.General;
using Deltares.DamEngine.Data.General.PlLines;
+using Deltares.DamEngine.Data.Geotechnics;
using Deltares.DamEngine.TestHelpers.Factories;
using NUnit.Framework;
@@ -31,7 +32,7 @@
public class PlLinesHelperTests
{
[Test]
- public void TestCreatePlLines()
+ public void TestCreatePlLinesNoHydraulicShortcut()
{
// expected values retrieved from debugging Dam Classic (rev.663)
// test CanCalculateThePipingFactorUsingSellmeijer4Forces
@@ -40,7 +41,8 @@
var soilProfile1D = FactoryForSoilProfiles.CreatePipingSellmeijerProfileWithOneSandlayer();
var riverLevel = 1.0;
UpliftSituation upliftSituation;
- var plLines = PlLinesHelper.CreatePlLinesForPiping(location, soilProfile1D, riverLevel, out upliftSituation);
+ var plLines = PlLinesHelper.CreatePlLinesForPiping(location, soilProfile1D, riverLevel, HydraulicShortcutType.NoHydraulicShortcut,
+ out upliftSituation);
Assert.AreEqual(4, plLines.PlLineCount);
Assert.AreEqual(8, plLines.Lines[PlLineType.Pl1].Points.Count);
Assert.IsTrue(new PlLinePoint(0.000, 1.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[0]));
@@ -58,5 +60,138 @@
Assert.AreEqual(0, plLines.Lines[PlLineType.Pl4].Points.Count);
}
+ [Test]
+ public void TestCreatePlLinesHydraulicShortcut()
+ {
+ // expected values retrieved from debugging Dam Classic (rev.663)
+ // test CanCalculateThePipingFactorUsingSellmeijer4Forces
+
+ // Same as TestCreatePlLinesNoHydraulicShortcut because HeadInPlLine3 is not given.
+ var location = new Location();
+ location.SurfaceLine = FactoryForSurfaceLines.CreateSurfaceLineTutorial1();
+ var soilProfile1D = FactoryForSoilProfiles.CreatePipingSellmeijerProfileWithOneSandlayer();
+ var riverLevel = 1.0;
+ UpliftSituation upliftSituation;
+ var plLines = PlLinesHelper.CreatePlLinesForPiping(location, soilProfile1D, riverLevel, HydraulicShortcutType.HydraulicShortcut,
+ out upliftSituation);
+ Assert.AreEqual(4, plLines.PlLineCount);
+ Assert.AreEqual(8, plLines.Lines[PlLineType.Pl1].Points.Count);
+ Assert.IsTrue(new PlLinePoint(0.000, 1.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[0]));
+ Assert.IsTrue(new PlLinePoint(14.900, 1.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[1]));
+ Assert.IsTrue(new PlLinePoint(34.500, 0.500).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[2]));
+ Assert.IsTrue(new PlLinePoint(40.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[3]));
+ Assert.IsTrue(new PlLinePoint(50.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[4]));
+ Assert.IsTrue(new PlLinePoint(58.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[5]));
+ Assert.IsTrue(new PlLinePoint(61.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[6]));
+ Assert.IsTrue(new PlLinePoint(75.000, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[7]));
+ Assert.AreEqual(0, plLines.Lines[PlLineType.Pl2].Points.Count);
+ Assert.AreEqual(2, plLines.Lines[PlLineType.Pl3].Points.Count);
+ Assert.IsTrue(new PlLinePoint(0.000, 1.000).LocationEquals(plLines.Lines[PlLineType.Pl3].Points[0]));
+ Assert.IsTrue(new PlLinePoint(75.000, 1.000).LocationEquals(plLines.Lines[PlLineType.Pl3].Points[1]));
+ Assert.AreEqual(0, plLines.Lines[PlLineType.Pl4].Points.Count);
+ }
+
+ [Test]
+ public void TestCreatePlLinesHydraulicShortcutWithHeadPl3()
+ {
+ // expected values retrieved from debugging Dam Classic (rev.663)
+ // test CanCalculateThePipingFactorUsingSellmeijer4Forces
+
+ // Lower Pllines as riverlavel is now 0.5 instead of 1.
+ var location = new Location();
+ location.SurfaceLine = FactoryForSurfaceLines.CreateSurfaceLineTutorial1();
+ var soilProfile1D = FactoryForSoilProfiles.CreatePipingSellmeijerProfileWithOneSandlayer();
+ var riverLevel = 0.5;
+ location.HeadPl3 = 1.0;
+ UpliftSituation upliftSituation;
+ var plLines = PlLinesHelper.CreatePlLinesForPiping(location, soilProfile1D, riverLevel, HydraulicShortcutType.HydraulicShortcut,
+ out upliftSituation);
+ Assert.AreEqual(4, plLines.PlLineCount);
+ Assert.AreEqual(8, plLines.Lines[PlLineType.Pl1].Points.Count);
+ Assert.IsTrue(new PlLinePoint(0.000, 0.500).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[0]));
+ Assert.IsTrue(new PlLinePoint(12.450, 0.500).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[1]));
+ Assert.IsTrue(new PlLinePoint(34.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[2]));
+ Assert.IsTrue(new PlLinePoint(40.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[3]));
+ Assert.IsTrue(new PlLinePoint(50.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[4]));
+ Assert.IsTrue(new PlLinePoint(58.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[5]));
+ Assert.IsTrue(new PlLinePoint(61.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[6]));
+ Assert.IsTrue(new PlLinePoint(75.000, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[7]));
+ Assert.AreEqual(0, plLines.Lines[PlLineType.Pl2].Points.Count);
+ Assert.AreEqual(2, plLines.Lines[PlLineType.Pl3].Points.Count);
+ Assert.IsTrue(new PlLinePoint(0.000, 0.500).LocationEquals(plLines.Lines[PlLineType.Pl3].Points[0]));
+ Assert.IsTrue(new PlLinePoint(75.000, 0.500).LocationEquals(plLines.Lines[PlLineType.Pl3].Points[1]));
+ Assert.AreEqual(0, plLines.Lines[PlLineType.Pl4].Points.Count);
+ }
+
+ [Test]
+ public void TestCreatePlLinesHydraulicShortcutWithHeadPl3AndInBetweenAquifer()
+ {
+ // expected values retrieved from debugging Dam Classic (rev.663)
+ // test CanCalculateThePipingFactorUsingSellmeijer4Forces
+
+ // PL1 is same as TestCreatePlLinesHydraulicShortcutWithHeadPl3 (same riverlevel = 0.5)
+ // PL3 is same as TestCreatePlLinesNoHydraulicShortcut because HeadInPlLine3 is given with value 1 and there is a
+ // in between aquifer so Head (1.0) is used instead of riverlevel.
+ // PL2 and PL4 now generated at riverlevel.
+ var location = new Location();
+ location.SurfaceLine = FactoryForSurfaceLines.CreateSurfaceLineTutorial1();
+ var soilProfile1D = FactoryForSoilProfiles.CreatePipingSellmeijerProfileWithOneSandlayer();
+ AddLayerToSoilProfile(soilProfile1D, -4, false);
+ AddLayerToSoilProfile(soilProfile1D, -5, true);
+ var riverLevel = 0.5;
+ location.HeadPl3 = 1.0;
+ UpliftSituation upliftSituation;
+ var plLines = PlLinesHelper.CreatePlLinesForPiping(location, soilProfile1D, riverLevel, HydraulicShortcutType.HydraulicShortcut,
+ out upliftSituation);
+ Assert.AreEqual(4, plLines.PlLineCount);
+ Assert.AreEqual(8, plLines.Lines[PlLineType.Pl1].Points.Count);
+ Assert.IsTrue(new PlLinePoint(0.000, 0.500).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[0]));
+ Assert.IsTrue(new PlLinePoint(12.450, 0.500).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[1]));
+ Assert.IsTrue(new PlLinePoint(34.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[2]));
+ Assert.IsTrue(new PlLinePoint(40.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[3]));
+ Assert.IsTrue(new PlLinePoint(50.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[4]));
+ Assert.IsTrue(new PlLinePoint(58.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[5]));
+ Assert.IsTrue(new PlLinePoint(61.500, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[6]));
+ Assert.IsTrue(new PlLinePoint(75.000, 0.000).LocationEquals(plLines.Lines[PlLineType.Pl1].Points[7]));
+ Assert.AreEqual(2, plLines.Lines[PlLineType.Pl2].Points.Count);
+ Assert.IsTrue(new PlLinePoint(0.000, 0.500).LocationEquals(plLines.Lines[PlLineType.Pl2].Points[0]));
+ Assert.IsTrue(new PlLinePoint(75.000, 0.500).LocationEquals(plLines.Lines[PlLineType.Pl2].Points[1]));
+ Assert.AreEqual(2, plLines.Lines[PlLineType.Pl3].Points.Count);
+ Assert.IsTrue(new PlLinePoint(0.000, 1.000).LocationEquals(plLines.Lines[PlLineType.Pl3].Points[0]));
+ Assert.IsTrue(new PlLinePoint(75.000, 1.000).LocationEquals(plLines.Lines[PlLineType.Pl3].Points[1]));
+ Assert.AreEqual(2, plLines.Lines[PlLineType.Pl4].Points.Count);
+ Assert.IsTrue(new PlLinePoint(0.000, 0.500).LocationEquals(plLines.Lines[PlLineType.Pl4].Points[0]));
+ Assert.IsTrue(new PlLinePoint(75.000, 0.500).LocationEquals(plLines.Lines[PlLineType.Pl4].Points[1]));
+ }
+
+ private void AddLayerToSoilProfile(SoilProfile1D soilProfile, double topLevel, bool isAquifer)
+ {
+ var layer = new SoilLayer1D()
+ {
+ Name = GetNewUniqueLayerId(soilProfile)
+ };
+ layer.TopLevel = topLevel;
+ layer.Soil = new Soil("Sand", 22.0, 20.0)
+ {
+ PermeabKx = 0.0001,
+ DiameterD70 = Physics.FactorMicroMeterToMeter * 200.0,
+ WhitesConstant = 0.25,
+ BeddingAngle = 37.0
+ };
+ layer.IsAquifer = isAquifer;
+ soilProfile.Layers.Add(layer);
+ }
+
+ private static string GetNewUniqueLayerId(SoilProfile1D soilProfile1D)
+ {
+ int num = 0;
+ string id;
+ do
+ {
+ id = "L" + (object)num++;
+ }
+ while (soilProfile1D.GetLayerWithName(id) != null);
+ return id;
+ }
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityHorizontalBalance/DamMacroStabilityHorizontalBalanceKernelWrapper.cs
===================================================================
diff -u -r1211 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityHorizontalBalance/DamMacroStabilityHorizontalBalanceKernelWrapper.cs (.../DamMacroStabilityHorizontalBalanceKernelWrapper.cs) (revision 1211)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamMacroStabilityHorizontalBalance/DamMacroStabilityHorizontalBalanceKernelWrapper.cs (.../DamMacroStabilityHorizontalBalanceKernelWrapper.cs) (revision 1212)
@@ -265,7 +265,9 @@
damKernelInput.RiverLevelLow,
subSoilScenario,
null, requiredSafetyFactor,
- kernelDataInput.FailureMechanismParametersMStab, out errorMessages);
+ kernelDataInput.FailureMechanismParametersMStab,
+ damKernelInput.DamFailureMechanismeCalculationSpecification.AssessmentScenarioJobSettings,
+ out errorMessages);
mstabXml.Save(stabilityProjectFilename + ".xml");
return mstabXml;
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/UpliftHelper.cs
===================================================================
diff -u -r1137 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/UpliftHelper.cs (.../UpliftHelper.cs) (revision 1137)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/UpliftHelper.cs (.../UpliftHelper.cs) (revision 1212)
@@ -44,7 +44,8 @@
var soilGeometry2DName = damKernelInput.SubSoilScenario.FullStiFileName;
UpliftSituation upliftSituation;
var plLines = PlLinesHelper.CreatePlLinesForStability(location, damKernelInput.SubSoilScenario, riverLevel,
- soilGeometry2DName, riverLevelLow, out upliftSituation);
+ soilGeometry2DName, riverLevelLow, damKernelInput.DamFailureMechanismeCalculationSpecification.AssessmentScenarioJobSettings,
+ out upliftSituation);
if (plLines != null)
{
var surfaceLineWithNewHeight = location.SurfaceLine;
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapperTests.cs
===================================================================
diff -u -r1149 -r1212
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapperTests.cs (.../DamMacroStabilityOutwardsKernelWrapperTests.cs) (revision 1149)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapperTests.cs (.../DamMacroStabilityOutwardsKernelWrapperTests.cs) (revision 1212)
@@ -509,6 +509,7 @@
// Prepare the wrapper. Result is input for the calculation dll
IKernelDataInput damStabilityInput;
IKernelDataOutput kernelOutput;
+ damKernelInput.DamFailureMechanismeCalculationSpecification = new DamFailureMechanismeCalculationSpecification();
kernelWrapper.Prepare(damKernelInput, 0, out damStabilityInput, out kernelOutput);
}
}