public void Transform_ValidPreconsolidationStress_ReturnMacroStabilityInwardsPreconsolidationStress()
        {
            // Setup
            var random = new Random(21);
            var preconsolidationStress = new PreconsolidationStress
            {
                XCoordinate                  = random.NextDouble(),
                ZCoordinate                  = random.NextDouble(),
                StressDistributionType       = 3,
                StressMean                   = random.NextDouble(),
                StressCoefficientOfVariation = random.NextDouble(),
                StressShift                  = 0
            };

            // Call
            MacroStabilityInwardsPreconsolidationStress transformedStress =
                MacroStabilityInwardsPreconsolidationStressTransformer.Transform(preconsolidationStress);

            // Assert
            Assert.AreEqual(preconsolidationStress.XCoordinate, transformedStress.Location.X);
            Assert.AreEqual(preconsolidationStress.ZCoordinate, transformedStress.Location.Y);

            VariationCoefficientLogNormalDistribution transformedPreconsolidationStressDistribution = transformedStress.Stress;

            Assert.AreEqual(preconsolidationStress.StressMean, transformedPreconsolidationStressDistribution.Mean,
                            transformedPreconsolidationStressDistribution.GetAccuracy());
            Assert.AreEqual(preconsolidationStress.StressCoefficientOfVariation,
                            transformedPreconsolidationStressDistribution.CoefficientOfVariation,
                            transformedPreconsolidationStressDistribution.GetAccuracy());
        }
Пример #2
0
        public void ReadPreconsolidationStresses_FirstSoilProfileWithNullValuesInCompleteDatabase_ReturnsDefaultPreconsolidationStressValues()
        {
            // Setup
            string dbFile = Path.Combine(testDataPath, "2dprofileWithPreconsolidationStressesNullValues.soil");

            using (var reader = new PreconsolidationStressReader(dbFile))
            {
                reader.Initialize();

                // Call
                PreconsolidationStress[] preconsolidationStresses = reader.ReadPreconsolidationStresses().ToArray();

                // Assert
                Assert.AreEqual(1, preconsolidationStresses.Length);
                PreconsolidationStress actualPreconsolidationStress = preconsolidationStresses[0];

                Assert.IsNaN(actualPreconsolidationStress.XCoordinate);
                Assert.IsNaN(actualPreconsolidationStress.ZCoordinate);
                Assert.IsNull(actualPreconsolidationStress.StressDistributionType);
                Assert.IsNaN(actualPreconsolidationStress.StressMean);
                Assert.IsNaN(actualPreconsolidationStress.StressCoefficientOfVariation);
                Assert.IsNaN(actualPreconsolidationStress.StressShift);
            }

            Assert.IsTrue(TestHelper.CanOpenFileForWrite(dbFile));
        }
Пример #3
0
        public void Transform_SoilProfile2DWithInvalidPreconsolidationStress_ThrowsImportedDataException()
        {
            var random = new Random(21);
            var preconsolidationStress = new PreconsolidationStress
            {
                XCoordinate                  = double.NaN,
                ZCoordinate                  = random.NextDouble(),
                StressDistributionType       = SoilLayerConstants.LogNormalDistributionValue,
                StressMean                   = random.NextDouble(),
                StressCoefficientOfVariation = random.NextDouble(),
                StressShift                  = 0
            };

            var profile = new SoilProfile2D(1, "test", new[]
            {
                SoilLayer2DTestFactory.CreateSoilLayer2D()
            }, new[]
            {
                preconsolidationStress
            });

            // Call
            TestDelegate call = () => MacroStabilityInwardsSoilProfileTransformer.Transform(profile);

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

            Exception innerException = exception.InnerException;

            Assert.IsInstanceOf <ImportedDataTransformException>(innerException);
            string expectedMessage = CreateExpectedErrorMessage(profile.Name, innerException.Message);

            Assert.AreEqual(expectedMessage, exception.Message);
        }
Пример #4
0
        public void Transform_SoilProfile2DWithPreconsolidationStresses_ReturnMacroStabilityInwardsSoilProfile2DWithStresses()
        {
            // Setup
            var random = new Random(21);
            var preconsolidationStress = new PreconsolidationStress
            {
                XCoordinate                  = random.NextDouble(),
                ZCoordinate                  = random.NextDouble(),
                StressDistributionType       = SoilLayerConstants.LogNormalDistributionValue,
                StressMean                   = random.NextDouble(),
                StressCoefficientOfVariation = random.NextDouble(),
                StressShift                  = 0
            };

            var profile = new SoilProfile2D(1, "test", new[]
            {
                SoilLayer2DTestFactory.CreateSoilLayer2D()
            }, new[]
            {
                preconsolidationStress
            });

            // Call
            var transformedProfile = (MacroStabilityInwardsSoilProfile2D)MacroStabilityInwardsSoilProfileTransformer.Transform(profile);

            // Assert
            AssertPreconsolidationStress(preconsolidationStress, transformedProfile.PreconsolidationStresses.Single());
        }
        /// <summary>
        /// Transforms the generic <paramref name="preconsolidationStress"/> into
        /// a <see cref="MacroStabilityInwardsPreconsolidationStress"/>.
        /// </summary>
        /// <param name="preconsolidationStress">The preconsolidation stress to use
        /// in the transformation.</param>
        /// <returns>A <see cref="MacroStabilityInwardsPreconsolidationStress"/>
        /// based on the given data.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="preconsolidationStress"/>
        /// is <c>null</c>.</exception>
        /// <exception cref="ImportedDataTransformException">Thrown when the
        /// <paramref name="preconsolidationStress"/> could not be transformed into
        /// a <see cref="MacroStabilityInwardsPreconsolidationStress"/>.</exception>
        public static MacroStabilityInwardsPreconsolidationStress Transform(PreconsolidationStress preconsolidationStress)
        {
            if (preconsolidationStress == null)
            {
                throw new ArgumentNullException(nameof(preconsolidationStress));
            }

            var location = new Point2D(preconsolidationStress.XCoordinate,
                                       preconsolidationStress.ZCoordinate);

            try
            {
                DistributionHelper.ValidateLogNormalDistribution(preconsolidationStress.StressDistributionType,
                                                                 preconsolidationStress.StressShift);

                var distribution = new VariationCoefficientLogNormalDistribution
                {
                    Mean = (RoundedDouble)preconsolidationStress.StressMean,
                    CoefficientOfVariation = (RoundedDouble)preconsolidationStress.StressCoefficientOfVariation
                };

                return(new MacroStabilityInwardsPreconsolidationStress(location, distribution));
            }
            catch (Exception e) when(e is DistributionValidationException || e is ArgumentOutOfRangeException)
            {
                string errorMessage = CreateErrorMessage(location, e.Message);

                throw new ImportedDataTransformException(errorMessage, e);
            }
            catch (ArgumentException e)
            {
                throw new ImportedDataTransformException(e.Message, e);
            }
        }
        public void Create_WithValidData_ReturnsPreConsolidationStresses()
        {
            // Setup
            var preconsolidationStresses = new[]
            {
                new PreconsolidationStress(new Point2D(3.2, 4.8), 1.5),
                new PreconsolidationStress(new Point2D(1.2, 0.5), 17.9),
                new PreconsolidationStress(new Point2D(50.8, 9.9), 3.8)
            };

            // Call
            IEnumerable <CSharpWrapperPreconsolidationStress> stabilityPreconsolidationStresses = PreconsolidationStressCreator.Create(preconsolidationStresses);

            // Assert
            Assert.AreEqual(preconsolidationStresses.Length, stabilityPreconsolidationStresses.Count());

            for (var i = 0; i < preconsolidationStresses.Length; i++)
            {
                PreconsolidationStress preconsolidationStress = preconsolidationStresses[i];
                CSharpWrapperPreconsolidationStress stabilityPreconsolidationStress = stabilityPreconsolidationStresses.ElementAt(i);

                Assert.AreEqual(preconsolidationStress.Coordinate.X, stabilityPreconsolidationStress.Point.X);
                Assert.AreEqual(preconsolidationStress.Coordinate.Y, stabilityPreconsolidationStress.Point.Z);
                Assert.AreEqual(preconsolidationStress.Stress, stabilityPreconsolidationStress.StressValue);
            }
        }
        public void Constructor_ReturnsDefaultValues()
        {
            // Call
            var stress = new PreconsolidationStress();

            // Assert
            Assert.IsNaN(stress.XCoordinate);
            Assert.IsNaN(stress.ZCoordinate);
            Assert.IsNull(stress.StressDistributionType);
            Assert.IsNaN(stress.StressMean);
            Assert.IsNaN(stress.StressCoefficientOfVariation);
            Assert.IsNaN(stress.StressShift);
        }
Пример #8
0
        private static void AssertPreconsolidationStress(PreconsolidationStress preconsolidationStress,
                                                         MacroStabilityInwardsPreconsolidationStress transformedPreconsolidationStress)
        {
            Assert.AreEqual(preconsolidationStress.XCoordinate,
                            transformedPreconsolidationStress.Location.X);
            Assert.AreEqual(preconsolidationStress.ZCoordinate,
                            transformedPreconsolidationStress.Location.Y);

            VariationCoefficientLogNormalDistribution stressDistribution = transformedPreconsolidationStress.Stress;

            Assert.AreEqual(preconsolidationStress.StressMean, stressDistribution.Mean, stressDistribution.GetAccuracy());
            Assert.AreEqual(preconsolidationStress.StressCoefficientOfVariation, stressDistribution.CoefficientOfVariation, stressDistribution.GetAccuracy());
        }
Пример #9
0
        public void Constructor_ExpectedValues()
        {
            // Setup
            var layers = new SoilLayer[0];
            var preconsolidationStresses = new PreconsolidationStress[0];

            // Call
            var profile = new SoilProfile(layers, preconsolidationStresses);

            // Assert
            Assert.AreSame(layers, profile.Layers);
            Assert.AreSame(preconsolidationStresses, profile.PreconsolidationStresses);
        }
        public void Transform_PreconsolidationStressValuesNaN_ThrowsImportedDataTransformException(
            PreconsolidationStress preconsolidationStress)
        {
            // Call
            TestDelegate call = () => MacroStabilityInwardsPreconsolidationStressTransformer.Transform(preconsolidationStress);

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

            Exception innerException = exception.InnerException;

            Assert.IsInstanceOf <ArgumentException>(innerException);
            Assert.AreEqual(innerException.Message, exception.Message);
        }
Пример #11
0
        public void Constructor_ExpectedValues()
        {
            // Setup
            var    random     = new Random(11);
            var    coordinate = new Point2D(random.NextDouble(), random.NextDouble());
            double stress     = random.NextDouble();

            // Call
            var preconsolidationStress = new PreconsolidationStress(coordinate, stress);

            // Assert
            Assert.AreSame(coordinate, preconsolidationStress.Coordinate);
            Assert.AreEqual(stress, preconsolidationStress.Stress);
        }
        public void Transform_InvalidStochasticDistributionShift_ThrowsImportedDataTransformException()
        {
            // Setup
            var random = new Random(21);
            var preconsolidationStress = new PreconsolidationStress
            {
                StressDistributionType = SoilLayerConstants.LogNormalDistributionValue,
                StressShift            = random.NextDouble()
            };

            // Call
            TestDelegate call = () => MacroStabilityInwardsPreconsolidationStressTransformer.Transform(preconsolidationStress);

            // Assert
            var    exception       = Assert.Throws <ImportedDataTransformException>(call);
            var    coordinate      = new Point2D(preconsolidationStress.XCoordinate, preconsolidationStress.ZCoordinate);
            string expectedMessage = CreateExpectedErrorMessage(coordinate, "Parameter moet lognormaal verdeeld zijn met een verschuiving gelijk aan 0.");

            Assert.AreEqual(expectedMessage, exception.Message);
        }
        public void Transform_InvalidPreconsolidationStressDistributionValues_ThrowsImportedDataTransformException(PreconsolidationStress preconsolidationStress)
        {
            // Call
            TestDelegate call = () => MacroStabilityInwardsPreconsolidationStressTransformer.Transform(preconsolidationStress);

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

            Exception innerException = exception.InnerException;

            Assert.IsInstanceOf <ArgumentOutOfRangeException>(innerException);
            var    coordinate      = new Point2D(preconsolidationStress.XCoordinate, preconsolidationStress.ZCoordinate);
            string expectedMessage = CreateExpectedErrorMessage(coordinate, innerException.Message);

            Assert.AreEqual(expectedMessage, exception.Message);
        }