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 @@
-
-
+
+
+
+
+