Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs =================================================================== diff -u -r1052 -r1070 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 1052) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 1070) @@ -84,6 +84,7 @@ private static void EvaluateUpliftSituation(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput, PLLines plLines, DamPipingBlighInput damPipingBlighInput, double waterLevel, DamPipingBlighOutput damPipingBlighOutput) { + const double upliftCriterionTolerance = 0.000000001; SoilProfile1D soilProfile1D = damKernelInput.SubSoilScenario.SoilProfile1D; SurfaceLine2 surfaceLine = damKernelInput.Location.SurfaceLine; Location location = damKernelInput.Location; @@ -96,7 +97,9 @@ DikeEmbankmentMaterial = location.GetDikeEmbankmentSoil(), XSoilGeometry2DOrigin = location.XSoilGeometry2DOrigin }; - var upliftLocationAndResult = upliftLocationDeterminator.GetLocationAndResult(damKernelInput.DesignScenario.GetUpliftCriterionPiping(null)); + // The tolerance is built in because after design it could be that the value that is designed to, is not reached by this margin + double upliftCriterion = location.UpliftCriterionPiping.Value - upliftCriterionTolerance; + var upliftLocationAndResult = upliftLocationDeterminator.GetLocationAndResult(upliftCriterion); upliftSituation.IsUplift = (upliftLocationAndResult != null); double xEntry = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver).X; double xExit = 0.0; Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/PipingBlighTests.cs =================================================================== diff -u -r1052 -r1070 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/PipingBlighTests.cs (.../PipingBlighTests.cs) (revision 1052) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/PipingBlighTests.cs (.../PipingBlighTests.cs) (revision 1070) @@ -20,7 +20,10 @@ // All rights reserved. using System.IO; +using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Io; +using Deltares.DamEngine.Interface; using NUnit.Framework; namespace Deltares.DamEngine.Interface.Tests @@ -56,14 +59,20 @@ // Heave Factor = 90.0 Assert.IsNotNull(outputString); var output = DamXmlSerialization.LoadOutputFromXmlString(outputString); + DamProjectData actualDamProjectData = FillDamFromXmlOutput.CreateDamProjectData(output); + SurfaceLine2 redesignedSurfaceLine = actualDamProjectData.DesignCalculations[0].PipingDesignResults.RedesignedSurfaceLine; Assert.AreEqual(0.521, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.BlighFactor, tolerance); Assert.AreEqual(1.667, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.BlighHcritical, tolerance); Assert.AreEqual(35.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.ExitPointX, tolerance); - // The following values are not the same as in the classic UI - // The upliftfactor there is 0.351, but that is the Wti Upliftfactor - // The adjusted PL3/PL4 values there are not 0.0, but those are the values for stability; for piping no adjustment has to be made - Assert.AreEqual(0.5825, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftFactor, 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.5825, 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); @@ -100,21 +109,33 @@ string outputString = engineInterface.Run(); Assert.IsNotNull(outputString); var output = DamXmlSerialization.LoadOutputFromXmlString(outputString); - Assert.AreEqual(2.092, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.BlighFactor, tolerance); - Assert.AreEqual(1.268, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.BlighHcritical, tolerance); - //Assert.AreEqual(35.0, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.ExitPointX, tolerance); - // The following values are not the same as in the classic UI - // The upliftfactor there is 0.351, but that is the Wti Upliftfactor - // The adjusted PL3/PL4 values there are not 0.0, but those are the values for stability; for piping no adjustment has to be made + DamProjectData actualDamProjectData = FillDamFromXmlOutput.CreateDamProjectData(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); + Assert.AreEqual(63.486, redesignedSurfaceLine.GetDikeLength(), tolerance); + Assert.AreEqual(32.5, redesignedSurfaceLine.DetermineShoulderWidth(), 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); - //Assert.AreEqual(0.5825, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftFactor, tolerance); - //Assert.AreEqual(true, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftSituation.IsUplift); - //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); + // The following values are not the same as in the Dam 15.1.2.24738 release + // The final Bligh calculation at the redesigned situation is done at X = 29.013552941176471 (the "insteeek van de berm"), because there an + // upliftfactor of 1.99999 is found, but it should have been done at X = 73.486 (the "teen van de dijk") + + // The BlighFactor in Dam 15.1.2.24738 is 2.092, but that is not correct, because that is the value at X = 29.013552941176471 + Assert.AreEqual(1.323, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.BlighFactor, tolerance); + // The BlighHcritical in Dam 15.1.2.24738 is 1.268, but that is not correct, because that is the value at X = 29.013552941176471 + Assert.AreEqual(4.232, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.BlighHcritical, tolerance); + + // The upliftfactor in Dam 15.1.2.24738 is (incorrectly) not shown + Assert.AreEqual(0.5825, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftFactor, tolerance); + + // The ExitPointX in Dam 15.1.2.24738 is (incorrectly) not shown + Assert.AreEqual(73.486, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.ExitPointX, tolerance); } } }