Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/PipingSellmeijerRevisedTests.cs =================================================================== diff -u -r1896 -r1919 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/PipingSellmeijerRevisedTests.cs (.../PipingSellmeijerRevisedTests.cs) (revision 1896) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/PipingSellmeijerRevisedTests.cs (.../PipingSellmeijerRevisedTests.cs) (revision 1919) @@ -57,8 +57,8 @@ Assert.IsNotNull(outputString); var output = DamXmlSerialization.LoadOutputFromXmlString(outputString); - Assert.AreEqual(0.432, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wbi2017Factor, tolerance); - Assert.AreEqual(1.383, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wbi2017Hcritical, tolerance); + Assert.AreEqual(0.432, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wbi2017FactorPiping, tolerance); + Assert.AreEqual(1.383, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wbi2017HcriticalPiping, 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 @@ -109,9 +109,9 @@ Assert.AreEqual(93.986, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.ExitPointX, tolerance); // expected value = 1.280 - Assert.AreEqual(1.280, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wbi2017Factor, tolerance); + Assert.AreEqual(1.280, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wbi2017FactorPiping, tolerance); // expected value = 4.097 - Assert.AreEqual(4.097, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wbi2017Hcritical, tolerance); + Assert.AreEqual(4.097, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wbi2017HcriticalPiping, tolerance); // expected value = 0.582 Assert.AreEqual(0.582, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftFactor, tolerance); @@ -152,8 +152,8 @@ 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(1.280, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wbi2017Factor, tolerance); - Assert.AreEqual(4.097, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wbi2017Hcritical, tolerance); + Assert.AreEqual(1.280, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wbi2017FactorPiping, tolerance); + Assert.AreEqual(4.097, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.Wbi2017HcriticalPiping, tolerance); Assert.AreEqual(0.582, output.Results.CalculationResults.DesignResults[0].PipingDesignResults.UpliftFactor, tolerance); } } Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSurfaceLines.cs =================================================================== diff -u -r926 -r1919 --- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSurfaceLines.cs (.../FactoryForSurfaceLines.cs) (revision 926) +++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSurfaceLines.cs (.../FactoryForSurfaceLines.cs) (revision 1919) @@ -63,7 +63,7 @@ surfaceLine.Geometry.SyncCalcPoints(); return surfaceLine; } - + /// /// Creates a surface line like in tutorial 2. /// @@ -696,5 +696,39 @@ return surfaceLine; } + public static SurfaceLine2 CreateSurfaceLineForWbiPiping(bool includingTraffic = false) + { + //Surface line tutorial 1 + var surfaceLine = new SurfaceLine2 + { + Name = "Tutorial1", + Geometry = new GeometryPointString(), + CharacteristicPoints = + { + GeometryMustContainPoint = true + } + }; + + // Next point adjusted so create PL line can be tested better + surfaceLine.EnsurePointOfType(0.0, 0, CharacteristicPointType.SurfaceLevelOutside); + surfaceLine.EnsurePointOfType(10.0, 0, CharacteristicPointType.DikeToeAtRiver); + surfaceLine.EnsurePointOfType(34.5, 5, CharacteristicPointType.DikeTopAtRiver); + if (includingTraffic) + { + surfaceLine.EnsurePointOfType(35.0, 5, CharacteristicPointType.TrafficLoadOutside); + surfaceLine.EnsurePointOfType(38.5, 5, CharacteristicPointType.TrafficLoadInside); + } + surfaceLine.EnsurePointOfType(40.5, 5, CharacteristicPointType.DikeTopAtPolder); + surfaceLine.EnsurePointOfType(50.5, 0, CharacteristicPointType.DikeToeAtPolder); + surfaceLine.EnsurePointOfType(58.5, 0, CharacteristicPointType.DitchDikeSide); + surfaceLine.EnsurePointOfType(59.5, -1, CharacteristicPointType.BottomDitchDikeSide); + surfaceLine.EnsurePointOfType(61.5, -1, CharacteristicPointType.BottomDitchPolderSide); + surfaceLine.EnsurePointOfType(61.5, 0, CharacteristicPointType.DitchPolderSide); + surfaceLine.EnsurePointOfType(75.0, 0, CharacteristicPointType.SurfaceLevelInside); + + surfaceLine.Geometry.SyncCalcPoints(); + return surfaceLine; + } + } } \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedOutput.cs =================================================================== diff -u -r1897 -r1919 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedOutput.cs (.../WbiPipingSellmeijerRevisedOutput.cs) (revision 1897) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedOutput.cs (.../WbiPipingSellmeijerRevisedOutput.cs) (revision 1919) @@ -102,5 +102,13 @@ /// The effective stress. /// public double EffectiveStress { get; set; } + + /// + /// Gets or sets the delta phi cu (the critical head difference for uplift). + /// + /// + /// The delta phi cu. + /// + public double DeltaPhiCu { get; set; } } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedKernelWrapperTests.cs =================================================================== diff -u -r1897 -r1919 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedKernelWrapperTests.cs (.../WbiPipingSellmeijerRevisedKernelWrapperTests.cs) (revision 1897) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedKernelWrapperTests.cs (.../WbiPipingSellmeijerRevisedKernelWrapperTests.cs) (revision 1919) @@ -48,10 +48,15 @@ var location = new Location("Location 1") { - SurfaceLine = FactoryForSurfaceLines.CreateSurfaceLineTutorial1(), + SurfaceLine = FactoryForSurfaceLines.CreateSurfaceLineForWbiPiping(), ModelFactors = { UpliftCriterionPiping = 1.0 + }, + ModelParametersForPlLines = + { + DampingFactorPl3 = 0.25, + DampingFactorPl4 = 0.10 } }; @@ -100,8 +105,11 @@ kernelWrapper.Execute(damPipingInput, kernelDataOutput, out messages); var damPipingOutput = (WbiPipingSellmeijerRevisedOutput)kernelDataOutput; Assert.AreEqual(0, messages.Count); - Assert.AreEqual(2719.6685415725829, damPipingOutput.FoSp, diff); - Assert.AreEqual(1087.8674166290334, damPipingOutput.Hc, diff); + Assert.AreEqual(1860.9050036726026, damPipingOutput.FoSp, diff); + Assert.AreEqual(1302.6335025708217, damPipingOutput.Hc, diff); + Assert.AreEqual(0.56948691811077123, damPipingOutput.FoSu, diff); + Assert.AreEqual(0.56948691811077123, damPipingOutput.Hcu, diff); + Assert.AreEqual(0.4271151885830784, damPipingOutput.DeltaPhiCu, diff); // Fill the design results List results; @@ -113,11 +121,14 @@ Assert.IsNotNullOrEmpty(result.LocationName); Assert.IsNotNullOrEmpty(result.ScenarioName); Assert.IsNotNullOrEmpty(result.ProfileName); - Assert.AreEqual(90, result.PipingDesignResults.Wti2017Factor, diff); - Assert.AreEqual(1087.8674166290334, result.PipingDesignResults.Wti2017Hcritical, diff); + Assert.AreEqual(90, result.PipingDesignResults.Wti2017SafetyFactorPiping, diff); + Assert.AreEqual(1302.6335025708217, result.PipingDesignResults.Wti2017HcriticalPiping, diff); + Assert.AreEqual(0.56948691811077123, result.PipingDesignResults.Wti2017SafetyFactorUplift, diff); + Assert.AreEqual(0.56948691811077123, result.PipingDesignResults.Wti2017HcriticalUplift, diff); + Assert.AreEqual(0.4271151885830784, result.PipingDesignResults.Wti2017DeltaPhiCu, diff); - Assert.AreEqual(50.5, result.PipingDesignResults.LocalExitPointX); - Assert.AreEqual(0.067957866123003738, result.PipingDesignResults.UpliftFactor); + Assert.AreEqual(59.5, result.PipingDesignResults.LocalExitPointX); + Assert.AreEqual(0.88258734130293759, result.PipingDesignResults.UpliftFactor); Assert.AreEqual(true, result.PipingDesignResults.UpliftSituation != null && ((UpliftSituation)result.PipingDesignResults.UpliftSituation).IsUplift); Assert.AreEqual(CalculationResult.Succeeded, result.CalculationResult); @@ -132,7 +143,7 @@ var location = new Location { - SurfaceLine = FactoryForSurfaceLines.CreateSurfaceLineTutorial1(), + SurfaceLine = FactoryForSurfaceLines.CreateSurfaceLineForWbiPiping(), ModelFactors = { UpliftCriterionPiping = 1.0 @@ -171,23 +182,23 @@ Assert.AreEqual(1.0, damPipingInput.HRiver, diff); Assert.AreEqual(0.0, damPipingInput.HExit, diff); Assert.AreEqual(0.3, damPipingInput.Rc, diff); - Assert.AreEqual(2.0, damPipingInput.DTotal, diff); + Assert.AreEqual(1.0, damPipingInput.DTotal, diff); Assert.AreEqual(8.0, damPipingInput.DAquifer, diff); - Assert.AreEqual(40.5, damPipingInput.SeepageLength, diff); + Assert.AreEqual(49.5, damPipingInput.SeepageLength, diff); Assert.AreEqual(0.000200, damPipingInput.D70, diff); Assert.AreEqual(0.25, damPipingInput.WhitesDragCoefficient, diff); Assert.AreEqual(37.0, damPipingInput.BeddingAngle, diff); Assert.AreEqual(1.33E-06, damPipingInput.KinematicViscosityWater, diff); Assert.AreEqual(0.0001, damPipingInput.DarcyPermeability, diff); Assert.AreEqual(1.000, damPipingInput.ModelFactorUplift, diff); - Assert.AreEqual(-17.62, damPipingInput.EffectiveStress, diff); + Assert.AreEqual(4.19, damPipingInput.EffectiveStress, diff); Assert.AreEqual(0.75, damPipingInput.PhiExit, diff); Assert.AreEqual(0.75, damPipingInput.RExit, diff); Assert.AreEqual(0.00, damPipingInput.PhiPolder, diff); - Assert.AreEqual(-17.62, damPipingOutput.EffectiveStress, diff); - Assert.AreEqual(50.50, damPipingOutput.ExitPointX, diff); - Assert.AreEqual(0.0741358539523677, damPipingOutput.UpliftFactor, diff); + Assert.AreEqual(4.19, damPipingOutput.EffectiveStress, diff); + Assert.AreEqual(59.50, damPipingOutput.ExitPointX, diff); + Assert.AreEqual(0.88258734130293759, damPipingOutput.UpliftFactor, diff); Assert.AreEqual(true, damPipingOutput.UpliftSituation.IsUplift); } @@ -216,7 +227,8 @@ WhitesDragCoefficient = 0.25, BeddingAngle = 37.0, KinematicViscosityWater = 1.33E-06, - DarcyPermeability = 0.0001 + DarcyPermeability = 0.0001, + RExit = 0.25 }; messages.Clear(); kernelWrapper.Validate(damPipingInput, damPipingOutput, out messages); @@ -258,7 +270,10 @@ ExitPointX = 3.3, UpliftFactor = 4.4, UpliftSituation = upliftSituation, - CalculationResult = calculationResult + CalculationResult = calculationResult, + FoSu = 5.5, + Hcu = 6.6, + DeltaPhiCu = 7.7 }; var designScenario = new DesignScenario @@ -269,8 +284,11 @@ kernelWrapper.PostProcess(input, output, designScenario, "", out results); foreach (var result in results) { - Assert.AreEqual(output.FoSp, result.PipingDesignResults.Wti2017Factor); - Assert.AreEqual(output.Hc, result.PipingDesignResults.Wti2017Hcritical); + Assert.AreEqual(output.FoSp, result.PipingDesignResults.Wti2017SafetyFactorPiping); + Assert.AreEqual(output.Hc, result.PipingDesignResults.Wti2017HcriticalPiping); + Assert.AreEqual(output.FoSu, result.PipingDesignResults.Wti2017SafetyFactorUplift); + Assert.AreEqual(output.Hcu, result.PipingDesignResults.Wti2017HcriticalUplift); + Assert.AreEqual(output.DeltaPhiCu, result.PipingDesignResults.Wti2017DeltaPhiCu); Assert.AreEqual(output.ExitPointX, result.PipingDesignResults.LocalExitPointX); Assert.AreEqual(output.UpliftFactor, result.PipingDesignResults.UpliftFactor); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedKernelWrapper.cs =================================================================== diff -u -r1897 -r1919 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedKernelWrapper.cs (.../WbiPipingSellmeijerRevisedKernelWrapper.cs) (revision 1897) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedKernelWrapper.cs (.../WbiPipingSellmeijerRevisedKernelWrapper.cs) (revision 1919) @@ -62,7 +62,8 @@ { var damPipingOutput = new WbiPipingSellmeijerRevisedOutput() { - FoSp = defaultMaxReturnValue + FoSp = defaultMaxReturnValue, + FoSu = defaultMaxReturnValue }; kernelDataOutput = damPipingOutput; if (damKernelInput.SubSoilScenario.SegmentFailureMechanismType == FailureMechanismSystemType.Piping) @@ -93,13 +94,22 @@ public int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages) { var wbiPipingSellmeijerRevisedOutput = (WbiPipingSellmeijerRevisedOutput)kernelDataOutput; - var calculator = CreatePipingCalculatorWbiSellmeijerRevised(kernelDataInput); - List kernelMessages = calculator.Validate(); + var calculatorWbiSellmeijerRevised = CreatePipingCalculatorWbiSellmeijerRevised(kernelDataInput); + List kernelMessages = calculatorWbiSellmeijerRevised.Validate(); messages = new List(); foreach (string stringMessage in kernelMessages) { messages.Add(new LogMessage() { Message = stringMessage, MessageType = LogMessageType.Error }); } + var calculatorWbiUplift = CreateWTIUpliftCalculator(kernelDataInput); + + // Validate the WBI Uplift calculator + kernelMessages.Clear(); + kernelMessages = calculatorWbiUplift.Validate(); + foreach (string stringMessage in kernelMessages) + { + messages.Add(new LogMessage() { Message = stringMessage, MessageType = LogMessageType.Error }); + } if (messages.Count > 0) { wbiPipingSellmeijerRevisedOutput.CalculationResult = CalculationResult.InvalidInputData; @@ -119,7 +129,12 @@ var wbiPipingSellmeijerRevisedOutput = (WbiPipingSellmeijerRevisedOutput)kernelDataOutput; ThrowWhenKernelInputNull(wbiPipingSellmeijerRevisedInput); ThrowWhenKernelOutputNull(wbiPipingSellmeijerRevisedOutput); - PerformSingleCalculationWbiSellmeijerRevised(out messages, wbiPipingSellmeijerRevisedOutput, wbiPipingSellmeijerRevisedInput); + PerformSingleCalculationWbiUplift(out messages, wbiPipingSellmeijerRevisedOutput, wbiPipingSellmeijerRevisedInput); + // Only when Uplift succeeded, continue with piping. + if (messages.Count == 0) + { + PerformSingleCalculationWbiSellmeijerRevised(out messages, wbiPipingSellmeijerRevisedOutput, wbiPipingSellmeijerRevisedInput); + } } /// @@ -148,11 +163,15 @@ pipingDesignResults.ResultMessage = resultMessage; pipingDesignResults.RedesignedSurfaceLine = damKernelInput.Location.SurfaceLine; // Make sure defaultMaxReturnValue is limit. - pipingDesignResults.Wti2017Factor = Math.Min(damPipingOutput.FoSp, defaultMaxReturnValue); - pipingDesignResults.Wti2017Hcritical = damPipingOutput.Hc; + pipingDesignResults.Wti2017SafetyFactorPiping = Math.Min(damPipingOutput.FoSp, defaultMaxReturnValue); + pipingDesignResults.Wti2017HcriticalPiping = damPipingOutput.Hc; pipingDesignResults.LocalExitPointX = damPipingOutput.ExitPointX; pipingDesignResults.UpliftFactor = damPipingOutput.UpliftFactor; pipingDesignResults.UpliftSituation = damPipingOutput.UpliftSituation; + // Add results of the wbi-uplift calculation + pipingDesignResults.Wti2017SafetyFactorUplift = Math.Min(damPipingOutput.FoSu, defaultMaxReturnValue); + pipingDesignResults.Wti2017HcriticalUplift = damPipingOutput.Hcu; + pipingDesignResults.Wti2017DeltaPhiCu = damPipingOutput.DeltaPhiCu; designResults.Add(designResult); } @@ -197,6 +216,7 @@ damPipingInput.HExit = referenceLevel; // Calculate the piping safety factor using the level of the given point + PerformSingleCalculationWbiUplift(out messages, damPipingOutput, damPipingInput); PerformSingleCalculationWbiSellmeijerRevised(out messages, damPipingOutput, damPipingInput); // If too low, then determine required height and length (from uplift) @@ -205,9 +225,9 @@ // Finally, determine the required shoulderheight double currentShoulderHeight = upliftLocationAndResult.Z - surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z; - var shoulderDesign = new ShoulderDesign( - upliftLocationAndResult.X - surfaceLine.GetDikeToeInward().X, - currentShoulderHeight + ShoulderDesignHelper.CalculateExtraShoulderHeight(soilProfile, plLines, upliftLocationAndResult, upliftCriterion)); + var shoulderDesign = new ShoulderDesign(upliftLocationAndResult.X - surfaceLine.GetDikeToeInward().X, + currentShoulderHeight + ShoulderDesignHelper.CalculateExtraShoulderHeight(soilProfile, plLines, upliftLocationAndResult, + upliftCriterion)); return shoulderDesign; } } @@ -401,6 +421,24 @@ return calculator; } + private static WTIUpliftCalculator CreateWTIUpliftCalculator(IKernelDataInput kernelDataInput) + { + var wbiPipingSellmeijerRevisedInput = kernelDataInput as WbiPipingSellmeijerRevisedInput; + ThrowWhenKernelInputNull(wbiPipingSellmeijerRevisedInput); + var calculator = new WTIUpliftCalculator + { + VolumetricWeightOfWater = wbiPipingSellmeijerRevisedInput.VolumetricWeightOfWater, + ModelFactorUplift = wbiPipingSellmeijerRevisedInput.ModelFactorUplift, + EffectiveStress = wbiPipingSellmeijerRevisedInput.EffectiveStress, + RExit = wbiPipingSellmeijerRevisedInput.RExit, + HRiver = wbiPipingSellmeijerRevisedInput.HRiver, + HExit = wbiPipingSellmeijerRevisedInput.HExit, + PhiPolder = wbiPipingSellmeijerRevisedInput.PhiPolder, + PhiExit = wbiPipingSellmeijerRevisedInput.PhiExit + }; + return calculator; + } + /// /// Converts the CharacteristicPointType to PipingCharacteristicPointType. /// @@ -523,6 +561,37 @@ } } + /// + /// Performs the single calculation wbi uplift. + /// + /// The messages. + /// The wbi piping output. + /// The wbi piping input. + private static void PerformSingleCalculationWbiUplift(out List messages, WbiPipingSellmeijerRevisedOutput wbiPipingOutput, + WbiPipingSellmeijerRevisedInput wbiPipingInput) + { + wbiPipingOutput.CalculationResult = CalculationResult.NoRun; + wbiPipingOutput.FoSu = defaultMaxReturnValue; + messages = new List(); + try + { + if (wbiPipingOutput.UpliftSituation.IsUplift) + { + var calculator = CreateWTIUpliftCalculator(wbiPipingInput); + calculator.Calculate(); + wbiPipingOutput.FoSu = calculator.FoSu; + wbiPipingOutput.Hcu = calculator.Hcu; + wbiPipingOutput.DeltaPhiCu = calculator.DeltaPhiCu; + wbiPipingOutput.CalculationResult = CalculationResult.Succeeded; + } + } + catch (Exception e) + { + wbiPipingOutput.CalculationResult = CalculationResult.UnexpectedError; + messages.Add(new LogMessage(LogMessageType.Error, null, e.Message)); + } + } + private static void ThrowWhenKernelInputNull(WbiPipingSellmeijerRevisedInput wbiPipingInput) { if (wbiPipingInput == null) Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlOutputFromDam.cs =================================================================== diff -u -r1724 -r1919 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlOutputFromDam.cs (.../FillXmlOutputFromDam.cs) (revision 1724) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlOutputFromDam.cs (.../FillXmlOutputFromDam.cs) (revision 1919) @@ -167,12 +167,21 @@ desResult.PipingDesignResults.SellmeijerVnkHcriticalSpecified = designResult.PipingDesignResults.SellmeijerVnkHcritical.HasValue; if (designResult.PipingDesignResults.SellmeijerVnkHcritical.HasValue) desResult.PipingDesignResults.SellmeijerVnkHcritical = designResult.PipingDesignResults.SellmeijerVnkHcritical.Value; - desResult.PipingDesignResults.Wbi2017FactorSpecified = designResult.PipingDesignResults.Wti2017Factor.HasValue; - if (designResult.PipingDesignResults.Wti2017Factor.HasValue) desResult.PipingDesignResults.Wbi2017Factor = designResult.PipingDesignResults.Wti2017Factor.Value; + desResult.PipingDesignResults.Wbi2017FactorPipingSpecified = designResult.PipingDesignResults.Wti2017SafetyFactorPiping.HasValue; + if (designResult.PipingDesignResults.Wti2017SafetyFactorPiping.HasValue) desResult.PipingDesignResults.Wbi2017FactorPiping = designResult.PipingDesignResults.Wti2017SafetyFactorPiping.Value; - desResult.PipingDesignResults.Wbi2017HcriticalSpecified = designResult.PipingDesignResults.Wti2017Hcritical.HasValue; - if (designResult.PipingDesignResults.Wti2017Hcritical.HasValue) desResult.PipingDesignResults.Wbi2017Hcritical = designResult.PipingDesignResults.Wti2017Hcritical.Value; + desResult.PipingDesignResults.Wbi2017HcriticalPipingSpecified = designResult.PipingDesignResults.Wti2017HcriticalPiping.HasValue; + if (designResult.PipingDesignResults.Wti2017HcriticalPiping.HasValue) desResult.PipingDesignResults.Wbi2017HcriticalPiping = designResult.PipingDesignResults.Wti2017HcriticalPiping.Value; + desResult.PipingDesignResults.Wbi2017FactorUpliftSpecified = designResult.PipingDesignResults.Wti2017SafetyFactorUplift.HasValue; + if (designResult.PipingDesignResults.Wti2017SafetyFactorUplift.HasValue) desResult.PipingDesignResults.Wbi2017FactorUplift = designResult.PipingDesignResults.Wti2017SafetyFactorUplift.Value; + + desResult.PipingDesignResults.Wbi2017HcriticalUpliftSpecified = designResult.PipingDesignResults.Wti2017HcriticalUplift.HasValue; + if (designResult.PipingDesignResults.Wti2017HcriticalUplift.HasValue) desResult.PipingDesignResults.Wbi2017HcriticalUplift = designResult.PipingDesignResults.Wti2017HcriticalUplift.Value; + + desResult.PipingDesignResults.Wbi2017DeltaPhiCuSpecified = designResult.PipingDesignResults.Wti2017DeltaPhiCu.HasValue; + if (designResult.PipingDesignResults.Wti2017DeltaPhiCu.HasValue) desResult.PipingDesignResults.Wbi2017DeltaPhiCu = designResult.PipingDesignResults.Wti2017DeltaPhiCu.Value; + desResult.PipingDesignResults.ExitPointXSpecified = designResult.PipingDesignResults.LocalExitPointX.HasValue; if (designResult.PipingDesignResults.LocalExitPointX.HasValue) desResult.PipingDesignResults.ExitPointX = designResult.PipingDesignResults.LocalExitPointX.Value; Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/Results/PipingDesignResults.cs =================================================================== diff -u -r1353 -r1919 --- DamEngine/trunk/src/Deltares.DamEngine.Data/General/Results/PipingDesignResults.cs (.../PipingDesignResults.cs) (revision 1353) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/Results/PipingDesignResults.cs (.../PipingDesignResults.cs) (revision 1919) @@ -35,9 +35,12 @@ private double? sellmeijer4ForcesHcritical; private double? sellmeijerVnkFactor; private double? sellmeijerVnkHcritical; - private double? wti2017Factor; - private double? wti2017Hcritical; - + private double? wti2017SafetyFactorPiping; + private double? wti2017HcriticalPiping; + private double? wti2017SafetyFactorUplift; + private double? wti2017HcriticalUplift; + private double? wti2017DeltaPhiCu; + private double? localExitPointX; private UpliftSituation? upliftSituation; private SurfaceLine2 redesignedSurfaceLine; @@ -85,7 +88,7 @@ case PipingModelType.Sellmeijer4Forces: return sellmeijer4ForcesFactor; case PipingModelType.Wti2017: - return wti2017Factor; + return wti2017SafetyFactorPiping; default: return null; } @@ -106,7 +109,7 @@ } if (pipingModelType == PipingModelType.Wti2017) { - wti2017Factor = value; + wti2017SafetyFactorPiping = value; } } } @@ -256,42 +259,96 @@ } /// - /// Gets or sets the wti2017 factor. + /// Gets or sets the wti2017 safety factor for Piping. /// /// - /// The wti2017 factor. + /// The wti2017 safety factor for Piping. /// - public double? Wti2017Factor + public double? Wti2017SafetyFactorPiping { get { - return wti2017Factor; + return wti2017SafetyFactorPiping; } set { - wti2017Factor = value; + wti2017SafetyFactorPiping = value; } } /// - /// Gets or sets the wti2017 hcritical. + /// Gets or sets the wti2017 safety factor for Uplift. /// /// + /// The wti2017 safety factor for Uplift. + /// + public double? Wti2017SafetyFactorUplift + { + get + { + return wti2017SafetyFactorUplift; + } + set + { + wti2017SafetyFactorUplift = value; + } + } + + /// + /// Gets or sets the wti2017 hcritical for Piping. + /// + /// /// The wti2017 hcritical. /// - public double? Wti2017Hcritical + public double? Wti2017HcriticalPiping { get { - return wti2017Hcritical; + return wti2017HcriticalPiping; } set { - wti2017Hcritical = value; + wti2017HcriticalPiping = value; } } /// + /// Gets or sets the wti2017 hcritical for Uplift. + /// + /// + /// The wti2017 hcritical uplift. + /// + public double? Wti2017HcriticalUplift + { + get + { + return wti2017HcriticalUplift; + } + set + { + wti2017HcriticalUplift = value; + } + } + + /// + /// Gets or sets the wti2017 delta phi cu (Uplift). + /// + /// + /// The wti2017 delta phi cu. + /// + public double? Wti2017DeltaPhiCu + { + get + { + return wti2017DeltaPhiCu; + } + set + { + wti2017DeltaPhiCu = value; + } + } + + /// /// Gets or sets the local exit point x. /// /// Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillXmlOutputFromDamTests.cs =================================================================== diff -u -r1732 -r1919 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillXmlOutputFromDamTests.cs (.../FillXmlOutputFromDamTests.cs) (revision 1732) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillXmlOutputFromDamTests.cs (.../FillXmlOutputFromDamTests.cs) (revision 1919) @@ -85,14 +85,20 @@ ProfileName = "profile" + i }; result.CalculationResult = CalculationResult.RunFailed; - result.PipingDesignResults = new PipingDesignResults(PipingModelType.Bligh) + // Note : as Wti2017HcriticalPiping is in use in this test, the modeltype MUST be Wti2017. + result.PipingDesignResults = new PipingDesignResults(PipingModelType.Wti2017) { ResultMessage = "no run made", UpliftFactor = 1.3 * i, HeaveFactor = 1.1 * i, BlighFactor = 1.03 * i, BlighHcritical = 0.4, - LocalExitPointX = 34.21 + LocalExitPointX = 34.21, + Wti2017DeltaPhiCu = 1.09 * i, + Wti2017HcriticalUplift = 1.19 * i, + Wti2017HcriticalPiping = 1.29 * i, + Wti2017SafetyFactorPiping = 1.39 * i, + Wti2017SafetyFactorUplift = 1.49 * i }; var situation = new UpliftSituation { Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlOutput.cs =================================================================== diff -u -r1732 -r1919 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlOutput.cs (.../FillDamFromXmlOutput.cs) (revision 1732) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlOutput.cs (.../FillDamFromXmlOutput.cs) (revision 1919) @@ -173,7 +173,7 @@ model = PipingModelType.Sellmeijer4Forces; if (designResult.PipingDesignResults.SellmeijerVnkFactorSpecified) model = PipingModelType.SellmeijerVnk; - if (designResult.PipingDesignResults.Wbi2017FactorSpecified) + if (designResult.PipingDesignResults.Wbi2017FactorPipingSpecified) model = PipingModelType.Wti2017; desResult.PipingDesignResults = new PipingDesignResults(model) { @@ -204,10 +204,16 @@ if (designResult.PipingDesignResults.SellmeijerVnkHcriticalSpecified) desResult.PipingDesignResults.SellmeijerVnkHcritical = designResult.PipingDesignResults.SellmeijerVnkHcritical; - if (designResult.PipingDesignResults.Wbi2017FactorSpecified) desResult.PipingDesignResults.Wti2017Factor = designResult.PipingDesignResults.Wbi2017Factor; + if (designResult.PipingDesignResults.Wbi2017FactorPipingSpecified) desResult.PipingDesignResults.Wti2017SafetyFactorPiping = designResult.PipingDesignResults.Wbi2017FactorPiping; - if (designResult.PipingDesignResults.Wbi2017HcriticalSpecified) desResult.PipingDesignResults.Wti2017Hcritical = designResult.PipingDesignResults.Wbi2017Hcritical; + if (designResult.PipingDesignResults.Wbi2017HcriticalPipingSpecified) desResult.PipingDesignResults.Wti2017HcriticalPiping = designResult.PipingDesignResults.Wbi2017HcriticalPiping; + if (designResult.PipingDesignResults.Wbi2017FactorUpliftSpecified) desResult.PipingDesignResults.Wti2017SafetyFactorUplift = designResult.PipingDesignResults.Wbi2017FactorUplift; + + if (designResult.PipingDesignResults.Wbi2017HcriticalUpliftSpecified) desResult.PipingDesignResults.Wti2017HcriticalUplift = designResult.PipingDesignResults.Wbi2017HcriticalUplift; + + if (designResult.PipingDesignResults.Wbi2017DeltaPhiCuSpecified) desResult.PipingDesignResults.Wti2017DeltaPhiCu = designResult.PipingDesignResults.Wbi2017DeltaPhiCu; + if (designResult.PipingDesignResults.ExitPointXSpecified) desResult.PipingDesignResults.LocalExitPointX = designResult.PipingDesignResults.ExitPointX; if (designResult.PipingDesignResults.UpliftSituation != null) Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs =================================================================== diff -u -r1198 -r1919 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs (.../DamPipingSellmeijer4ForcesKernelWrapperTests.cs) (revision 1198) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapperTests.cs (.../DamPipingSellmeijer4ForcesKernelWrapperTests.cs) (revision 1919) @@ -96,8 +96,8 @@ kernelWrapper.Execute(damPipingInput, kernelDataOutput, out messages); DamPipingSellmeijer4ForcesOutput damPipingOutput = (DamPipingSellmeijer4ForcesOutput) kernelDataOutput; Assert.AreEqual(0, messages.Count); - Assert.AreEqual(11.899117458988471, damPipingOutput.FoSp, diff); - Assert.AreEqual(4.7596469835953883, damPipingOutput.Hc, diff); + Assert.AreEqual(11.899117458988467, damPipingOutput.FoSp, diff); + Assert.AreEqual(4.7596469835953874, damPipingOutput.Hc, diff); // Fill the design results List results; @@ -109,11 +109,11 @@ Assert.IsNotNullOrEmpty(result.LocationName); Assert.IsNotNullOrEmpty(result.ScenarioName); Assert.IsNotNullOrEmpty(result.ProfileName); - Assert.AreEqual(11.899117458988471, result.PipingDesignResults.Sellmeijer4ForcesFactor, diff); - Assert.AreEqual(4.7596469835953883, result.PipingDesignResults.Sellmeijer4ForcesHcritical, diff); + Assert.AreEqual(11.899117458988467, result.PipingDesignResults.Sellmeijer4ForcesFactor, diff); + Assert.AreEqual(4.7596469835953874, result.PipingDesignResults.Sellmeijer4ForcesHcritical, diff); Assert.AreEqual(50.5, result.PipingDesignResults.LocalExitPointX); - Assert.AreEqual(0.067957866123003738, result.PipingDesignResults.UpliftFactor); + Assert.AreEqual(0.9514101257220523, result.PipingDesignResults.UpliftFactor); Assert.AreEqual(true, result.PipingDesignResults.UpliftSituation != null && ((UpliftSituation)result.PipingDesignResults.UpliftSituation).IsUplift); Assert.AreEqual(CalculationResult.Succeeded, result.CalculationResult); Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSoilProfiles.cs =================================================================== diff -u -r926 -r1919 --- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSoilProfiles.cs (.../FactoryForSoilProfiles.cs) (revision 926) +++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSoilProfiles.cs (.../FactoryForSoilProfiles.cs) (revision 1919) @@ -603,7 +603,7 @@ Name = GetNewUniqueLayerId(soilProfile) }; layer.TopLevel = 10.0; - layer.Soil = new Soil("Topmaterial", 1.0, 1.0) + layer.Soil = new Soil("Topmaterial", 14, 11) { PermeabKx = 0.0003, DiameterD70 = Physics.FactorMicroMeterToMeter * 300.0, Index: DamEngine/trunk/src/Deltares.DamEngine.Io/DamOutput.cs =================================================================== diff -u -r1661 -r1919 --- DamEngine/trunk/src/Deltares.DamEngine.Io/DamOutput.cs (.../DamOutput.cs) (revision 1661) +++ DamEngine/trunk/src/Deltares.DamEngine.Io/DamOutput.cs (.../DamOutput.cs) (revision 1919) @@ -1740,18 +1740,30 @@ private bool sellmeijerVnkHcriticalFieldSpecified; - private double wbi2017FactorField; + private double wbi2017FactorPipingField; - private bool wbi2017FactorFieldSpecified; + private bool wbi2017FactorPipingFieldSpecified; - private double wbi2017HcriticalField; + private double wbi2017HcriticalPipingField; - private bool wbi2017HcriticalFieldSpecified; + private bool wbi2017HcriticalPipingFieldSpecified; private double exitPointXField; private bool exitPointXFieldSpecified; + private double wbi2017FactorUpliftField; + + private bool wbi2017FactorUpliftFieldSpecified; + + private double wbi2017HcriticalUpliftField; + + private bool wbi2017HcriticalUpliftFieldSpecified; + + private double wbi2017DeltaPhiCuField; + + private bool wbi2017DeltaPhiCuFieldSpecified; + /// public UpliftSituation UpliftSituation { get { @@ -1961,45 +1973,45 @@ /// [System.Xml.Serialization.XmlAttributeAttribute()] - public double Wbi2017Factor { + public double Wbi2017FactorPiping { get { - return this.wbi2017FactorField; + return this.wbi2017FactorPipingField; } set { - this.wbi2017FactorField = value; + this.wbi2017FactorPipingField = value; } } /// [System.Xml.Serialization.XmlIgnoreAttribute()] - public bool Wbi2017FactorSpecified { + public bool Wbi2017FactorPipingSpecified { get { - return this.wbi2017FactorFieldSpecified; + return this.wbi2017FactorPipingFieldSpecified; } set { - this.wbi2017FactorFieldSpecified = value; + this.wbi2017FactorPipingFieldSpecified = value; } } /// [System.Xml.Serialization.XmlAttributeAttribute()] - public double Wbi2017Hcritical { + public double Wbi2017HcriticalPiping { get { - return this.wbi2017HcriticalField; + return this.wbi2017HcriticalPipingField; } set { - this.wbi2017HcriticalField = value; + this.wbi2017HcriticalPipingField = value; } } /// [System.Xml.Serialization.XmlIgnoreAttribute()] - public bool Wbi2017HcriticalSpecified { + public bool Wbi2017HcriticalPipingSpecified { get { - return this.wbi2017HcriticalFieldSpecified; + return this.wbi2017HcriticalPipingFieldSpecified; } set { - this.wbi2017HcriticalFieldSpecified = value; + this.wbi2017HcriticalPipingFieldSpecified = value; } } @@ -2024,6 +2036,72 @@ this.exitPointXFieldSpecified = value; } } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double Wbi2017FactorUplift { + get { + return this.wbi2017FactorUpliftField; + } + set { + this.wbi2017FactorUpliftField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Wbi2017FactorUpliftSpecified { + get { + return this.wbi2017FactorUpliftFieldSpecified; + } + set { + this.wbi2017FactorUpliftFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double Wbi2017HcriticalUplift { + get { + return this.wbi2017HcriticalUpliftField; + } + set { + this.wbi2017HcriticalUpliftField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Wbi2017HcriticalUpliftSpecified { + get { + return this.wbi2017HcriticalUpliftFieldSpecified; + } + set { + this.wbi2017HcriticalUpliftFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double Wbi2017DeltaPhiCu { + get { + return this.wbi2017DeltaPhiCuField; + } + set { + this.wbi2017DeltaPhiCuField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Wbi2017DeltaPhiCuSpecified { + get { + return this.wbi2017DeltaPhiCuFieldSpecified; + } + set { + this.wbi2017DeltaPhiCuFieldSpecified = value; + } + } } /// Index: DamEngine/trunk/xsd/DamDesignResult.xsd =================================================================== diff -u -r1175 -r1919 --- DamEngine/trunk/xsd/DamDesignResult.xsd (.../DamDesignResult.xsd) (revision 1175) +++ DamEngine/trunk/xsd/DamDesignResult.xsd (.../DamDesignResult.xsd) (revision 1919) @@ -20,15 +20,15 @@ - - - - - - - - - + + + + + + + + + @@ -46,9 +46,12 @@ - - + + + + +