Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/BishopGridCreator.cs
===================================================================
diff -u -r3676 -r3682
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/BishopGridCreator.cs (.../BishopGridCreator.cs) (revision 3676)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/BishopGridCreator.cs (.../BishopGridCreator.cs) (revision 3682)
@@ -24,7 +24,6 @@
using Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon;
using Deltares.DamEngine.Data.General;
using Deltares.DamEngine.Data.Geotechnics;
-using Deltares.MacroStability.CSharpWrapper;
namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards
{
@@ -76,35 +75,6 @@
return bishopCalculationGrid;
}
- /// Determines the Bishop grid from used from writing the input stix file.
- /// The implementation should be identical as used in the MacroStability kernel.
- /// the slip circle definition
- /// The surface line.
- /// The calculation grid
- ///
- public static void DetermineStixGrid(SlipCircleDefinition slipCircleDefinition, SurfaceLine2 surfaceLine, CalculationGrid calculationGrid)
- {
- // Define specified active (left) grid
- if (surfaceLine != null)
- {
- // Use middle of the dike for X-coordinate
- var dikeTopAtRiverPoint = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver);
- var dikeTopAtPolderPoint = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder);
- double gridXCoordinate = (dikeTopAtRiverPoint.X + dikeTopAtPolderPoint.X) * 0.5;
- double gridYCoordinate = surfaceLine.Geometry.GetZatX(gridXCoordinate);
- double gridWidth = slipCircleDefinition.BishopGridHorizontalPointDistance *
- (slipCircleDefinition.BishopGridHorizontalPointCount - 1);
- double gridHeight = slipCircleDefinition.BishopGridVerticalPointDistance *
- (slipCircleDefinition.BishopGridVerticalPointCount - 1);
- calculationGrid.GridXLeft = gridXCoordinate;
- calculationGrid.GridXRight = gridXCoordinate + gridWidth;
- calculationGrid.GridXNumber = slipCircleDefinition.BishopGridHorizontalPointCount;
- calculationGrid.GridZBottom = gridYCoordinate;
- calculationGrid.GridZTop = gridYCoordinate + gridHeight;
- calculationGrid.GridZNumber = slipCircleDefinition.BishopGridVerticalPointCount;
- }
- }
-
/// Determines the tangent lines.
/// The bishop calculation grid.
/// The slip circle definition.
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityOutputItem.cs
===================================================================
diff -u -r3523 -r3682
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityOutputItem.cs (.../MacroStabilityOutputItem.cs) (revision 3523)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityOutputItem.cs (.../MacroStabilityOutputItem.cs) (revision 3682)
@@ -22,8 +22,9 @@
using System.Collections.Generic;
using Deltares.DamEngine.Data.General;
using Deltares.DamEngine.Data.General.Results;
-using Deltares.DamEngine.Data.Geometry;
using Deltares.DamEngine.Data.Standard.Calculation;
+using Deltares.MacroStability.CSharpWrapper;
+using Point2D = Deltares.DamEngine.Data.Geometry.Point2D;
namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards
{
@@ -124,5 +125,21 @@
/// The result slices.
///
public List ResultSlices { get; set; }
+
+ ///
+ /// Gets or sets the Bishop calculation circle.
+ ///
+ ///
+ /// The bishop calculation circle.
+ ///
+ public BishopCalculationCircle BishopCalculationCircle { get; set; }
+
+ ///
+ /// Gets or sets the Uplift Van calculation grid.
+ ///
+ ///
+ /// The Uplift Van calculation grid.
+ ///
+ public UpliftVanCalculationGrid UpliftVanCalculationGrid { get; set; }
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/UpliftVanGridCreator.cs
===================================================================
diff -u -r3676 -r3682
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/UpliftVanGridCreator.cs (.../UpliftVanGridCreator.cs) (revision 3676)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/UpliftVanGridCreator.cs (.../UpliftVanGridCreator.cs) (revision 3682)
@@ -101,60 +101,6 @@
return upliftVanCalculationGrid;
}
- /// Determines the Uplift Van grid from used from writing the input stix file.
- /// The implementation should be identical as used in the MacroStability kernel.
- /// the slip circle definition
- /// The surface line.
- /// The Uplift Van calculation grid.
- ///
- public static void DetermineStixGrids(SlipCircleDefinition slipCircleDefinition, SurfaceLine2 surfaceLine, Deltares.MacroStability.CSharpWrapper.UpliftVanCalculationGrid upliftVanCalculationGrid)
- {
- // Define specified active (left) grid
- if (surfaceLine != null)
- {
- // Use middle of the dike for X-coordinate
- var dikeTopAtRiverPoint = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver);
- var dikeTopAtPolderPoint = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder);
- double gridXCoordinate = (dikeTopAtRiverPoint.X + dikeTopAtPolderPoint.X) * 0.5;
- double gridYCoordinate = surfaceLine.Geometry.GetZatX(gridXCoordinate);
- double gridWidth = slipCircleDefinition.UpliftVanLeftGridHorizontalPointDistance *
- (slipCircleDefinition.UpliftVanLeftGridHorizontalPointCount - 1);
- double gridHeight = slipCircleDefinition.UpliftVanLeftGridVerticalPointDistance *
- (slipCircleDefinition.UpliftVanRightGridVerticalPointCount - 1);
- upliftVanCalculationGrid.LeftGrid.GridXLeft = gridXCoordinate;
- upliftVanCalculationGrid.LeftGrid.GridXRight = gridXCoordinate + gridWidth;
- upliftVanCalculationGrid.LeftGrid.GridXNumber = slipCircleDefinition.UpliftVanRightGridHorizontalPointCount;
- upliftVanCalculationGrid.LeftGrid.GridZBottom = gridYCoordinate;
- upliftVanCalculationGrid.LeftGrid.GridZTop = gridYCoordinate + gridHeight;
- upliftVanCalculationGrid.LeftGrid.GridZNumber = slipCircleDefinition.UpliftVanRightGridVerticalPointCount;
- }
-
- // Define specified passive (right) grid
- if (surfaceLine != null)
- {
- const double gridOffset = 0.2;
- var dikeToeAtPolder = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder);
-
- // X-coordinates settings of the grid
- double gridWidth = slipCircleDefinition.UpliftVanRightGridHorizontalPointDistance *
- (slipCircleDefinition.UpliftVanRightGridHorizontalPointCount - 1);
- // The grid starts at either last uplift point X-coordinate or dike toe at polder X-coordinate, whichever is largest
- double gridXCoordinate = Math.Max(slipCircleDefinition.XCoordinateLastUpliftPoint - gridWidth, dikeToeAtPolder.X);
- upliftVanCalculationGrid.RightGrid.GridXLeft = gridXCoordinate;
- // The grid is limited to the right boundary of the surfaceline
- double boundaryRight = surfaceLine.CharacteristicPoints.Geometry.GetGeometryBounds().Right;
- upliftVanCalculationGrid.RightGrid.GridXRight = Math.Min(gridXCoordinate + gridWidth, boundaryRight);
- upliftVanCalculationGrid.RightGrid.GridXNumber = slipCircleDefinition.UpliftVanRightGridHorizontalPointCount;
-
- // Z-coordinates settings of the grid
- double gridHeight = slipCircleDefinition.UpliftVanRightGridVerticalPointDistance *
- (slipCircleDefinition.UpliftVanRightGridVerticalPointCount - 1);
- upliftVanCalculationGrid.RightGrid.GridZBottom = dikeToeAtPolder.Z + gridOffset;
- upliftVanCalculationGrid.RightGrid.GridZTop = upliftVanCalculationGrid.RightGrid.GridZBottom + gridHeight;
- upliftVanCalculationGrid.RightGrid.GridZNumber = slipCircleDefinition.UpliftVanRightGridVerticalPointCount;
- }
- }
-
/// Determines the tangent lines.
/// The uplift van calculation grid.
/// The slip circle definition.
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs
===================================================================
diff -u -r3620 -r3682
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs (.../FillEngineFromMacroStabilityWrapperOutput.cs) (revision 3620)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs (.../FillEngineFromMacroStabilityWrapperOutput.cs) (revision 3682)
@@ -19,6 +19,7 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
+using System;
using System.Collections.Generic;
using System.Linq;
using Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards;
@@ -58,19 +59,26 @@
{
CalculationResult = ConversionHelper.ConvertToDamResultType(kernelOutput.ResultType),
SafetyFactor = kernelOutput.StabilityOutput.SafetyFactor,
- StabilityModelType = ConversionHelper.ConvertToMStabModelType(kernelOutput.StabilityOutput.ModelOptionType)
+ StabilityModelType = ConversionHelper.ConvertToMStabModelType(kernelOutput.StabilityOutput.ModelOptionType),
+ BishopCalculationCircle = new BishopCalculationCircle(),
+ UpliftVanCalculationGrid = new MacroStability.CSharpWrapper.UpliftVanCalculationGrid()
+
};
if (outputItem.StabilityModelType == MStabModelType.Bishop)
{
var slidingCircleMinimumSafetyCurve = (SlidingCircleMinimumSafetyCurve)kernelOutput.StabilityOutput.MinimumSafetyCurve;
FillBishopSlipCircle(slidingCircleMinimumSafetyCurve, outputItem);
+ var bishopPreprocessingOutput = (BishopPreprocessingOutput)kernelOutput.PreprocessingOutputBase;
+ outputItem.BishopCalculationCircle = bishopPreprocessingOutput.BishopCalculationCircle;
}
if (outputItem.StabilityModelType == MStabModelType.UpliftVan)
{
var dualSlidingCircleMinimumSafetyCurve = (DualSlidingCircleMinimumSafetyCurve)kernelOutput.StabilityOutput.MinimumSafetyCurve;
FillUpliftVanDualSlipCircle(dualSlidingCircleMinimumSafetyCurve, outputItem);
+ var upliftVanPreprocessingOutput = (UpliftVanPreprocessingOutput)kernelOutput.PreprocessingOutputBase;
+ outputItem.UpliftVanCalculationGrid = upliftVanPreprocessingOutput.UpliftVanCalculationGrid;
}
if (outputItem.StabilityModelType == MStabModelType.Bishop ||
@@ -91,8 +99,7 @@
{
Message = stabilityOutputMessage.Content,
MessageType = ConversionHelper.ConvertKernelLogMessageTypeToLogMessageType(
- stabilityOutputMessage
- .MessageType)
+ stabilityOutputMessage.MessageType)
};
logMessages.Add(logMessage);
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs
===================================================================
diff -u -r3676 -r3682
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 3676)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 3682)
@@ -23,6 +23,7 @@
using System.Collections.Generic;
using System.Data;
using System.IO;
+using System.Linq;
using System.Text.RegularExpressions;
using Deltares.DamEngine.Calculators.DikesDesign;
using Deltares.DamEngine.Calculators.KernelWrappers.Common;
@@ -100,13 +101,14 @@
var fillMacroStabilityWrapperFromEngine = new FillMacroStabilityWrapperInputFromEngine();
- var slipCircleDefinition = damKernelInput.DamFailureMechanismeCalculationSpecification
- .FailureMechanismParametersMStab.MStabParameters.SlipCircleDefinition;
+
switch (FailureMechanismParametersMStab.MStabParameters.Model)
{
case MStabModelType.Bishop:
{
// Define slip circle Bishop
+ var slipCircleDefinition = damKernelInput.DamFailureMechanismeCalculationSpecification
+ .FailureMechanismParametersMStab.MStabParameters.SlipCircleDefinition;
var minimumCircleDepth = damKernelInput.DamFailureMechanismeCalculationSpecification
.FailureMechanismParametersMStab.MStabParameters.CalculationOptions.MinimalCircleDepth;
var bishopCalculationGrid = BishopGridCreator.DetermineGridsFromSettings(
@@ -147,6 +149,8 @@
}
// Define slip circle UpliftVan
+ var slipCircleDefinition = damKernelInput.DamFailureMechanismeCalculationSpecification
+ .FailureMechanismParametersMStab.MStabParameters.SlipCircleDefinition;
var minimumCircleDepth = damKernelInput.DamFailureMechanismeCalculationSpecification
.FailureMechanismParametersMStab.MStabParameters.CalculationOptions.MinimalCircleDepth;
var upliftVanCalculationGrid = UpliftVanGridCreator.DetermineGridsFromSettings(
@@ -170,24 +174,6 @@
macroStabilityInput.Input = fillMacroStabilityWrapperFromEngine.CreateMacroStabilityInput(damKernelInput, FailureMechanismParametersMStab, waterNet);
fileNameForCalculation = GetStabilityInputFileName(damKernelInput, iterationIndex, FailureMechanismParametersMStab.MStabParameters.Model);
- var inputForStixFile = macroStabilityInput.Input;
- if (slipCircleDefinition.GridSizeDetermination != GridSizeDetermination.Specified)
- {
- var surfaceLine = damKernelInput.Location.SurfaceLine;
- switch (FailureMechanismParametersMStab.MStabParameters.Model)
- {
- case MStabModelType.Bishop:
- BishopGridCreator.DetermineStixGrid(slipCircleDefinition, surfaceLine, inputForStixFile.StabilityModel.BishopCalculationCircle.Grid);
- break;
- case MStabModelType.UpliftVan:
- UpliftVanGridCreator.DetermineStixGrids(slipCircleDefinition, surfaceLine, inputForStixFile.StabilityModel.UpliftVanCalculationGrid);
- break;
- default:
- throw new ArgumentOutOfRangeException(nameof(FailureMechanismParametersMStab.MStabParameters.Model));
- }
- }
- WriteStixFileBasedOnInputAndSearchGrid(fileNameForCalculation, inputForStixFile);
-
return PrepareKernel(macroStabilityInput.Input);
}
catch(Exception e)
@@ -348,6 +334,22 @@
var macroStabilityOutputKernel = stabilityCalculator.Calculate();
FillEngineFromMacroStabilityWrapperOutput.FillEngineDataWithResults(macroStabilityOutputKernel, macroStabilityOutput,
out messages);
+ var inputStixFile = input.Input;
+ foreach (var stabilityOutputItem in macroStabilityOutput.StabilityOutputItems)
+ {
+ switch (stabilityOutputItem.StabilityModelType)
+ {
+ case MStabModelType.Bishop:
+ inputStixFile.StabilityModel.BishopCalculationCircle = stabilityOutputItem.BishopCalculationCircle;
+ break;
+ case MStabModelType.UpliftVan:
+ inputStixFile.StabilityModel.UpliftVanCalculationGrid = stabilityOutputItem.UpliftVanCalculationGrid;
+ break;
+ }
+
+ WriteStixFileBasedOnInputAndResultsSearchGrid(fileNameForCalculation, inputStixFile);
+ }
+
WriteStixFileBasedOnInputAndResultsSlipPlane(input, macroStabilityOutput);
}
catch (Exception e)
@@ -357,7 +359,7 @@
}
}
- private void WriteStixFileBasedOnInputAndSearchGrid(string fileName, MacroStabilityInput input)
+ private void WriteStixFileBasedOnInputAndResultsSearchGrid(string fileName, MacroStabilityInput input)
{
if (!(input.StabilityModel.ModelOption == StabilityModelOptionType.UpliftVan &&
input.StabilityModel.SearchAlgorithm == SearchAlgorithm.Beeswarm))
Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs
===================================================================
diff -u -r3676 -r3682
--- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 3676)
+++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MacroStabilityInwardsTests.cs (.../MacroStabilityInwardsTests.cs) (revision 3682)
@@ -853,7 +853,7 @@
};
foreach (var file in fileList.Select(file => Path.Combine(Path.GetFullPath(calcDir), file)))
{
- Assert.IsTrue(File.Exists(file),file + "does not exists");
+ Assert.IsTrue(File.Exists(file),file + " does not exists");
}
}