// Copyright (C) Stichting Deltares 2018. All rights reserved. // // This file is part of the Dam Piping Kernels. // // The Dam Macrostability Kernel is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero 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 Affero General Public License for more details. // // You should have received a copy of the GNU Affero 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 Deltares.DamPiping.SellmeijerVNKCalculator; using Deltares.DamPiping.SellmeijerVNKCalculator.Geo; namespace Deltares.DamPiping.SellmeijerVNKCalculatorTests { using NUnit.Framework; [TestFixture] public class TestPipingModel2Calculation { private const double cToleranceHeadDrop = 0.005; [Test] public void IsHeadDropCalculatedCorrectly() { // test is copied from 'https://repos.deltares.nl/repos/dam/dam classic' revision 190 PipingModel2Calculation pipingModel2Calculation = new PipingModel2Calculation(); pipingModel2Calculation.Height1 = 10.0; pipingModel2Calculation.CalculateHeadDropPC2(); Assert.AreEqual(3.46, pipingModel2Calculation.HeadDrop, cToleranceHeadDrop); pipingModel2Calculation.Height1 = 11.0; pipingModel2Calculation.CalculateHeadDropPC2(); Assert.AreEqual(3.42, pipingModel2Calculation.HeadDrop, cToleranceHeadDrop); pipingModel2Calculation.Height1 = 11.0; pipingModel2Calculation.Permeability3 = 0.002; pipingModel2Calculation.CalculateHeadDropPC2(); Assert.AreEqual(3.06, pipingModel2Calculation.HeadDrop, cToleranceHeadDrop); } [Test] public void IsSeepageLengthCalculatedCorrectly() { // test is copied from 'https://repos.deltares.nl/repos/dam/dam classic' revision 190 PipingModel2Calculation pipingModel2Calculation = new PipingModel2Calculation(); pipingModel2Calculation.PipingCommonData.BeddingAngle = 20.0; pipingModel2Calculation.PipingCommonData.FluidisationGradient = 0.3; pipingModel2Calculation.PipingCommonData.ParticleUnitWeight = 26.5; pipingModel2Calculation.PipingCommonData.SafetyFactor = 1.2; pipingModel2Calculation.PipingCommonData.IsAdjustHeadDrop = false; pipingModel2Calculation.PipingCommonData.WaterUnitWeight = Physics.UnitWeightOfwater; pipingModel2Calculation.PipingCommonData.WaterViscosity = 1.33E-06; pipingModel2Calculation.PipingCommonData.WhitesConstant = 0.4; pipingModel2Calculation.Height1 = 4.0; pipingModel2Calculation.Height2 = 42.0; pipingModel2Calculation.Permeability1 = 0.0005; pipingModel2Calculation.Permeability2 = 0.0005; pipingModel2Calculation.Permeability3 = 0.0005; pipingModel2Calculation.ParticleDiameter = 350.0; pipingModel2Calculation.CrackLength = 1.1; pipingModel2Calculation.HeadDrop = 18.757; pipingModel2Calculation.HeadDrop = 5.0; pipingModel2Calculation.SeepageLength = 50.0; pipingModel2Calculation.IsHeadDropCalculation = false; pipingModel2Calculation.CalculateHeadDropPC2(); Assert.AreEqual(101.5, pipingModel2Calculation.SeepageLength, cToleranceHeadDrop); } [Test] [ExpectedException(typeof(PipingCalculationException))] public void IsExceptionFromDllHandledCorrectly() { // test is copied from 'https://repos.deltares.nl/repos/dam/dam classic' revision 190 PipingModel2Calculation pipingModel2Calculation = new PipingModel2Calculation(); pipingModel2Calculation.PipingCommonData.BeddingAngle = 20.0; pipingModel2Calculation.PipingCommonData.FluidisationGradient = 0.3; pipingModel2Calculation.PipingCommonData.ParticleUnitWeight = 26.5; pipingModel2Calculation.PipingCommonData.SafetyFactor = 1.2; pipingModel2Calculation.PipingCommonData.IsAdjustHeadDrop = false; pipingModel2Calculation.PipingCommonData.WaterUnitWeight = Physics.UnitWeightOfwater; pipingModel2Calculation.PipingCommonData.WaterViscosity = 1.33E-06; pipingModel2Calculation.PipingCommonData.WhitesConstant = 0.4; pipingModel2Calculation.Height1 = 4.0; pipingModel2Calculation.Height2 = 42.0; pipingModel2Calculation.Permeability1 = 0.0005; pipingModel2Calculation.Permeability2 = 0.0005; pipingModel2Calculation.Permeability3 = 0.0005; pipingModel2Calculation.ParticleDiameter = 350.0; pipingModel2Calculation.CrackLength = 1.1; pipingModel2Calculation.HeadDrop = 18.757; pipingModel2Calculation.SeepageLength = -50.0; pipingModel2Calculation.IsHeadDropCalculation = true; // negative seepagelength will throw an ecxeption pipingModel2Calculation.CalculateHeadDropPC2(); } private PipingModel2Calculation CreateAndFillPipingModel2CalculationForTestcase01() { // test is copied from 'https://repos.deltares.nl/repos/dam/dam classic' revision 190 var pipingModel2Calculation = new PipingModel2Calculation(); pipingModel2Calculation.HeadDrop = 0.0;// Not used, to be calculated pipingModel2Calculation.PipingCommonData.BeddingAngle = 20.0; pipingModel2Calculation.PipingCommonData.FluidisationGradient = 0.3; pipingModel2Calculation.PipingCommonData.WaterUnitWeight = Physics.UnitWeightOfwater; pipingModel2Calculation.PipingCommonData.WaterViscosity = 1.33000E-06; pipingModel2Calculation.PipingCommonData.WhitesConstant = 0.4; pipingModel2Calculation.PipingCommonData.SafetyFactor = 1.20; pipingModel2Calculation.PipingCommonData.IsAdjustHeadDrop = false; // Soil parameters pipingModel2Calculation.PipingCommonData.ParticleUnitWeight = 26.50; pipingModel2Calculation.Permeability1 = 0.0001; pipingModel2Calculation.Permeability2 = 0.0005; pipingModel2Calculation.Permeability3 = 0.0001; pipingModel2Calculation.ParticleDiameter = 250.0; // Geometry parameters pipingModel2Calculation.Height1 = 5.5; pipingModel2Calculation.Height2 = 45.0; return pipingModel2Calculation; } [Test] public void CanCalculateTestCase01() { // test is copied from 'https://repos.deltares.nl/repos/dam/dam classic' revision 190 // MPipingCalc2.dll 1.2.3.1 fails on this var pipingModel2Calculation = CreateAndFillPipingModel2CalculationForTestcase01(); pipingModel2Calculation.IsHeadDropCalculation = false; // Constant pipingModel2Calculation.HeadDrop = 1.773; // L will be Calculated pipingModel2Calculation.CrackLength = 0.1; // Distance upper sandlayer to surfaceline, "Do" in DGSWebPiping pipingModel2Calculation.CalculateHeadDropPC2(); Assert.AreEqual(23.304, pipingModel2Calculation.SeepageLength, cToleranceHeadDrop); } } }