Index: Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Calculators/UpliftVan/Input/UpliftVanSlipPlane.cs =================================================================== diff -u -r476c10932cea472a1475d63d32c2ad019bc5c57a -rc31f143df1707d110bd716a1dbc81b1b2d143c1b --- Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Calculators/UpliftVan/Input/UpliftVanSlipPlane.cs (.../UpliftVanSlipPlane.cs) (revision 476c10932cea472a1475d63d32c2ad019bc5c57a) +++ Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Calculators/UpliftVan/Input/UpliftVanSlipPlane.cs (.../UpliftVanSlipPlane.cs) (revision c31f143df1707d110bd716a1dbc81b1b2d143c1b) @@ -52,6 +52,8 @@ /// /// Creates a new instance of . /// + /// The left grid. + /// The right grid. /// Thrown when /// or is null. /// The following values are set: @@ -74,6 +76,11 @@ /// /// Creates a new instance of . /// + /// The left grid. + /// The right grid. + /// The tangent line top boundary. + /// The tangent line bottom boundary. + /// The number of tangent lines. /// Thrown when /// or is null. /// The following values are set: Index: Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Creators/Input/MacroStabilityInputCreator.cs =================================================================== diff -u -rca2e4b3a0824dd8b142fae068b29ee2fbbd1069e -rc31f143df1707d110bd716a1dbc81b1b2d143c1b --- Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Creators/Input/MacroStabilityInputCreator.cs (.../MacroStabilityInputCreator.cs) (revision ca2e4b3a0824dd8b142fae068b29ee2fbbd1069e) +++ Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Creators/Input/MacroStabilityInputCreator.cs (.../MacroStabilityInputCreator.cs) (revision c31f143df1707d110bd716a1dbc81b1b2d143c1b) @@ -93,7 +93,7 @@ throw new ArgumentNullException(nameof(extremeWaternet)); } - return new MacroStabilityInput + var macroStabilityInput = new MacroStabilityInput { StabilityModel = { @@ -122,10 +122,7 @@ OnlyAbovePleistoceen = true, AutoSearchArea = upliftVanInput.SlipPlane.GridAutomaticDetermined, AutoTangentLines = upliftVanInput.SlipPlane.TangentLinesAutomaticAtBoundaries, - AutomaticForbiddenZones = upliftVanInput.SlipPlaneConstraints.AutomaticForbiddenZones, - TangentLineNumber = upliftVanInput.SlipPlane.TangentLineNumber, - TangentLineZTop = upliftVanInput.SlipPlane.TangentZTop, - TangentLineZBottom = upliftVanInput.SlipPlane.TangentZBottom + AutomaticForbiddenZones = upliftVanInput.SlipPlaneConstraints.AutomaticForbiddenZones }, PreConstructionStages = { @@ -134,6 +131,10 @@ } } }; + + SetTangentLineProperties(upliftVanInput, macroStabilityInput); + + return macroStabilityInput; } /// @@ -230,6 +231,16 @@ WaternetCreatorInputCreator.Create(waternetInput)); } + private static void SetTangentLineProperties(UpliftVanCalculatorInput upliftVanInput, MacroStabilityInput macroStabilityInput) + { + if (!upliftVanInput.SlipPlane.TangentLinesAutomaticAtBoundaries) + { + macroStabilityInput.PreprocessingInput.SearchAreaConditions.TangentLineNumber = upliftVanInput.SlipPlane.TangentLineNumber; + macroStabilityInput.PreprocessingInput.SearchAreaConditions.TangentLineZTop = upliftVanInput.SlipPlane.TangentZTop; + macroStabilityInput.PreprocessingInput.SearchAreaConditions.TangentLineZBottom = upliftVanInput.SlipPlane.TangentZBottom; + } + } + private static MacroStabilityInput CreateWaternet(ICollection soils, SurfaceLine surfaceLine, SoilProfile soilProfile, WaternetCreatorInput waternetCreatorInput) { Index: Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.Test/Creators/Input/MacroStabilityInputCreatorTest.cs =================================================================== diff -u -rca2e4b3a0824dd8b142fae068b29ee2fbbd1069e -rc31f143df1707d110bd716a1dbc81b1b2d143c1b --- Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.Test/Creators/Input/MacroStabilityInputCreatorTest.cs (.../MacroStabilityInputCreatorTest.cs) (revision ca2e4b3a0824dd8b142fae068b29ee2fbbd1069e) +++ Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.Test/Creators/Input/MacroStabilityInputCreatorTest.cs (.../MacroStabilityInputCreatorTest.cs) (revision c31f143df1707d110bd716a1dbc81b1b2d143c1b) @@ -184,9 +184,9 @@ Assert.IsTrue(searchAreaConditions.OnlyAbovePleistoceen); Assert.AreEqual(input.SlipPlane.GridAutomaticDetermined, searchAreaConditions.AutoSearchArea); Assert.AreEqual(input.SlipPlane.TangentLinesAutomaticAtBoundaries, searchAreaConditions.AutoTangentLines); - Assert.AreEqual(input.SlipPlane.TangentLineNumber, searchAreaConditions.TangentLineNumber); - Assert.AreEqual(input.SlipPlane.TangentZTop, searchAreaConditions.TangentLineZTop); - Assert.AreEqual(input.SlipPlane.TangentZBottom, searchAreaConditions.TangentLineZBottom); + Assert.AreEqual(1, searchAreaConditions.TangentLineNumber); + Assert.AreEqual(0, searchAreaConditions.TangentLineZTop); + Assert.AreEqual(0, searchAreaConditions.TangentLineZBottom); Assert.AreEqual(input.SlipPlaneConstraints.AutomaticForbiddenZones, searchAreaConditions.AutomaticForbiddenZones); Assert.AreEqual(2, macroStabilityInput.PreprocessingInput.PreConstructionStages.Count); @@ -199,6 +199,38 @@ } } + [Test] + public void CreateUpliftVan_ValidDataWithManualTangentLines_ReturnMacroStabilityInput() + { + // Setup + var random = new Random(21); + double tangentZTop = random.NextDouble(); + double tangentZBottom = random.NextDouble(); + int tangentLineNumber = random.Next(); + + UpliftVanCalculatorInput input = UpliftVanCalculatorInputTestFactory.Create(tangentZTop, tangentZBottom, tangentLineNumber); + + LayerWithSoil[] layersWithSoil = LayerWithSoilCreator.Create(input.SoilProfile, out IDictionary layerLookup); + List soils = layersWithSoil.Select(lws => lws.Soil).ToList(); + + SurfaceLine surfaceLine = SurfaceLineCreator.Create(input.SurfaceLine); + SoilProfile soilProfile = SoilProfileCreator.Create(layersWithSoil); + + var dailyWaternet = new Waternet(); + var extremeWaternet = new Waternet(); + + // Call + MacroStabilityInput macroStabilityInput = MacroStabilityInputCreator.CreateUpliftVan( + input, soils, layerLookup, surfaceLine, soilProfile, dailyWaternet, extremeWaternet); + + // Assert + SearchAreaConditions searchAreaConditions = macroStabilityInput.PreprocessingInput.SearchAreaConditions; + Assert.AreEqual(input.SlipPlane.TangentLinesAutomaticAtBoundaries, searchAreaConditions.AutoTangentLines); + Assert.AreEqual(input.SlipPlane.TangentLineNumber, searchAreaConditions.TangentLineNumber); + Assert.AreEqual(input.SlipPlane.TangentZTop, searchAreaConditions.TangentLineZTop); + Assert.AreEqual(input.SlipPlane.TangentZBottom, searchAreaConditions.TangentLineZBottom); + } + private static void AssertConstructionStages( UpliftVanCalculatorInput input, StabilityInput stabilityModel, SoilProfile soilProfile, Waternet dailyWaternet, Waternet extremeWaternet, IDictionary layerLookup) Index: Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.TestUtil.Test/Calculators/UpliftVan/Input/UpliftVanCalculatorInputTestFactoryTest.cs =================================================================== diff -u -rf08d80ff73aa6e92788ad00f00f1128257b5f287 -rc31f143df1707d110bd716a1dbc81b1b2d143c1b --- Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.TestUtil.Test/Calculators/UpliftVan/Input/UpliftVanCalculatorInputTestFactoryTest.cs (.../UpliftVanCalculatorInputTestFactoryTest.cs) (revision f08d80ff73aa6e92788ad00f00f1128257b5f287) +++ Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.TestUtil.Test/Calculators/UpliftVan/Input/UpliftVanCalculatorInputTestFactoryTest.cs (.../UpliftVanCalculatorInputTestFactoryTest.cs) (revision c31f143df1707d110bd716a1dbc81b1b2d143c1b) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using NUnit.Framework; using Riskeer.MacroStabilityInwards.KernelWrapper.Calculators.UpliftVan.Input; using Riskeer.MacroStabilityInwards.KernelWrapper.TestUtil.Calculators.UpliftVan.Input; @@ -30,7 +31,7 @@ public class UpliftVanCalculatorInputTestFactoryTest { [Test] - public void Create_Always_ReturnsUpliftVanCalculatorInput() + public void Create_WithoutParameters_ReturnsUpliftVanCalculatorInput() { // Call UpliftVanCalculatorInput input = UpliftVanCalculatorInputTestFactory.Create(); @@ -66,5 +67,52 @@ Assert.AreEqual(1, input.SlipPlaneConstraints.SlipPlaneMinimumDepth); Assert.AreEqual(0.7, input.SlipPlaneConstraints.SlipPlaneMinimumLength); } + + [Test] + public void Create_WithParameters_ReturnsUpliftVanCalculatorInput() + { + // Setup + var random = new Random(21); + double tangentZTop = random.NextDouble(); + double tangentZBottom = random.NextDouble(); + int tangentLineNumber = random.Next(); + + // Call + UpliftVanCalculatorInput input = UpliftVanCalculatorInputTestFactory.Create(tangentZTop, tangentZBottom, tangentLineNumber); + + // Assert + Assert.AreEqual(-1, input.AssessmentLevel); + Assert.AreEqual(-1, input.WaterLevelRiverAverage); + Assert.AreEqual(-1, input.WaterLevelPolderExtreme); + Assert.AreEqual(-1, input.WaterLevelPolderDaily); + Assert.AreEqual(0.1, input.MinimumLevelPhreaticLineAtDikeTopRiver); + Assert.AreEqual(0.2, input.MinimumLevelPhreaticLineAtDikeTopPolder); + Assert.AreEqual(1.3, input.LeakageLengthOutwardsPhreaticLine3); + Assert.AreEqual(1.4, input.LeakageLengthInwardsPhreaticLine3); + Assert.AreEqual(1.5, input.LeakageLengthOutwardsPhreaticLine4); + Assert.AreEqual(1.6, input.LeakageLengthInwardsPhreaticLine4); + Assert.AreEqual(0.3, input.PiezometricHeadPhreaticLine2Outwards); + Assert.AreEqual(0.4, input.PiezometricHeadPhreaticLine2Inwards); + Assert.AreEqual(0.5, input.PenetrationLengthExtreme); + Assert.AreEqual(0.6, input.PenetrationLengthDaily); + Assert.IsTrue(input.AdjustPhreaticLine3And4ForUplift); + Assert.AreEqual(MacroStabilityInwardsDikeSoilScenario.ClayDikeOnClay, input.DikeSoilScenario); + Assert.IsFalse(input.MoveGrid); + Assert.AreEqual(1, input.MaximumSliceWidth); + + Assert.IsNotNull(input.SurfaceLine); + Assert.IsNotNull(input.SoilProfile); + Assert.IsNotNull(input.DrainageConstruction); + Assert.IsNotNull(input.PhreaticLineOffsetsDaily); + Assert.IsNotNull(input.PhreaticLineOffsetsExtreme); + Assert.IsNotNull(input.SlipPlane); + Assert.AreEqual(tangentZTop, input.SlipPlane.TangentZTop); + Assert.AreEqual(tangentZBottom, input.SlipPlane.TangentZBottom); + Assert.AreEqual(tangentLineNumber, input.SlipPlane.TangentLineNumber); + Assert.IsNotNull(input.SlipPlaneConstraints); + + Assert.AreEqual(1, input.SlipPlaneConstraints.SlipPlaneMinimumDepth); + Assert.AreEqual(0.7, input.SlipPlaneConstraints.SlipPlaneMinimumLength); + } } } \ No newline at end of file Index: Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.TestUtil/Calculators/UpliftVan/Input/UpliftVanCalculatorInputTestFactory.cs =================================================================== diff -u -r1ff6856c055a47896637a72ac196436c30801503 -rc31f143df1707d110bd716a1dbc81b1b2d143c1b --- Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.TestUtil/Calculators/UpliftVan/Input/UpliftVanCalculatorInputTestFactory.cs (.../UpliftVanCalculatorInputTestFactory.cs) (revision 1ff6856c055a47896637a72ac196436c30801503) +++ Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.TestUtil/Calculators/UpliftVan/Input/UpliftVanCalculatorInputTestFactory.cs (.../UpliftVanCalculatorInputTestFactory.cs) (revision c31f143df1707d110bd716a1dbc81b1b2d143c1b) @@ -39,6 +39,24 @@ /// The created . public static UpliftVanCalculatorInput Create() { + return Create(new UpliftVanSlipPlane()); + } + + /// + /// Creates a new instance of . + /// + /// The tangent line top boundary. + /// The tangent line bottom boundary. + /// The number of tangent lines. + /// The created . + public static UpliftVanCalculatorInput Create(double tangentZTop, double tangentZBottom, int tangentLineNumber) + { + return Create(new UpliftVanSlipPlane(UpliftVanGridTestFactory.Create(), UpliftVanGridTestFactory.Create(), + tangentZTop, tangentZBottom, tangentLineNumber)); + } + + private static UpliftVanCalculatorInput Create(UpliftVanSlipPlane slipPlane) + { MacroStabilityInwardsSurfaceLine surfaceLine = CreateValidSurfaceLine(); return new UpliftVanCalculatorInput(new UpliftVanCalculatorInput.ConstructionProperties @@ -49,7 +67,7 @@ DrainageConstruction = new DrainageConstruction(), PhreaticLineOffsetsExtreme = new PhreaticLineOffsets(), PhreaticLineOffsetsDaily = new PhreaticLineOffsets(), - SlipPlane = new UpliftVanSlipPlane(), + SlipPlane = slipPlane, SlipPlaneConstraints = new UpliftVanSlipPlaneConstraints(1, 0.7), WaterLevelRiverAverage = -1, WaterLevelPolderExtreme = -1,