using System.IO; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Interface; using Deltares.DamEngine.Io; using NUnit.Framework; namespace Deltares.DamEngine.IntegrationTests.IntegrationTests { [TestFixture] public class WtiPipingSellmeijerRevisedTests { private const double tolerance = 0.0005; [Test] public void CanPerformWtiDesignNoAdaptionPipingVoorbeeld1() { // Based on ".\data\DamEngineTestProjects\PipingVoorbeeld1\PipingVoorbeeld1.damx" // Set Analysis type to "No Adaption" // Change Failure mechanism Piping to model Sellmeijer Revised (WBI) const string fileName = @"TestFiles\PipingVoorbeeld1_WtiSellmeijerRevisedInputFile.xml"; string inputString = File.ReadAllText(fileName); EngineInterface engineInterface = new EngineInterface(inputString); Assert.IsNotNull(engineInterface.DamProjectData); string outputString = engineInterface.Run(); // values below are the results for Bligh, run with Dam 15.1.2.24738 release // Factor piping = 0.521 // Kritische hoogte = 1.667 // Factor opdrijven = 0.582 // Kwelweglengte piping = 25.0 // Intredepunt x-lokaal = 10.0 // Uittredepunt x-lokaal = 35.0 // Opdrijven = true // Profielnaam = soilprofile_01 // PL3 opdrijven = 0.582 // PL3 stijghoogte aangepast = 1.262 // PL3 locatie opdrijven lokaal = 35.0 // PL4 opdrijven = 0.0 // PL4 stijghoogte aangepast = 0.0 // PL4 locatie opdrijven lokaal = 0.0 // Locatie naam = "profiel 1" // ID locatie scenario = "1" // Heave Factor = 90.0 Assert.IsNotNull(outputString); var output = DamXmlSerialization.LoadOutputFromXmlString(outputString); DamProjectData actualDamProjectData = FillDamFromXmlOutput.CreateDamProjectData(null, output); SurfaceLine2 redesignedSurfaceLine = actualDamProjectData.DesignCalculations[0].PipingDesignResults.RedesignedSurfaceLine; // When run with WtiSellmeijerRevised, Piping factor = 0.432 Assert.AreEqual(0.432, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wti2017FactorOverall, tolerance); // When run with WtiSellmeijerRevised, H critical = 1.983 Assert.AreEqual(1.983, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wti2017HcriticalOverall, tolerance); Assert.AreEqual(35.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.ExitPointX, tolerance); Assert.AreEqual(25.00, redesignedSurfaceLine.GetDikeLength(), tolerance); Assert.AreEqual(true, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.IsUplift); // The following values are not the same as in the Dam 15.1.2.24738 release (but explainable) // The upliftfactor in Dam 15.1.2.24738 is 0.351, but that is the Wti Upliftfactor Assert.AreEqual(0.582, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftFactor, tolerance); // The adjusted PL3/PL4 values in Dam 15.1.2.24738 are not 0.0, but those are the values for stability; for piping no adjustment has to be made Assert.AreEqual(0.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.Pl3MinUplift, tolerance); Assert.AreEqual(0.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.Pl3HeadAdjusted, tolerance); Assert.AreEqual(0.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.Pl3LocationXMinUplift, tolerance); Assert.AreEqual(0.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.Pl4MinUplift, tolerance); Assert.AreEqual(0.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.Pl4HeadAdjusted, tolerance); Assert.AreEqual(0.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.Pl4LocationXMinUplift, tolerance); } [Test] public void CanPerformWtiDesignWithAdaptionPipingVoorbeeld1() { // Based on ".\data\DamEngineTestProjects\PipingVoorbeeld1\PipingVoorbeeld1.damx" // Set Analysis type to "Adapt geometry" // Change Failure mechanism Piping to model Sellmeijer Revised (WBI) const string fileName = @"TestFiles\PipingVoorbeeld1_WtiSellmeijerRevisedDesignInputFile.xml"; string inputString = File.ReadAllText(fileName); EngineInterface engineInterface = new EngineInterface(inputString); Assert.IsNotNull(engineInterface.DamProjectData); string outputString = engineInterface.Run(); Assert.IsNotNull(outputString); var output = DamXmlSerialization.LoadOutputFromXmlString(outputString); DamProjectData actualDamProjectData = FillDamFromXmlOutput.CreateDamProjectData(null, output); SurfaceLine2 redesignedSurfaceLine = actualDamProjectData.DesignCalculations[0].PipingDesignResults.RedesignedSurfaceLine; Assert.AreEqual(true, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.IsUplift); Assert.AreEqual(1.995, redesignedSurfaceLine.DetermineShoulderHeight(), tolerance); // When run with WtiSellmeijerRevised, Dike length = 83.986 Assert.AreEqual(83.986, redesignedSurfaceLine.GetDikeLength(), tolerance); // When run with WtiSellmeijerRevised, Shoulder length = 53.0 Assert.AreEqual(53.0, redesignedSurfaceLine.DetermineShoulderLength(), tolerance); Assert.AreEqual(0.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.Pl3MinUplift, tolerance); Assert.AreEqual(0.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.Pl3HeadAdjusted, tolerance); Assert.AreEqual(0.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.Pl3LocationXMinUplift, tolerance); Assert.AreEqual(0.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.Pl4MinUplift, tolerance); Assert.AreEqual(0.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.Pl4HeadAdjusted, tolerance); Assert.AreEqual(0.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.Pl4LocationXMinUplift, tolerance); // When run with WtiSellmeijerRevised, Piping factor = 1.280 Assert.AreEqual(1.280, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wti2017FactorOverall, tolerance); // When run with WtiSellmeijerRevised, H critical = 4.697 Assert.AreEqual(4.697, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wti2017HcriticalOverall, tolerance); Assert.AreEqual(0.5825, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftFactor, tolerance); // When run with WtiSellmeijerRevised, Piping exit point X = 93.986 Assert.AreEqual(93.986, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.ExitPointX, tolerance); } } }