Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/ConversionHelperTests.cs
===================================================================
diff -u -r3000 -r3025
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 3000)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 3025)
@@ -168,7 +168,7 @@
RRatio = 1.05,
RatioCuPc = 1.06,
//RheologicalCoefficient = 1.07, Not yet to be used
- ShearStrengthModel = MacroStability.CSharpWrapper.Input.ShearStrengthModel.CPhiOrCuCalculated,
+ ShearStrengthModel = MacroStability.CSharpWrapper.ShearStrengthModelType.CPhiOrCuCalculated,
StrengthIncreaseExponent = 1.08,
UseSoilClassification = false, // must be false
BondStressCurve = null // must be null
@@ -206,20 +206,20 @@
#endregion
#region ShearStrengthModel
- [TestCase(MacroStability.CSharpWrapper.Input.ShearStrengthModel.CPhi, ShearStrengthModel.CPhi)]
- [TestCase(MacroStability.CSharpWrapper.Input.ShearStrengthModel.CPhiOrCuCalculated, ShearStrengthModel.CPhiOrSuCalculated)]
- [TestCase(MacroStability.CSharpWrapper.Input.ShearStrengthModel.CuCalculated, ShearStrengthModel.SuCalculated)]
+ [TestCase(MacroStability.CSharpWrapper.ShearStrengthModelType.CPhi, ShearStrengthModel.CPhi)]
+ [TestCase(MacroStability.CSharpWrapper.ShearStrengthModelType.CPhiOrCuCalculated, ShearStrengthModel.CPhiOrSuCalculated)]
+ [TestCase(MacroStability.CSharpWrapper.ShearStrengthModelType.CuCalculated, ShearStrengthModel.SuCalculated)]
public static void CanConvertToDamShearStrengthModel(
- MacroStability.CSharpWrapper.Input.ShearStrengthModel kernelShearStrengthModel, ShearStrengthModel damShearStrengthModel)
+ MacroStability.CSharpWrapper.ShearStrengthModelType kernelShearStrengthModel, ShearStrengthModel damShearStrengthModel)
{
Assert.AreEqual(damShearStrengthModel, ConversionHelper.ConvertToDamShearStrengthModel(kernelShearStrengthModel));
}
- [TestCase(ShearStrengthModel.CPhi, MacroStability.CSharpWrapper.Input.ShearStrengthModel.CPhi)]
- [TestCase(ShearStrengthModel.CPhiOrSuCalculated, MacroStability.CSharpWrapper.Input.ShearStrengthModel.CPhiOrCuCalculated)]
- [TestCase(ShearStrengthModel.SuCalculated, MacroStability.CSharpWrapper.Input.ShearStrengthModel.CuCalculated)]
+ [TestCase(ShearStrengthModel.CPhi, MacroStability.CSharpWrapper.ShearStrengthModelType.CPhi)]
+ [TestCase(ShearStrengthModel.CPhiOrSuCalculated, MacroStability.CSharpWrapper.ShearStrengthModelType.CPhiOrCuCalculated)]
+ [TestCase(ShearStrengthModel.SuCalculated, MacroStability.CSharpWrapper.ShearStrengthModelType.CuCalculated)]
public static void CanConvertToMacroStabilityShearStrengthModel(
- ShearStrengthModel damShearStrengthModel, MacroStability.CSharpWrapper.Input.ShearStrengthModel kernelShearStrengthModel)
+ ShearStrengthModel damShearStrengthModel, MacroStability.CSharpWrapper.ShearStrengthModelType kernelShearStrengthModel)
{
Assert.AreEqual(kernelShearStrengthModel, ConversionHelper.ConvertToMacroStabilityShearStrengthModel(damShearStrengthModel));
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/TestHelpers/DamEngineDataTestFactory.cs
===================================================================
diff -u -r2910 -r3025
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/TestHelpers/DamEngineDataTestFactory.cs (.../DamEngineDataTestFactory.cs) (revision 2910)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/TestHelpers/DamEngineDataTestFactory.cs (.../DamEngineDataTestFactory.cs) (revision 3025)
@@ -46,6 +46,7 @@
};
return scenario;
}
+
///
/// Creates the location for testing.
///
@@ -76,84 +77,99 @@
var s1 = new Soil("DKN5")
{
AbovePhreaticLevel = 17.5,
- BelowPhreaticLevel = 17.50
+ BelowPhreaticLevel = 17.50,
+ ShearStrengthModel = ShearStrengthModel.CPhi
};
soilList.Soils.Add(s1);
var s2 = new Soil("DKN4")
{
AbovePhreaticLevel = 17.16,
- BelowPhreaticLevel = 17.16
+ BelowPhreaticLevel = 17.16,
+ ShearStrengthModel = ShearStrengthModel.CPhi
};
soilList.Soils.Add(s2);
var s3 = new Soil("OA")
{
AbovePhreaticLevel = 18.00,
- BelowPhreaticLevel = 20.00
+ BelowPhreaticLevel = 20.00,
+ ShearStrengthModel = ShearStrengthModel.CPhi
};
soilList.Soils.Add(s3);
var s4 = new Soil("DKN3");
+ s4.ShearStrengthModel = ShearStrengthModel.CPhi;
soilList.Soils.Add(s4);
var s5 = new Soil("LM");
+ s5.ShearStrengthModel = ShearStrengthModel.CPhi;
soilList.Soils.Add(s5);
var s6 = new Soil("OB1");
+ s6.ShearStrengthModel = ShearStrengthModel.CPhi;
soilList.Soils.Add(s6);
var s7 = new Soil("OB2");
+ s7.ShearStrengthModel = ShearStrengthModel.CPhi;
soilList.Soils.Add(s7);
var s8 = new Soil("veen")
{
AbovePhreaticLevel = 10.15,
- BelowPhreaticLevel = 10.20
+ BelowPhreaticLevel = 10.20,
+ ShearStrengthModel = ShearStrengthModel.CPhi
};
soilList.Soils.Add(s8);
var s9 = new Soil("Del_Tfg")
{
AbovePhreaticLevel = 10.15,
- BelowPhreaticLevel = 10.20
+ BelowPhreaticLevel = 10.20,
+ ShearStrengthModel = ShearStrengthModel.CPhi
};
soilList.Soils.Add(s9);
var s10 = new Soil("Del_Tss_1")
{
AbovePhreaticLevel = 14.46,
- BelowPhreaticLevel = 14.50
+ BelowPhreaticLevel = 14.50,
+ ShearStrengthModel = ShearStrengthModel.CPhi
};
soilList.Soils.Add(s10);
var s11 = new Soil("Del_Ffg")
{
AbovePhreaticLevel = 12.65,
- BelowPhreaticLevel = 12.70
+ BelowPhreaticLevel = 12.70,
+ ShearStrengthModel = ShearStrengthModel.CPhi
};
soilList.Soils.Add(s11);
var s12 = new Soil("Del_Kms")
{
AbovePhreaticLevel = 18,
- BelowPhreaticLevel = 20
+ BelowPhreaticLevel = 20,
+ ShearStrengthModel = ShearStrengthModel.CPhi
};
soilList.Soils.Add(s12);
var s13 = new Soil("Del_Ssc")
{
AbovePhreaticLevel = 18,
- BelowPhreaticLevel = 20
+ BelowPhreaticLevel = 20,
+ ShearStrengthModel = ShearStrengthModel.CPhi
};
soilList.Soils.Add(s13);
var s14 = new Soil("DeL_Tcs")
{
AbovePhreaticLevel = 16.05,
- BelowPhreaticLevel = 17.74
+ BelowPhreaticLevel = 17.74,
+ ShearStrengthModel = ShearStrengthModel.CPhi
};
soilList.Soils.Add(s14);
var s15 = new Soil("Del_Ppp")
{
AbovePhreaticLevel = 18,
- BelowPhreaticLevel = 20
+ BelowPhreaticLevel = 20,
+ ShearStrengthModel = ShearStrengthModel.CPhi
};
soilList.Soils.Add(s15);
soilList.AquiferDictionary = new Dictionary();
@@ -179,7 +195,7 @@
/// Creates a 2D soil profile for the tests.
///
///
- public static SoilProfile2D CreateSoilProfile2D()
+ public static SoilProfile2D CreateSoilProfile2D(SoilList soiList)
{
SoilProfile2D soilProfile2D = new SoilProfile2D();
@@ -191,37 +207,65 @@
var layer = new SoilLayer2D
{
- Name = "Layer 1",
- Soil = new Soil("OA", 17.70, 17.70)
+ Name = "Layer 1"
};
- layer.GeometrySurface = new GeometrySurface();
+ layer.Soil = soiList != null ? soiList.GetSoilByName("OA") : new Soil("OA", 18, 17);
+ layer.Soil.ShearStrengthModel = ShearStrengthModel.CPhi;
var outerLoop = new GeometryLoop();
var point1 = new Point2D(0, 1);
+ geometry.Points.Add(point1);
var point2 = new Point2D(100, 1);
+ geometry.Points.Add(point2);
var point3 = new Point2D(100, -5);
+ geometry.Points.Add(point3);
var point4 = new Point2D(0, -5);
- outerLoop.CurveList.Add(new GeometryCurve(point1, point2));
- outerLoop.CurveList.Add(new GeometryCurve(point2, point3));
- outerLoop.CurveList.Add(new GeometryCurve(point3, point4));
- outerLoop.CurveList.Add(new GeometryCurve(point4, point1));
+ geometry.Points.Add(point4);
+ var curve1 = new GeometryCurve(point1, point2);
+ geometry.Curves.Add(curve1);
+ outerLoop.CurveList.Add(curve1);
+ var curve2 = new GeometryCurve(point2, point3);
+ geometry.Curves.Add(curve2);
+ outerLoop.CurveList.Add(curve2);
+ var curve3 = new GeometryCurve(point3, point4);
+ geometry.Curves.Add(curve3);
+ outerLoop.CurveList.Add(curve3);
+ var curve4 = new GeometryCurve(point4, point1);
+ geometry.Curves.Add(curve4);
+ outerLoop.CurveList.Add(curve4);
+ geometry.Loops.Add(outerLoop);
+ var surface1 = new GeometrySurface(outerLoop);
+ geometry.Surfaces.Add(surface1);
+ layer.GeometrySurface = surface1;
layer.GeometrySurface.OuterLoop = outerLoop;
layer.WaterpressureInterpolationModel = WaterpressureInterpolationModel.Hydrostatic;
layer.IsAquifer = true;
soilProfile2D.Surfaces.Add(layer);
layer = new SoilLayer2D
{
- Name = "Layer 2",
- Soil = new Soil("LM", 18.00, 18.00)
+ Name = "Layer 2"
};
- layer.GeometrySurface = new GeometrySurface();
+ layer.Soil = soiList != null ? soiList.GetSoilByName("LM") : new Soil("LM", 18, 17);
+ layer.Soil.ShearStrengthModel = ShearStrengthModel.CPhi;
outerLoop = new GeometryLoop();
var point5 = new Point2D(0, -10);
+ geometry.Points.Add(point5);
var point6 = new Point2D(100, -10);
- outerLoop.CurveList.Add(new GeometryCurve(point4, point3));
- outerLoop.CurveList.Add(new GeometryCurve(point3, point6));
- outerLoop.CurveList.Add(new GeometryCurve(point6, point5));
- outerLoop.CurveList.Add(new GeometryCurve(point5, point4));
+ geometry.Points.Add(point6);
+ var curve5 = new GeometryCurve(point3, point6);
+ geometry.Curves.Add(curve5);
+ var curve6 = new GeometryCurve(point6, point5);
+ geometry.Curves.Add(curve6);
+ var curve7 = new GeometryCurve(point5, point4);
+ geometry.Curves.Add(curve7);
+ outerLoop.CurveList.Add(curve3);
+ outerLoop.CurveList.Add(curve5);
+ outerLoop.CurveList.Add(curve6);
+ outerLoop.CurveList.Add(curve7);
+ geometry.Loops.Add(outerLoop);
+ var surface2 = new GeometrySurface(outerLoop);
+ geometry.Surfaces.Add(surface2);
+ layer.GeometrySurface = surface2;
layer.GeometrySurface.OuterLoop = outerLoop;
layer.WaterpressureInterpolationModel = WaterpressureInterpolationModel.Hydrostatic;
layer.IsAquifer = true;
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs
===================================================================
diff -u -r3004 -r3025
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs (.../FillMacroStabilityWrapperInputFromEngine.cs) (revision 3004)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs (.../FillMacroStabilityWrapperInputFromEngine.cs) (revision 3025)
@@ -32,11 +32,11 @@
using CharacteristicPointType = Deltares.DamEngine.Data.Geotechnics.CharacteristicPointType;
using HeadLine = Deltares.DamEngine.Data.Geometry.HeadLine;
using KernelUpliftVanCalculationGrid = Deltares.MacroStability.CSharpWrapper.UpliftVanCalculationGrid;
-using KernelWaternet = Deltares.MacroStability.CSharpWrapper.Input.Waternet;
+using KernelWaternet = Deltares.MacroStability.CSharpWrapper.Waternet;
using KernelMacroStabilityInput = Deltares.MacroStability.CSharpWrapper.Input.MacroStabilityInput;
using KernelPoint2D = Deltares.MacroStability.CSharpWrapper.Point2D;
-using KernelWaternetLine = Deltares.MacroStability.CSharpWrapper.Input.WaternetLine;
-using KernelHeadLine = Deltares.MacroStability.CSharpWrapper.Input.HeadLine;
+using KernelWaternetLine = Deltares.MacroStability.CSharpWrapper.WaternetLine;
+using KernelHeadLine = Deltares.MacroStability.CSharpWrapper.HeadLine;
namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo
@@ -171,7 +171,7 @@
// Add geometry surfaces
var geometrySurfacesDictionary = new Dictionary();
- kernelSoilProfile.Geometry.GeometrySurfaces = new List();
+ kernelSoilProfile.Geometry.Surfaces = new List();
foreach (var damSurface in damSoilProfile2D.Geometry.Surfaces)
{
var kernelGeometrySurface = new Surface();
@@ -182,22 +182,20 @@
{
kernelGeometrySurface.InnerLoops.Add(loopsDictionary[damSurfaceInnerLoop]);
}
- kernelSoilProfile.Geometry.GeometrySurfaces.Add(kernelGeometrySurface);
+ kernelSoilProfile.Geometry.Surfaces.Add(kernelGeometrySurface);
}
// Add soil surfaces
kernelSoilProfile.SoilSurfaces = new List();
foreach (var damSoilLayer2D in damSoilProfile2D.Surfaces)
{
- var kernelSoilLayer2D = new SoilProfileSurface
- {
- GeometrySurface = geometrySurfacesDictionary[damSoilLayer2D.GeometrySurface],
- Soil = soilsDictionary[damSoilLayer2D.Soil],
- IsAquifer = damSoilLayer2D.IsAquifer,
- WaterPressureInterpolationModel =
+ var kernelSoilLayer2D = new SoilProfileSurface();
+ kernelSoilLayer2D.Surface = geometrySurfacesDictionary[damSoilLayer2D.GeometrySurface];
+ kernelSoilLayer2D.Soil = soilsDictionary[damSoilLayer2D.Soil];
+ kernelSoilLayer2D.IsAquifer = damSoilLayer2D.IsAquifer;
+ kernelSoilLayer2D.WaterPressureInterpolationModel =
ConversionHelper.ConvertToMacroStabilityWaterpressureInterpolationModel(damSoilLayer2D
- .WaterpressureInterpolationModel)
- };
+ .WaterpressureInterpolationModel);
kernelSoilProfile.SoilSurfaces.Add(kernelSoilLayer2D);
}
@@ -251,7 +249,7 @@
var kernelWaternetLine = CreateLine(damWaternetLine);
kernelWaternetLine.AssociatedHeadLine = headLineMapping[damWaternetLine.HeadLine];
- kernelWaternet.WaternetLines.Add(kernelWaternetLine);
+ kernelWaternet.ReferenceLines.Add(kernelWaternetLine); // .WaternetLines
}
}
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs
===================================================================
diff -u -r3004 -r3025
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 3004)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 3025)
@@ -34,6 +34,7 @@
using Deltares.DamEngine.Io;
using Deltares.DamEngine.TestHelpers;
using Deltares.DamEngine.TestHelpers.Factories;
+using Deltares.MacroStability.CSharpWrapper.Input;
using NUnit.Framework;
using NUnit.Framework.Constraints;
using LogMessage = Deltares.DamEngine.Data.Standard.Logging.LogMessage;
@@ -48,7 +49,6 @@
private string inputXmlForDamEngine = Path.Combine(TestFolder, "StabilityDesign1Dbased.xml");
[Test]
- [Category(Categories.WorkInProgress)]
public void TestPrepare()
{
var kernelWrapper = new MacroStabilityInwardsKernelWrapper();
@@ -57,7 +57,7 @@
IKernelDataInput kernelDataInput;
IKernelDataOutput kernelDataOutput;
var kernelInput = CreateDamKernelInputForTest();
- kernelInput.SubSoilScenario.SoilProfile2D.Surfaces[0].IsAquifer = false; // dit lijkt nog steeds niet te werken ivm cached. Nagaan en anders de tests uit elkaar trekken!
+ kernelInput.SubSoilScenario.SoilProfile2D.Surfaces[0].IsAquifer = false;
// Situation 1: no uplift. Expected PrepareResult.NotRelevant
kernelInput.Location.ModelFactors.UpliftCriterionStability = 0.8;
@@ -68,29 +68,29 @@
Assert.AreEqual(false, damMacroStabilityOutput.UpliftSituation.IsUplift);
// Situation 2: there is uplift and prepare succeeds. Expected PrepareResult.Successful
- //kernelInput.SubSoilScenario.SoilProfile2D.Surfaces[0].IsAquifer = false; // This has in fact no use HERE as cached 1D's are used based on the original 2D input
kernelInput.Location.ModelFactors.UpliftCriterionStability = 1.2;
prepareResult = kernelWrapper.Prepare(kernelInput, 0, out kernelDataInput, out kernelDataOutput);
Assert.AreEqual(PrepareResult.Successful, prepareResult);
damMacroStabilityOutput = (MacroStabilityOutput)kernelDataOutput;
Assert.AreEqual(CalculationResult.NoRun, damMacroStabilityOutput.CalculationResult);
Assert.AreEqual(true, damMacroStabilityOutput.UpliftSituation.IsUplift);
- // Situation 3: there is uplift and prepare fails. Expected PrepareResult.Failed
+ // Situation 3: prepare fails. Expected PrepareResult.Failed
kernelInput.Location.ModelFactors.UpliftCriterionStability = 1.2;
+ kernelInput.Location.SurfaceLine.CharacteristicPoints.Clear();
prepareResult = kernelWrapper.Prepare(kernelInput, 0, out kernelDataInput, out kernelDataOutput);
Assert.AreEqual(PrepareResult.Failed, prepareResult);
damMacroStabilityOutput = (MacroStabilityOutput)kernelDataOutput;
Assert.AreEqual(CalculationResult.NoRun, damMacroStabilityOutput.CalculationResult);
- Assert.AreEqual(true, damMacroStabilityOutput.UpliftSituation.IsUplift);
}
[Test]
- [Category(Categories.WorkInProgress)] //Has to wait for implementation of Validation method in the C#wrapper. And then it has to be rewritten!
+ [Category(Categories.WorkInProgress)] // check input and result
public void TestValidate()
{
var kernelWrapper = new MacroStabilityInwardsKernelWrapper();
-
+ kernelWrapper.FailureMechanismParametersMStab = new FailureMechanismParametersMStab();
+
// Validate without setting values. Expected error messages.
var macroStabilityInput1 = new MacroStabilityKernelDataInput();
var macroStabilityOutput1 = new MacroStabilityOutput();
@@ -101,11 +101,15 @@
Assert.AreEqual(CalculationResult.InvalidInputData, macroStabilityOutput1.CalculationResult);
// Validate the input when valid input is provided. Expected no messages.
- var macroStabilityInput2 = new MacroStabilityKernelDataInput();
+ var kernelInput = CreateDamKernelInputForTest();
+ kernelInput.SubSoilScenario.SoilProfile2D.Surfaces[0].IsAquifer = false;
+ kernelInput.Location.ModelFactors.UpliftCriterionStability = 1.2;
+ var prepareResult = kernelWrapper.Prepare(kernelInput, 0, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput);
+ Assert.IsTrue(prepareResult == PrepareResult.Successful);
var macroStabilityOutput2 = new MacroStabilityOutput();
macroStabilityOutput2.CalculationResult = CalculationResult.NoRun;
messages.Clear();
- errorCount = kernelWrapper.Validate(macroStabilityInput2, macroStabilityOutput2, out messages);
+ errorCount = kernelWrapper.Validate(kernelDataInput, macroStabilityOutput2, out messages);
Assert.IsTrue(errorCount == 0);
Assert.AreEqual(CalculationResult.NoRun, macroStabilityOutput2.CalculationResult);
}
@@ -143,7 +147,6 @@
}
[Test]
- [Category(Categories.WorkInProgress)] //check why result is unexpected
public void TestFullCalculationFails()
{
var kernelWrapper = new MacroStabilityInwardsKernelWrapper();
@@ -156,7 +159,8 @@
kernelWrapper.Execute(kernelDataInput, kernelDataOutput, out messages);
MacroStabilityOutput macroStabilityOutput = (MacroStabilityOutput)kernelDataOutput;
Assert.IsTrue(messages.Count > 0);
- Assert.AreEqual(CalculationResult.RunFailed, macroStabilityOutput.CalculationResult);
+ // as there is no data at all, expect unexpected error
+ Assert.AreEqual(CalculationResult.UnexpectedError, macroStabilityOutput.CalculationResult);
}
[Test]
@@ -172,13 +176,13 @@
IKernelDataInput kernelDataInput;
IKernelDataOutput kernelDataOutput;
var kernelInput = CreateDamKernelInputForTest();
+ kernelInput.Location.ModelFactors.UpliftCriterionStability = 1.2;
PrepareResult prepareResult = kernelWrapper.Prepare(kernelInput, 0, out kernelDataInput, out kernelDataOutput);
Assert.AreEqual(PrepareResult.Successful, prepareResult);
// Validate the input
List messages;
var errorCount = kernelWrapper.Validate(kernelDataInput, kernelDataOutput, out messages);
- // ToDo MWDAM-1356: Not clear yet what input must be provided to make Validate succeed. Skip for now.
Assert.IsTrue(errorCount == 0);
// Run the dll
@@ -311,7 +315,7 @@
subSoilScenario.SoilProfileType = SoilProfileType.ProfileType2D;
subSoilScenario.StiFileName = "";
subSoilScenario.FullStiFileName = "";
- subSoilScenario.SoilProfile2D = DamEngineDataTestFactory.CreateSoilProfile2D();
+ subSoilScenario.SoilProfile2D = DamEngineDataTestFactory.CreateSoilProfile2D(location.SoilList);
subSoilScenario.SegmentFailureMechanismType = SegmentFailureMechanismType.Stability;
subSoilScenario.SoilProfile1D = DamEngineDataTestFactory.CreateSoilProfile1D();
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs
===================================================================
diff -u -r3004 -r3025
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 3004)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 3025)
@@ -36,17 +36,21 @@
using Deltares.DamEngine.Data.Standard;
using Deltares.DamEngine.Data.Standard.Calculation;
using Deltares.MacroStability.CSharpWrapper;
+using Deltares.MacroStability.CSharpWrapper.Input;
+using Deltares.MacroStability.CSharpWrapper.Output;
using Deltares.MacroStability.Standard;
+using CharacteristicPointType = Deltares.DamEngine.Data.Geotechnics.CharacteristicPointType;
using GeometryPoint = Deltares.DamEngine.Data.Geometry.GeometryPoint;
using LogMessage = Deltares.DamEngine.Data.Standard.Logging.LogMessage;
using LogMessageType = Deltares.DamEngine.Data.Standard.Logging.LogMessageType;
+using Soil = Deltares.DamEngine.Data.Geotechnics.Soil;
namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards
{
public class MacroStabilityInwardsKernelWrapper : IKernelWrapper
{
private Calculator stabilityCalculator;
-
+
private int lastIterationIndex;
///
@@ -94,7 +98,8 @@
var waterNet = PlLinesToWaternetConverter.ConvertPlLineToWaternet(plLines, damKernelInput.SubSoilScenario.SoilProfile1D,
penetrationLength, left, right);
TrafficLoad trafficLoad = null;
- if (damKernelInput.Location.StabilityOptions.TrafficLoad.HasValue && !damKernelInput.Location.StabilityOptions.TrafficLoad.Value.AlmostZero())
+ if (damKernelInput.Location.StabilityOptions != null && damKernelInput.Location.StabilityOptions.TrafficLoad.HasValue &&
+ !damKernelInput.Location.StabilityOptions.TrafficLoad.Value.AlmostZero())
{
trafficLoad = new TrafficLoad();
trafficLoad.Pressure = damKernelInput.Location.StabilityOptions.TrafficLoad.Value;
@@ -129,26 +134,26 @@
private void EnsureSoilProfile2DIsFilled(SoilGeometryProbability subSoilScenario, SurfaceLine2 surfaceLine2, Soil dikeEmbankmentSoil)
{
- // var soilProfile2D = subSoilScenario.SoilProfile2D;
- // if (soilProfile2D == null)
- // {
- // var soilSurfaceProfile = new SoilSurfaceProfile
- // {
- // SoilProfile = subSoilScenario.SoilProfile1D,
- // SurfaceLine2 = surfaceLine2,
- // Name = surfaceLine2.Name + "_" + subSoilScenario.SoilProfile1D.Name,
- // DikeEmbankmentMaterial = dikeEmbankmentSoil
- // };
- // // Convert the soilsurfacesoilprofile to a SoilProfile2D to be able to edit it properly.
- // var soilProfile2DNew = soilSurfaceProfile.ConvertToSoilProfile2D();
- // //soilSurfaceProfile.Dispose();
- // // For some obscure reason, the created soilProfile2D is handled wrong in the UI (see DSB=786).
- // // Its curves do not seem to match the surfaces in the events send on selecting and dragging a curve.
- // // This causes the strange behaviour. To solve this, a Clone is made of the soilProfile2D and that clone is added instead.
- // //soilProfile2D = (SoilProfile2D)soilProfile2D.Clone();
- // //soilProfile2DNew.Dispose();
- // soilProfile2D = soilProfile2DNew;
- // }
+ var soilProfile2D = subSoilScenario.SoilProfile2D;
+ if (soilProfile2D == null)
+ {
+ // var soilSurfaceProfile = new SoilSurfaceProfile
+ // {
+ // SoilProfile = subSoilScenario.SoilProfile1D,
+ // SurfaceLine2 = surfaceLine2,
+ // Name = surfaceLine2.Name + "_" + subSoilScenario.SoilProfile1D.Name,
+ // DikeEmbankmentMaterial = dikeEmbankmentSoil
+ // };
+ // // Convert the soilsurfacesoilprofile to a SoilProfile2D to be able to edit it properly.
+ // var soilProfile2DNew = soilSurfaceProfile.ConvertToSoilProfile2D();
+ // //soilSurfaceProfile.Dispose();
+ // // For some obscure reason, the created soilProfile2D is handled wrong in the UI (see DSB=786).
+ // // Its curves do not seem to match the surfaces in the events send on selecting and dragging a curve.
+ // // This causes the strange behaviour. To solve this, a Clone is made of the soilProfile2D and that clone is added instead.
+ // //soilProfile2D = (SoilProfile2D)soilProfile2D.Clone();
+ // //soilProfile2DNew.Dispose();
+ // soilProfile2D = soilProfile2DNew;
+ }
}
private PrepareResult PrepareKernel(MacroStability.CSharpWrapper.Input.MacroStabilityInput input)
@@ -185,9 +190,39 @@
///
public int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages)
{
- // Todo implement validation as soon as it has been implemented in the C# wrapper.
+ MacroStabilityKernelDataInput macroStabilityKernelDataInput = (MacroStabilityKernelDataInput)kernelDataInput;
+ var result = Deltares.MacroStability.CSharpWrapper.Validator.Validate((MacroStabilityInput)macroStabilityKernelDataInput.Input);
messages = new List();
- return 0;
+ if (result.IsValid)
+ {
+ return 0;
+ }
+
+ (kernelDataOutput as MacroStabilityOutput).CalculationResult = CalculationResult.InvalidInputData;
+ foreach (var resultMessage in result.Messages)
+ {
+ var message = new LogMessage();
+ message.Message = resultMessage.Content;
+ switch (resultMessage.MessageType)
+ {
+ case MessageType.Error:
+ {
+ message.MessageType = LogMessageType.Error;
+ break;
+ }
+ case MessageType.Info:
+ {
+ message.MessageType = LogMessageType.Info;
+ break;
+ }
+ case MessageType.Warning:
+ {
+ message.MessageType = LogMessageType.Warning;
+ break;
+ }
+ };
+ }
+ return 1;
}
///
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/Common/UpliftHelperTests.cs
===================================================================
diff -u -r2910 -r3025
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/Common/UpliftHelperTests.cs (.../UpliftHelperTests.cs) (revision 2910)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/Common/UpliftHelperTests.cs (.../UpliftHelperTests.cs) (revision 3025)
@@ -54,7 +54,7 @@
[Test]
public void TestDetermineStabilityUpliftWithSoilProfile2D()
{
- SoilProfile2D soilProfile2D = DamEngineDataTestFactory.CreateSoilProfile2D();
+ SoilProfile2D soilProfile2D = DamEngineDataTestFactory.CreateSoilProfile2D(null);
var damKernelInput = CreateDamKernelInput();
damKernelInput.SubSoilScenario.SoilProfileType = SoilProfileType.ProfileType2D;
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperInput.cs
===================================================================
diff -u -r3004 -r3025
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperInput.cs (.../FillEngineFromMacroStabilityWrapperInput.cs) (revision 3004)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperInput.cs (.../FillEngineFromMacroStabilityWrapperInput.cs) (revision 3025)
@@ -30,10 +30,9 @@
using HeadLine = Deltares.DamEngine.Data.Geometry.HeadLine;
using Soil = Deltares.DamEngine.Data.Geotechnics.Soil;
using SurfaceLine2 = Deltares.DamEngine.Data.Geotechnics.SurfaceLine2;
-using KernelUpliftVanCalculationGrid = Deltares.MacroStability.CSharpWrapper.UpliftVanCalculationGrid;
-using KernelWaternet = Deltares.MacroStability.CSharpWrapper.Input.Waternet;
-using KernelHeadLine = Deltares.MacroStability.CSharpWrapper.Input.HeadLine;
-using KernelWaternetLine = Deltares.MacroStability.CSharpWrapper.Input.WaternetLine;
+using KernelWaternet = Deltares.MacroStability.CSharpWrapper.Waternet;
+using KernelHeadLine = Deltares.MacroStability.CSharpWrapper.HeadLine;
+using KernelWaternetLine = Deltares.MacroStability.CSharpWrapper.WaternetLine;
using WaternetLine = Deltares.DamEngine.Data.Geometry.WaternetLine;
@@ -166,7 +165,7 @@
}
// Waternet Lines
- foreach (ReferenceLine kernelWaternetLine in kernelWaternet.WaternetLines)
+ foreach (var kernelWaternetLine in kernelWaternet.ReferenceLines)
{
var waternetLine = CreateLine(kernelWaternetLine);
waternetLine.HeadLine = headLineMapping[kernelWaternetLine.AssociatedHeadLine];
@@ -271,7 +270,7 @@
// Add surfaces
var geometrySurfacesDictionary = new Dictionary();
- foreach (var kernelSurface in kernelSoilProfile2D.Geometry.GeometrySurfaces)
+ foreach (var kernelSurface in kernelSoilProfile2D.Geometry.Surfaces)
{
var damSurface = new GeometrySurface();
damSurface.OuterLoop = loopsDictionary[kernelSurface.OuterLoop];
@@ -288,7 +287,7 @@
foreach (var kernelSoilLayer2D in kernelSoilProfile2D.SoilSurfaces)
{
SoilLayer2D damSoilLayer2D = new SoilLayer2D();
- damSoilLayer2D.GeometrySurface = geometrySurfacesDictionary[kernelSoilLayer2D.GeometrySurface];
+ damSoilLayer2D.GeometrySurface = geometrySurfacesDictionary[kernelSoilLayer2D.Surface];
damSoilLayer2D.Soil = soilDictionary[kernelSoilLayer2D.Soil.Name];
damSoilLayer2D.IsAquifer = kernelSoilLayer2D.IsAquifer;
damSoilLayer2D.WaterpressureInterpolationModel = ConversionHelper.ConvertToDamWaterpressureInterpolationModel(kernelSoilLayer2D.WaterPressureInterpolationModel);
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs
===================================================================
diff -u -r2997 -r3025
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 2997)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 3025)
@@ -37,7 +37,7 @@
using Soil = Deltares.MacroStability.CSharpWrapper.Input.Soil;
using StabilityModelOptionType = Deltares.MacroStability.CSharpWrapper.Output.StabilityModelOptionType;
using WaterPressureInterpolationModelKernel = Deltares.MacroStability.CSharpWrapper.Input.WaterPressureInterpolationModel;
-using ShearStrengthModelKernel = Deltares.MacroStability.CSharpWrapper.Input.ShearStrengthModel;
+using ShearStrengthModelKernel = Deltares.MacroStability.CSharpWrapper.ShearStrengthModelType;
namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo
{
@@ -183,7 +183,7 @@
public static Soil ConvertToMacroStabilitySoil(Data.Geotechnics.Soil soil)
{
ShearStrengthModel shearStrengthModel = ShearStrengthModel.None;
- if (soil.ShearStrengthModel.HasValue)
+ if (soil.ShearStrengthModel != null && soil.ShearStrengthModel.HasValue)
{
shearStrengthModel = soil.ShearStrengthModel.Value;
}