Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/UpliftVanGridCreator.cs
===================================================================
diff -u -r3047 -r3048
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/UpliftVanGridCreator.cs (.../UpliftVanGridCreator.cs) (revision 3047)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/UpliftVanGridCreator.cs (.../UpliftVanGridCreator.cs) (revision 3048)
@@ -42,53 +42,61 @@
IsTangentLinesAutomatic = false
};
- // Define specified active (left) grid
- if (surfaceLine != null)
+ if (slipCircleDefinition.GridSizeDetermination == GridSizeDetermination.Specified)
{
- // 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.BishopGridHorizontalPointCount - 1);
- double gridHeight = slipCircleDefinition.UpliftVanLeftGridVerticalPointDistance *
- (slipCircleDefinition.UpliftVanRightGridVerticalPointCount - 1);
- upliftVanCalculationGrid.LeftGridXLeft = gridXCoordinate;
- upliftVanCalculationGrid.LeftGridXRight = gridXCoordinate + gridWidth;
- upliftVanCalculationGrid.LeftGridXCount = slipCircleDefinition.UpliftVanRightGridHorizontalPointCount;
- upliftVanCalculationGrid.LeftGridZBottom = gridYCoordinate;
- upliftVanCalculationGrid.LeftGridZTop = gridYCoordinate + gridHeight;
- upliftVanCalculationGrid.LeftGridZCount = slipCircleDefinition.UpliftVanRightGridVerticalPointCount;
- }
+ // 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.BishopGridHorizontalPointCount - 1);
+ double gridHeight = slipCircleDefinition.UpliftVanLeftGridVerticalPointDistance *
+ (slipCircleDefinition.UpliftVanRightGridVerticalPointCount - 1);
+ upliftVanCalculationGrid.LeftGridXLeft = gridXCoordinate;
+ upliftVanCalculationGrid.LeftGridXRight = gridXCoordinate + gridWidth;
+ upliftVanCalculationGrid.LeftGridXCount = slipCircleDefinition.UpliftVanRightGridHorizontalPointCount;
+ upliftVanCalculationGrid.LeftGridZBottom = gridYCoordinate;
+ upliftVanCalculationGrid.LeftGridZTop = gridYCoordinate + gridHeight;
+ upliftVanCalculationGrid.LeftGridZCount = slipCircleDefinition.UpliftVanRightGridVerticalPointCount;
+ }
- // Define specified passive (right) grid
- if (surfaceLine != null)
- {
- const double gridOffset = 0.2;
- var dikeToeAtPolder = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder);
+ // 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.RightGridXLeft = gridXCoordinate;
- // The grid is limited to the right boundary of the surfaceline
- double boundaryRight = surfaceLine.CharacteristicPoints.Geometry.GetGeometryBounds().Right;
- upliftVanCalculationGrid.RightGridXRight = Math.Min(gridXCoordinate + gridWidth, boundaryRight);
- upliftVanCalculationGrid.RightGridXCount = slipCircleDefinition.UpliftVanRightGridHorizontalPointCount;
+ // 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.RightGridXLeft = gridXCoordinate;
+ // The grid is limited to the right boundary of the surfaceline
+ double boundaryRight = surfaceLine.CharacteristicPoints.Geometry.GetGeometryBounds().Right;
+ upliftVanCalculationGrid.RightGridXRight = Math.Min(gridXCoordinate + gridWidth, boundaryRight);
+ upliftVanCalculationGrid.RightGridXCount = slipCircleDefinition.UpliftVanRightGridHorizontalPointCount;
- // Z-coordinates settings of the grid
- double gridHeight = slipCircleDefinition.UpliftVanRightGridVerticalPointDistance *
- (slipCircleDefinition.UpliftVanRightGridVerticalPointCount - 1);
- upliftVanCalculationGrid.RightGridZBottom = dikeToeAtPolder.Z + gridOffset;
- upliftVanCalculationGrid.RightGridZTop = upliftVanCalculationGrid.RightGridZBottom + gridHeight;
- upliftVanCalculationGrid.RightGridZCount = slipCircleDefinition.UpliftVanRightGridVerticalPointCount;
+ // Z-coordinates settings of the grid
+ double gridHeight = slipCircleDefinition.UpliftVanRightGridVerticalPointDistance *
+ (slipCircleDefinition.UpliftVanRightGridVerticalPointCount - 1);
+ upliftVanCalculationGrid.RightGridZBottom = dikeToeAtPolder.Z + gridOffset;
+ upliftVanCalculationGrid.RightGridZTop = upliftVanCalculationGrid.RightGridZBottom + gridHeight;
+ upliftVanCalculationGrid.RightGridZCount = slipCircleDefinition.UpliftVanRightGridVerticalPointCount;
+ }
+
+ // Tangent lines are defined in another method
}
+ else
+ {
+ // code for slipCircleDefinition.GridSizeDetermination == GridSizeDetermination.Automatic
+ upliftVanCalculationGrid.IsGridsAutomatic = true;
+ }
- // Tangent lines are defined in another method
-
return upliftVanCalculationGrid;
}
@@ -97,7 +105,7 @@
/// The slip circle definition.
/// The soil profile1 d.
/// The minimum circle depth.
- public static void DetermineTangentLines(UpliftVanCalculationGrid upliftVanCalculationGrid, SlipCircleDefinition slipCircleDefinition,
+ public static void DetermineTangentLines(UpliftVanCalculationGrid upliftVanCalculationGrid, SlipCircleDefinition slipCircleDefinition,
SoilProfile1D soilProfile1D, double minimumCircleDepth)
{
switch (slipCircleDefinition.UpliftVanTangentLinesDefinition)
@@ -106,14 +114,14 @@
DetermineTangentLinesOnBoundaryLines(upliftVanCalculationGrid, soilProfile1D);
break;
case TangentLinesDefinition.Specified:
- DetermineTangentLinesSpecified(upliftVanCalculationGrid, soilProfile1D,
+ DetermineTangentLinesSpecified(upliftVanCalculationGrid, soilProfile1D,
slipCircleDefinition.UpliftVanTangentLinesDistance, minimumCircleDepth);
break;
}
}
- private static void DetermineTangentLinesOnBoundaryLines(UpliftVanCalculationGrid upliftVanCalculationGrid,
+ private static void DetermineTangentLinesOnBoundaryLines(UpliftVanCalculationGrid upliftVanCalculationGrid,
SoilProfile1D soilProfile1D)
{
upliftVanCalculationGrid.IsTangentLinesAutomatic = false;
@@ -125,7 +133,7 @@
}
private static void DetermineTangentLinesSpecified(UpliftVanCalculationGrid upliftVanCalculationGrid,
- SoilProfile1D soilProfile1D, double distance, double minimumCircleDepth)
+ SoilProfile1D soilProfile1D, double distance, double minimumCircleDepth)
{
if (!(distance > 0))
{
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs
===================================================================
diff -u -r3042 -r3048
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs (.../FillMacroStabilityWrapperInputFromEngine.cs) (revision 3042)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs (.../FillMacroStabilityWrapperInputFromEngine.cs) (revision 3048)
@@ -310,11 +310,19 @@
GridZBottom = damUpliftVanCalculationGrid.RightGridZBottom
};
- // kernelSearchAreaConditions.AutoTangentLines = damUpliftVanCalculationGrid.IsTangentLinesAutomatic;
- kernelUpliftVanCalculationGrid.TangentLines = GetTangentLines(damUpliftVanCalculationGrid.TangentLineZBottom,
- damUpliftVanCalculationGrid.TangentLineZTop,
- damUpliftVanCalculationGrid.TangentLineCount)
- .ToArray();
+ kernelSearchAreaConditions.AutoSearchArea = damUpliftVanCalculationGrid.IsGridsAutomatic;
+ kernelSearchAreaConditions.AutoTangentLines = damUpliftVanCalculationGrid.IsTangentLinesAutomatic;
+ if (kernelSearchAreaConditions.AutoTangentLines)
+ {
+ kernelSearchAreaConditions.TangentLineNumber = damUpliftVanCalculationGrid.TangentLineCount;
+ kernelSearchAreaConditions.TangentLineZTop = damUpliftVanCalculationGrid.TangentLineZTop;
+ kernelSearchAreaConditions.TangentLineZBottom = damUpliftVanCalculationGrid.TangentLineZBottom;
+
+ }
+ else
+ {
+ kernelUpliftVanCalculationGrid.TangentLines = damUpliftVanCalculationGrid.TangentLineLevels.ToArray();
+ }
}
private static IEnumerable GetTangentLines(double tangentLineZBottom, double tangentLineZTop, int nrOfTangentLines)