//----------------------------------------------------------------------- // // Copyright (c) 2010 Deltares. All rights reserved. // // B.S.T.I.M. The // tom.the@deltares.nl // 13-7-2010 // Calculates the piping factor according to Sellmeijer 2 forces. //----------------------------------------------------------------------- using Deltares.Geotechnics.TestUtils; using Deltares.Standard; namespace Deltares.Dam.Tests { using Deltares.Dam.Data; using NUnit.Framework; [TestFixture] public class PipingCalculatorSellmeijer4ForcesTest { [Test] public void CanCalculateThePipingFactorUsingSellmeijer4ForcesNoUplift() { using (var surfaceLine = FactoryForSurfaceLineTests.CreateSurfaceLineTutorial1()) using(var dike = new Dike()) using (var location = new Location()) { var soilProfile = FactoryForSoilProfileTests.CreatePipingSellmeijerProfileWithOneSandlayer(); soilProfile.Layers[0].Soil.AbovePhreaticLevel = 20.0; soilProfile.Layers[0].Soil.BelowPhreaticLevel = 22.0; var modelParametersForPLLines = new ModelParametersForPLLines();//are the values initialized correctly? var calculator = new PipingCalculatorSellmeijer4Forces(modelParametersForPLLines, 1.0, dike.GaugePLLines, dike.Gauges, 1.0); location.HeadPl3 = -1.0; location.PolderLevel = -1.0; var actual = calculator.CalculatePipingFactor(location, surfaceLine, soilProfile, 1.0); // Calculation at toe of dike // Phreatic level in profile = 0 // PL3 = waterlevel = -1 m // Mass of soil volume above // wet 1 m x 22 kN/m3 = 22 // wet 1 m x 20 kN/m3 = 20 // Total: 22 + 20 = 42 // Phreatic pressure // 1 m x 9.81 kN/m3 = 9.81 // UpliftFactor = 42/9.81 = 4.281 // UpliftFactor > 1.0, so no piping, so returns cDefaultMaxReturnValue var expected = PipingCalculatorSellmeijer4Forces.cDefaultMaxReturnValue; Assert.AreEqual(expected, actual); } } /// /// These results are documented in the document /// ".\documents\DAM\Evaluation Piping\Nieuwe rekenregel bligh Sellmeijeruli.xls" /// [Test] public void CanCalculateThePipingFactorUsingSellmeijer4Forces() { using (var surfaceLine = FactoryForSurfaceLineTests.CreateSurfaceLineTutorial1()) using(var dike = new Dike()) using (var location = new Location()) { var soilProfile = FactoryForSoilProfileTests.CreatePipingSellmeijerProfileWithOneSandlayer(); var modelParametersForPLLines = new ModelParametersForPLLines(); modelParametersForPLLines.DampingFactorPL4 = 0.0; var calculator = new PipingCalculatorSellmeijer4Forces(modelParametersForPLLines, 1.0, dike.GaugePLLines, dike.Gauges, 1.0); var actual = calculator.CalculatePipingFactor(location, surfaceLine, soilProfile, 1.0); // Phreatic level in profile // Mass of soil volume above // material above bottom sandlayer: 0 to -5 m // dry/wet 5 m x 1 kN/m3 = 5 // Phreatic pressure (Head PLLine 4 is ca. 1.0 // 6.0 m x 10 kN/m3 = 60,0 // UpliftFactor = 5/60.0 = 0.0833 // UpliftFactor < 1.0, so piping will occur in toe of dike // const double cTolerance = 0.000001; const double expected = 11.899117458988471; // Value is taken from the actual calculation itself and not manual calculated Assert.IsNotNull(actual); Assert.AreEqual(expected, actual.Value, cTolerance); } } [Test] public void CanCalculateHCritical() { const double cTolerance = 0.000001; const double cwhitesConstant = 0.25; const double cbeddingAngle = 41.0; double hCritical = PipingCalculatorSellmeijer4Forces.CalculateHCritical(cwhitesConstant, cbeddingAngle, 180, 15.00, 7.00e-05, 3, Physics.WaterViscosity); Assert.AreEqual(2.757966400, hCritical, cTolerance); hCritical = PipingCalculatorSellmeijer4Forces.CalculateHCritical(cwhitesConstant, cbeddingAngle, 260, 15.00, 1.30e-04, 3, Physics.WaterViscosity); Assert.AreEqual(3.184432652, hCritical, cTolerance); hCritical = PipingCalculatorSellmeijer4Forces.CalculateHCritical(cwhitesConstant, cbeddingAngle, 180, 20.00, 7.00e-05, 3, Physics.WaterViscosity); Assert.AreEqual(3.650076587, hCritical, cTolerance); hCritical = PipingCalculatorSellmeijer4Forces.CalculateHCritical(cwhitesConstant, cbeddingAngle, 260, 20.00, 1.30e-04, 3, Physics.WaterViscosity); Assert.AreEqual(4.215258070, hCritical, cTolerance); hCritical = PipingCalculatorSellmeijer4Forces.CalculateHCritical(cwhitesConstant, cbeddingAngle, 180, 60.00, 7.00e-05, 3, Physics.WaterViscosity); Assert.AreEqual(10.705479854, hCritical, cTolerance); } } }