// Copyright (C) Stichting Deltares 2016. All rights reserved. // // This file is part of Ringtoets. // // Ringtoets is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System.Linq; using Core.Common.Base.Data; using NUnit.Framework; using Ringtoets.Common.Data.Probabilistics; using Ringtoets.Piping.Data; using Ringtoets.Piping.Data.TestUtil; namespace Ringtoets.Piping.KernelWrapper.Test { [TestFixture] public class PipingSemiProbabilisticDesignValueFactoryTest { #region General parameters [Test] public void GetThicknessCoverageLayer_PipingInputWithCoverLayer_CreatePercentileBasedDesignVariableForThicknessCoverageLayer() { // Setup var inputParameters = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); // Call DesignVariable thicknessCoverageLayer = PipingSemiProbabilisticDesignValueFactory.GetThicknessCoverageLayer(inputParameters); // Assert Assert.IsInstanceOf>(thicknessCoverageLayer); Assert.AreEqual(inputParameters.ThicknessCoverageLayer.Mean, thicknessCoverageLayer.Distribution.Mean); Assert.AreEqual(inputParameters.ThicknessCoverageLayer.StandardDeviation, thicknessCoverageLayer.Distribution.StandardDeviation); AssertPercentile(0.05, thicknessCoverageLayer); } [Test] public void GetThicknessCoverageLayer_PipingInputWithoutCoverLayer_CreateDeterministicDesignVariableForThicknessCoverageLayer() { // Setup var inputParameters = new PipingInput(new GeneralPipingInput()); // Call DesignVariable thicknessCoverageLayer = PipingSemiProbabilisticDesignValueFactory.GetThicknessCoverageLayer(inputParameters); // Assert Assert.IsInstanceOf>(thicknessCoverageLayer); Assert.AreEqual(inputParameters.ThicknessCoverageLayer.Mean, thicknessCoverageLayer.Distribution.Mean); Assert.AreEqual(inputParameters.ThicknessCoverageLayer.StandardDeviation, thicknessCoverageLayer.Distribution.StandardDeviation); Assert.AreEqual(new RoundedDouble(2), thicknessCoverageLayer.GetDesignValue()); } [Test] public void GetEffectiveThicknessCoverageLayer_PipingInputWithCoverLayer_CreatePercentileBasedDesignVariableForEffectiveThicknessCoverageLayer() { // Setup var inputParameters = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); // Call DesignVariable effectiveThicknessCoverageLayer = PipingSemiProbabilisticDesignValueFactory.GetEffectiveThicknessCoverageLayer(inputParameters); // Assert Assert.IsInstanceOf>(effectiveThicknessCoverageLayer); Assert.AreEqual(inputParameters.EffectiveThicknessCoverageLayer.Mean, effectiveThicknessCoverageLayer.Distribution.Mean); Assert.AreEqual(inputParameters.EffectiveThicknessCoverageLayer.StandardDeviation, effectiveThicknessCoverageLayer.Distribution.StandardDeviation); AssertPercentile(0.05, effectiveThicknessCoverageLayer); } [Test] public void GetEffectiveThicknessCoverageLayer_PipingInputWithoutCoverLayer_CreateDeterministicDesignVariableForEffectiveThicknessCoverageLayer() { // Setup var inputParameters = new PipingInput(new GeneralPipingInput()); // Call DesignVariable effectiveThicknessCoverageLayer = PipingSemiProbabilisticDesignValueFactory.GetEffectiveThicknessCoverageLayer(inputParameters); // Assert Assert.IsInstanceOf>(effectiveThicknessCoverageLayer); Assert.AreEqual(inputParameters.EffectiveThicknessCoverageLayer.Mean, effectiveThicknessCoverageLayer.Distribution.Mean); Assert.AreEqual(inputParameters.EffectiveThicknessCoverageLayer.StandardDeviation, effectiveThicknessCoverageLayer.Distribution.StandardDeviation); Assert.AreEqual(new RoundedDouble(2), effectiveThicknessCoverageLayer.GetDesignValue()); } [Test] public void GetPhreaticLevelExit_ValidPipingCalculation_CreateDesignVariableForPhreaticLevelExit() { // Setup var inputParameters = new PipingInput(new GeneralPipingInput()); // Call DesignVariable freaticLevelExit = PipingSemiProbabilisticDesignValueFactory.GetPhreaticLevelExit(inputParameters); // Assert Assert.AreSame(inputParameters.PhreaticLevelExit, freaticLevelExit.Distribution); AssertPercentile(0.05, freaticLevelExit); } [Test] public void GetDampingFactorExit_ValidPipingCalculation_CreateDesignVariableForDampingFactorExit() { // Setup var inputParameters = new PipingInput(new GeneralPipingInput()); // Call DesignVariable dampingFactorExit = PipingSemiProbabilisticDesignValueFactory.GetDampingFactorExit(inputParameters); // Assert Assert.AreSame(inputParameters.DampingFactorExit, dampingFactorExit.Distribution); AssertPercentile(0.95, dampingFactorExit); } #endregion #region Piping parameters [Test] public void GetSeepageLength_ValidPipingCalculation_CreateDesignVariableForSeepageLength() { // Setup var inputParameters = new PipingInput(new GeneralPipingInput()); // Call DesignVariable seepageLength = PipingSemiProbabilisticDesignValueFactory.GetSeepageLength(inputParameters); // Assert Assert.AreEqual(inputParameters.SeepageLength.Mean, seepageLength.Distribution.Mean); Assert.AreEqual(inputParameters.SeepageLength.StandardDeviation, seepageLength.Distribution.StandardDeviation); AssertPercentile(0.05, seepageLength); } [Test] public void GetDiameter70_ValidPipingCalculation_CreateDesignVariableForDiameter70() { // Setup var inputParameters = new PipingInput(new GeneralPipingInput()); // Call DesignVariable d70 = PipingSemiProbabilisticDesignValueFactory.GetDiameter70(inputParameters); // Assert Assert.AreEqual(inputParameters.Diameter70.Mean, d70.Distribution.Mean); Assert.AreEqual(inputParameters.Diameter70.StandardDeviation, d70.Distribution.StandardDeviation); AssertPercentile(0.05, d70); } [Test] public void GetDarcyPermeability_ValidPipingCalculation_CreateDesignVariableForDarcyPermeability() { // Setup var inputParameters = new PipingInput(new GeneralPipingInput()); // Call DesignVariable darcyPermeability = PipingSemiProbabilisticDesignValueFactory.GetDarcyPermeability(inputParameters); // Assert Assert.AreEqual(inputParameters.DarcyPermeability.Mean, darcyPermeability.Distribution.Mean); Assert.AreEqual(inputParameters.DarcyPermeability.StandardDeviation, darcyPermeability.Distribution.StandardDeviation); AssertPercentile(0.95, darcyPermeability); } [Test] public void GetSaturatedVolumicWeightOfCoverageLayer_PipingInputWithCoverLayerWithSaturatedDefinition_CreateDesignVariableForSaturatedVolumicWeightOfCoverageLayer() { // Setup var inputParameters = PipingInputFactory.CreateInputWithAquiferAndCoverageLayer(); inputParameters.StochasticSoilProfile.SoilProfile.Layers.ElementAt(0).BelowPhreaticLevelMean = 3.2; // Call DesignVariable saturatedVolumicWeightOfCoverageLayer = PipingSemiProbabilisticDesignValueFactory.GetSaturatedVolumicWeightOfCoverageLayer(inputParameters); // Assert Assert.AreEqual(inputParameters.SaturatedVolumicWeightOfCoverageLayer.Mean, saturatedVolumicWeightOfCoverageLayer.Distribution.Mean); Assert.AreEqual(inputParameters.SaturatedVolumicWeightOfCoverageLayer.StandardDeviation, saturatedVolumicWeightOfCoverageLayer.Distribution.StandardDeviation); Assert.AreEqual(inputParameters.SaturatedVolumicWeightOfCoverageLayer.Shift, saturatedVolumicWeightOfCoverageLayer.Distribution.Shift); AssertPercentile(0.05, saturatedVolumicWeightOfCoverageLayer); } [Test] public void GetSaturatedVolumicWeightOfCoverageLayer_PipingInputWithoutCoverLayer_CreateDesignVariableForSaturatedVolumicWeightOfCoverageLayer() { // Setup var inputParameters = new PipingInput(new GeneralPipingInput()); // Call DesignVariable saturatedVolumicWeightOfCoverageLayer = PipingSemiProbabilisticDesignValueFactory.GetSaturatedVolumicWeightOfCoverageLayer(inputParameters); // Assert Assert.AreEqual(inputParameters.SaturatedVolumicWeightOfCoverageLayer.Mean, saturatedVolumicWeightOfCoverageLayer.Distribution.Mean); Assert.AreEqual(inputParameters.SaturatedVolumicWeightOfCoverageLayer.StandardDeviation, saturatedVolumicWeightOfCoverageLayer.Distribution.StandardDeviation); Assert.AreEqual(inputParameters.SaturatedVolumicWeightOfCoverageLayer.Shift, saturatedVolumicWeightOfCoverageLayer.Distribution.Shift); Assert.AreEqual(new RoundedDouble(2), saturatedVolumicWeightOfCoverageLayer.GetDesignValue()); } [Test] public void GetThicknessAquiferLayer_ValidPipingCalculation_CreateDesignVariableForThicknessAquiferLayer() { // Setup var inputParameters = new PipingInput(new GeneralPipingInput()); // Call DesignVariable thicknessAquiferLayer = PipingSemiProbabilisticDesignValueFactory.GetThicknessAquiferLayer(inputParameters); // Assert Assert.AreEqual(inputParameters.ThicknessAquiferLayer.Mean, thicknessAquiferLayer.Distribution.Mean); Assert.AreEqual(inputParameters.ThicknessAquiferLayer.StandardDeviation, thicknessAquiferLayer.Distribution.StandardDeviation); AssertPercentile(0.95, thicknessAquiferLayer); } #endregion private void AssertPercentile(double percentile, DesignVariable designVariable) where T : IDistribution { Assert.IsInstanceOf>(designVariable); var percentileBasedDesignVariable = (PercentileBasedDesignVariable) designVariable; Assert.AreEqual(percentile, percentileBasedDesignVariable.Percentile); } } }