Пример #1
0
        public void ConstructorWithGridsAndTangent_ExpectedValues()
        {
            // Setup
            var    random            = new Random(11);
            double tangentZTop       = random.NextDouble();
            double tangentZBottom    = random.NextDouble();
            int    tangentLineNumber = random.Next();

            UpliftVanGrid leftGrid  = UpliftVanGridTestFactory.Create();
            UpliftVanGrid rightGrid = UpliftVanGridTestFactory.Create();

            // Call
            var slipPlane = new UpliftVanSlipPlane(leftGrid, rightGrid, tangentZTop, tangentZBottom, tangentLineNumber);

            // Assert
            Assert.IsFalse(slipPlane.GridAutomaticDetermined);
            Assert.AreSame(leftGrid, slipPlane.LeftGrid);
            Assert.AreSame(rightGrid, slipPlane.RightGrid);
            Assert.IsFalse(slipPlane.TangentLinesAutomaticAtBoundaries);
            Assert.AreEqual(tangentZTop, slipPlane.TangentZTop);
            Assert.AreEqual(tangentZBottom, slipPlane.TangentZBottom);
            Assert.AreEqual(tangentLineNumber, slipPlane.TangentLineNumber);
            Assert.AreEqual(4, slipPlane.TangentLineNumberOfRefinements);
            Assert.AreEqual(0, slipPlane.GridNumberOfRefinements);
        }
Пример #2
0
 /// <summary>
 /// Creates a new instance of <see cref="UpliftVanSlipPlane"/>.
 /// </summary>
 /// <param name="leftGrid">The left grid.</param>
 /// <param name="rightGrid">The right grid.</param>
 /// <exception cref="ArgumentNullException">Thrown when <paramref name="leftGrid"/>
 /// or <paramref name="rightGrid"/> is <c>null</c>.</exception>
 /// <remarks>The following values are set:
 /// <list type="bullet">
 /// <item><see cref="GridAutomaticDetermined"/> is set to <c>false</c>;</item>
 /// <item><see cref="TangentLinesAutomaticAtBoundaries"/> is set to <c>true</c>;</item>
 /// <item><see cref="TangentZTop"/> is set to <see cref="double.NaN"/>;</item>
 /// <item><see cref="TangentZBottom"/> is set to <see cref="double.NaN"/>;</item>
 /// <item><see cref="TangentLineNumber"/> is set to <c>0</c>.</item>
 /// </list>
 /// </remarks>
 public UpliftVanSlipPlane(UpliftVanGrid leftGrid, UpliftVanGrid rightGrid)
     : this(double.NaN, double.NaN, 0)
 {
     SetGrids(leftGrid, rightGrid);
     TangentLinesAutomaticAtBoundaries = true;
     GridNumberOfRefinements           = 0;
 }
Пример #3
0
 /// <summary>
 /// Creates a new instance of <see cref="UpliftVanSlipPlane"/>.
 /// </summary>
 /// <param name="leftGrid">The left grid.</param>
 /// <param name="rightGrid">The right grid.</param>
 /// <param name="tangentZTop">The tangent line top boundary.</param>
 /// <param name="tangentZBottom">The tangent line bottom boundary.</param>
 /// <param name="tangentLineNumber">The number of tangent lines.</param>
 /// <exception cref="ArgumentNullException">Thrown when <paramref name="leftGrid"/>
 /// or <paramref name="rightGrid"/> is <c>null</c>.</exception>
 /// <remarks>The following values are set:
 /// <list type="bullet">
 /// <item><see cref="GridAutomaticDetermined"/> is set to <c>false</c>;</item>
 /// <item><see cref="TangentLinesAutomaticAtBoundaries"/> is set to <c>false</c>.</item>
 /// </list>
 /// </remarks>
 public UpliftVanSlipPlane(UpliftVanGrid leftGrid, UpliftVanGrid rightGrid, double tangentZTop,
                           double tangentZBottom, int tangentLineNumber)
     : this(tangentZTop, tangentZBottom, tangentLineNumber)
 {
     SetGrids(leftGrid, rightGrid);
     GridNumberOfRefinements = 0;
 }
 private static void AssertGrid(CalculationGrid originalGrid, UpliftVanGrid actualGrid)
 {
     Assert.AreEqual(originalGrid.GridXLeft, actualGrid.XLeft);
     Assert.AreEqual(originalGrid.GridXRight, actualGrid.XRight);
     Assert.AreEqual(originalGrid.GridZTop, actualGrid.ZTop);
     Assert.AreEqual(originalGrid.GridZBottom, actualGrid.ZBottom);
     Assert.AreEqual(originalGrid.GridXNumber, actualGrid.NumberOfHorizontalPoints);
     Assert.AreEqual(originalGrid.GridZNumber, actualGrid.NumberOfVerticalPoints);
 }
Пример #5
0
 /// <summary>
 /// Asserts whether <paramref name="actual"/> is equal to <paramref name="expected"/>.
 /// </summary>
 /// <param name="expected">The expected <see cref="UpliftVanGrid"/>.</param>
 /// <param name="actual">The actual <see cref="UpliftVanGrid"/>.</param>
 /// <exception cref="AssertionException">Thrown when <paramref name="actual"/>
 /// is not equal to <paramref name="expected"/>.</exception>
 private static void AssertUpliftVanGrid(UpliftVanGrid expected, UpliftVanGrid actual)
 {
     Assert.AreEqual(expected.XLeft, actual.XLeft);
     Assert.AreEqual(expected.XRight, actual.XRight);
     Assert.AreEqual(expected.ZTop, actual.ZTop);
     Assert.AreEqual(expected.ZBottom, actual.ZBottom);
     Assert.AreEqual(expected.NumberOfHorizontalPoints, actual.NumberOfHorizontalPoints);
     Assert.AreEqual(expected.NumberOfVerticalPoints, actual.NumberOfVerticalPoints);
 }
 private static void AssertGrid(MacroStabilityInwardsGrid expectedGrid, UpliftVanGrid actualGrid)
 {
     Assert.AreEqual(expectedGrid.XLeft, actualGrid.XLeft);
     Assert.AreEqual(expectedGrid.XRight, actualGrid.XRight);
     Assert.AreEqual(expectedGrid.ZTop, actualGrid.ZTop);
     Assert.AreEqual(expectedGrid.ZBottom, actualGrid.ZBottom);
     Assert.AreEqual(expectedGrid.NumberOfHorizontalPoints, actualGrid.NumberOfHorizontalPoints);
     Assert.AreEqual(expectedGrid.NumberOfVerticalPoints, actualGrid.NumberOfVerticalPoints);
 }
 private static MacroStabilityInwardsGrid ConvertGrid(UpliftVanGrid grid)
 {
     return(new MacroStabilityInwardsGrid(grid.XLeft,
                                          grid.XRight,
                                          grid.ZTop,
                                          grid.ZBottom)
     {
         NumberOfHorizontalPoints = grid.NumberOfHorizontalPoints,
         NumberOfVerticalPoints = grid.NumberOfVerticalPoints
     });
 }
Пример #8
0
        /// <summary>
        /// Creates a <see cref="UpliftVanCalculationGridResult"/> based on the information
        /// given in the <paramref name="upliftVanCalculationGrid"/>.
        /// </summary>
        /// <param name="upliftVanCalculationGrid">The output to create the result for.</param>
        /// <returns>A new <see cref="UpliftVanCalculationGridResult"/> with information
        /// taken from the <paramref name="upliftVanCalculationGrid"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="upliftVanCalculationGrid"/>
        /// is <c>null</c>.</exception>
        public static UpliftVanCalculationGridResult Create(UpliftVanCalculationGrid upliftVanCalculationGrid)
        {
            if (upliftVanCalculationGrid == null)
            {
                throw new ArgumentNullException(nameof(upliftVanCalculationGrid));
            }

            UpliftVanGrid leftGrid  = CreateGrid(upliftVanCalculationGrid.LeftGrid);
            UpliftVanGrid rightGrid = CreateGrid(upliftVanCalculationGrid.RightGrid);

            return(new UpliftVanCalculationGridResult(leftGrid, rightGrid, upliftVanCalculationGrid.TangentLines));
        }
Пример #9
0
        public void ConstructorWithGrids_RightGridNull_ThrowsArgumentNullException()
        {
            // Setup
            UpliftVanGrid grid = UpliftVanGridTestFactory.Create();

            // Call
            void Call() => new UpliftVanSlipPlane(grid, null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("rightGrid", exception.ParamName);
        }
        public void Constructor_RightGridNull_ThrowsArgumentNullException()
        {
            // Setup
            UpliftVanGrid grid = UpliftVanGridTestFactory.Create();

            // Call
            TestDelegate call = () => new UpliftVanCalculationGridResult(grid, null, Enumerable.Empty <double>());

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(call);

            Assert.AreEqual("rightGrid", exception.ParamName);
        }
        public void Constructor_TangentLinesNull_ThrowsArgumentNullException()
        {
            // Setup
            UpliftVanGrid leftGrid  = UpliftVanGridTestFactory.Create();
            UpliftVanGrid rightGrid = UpliftVanGridTestFactory.Create();

            // Call
            TestDelegate call = () => new UpliftVanCalculationGridResult(leftGrid, rightGrid, null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(call);

            Assert.AreEqual("tangentLines", exception.ParamName);
        }
Пример #12
0
        private void SetGrids(UpliftVanGrid leftGrid, UpliftVanGrid rightGrid)
        {
            if (leftGrid == null)
            {
                throw new ArgumentNullException(nameof(leftGrid));
            }

            if (rightGrid == null)
            {
                throw new ArgumentNullException(nameof(rightGrid));
            }

            LeftGrid  = leftGrid;
            RightGrid = rightGrid;
        }
Пример #13
0
        private static CalculationGrid CreateGrid(UpliftVanSlipPlane slipPlane, UpliftVanGrid grid)
        {
            var calculationGrid = new CalculationGrid();

            if (!slipPlane.GridAutomaticDetermined)
            {
                calculationGrid.GridXLeft   = grid.XLeft;
                calculationGrid.GridXRight  = grid.XRight;
                calculationGrid.GridZTop    = grid.ZTop;
                calculationGrid.GridZBottom = grid.ZBottom;
                calculationGrid.GridXNumber = grid.NumberOfHorizontalPoints;
                calculationGrid.GridZNumber = grid.NumberOfVerticalPoints;
            }

            return(calculationGrid);
        }
        /// <summary>
        /// Converts <see cref="MacroStabilityInwardsInput"/> slip plane properties
        /// into <see cref="UpliftVanSlipPlane"/>.
        /// </summary>
        /// <param name="input">The input to get the properties from.</param>
        /// <returns>The converted <see cref="UpliftVanSlipPlane"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="input"/>
        /// is <c>null</c>.</exception>
        public static UpliftVanSlipPlane Convert(MacroStabilityInwardsInput input)
        {
            if (input == null)
            {
                throw new ArgumentNullException(nameof(input));
            }

            if (input.GridDeterminationType == MacroStabilityInwardsGridDeterminationType.Automatic)
            {
                return(new UpliftVanSlipPlane());
            }

            UpliftVanGrid leftGrid  = ConvertGrid(input.LeftGrid);
            UpliftVanGrid rightGrid = ConvertGrid(input.RightGrid);

            return(input.TangentLineDeterminationType == MacroStabilityInwardsTangentLineDeterminationType.Specified
                       ? new UpliftVanSlipPlane(leftGrid, rightGrid, input.TangentLineZTop, input.TangentLineZBottom, input.TangentLineNumber)
                       : new UpliftVanSlipPlane(leftGrid, rightGrid));
        }
Пример #15
0
        public void ConstructorWithGrids_ExpectedValues()
        {
            // Setup
            UpliftVanGrid leftGrid  = UpliftVanGridTestFactory.Create();
            UpliftVanGrid rightGrid = UpliftVanGridTestFactory.Create();

            // Call
            var slipPlane = new UpliftVanSlipPlane(leftGrid, rightGrid);

            // Assert
            Assert.IsFalse(slipPlane.GridAutomaticDetermined);
            Assert.AreSame(leftGrid, slipPlane.LeftGrid);
            Assert.AreSame(rightGrid, slipPlane.RightGrid);
            Assert.IsTrue(slipPlane.TangentLinesAutomaticAtBoundaries);
            Assert.IsNaN(slipPlane.TangentZTop);
            Assert.IsNaN(slipPlane.TangentZBottom);
            Assert.AreEqual(0, slipPlane.TangentLineNumber);
            Assert.AreEqual(4, slipPlane.TangentLineNumberOfRefinements);
            Assert.AreEqual(0, slipPlane.GridNumberOfRefinements);
        }
        public void Constructor_ValidParameters_ExpectedValues()
        {
            // Setup
            UpliftVanGrid leftGrid  = UpliftVanGridTestFactory.Create();
            UpliftVanGrid rightGrid = UpliftVanGridTestFactory.Create();

            double[] tangentLines =
            {
                0,
                1,
                1.5,
                2
            };

            // Call
            var result = new UpliftVanCalculationGridResult(leftGrid, rightGrid, tangentLines);

            // Assert
            Assert.AreSame(leftGrid, result.LeftGrid);
            Assert.AreSame(rightGrid, result.RightGrid);
            Assert.AreSame(tangentLines, result.TangentLines);
        }
Пример #17
0
        public void Constructor_ExpectedValues()
        {
            // Setup
            var    random  = new Random(21);
            double xLeft   = random.Next();
            double xRight  = random.Next();
            double zTop    = random.Next();
            double zBottom = random.Next();
            int    numberOfHorizontalPoints = random.Next();
            int    numberOfVerticalPoints   = random.Next();

            // Call
            var grid = new UpliftVanGrid(xLeft, xRight, zTop, zBottom, numberOfHorizontalPoints, numberOfVerticalPoints);

            // Assert
            Assert.AreEqual(xLeft, grid.XLeft);
            Assert.AreEqual(xRight, grid.XRight);
            Assert.AreEqual(zTop, grid.ZTop);
            Assert.AreEqual(zBottom, grid.ZBottom);
            Assert.AreEqual(numberOfHorizontalPoints, grid.NumberOfHorizontalPoints);
            Assert.AreEqual(numberOfVerticalPoints, grid.NumberOfVerticalPoints);
        }
Пример #18
0
        public void Create_WithSlipPlane_ReturnUpliftVanCalculationGrid()
        {
            // Setup
            var    random           = new Random(21);
            double leftGridXLeft    = random.NextDouble();
            double leftGridXRight   = random.NextDouble();
            double leftGridZTop     = random.NextDouble();
            double leftGridZBottom  = random.NextDouble();
            int    leftGridXNumber  = random.Next();
            int    leftGridZNumber  = random.Next();
            double rightGridXLeft   = random.NextDouble();
            double rightGridXRight  = random.NextDouble();
            double rightGridZTop    = random.NextDouble();
            double rightGridZBottom = random.NextDouble();
            int    rightGridXNumber = random.Next();
            int    rightGridZNumber = random.Next();

            var leftGrid  = new UpliftVanGrid(leftGridXLeft, leftGridXRight, leftGridZTop, leftGridZBottom, leftGridXNumber, leftGridZNumber);
            var rightGrid = new UpliftVanGrid(rightGridXLeft, rightGridXRight, rightGridZTop, rightGridZBottom, rightGridXNumber, rightGridZNumber);
            var slipPlane = new UpliftVanSlipPlane(leftGrid, rightGrid);

            // Call
            UpliftVanCalculationGrid upliftVanCalculationGrid = UpliftVanCalculationGridCreator.Create(slipPlane);

            // Assert
            Assert.AreEqual(leftGridXLeft, upliftVanCalculationGrid.LeftGrid.GridXLeft);
            Assert.AreEqual(leftGridXRight, upliftVanCalculationGrid.LeftGrid.GridXRight);
            Assert.AreEqual(leftGridZTop, upliftVanCalculationGrid.LeftGrid.GridZTop);
            Assert.AreEqual(leftGridZBottom, upliftVanCalculationGrid.LeftGrid.GridZBottom);
            Assert.AreEqual(leftGridXNumber, upliftVanCalculationGrid.LeftGrid.GridXNumber);
            Assert.AreEqual(leftGridZNumber, upliftVanCalculationGrid.LeftGrid.GridZNumber);
            Assert.AreEqual(rightGridXLeft, upliftVanCalculationGrid.RightGrid.GridXLeft);
            Assert.AreEqual(rightGridXRight, upliftVanCalculationGrid.RightGrid.GridXRight);
            Assert.AreEqual(rightGridZTop, upliftVanCalculationGrid.RightGrid.GridZTop);
            Assert.AreEqual(rightGridZBottom, upliftVanCalculationGrid.RightGrid.GridZBottom);
            Assert.AreEqual(rightGridXNumber, upliftVanCalculationGrid.RightGrid.GridXNumber);
            Assert.AreEqual(rightGridZNumber, upliftVanCalculationGrid.RightGrid.GridZNumber);
            Assert.IsNull(upliftVanCalculationGrid.TangentLines); // Irrelevant - Only for output
        }
Пример #19
0
        public void Convert_WithResult_ReturnConvertedSlipPlaneUpliftVan()
        {
            // Setup
            UpliftVanGrid leftGrid  = UpliftVanGridTestFactory.Create();
            UpliftVanGrid rightGrid = UpliftVanGridTestFactory.Create();

            double[] tangentLines =
            {
                3,
                2,
                1.5
            };

            var result = new UpliftVanCalculationGridResult(leftGrid, rightGrid, tangentLines);

            // Call
            MacroStabilityInwardsSlipPlaneUpliftVan output = MacroStabilityInwardsSlipPlaneUpliftVanConverter.Convert(result);

            // Assert
            CollectionAssert.AreEqual(tangentLines, output.TangentLines.Select(tl => tl.Value), new DoubleWithToleranceComparer(1e-2));
            AssertGrid(leftGrid, output.LeftGrid);
            AssertGrid(rightGrid, output.RightGrid);
        }
        /// <summary>
        /// Creates a new instance of <see cref="UpliftVanCalculationGridResult"/>.
        /// </summary>
        /// <param name="leftGrid">The left grid of the result.</param>
        /// <param name="rightGrid">The right grid of the result.</param>
        /// <param name="tangentLines">The tangent lines of the result.</param>
        /// <exception cref="ArgumentNullException">Thrown when any parameter is <c>null</c>.</exception>
        internal UpliftVanCalculationGridResult(UpliftVanGrid leftGrid,
                                                UpliftVanGrid rightGrid,
                                                IEnumerable <double> tangentLines)
        {
            if (leftGrid == null)
            {
                throw new ArgumentNullException(nameof(leftGrid));
            }

            if (rightGrid == null)
            {
                throw new ArgumentNullException(nameof(rightGrid));
            }

            if (tangentLines == null)
            {
                throw new ArgumentNullException(nameof(tangentLines));
            }

            LeftGrid     = leftGrid;
            RightGrid    = rightGrid;
            TangentLines = tangentLines;
        }