Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamWbiMacroStabilityInwards/DamWbiMacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r1941 -r1949 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamWbiMacroStabilityInwards/DamWbiMacroStabilityInwardsKernelWrapper.cs (.../DamWbiMacroStabilityInwardsKernelWrapper.cs) (revision 1941) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamWbiMacroStabilityInwards/DamWbiMacroStabilityInwardsKernelWrapper.cs (.../DamWbiMacroStabilityInwardsKernelWrapper.cs) (revision 1949) @@ -32,7 +32,6 @@ public FailureMechanismParametersMStab FailureMechanismParametersMStab { get; set; } //ToDo MWDAM-? Use same as for DGeoStability or create new one for WBI? public bool tmpPresumePrepareSucceeds; //ToDo MWDAM-1356 - public bool tmpPresumePrepareIsUplift; //ToDo MWDAM-? Determine Uplift for Wbi, same as for DGeoStability? public bool tmpPresumeInputValid; //ToDo MWDAM-1367 public bool tmpPresumeRunSucceeds; //ToDo MWDAM-1356, MWDAM-1367, MWDAM-1357 @@ -57,10 +56,7 @@ try { // Determine whether there is uplift - //ToDo MWDAM-? var upliftSituation = UpliftHelper.DetermineStabilityUplift(damKernelInput, false); - var upliftSituation = new UpliftSituation(); - upliftSituation.IsUplift = tmpPresumePrepareIsUplift; // temporary code for testing - + var upliftSituation = UpliftHelper.DetermineStabilityUplift(damKernelInput, false); macroStabilityOutput.UpliftSituation = upliftSituation; kernelDataOutput = macroStabilityOutput; if (upliftSituation.IsUplift) Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamWbiMacroStabilityInwards/DamWbiMacroStabilityInwardsKernelWrapperTests.cs =================================================================== diff -u -r1941 -r1949 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamWbiMacroStabilityInwards/DamWbiMacroStabilityInwardsKernelWrapperTests.cs (.../DamWbiMacroStabilityInwardsKernelWrapperTests.cs) (revision 1941) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamWbiMacroStabilityInwards/DamWbiMacroStabilityInwardsKernelWrapperTests.cs (.../DamWbiMacroStabilityInwardsKernelWrapperTests.cs) (revision 1949) @@ -9,6 +9,8 @@ using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.General.Results; +using Deltares.DamEngine.Data.Geometry; +using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Data.Standard.Calculation; using Deltares.DamEngine.Data.Standard.Logging; using Deltares.DamEngine.TestHelpers.Factories; @@ -30,20 +32,19 @@ IKernelDataInput kernelDataInput; IKernelDataOutput kernelDataOutput; - var kernelInput = new DamKernelInput(); + var kernelInput = CreateDamKernelInputForTest(); // Situation 1: no uplift. Expected PrepareResult.NotRelevant - kernelWrapper.tmpPresumePrepareIsUplift = false; //ToDo MWDAM-? replace by input that makes IsUplift false + kernelInput.Location.ModelFactors.UpliftCriterionStability = 0.8; var prepareResult = kernelWrapper.Prepare(kernelInput, 0, out kernelDataInput, out kernelDataOutput); Assert.AreEqual(PrepareResult.NotRelevant, prepareResult); DamWbiMacroStabilityOutput damMacroStabilityOutput = (DamWbiMacroStabilityOutput)kernelDataOutput; Assert.AreEqual(CalculationResult.NoRun, damMacroStabilityOutput.CalculationResult); Assert.AreEqual(false, damMacroStabilityOutput.UpliftSituation.IsUplift); // Situation 2: there is uplift and prepare succeeds. Expected PrepareResult.Successful + kernelInput.Location.ModelFactors.UpliftCriterionStability = 1.2; // ToDo MWDAM-1356: Not clear yet what must be done in Prepare and XML input not written yet. - // start of temporary test code - kernelWrapper.tmpPresumePrepareIsUplift = true; //ToDo replace by input that makes IsUplift true kernelWrapper.tmpPresumePrepareSucceeds = true; //ToDo replace by input that makes prepare succeed prepareResult = kernelWrapper.Prepare(kernelInput, 0, out kernelDataInput, out kernelDataOutput); Assert.AreEqual(PrepareResult.Successful, prepareResult); @@ -52,7 +53,8 @@ Assert.AreEqual(true, damMacroStabilityOutput.UpliftSituation.IsUplift); // Situation 3: there is uplift and prepare fails. Expected PrepareResult.Failed - kernelWrapper.tmpPresumePrepareIsUplift = true; //ToDo replace by input that makes IsUplift true + kernelInput.Location.ModelFactors.UpliftCriterionStability = 1.2; + // ToDo MWDAM-1356: Not clear yet what must be done in Prepare and XML input not written yet. kernelWrapper.tmpPresumePrepareSucceeds = false; //ToDo replace by input that makes prepare fail prepareResult = kernelWrapper.Prepare(kernelInput, 0, out kernelDataInput, out kernelDataOutput); Assert.AreEqual(PrepareResult.Failed, prepareResult); @@ -282,12 +284,20 @@ private static DamKernelInput CreateDamKernelInputForTest() { - // ToDo: Not clear yet what parts apply to Wbi Stability. For now, minimal implementation. Add DamWbiMacroStabilityTestHelper? var location = DamMacroStabilityTestHelper.CreateLocation(FactoryForSurfaceLines.CreateSurfaceLineTutorial1()); + var subSoilScenario = new SoilGeometryProbability(); + subSoilScenario.SoilProfileType = SoilProfileType.ProfileType2D; + subSoilScenario.StiFileName = ""; + subSoilScenario.FullStiFileName = ""; + subSoilScenario.SoilProfile2D = DamMacroStabilityTestHelper.CreateSoilProfile2D(); + subSoilScenario.SegmentFailureMechanismType = FailureMechanismSystemType.StabilityInside; + var damKernelInput = new DamKernelInput(); damKernelInput.Location = location; damKernelInput.SubSoilScenario = subSoilScenario; + damKernelInput.RiverLevelLow = null; + damKernelInput.DamFailureMechanismeCalculationSpecification = new DamFailureMechanismeCalculationSpecification(); return damKernelInput; } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityCommon/DamMacroStabilityTestHelper.cs =================================================================== diff -u -r1464 -r1949 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityCommon/DamMacroStabilityTestHelper.cs (.../DamMacroStabilityTestHelper.cs) (revision 1464) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityCommon/DamMacroStabilityTestHelper.cs (.../DamMacroStabilityTestHelper.cs) (revision 1949) @@ -22,6 +22,7 @@ using System.Collections.Generic; using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; namespace Deltares.DamEngine.Calculators.Tests.KernelWrappers.DamMacroStabilityCommon @@ -168,5 +169,60 @@ return soilList; } + /// + /// Creates a 2D soil profile for the tests. + /// + /// + public static SoilProfile2D CreateSoilProfile2D() + { + SoilProfile2D soilProfile2D = new SoilProfile2D(); + + var geometry = new GeometryData(); + geometry.Left = 0; + geometry.Right = 100; + geometry.Bottom = -10; + soilProfile2D.Geometry = geometry; + + var layer = new SoilLayer2D + { + Name = "Layer 1", + Soil = new Soil("OA", 17.70, 17.70) + }; + layer.GeometrySurface = new GeometrySurface(); + var outerLoop = new GeometryLoop(); + var point1 = new Point2D(0, 1); + var point2 = new Point2D(100, 1); + var point3 = new Point2D(100, -5); + 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)); + 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) + }; + layer.GeometrySurface = new GeometrySurface(); + outerLoop = new GeometryLoop(); + var point5 = new Point2D(0, -10); + 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)); + layer.GeometrySurface.OuterLoop = outerLoop; + layer.WaterpressureInterpolationModel = WaterpressureInterpolationModel.Hydrostatic; + layer.IsAquifer = true; + soilProfile2D.Surfaces.Add(layer); + + return soilProfile2D; + } + } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/Common/UpliftHelperTests.cs =================================================================== diff -u -r1948 -r1949 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/Common/UpliftHelperTests.cs (.../UpliftHelperTests.cs) (revision 1948) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/Common/UpliftHelperTests.cs (.../UpliftHelperTests.cs) (revision 1949) @@ -1,10 +1,7 @@ -using System; -using System.Collections.Generic; -using System.IO; +using System.IO; using Deltares.DamEngine.Calculators.KernelWrappers.Common; using Deltares.DamEngine.Calculators.Tests.KernelWrappers.DamMacroStabilityCommon; using Deltares.DamEngine.Data.General; -using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.TestHelpers.Factories; using NUnit.Framework; @@ -36,8 +33,7 @@ [Test] public void TestDetermineStabilityUpliftWithSoilProfile2D() { - SoilProfile2D soilProfile2D = CreateSoilProfile2D(); - //Assert.AreEqual(3, soilProfile2D.Geometry.Curves.Count); + SoilProfile2D soilProfile2D = DamMacroStabilityTestHelper.CreateSoilProfile2D(); var damKernelInput = CreateDamKernelInput(); damKernelInput.SubSoilScenario.SoilProfileType = SoilProfileType.ProfileType2D; @@ -81,56 +77,6 @@ return damKernelInput; } - private static SoilProfile2D CreateSoilProfile2D() - { - SoilProfile2D soilProfile2D = new SoilProfile2D(); - var geometry = new GeometryData(); - geometry.Left = 0; - geometry.Right = 100; - geometry.Bottom = -10; - soilProfile2D.Geometry = geometry; - - var layer = new SoilLayer2D - { - Name = "Layer 1", - Soil = new Soil("OA", 17.70, 17.70) - }; - layer.GeometrySurface = new GeometrySurface(); - var outerLoop = new GeometryLoop(); - var point1 = new Point2D(0, 1); - var point2 = new Point2D(100, 1); - var point3 = new Point2D(100, -5); - 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)); - 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) - }; - layer.GeometrySurface = new GeometrySurface(); - outerLoop = new GeometryLoop(); - var point5 = new Point2D(0, -10); - 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)); - layer.GeometrySurface.OuterLoop = outerLoop; - layer.WaterpressureInterpolationModel = WaterpressureInterpolationModel.Hydrostatic; - layer.IsAquifer = true; - soilProfile2D.Surfaces.Add(layer); - - return soilProfile2D; - } - } }