Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedOutput.cs =================================================================== diff -u -r1919 -r1921 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedOutput.cs (.../WbiPipingSellmeijerRevisedOutput.cs) (revision 1919) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedOutput.cs (.../WbiPipingSellmeijerRevisedOutput.cs) (revision 1921) @@ -48,6 +48,14 @@ public double FoSu { get; set; } /// + /// Gets or sets the heave safetyfactor. + /// + /// + /// The fo sp. + /// + public double FoSh { get; set; } + + /// /// Gets or sets the H-critical (critical head difference for piping). /// /// @@ -64,6 +72,22 @@ public double Hcu { get; set; } /// + /// Gets or sets the H-critical (critical waterlevel for heave). + /// + /// + /// The hc. + /// + public double Hch { get; set; } + + /// + /// Gets or sets the gradient (vertical outflow gradient for heave). + /// + /// + /// The gradient. + /// + public double Gradient { get; set; } + + /// /// Gets or sets the calculation result. /// /// Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MultiCorePipingCalculationTests.cs =================================================================== diff -u -r1818 -r1921 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MultiCorePipingCalculationTests.cs (.../MultiCorePipingCalculationTests.cs) (revision 1818) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/MultiCorePipingCalculationTests.cs (.../MultiCorePipingCalculationTests.cs) (revision 1921) @@ -65,6 +65,7 @@ File.WriteAllText(outputFilename, outputString, Encoding.Unicode); // Calculate multicore + Debug.WriteLine(""); Debug.WriteLine("Perform multicore calculation with {0} cores Piping", multiCoreCount); inputString = XmlAdapter.ChangeValueInXml(inputString, "MaxCalculationCores", multiCoreCount.ToString()); engineInterface = new EngineInterface(inputString); Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/Results/PipingDesignResults.cs =================================================================== diff -u -r1919 -r1921 --- DamEngine/trunk/src/Deltares.DamEngine.Data/General/Results/PipingDesignResults.cs (.../PipingDesignResults.cs) (revision 1919) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/Results/PipingDesignResults.cs (.../PipingDesignResults.cs) (revision 1921) @@ -19,7 +19,6 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.Geotechnics; namespace Deltares.DamEngine.Data.General.Results @@ -40,11 +39,17 @@ private double? wti2017SafetyFactorUplift; private double? wti2017HcriticalUplift; private double? wti2017DeltaPhiCu; + private double? wti2017SafetyFactorHeave; + private double? wti2017HcriticalHeave; + private double? wti2017Gradient; + private double? wti2017SafetyFactorOverall; + private double? wti2017HcriticalOverall; private double? localExitPointX; private UpliftSituation? upliftSituation; private SurfaceLine2 redesignedSurfaceLine; private readonly PipingModelType pipingModelType; + private double? effectiveStress; public PipingDesignResults(PipingModelType aPipingModelType) { @@ -295,10 +300,46 @@ } /// + /// Gets or sets the wti2017 safety factor heave. + /// + /// + /// The wti2017 safety factor heave. + /// + public double? Wti2017SafetyFactorHeave + { + get + { + return wti2017SafetyFactorHeave; + } + set + { + wti2017SafetyFactorHeave = value; + } + } + + /// + /// Gets or sets the wti2017 safety factor overall (see MWDAM-1299). + /// + /// + /// The wti2017 safety factor overall. + /// + public double? Wti2017SafetyFactorOverall + { + get + { + return wti2017SafetyFactorOverall; + } + set + { + wti2017SafetyFactorOverall = value; + } + } + + /// /// Gets or sets the wti2017 hcritical for Piping. /// /// - /// The wti2017 hcritical. + /// The wti2017 hcritical piping. /// public double? Wti2017HcriticalPiping { @@ -331,6 +372,42 @@ } /// + /// Gets or sets the wti2017 hcritical for Heave. + /// + /// + /// The wti2017 hcritical heave. + /// + public double? Wti2017HcriticalHeave + { + get + { + return wti2017HcriticalHeave; + } + set + { + wti2017HcriticalHeave = value; + } + } + + /// + /// Gets or sets the wti2017 hcritical overall (see MWDAM-1299). + /// + /// + /// The wti2017 hcritical overall. + /// + public double? Wti2017HcriticalOverall + { + get + { + return wti2017HcriticalOverall; + } + set + { + wti2017HcriticalOverall = value; + } + } + + /// /// Gets or sets the wti2017 delta phi cu (Uplift). /// /// @@ -349,6 +426,24 @@ } /// + /// Gets or sets the wti2017 gradient (vertical outflow gradient for Heave). + /// + /// + /// The wti2017 gradient. + /// + public double? Wti2017Gradient + { + get + { + return wti2017Gradient; + } + set + { + wti2017Gradient = value; + } + } + + /// /// Gets or sets the local exit point x. /// /// @@ -367,6 +462,24 @@ } /// + /// Gets or sets the effective stress (at exit point, as calculated with Wti EffectiveThicknessCalculator). + /// + /// + /// The effective stress. + /// + public double? EffectiveStress + { + get + { + return effectiveStress; + } + set + { + effectiveStress = value; + } + } + + /// /// Gets or sets the uplift situation. /// /// Index: DamEngine/trunk/xsd/DamDesignResult.xsd =================================================================== diff -u -r1919 -r1921 --- DamEngine/trunk/xsd/DamDesignResult.xsd (.../DamDesignResult.xsd) (revision 1919) +++ DamEngine/trunk/xsd/DamDesignResult.xsd (.../DamDesignResult.xsd) (revision 1921) @@ -52,6 +52,12 @@ + + + + + + Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedInput.cs =================================================================== diff -u -r1897 -r1921 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedInput.cs (.../WbiPipingSellmeijerRevisedInput.cs) (revision 1897) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedInput.cs (.../WbiPipingSellmeijerRevisedInput.cs) (revision 1921) @@ -30,6 +30,9 @@ /// public class WbiPipingSellmeijerRevisedInput : IKernelDataInput { + // For now, Ich is just used with a default value (see MWDAM-1299) + private const double cIch = 0.3; + /// /// Gets or sets the model factor piping. /// @@ -71,6 +74,14 @@ public double DTotal { get; set; } /// + /// Gets or sets the ich (critical Heave gradient). + /// + /// + /// The ich. + /// + public double Ich { get; set; } = cIch; + + /// /// The bottom level of the aquitard layer which is on a level above the exit point's /// z-coordinate. A value of indicates that no such aquitard /// layer exists. Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedKernelWrapperTests.cs =================================================================== diff -u -r1919 -r1921 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedKernelWrapperTests.cs (.../WbiPipingSellmeijerRevisedKernelWrapperTests.cs) (revision 1919) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedKernelWrapperTests.cs (.../WbiPipingSellmeijerRevisedKernelWrapperTests.cs) (revision 1921) @@ -126,7 +126,13 @@ 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(0.40, result.PipingDesignResults.Wti2017SafetyFactorHeave, diff); + Assert.AreEqual(0.40, result.PipingDesignResults.Wti2017HcriticalHeave, diff); + Assert.AreEqual(0.75, result.PipingDesignResults.Wti2017Gradient, diff); + Assert.AreEqual(90, result.PipingDesignResults.Wti2017SafetyFactorOverall, diff); + Assert.AreEqual(1302.6335025708217, result.PipingDesignResults.Wti2017HcriticalOverall, diff); + 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); @@ -273,7 +279,11 @@ CalculationResult = calculationResult, FoSu = 5.5, Hcu = 6.6, - DeltaPhiCu = 7.7 + DeltaPhiCu = 7.7, + FoSh = 3.4, + Hch = 11.1, + Gradient = 1.11, + EffectiveStress = 321.21 }; var designScenario = new DesignScenario @@ -289,7 +299,14 @@ Assert.AreEqual(output.FoSu, result.PipingDesignResults.Wti2017SafetyFactorUplift); Assert.AreEqual(output.Hcu, result.PipingDesignResults.Wti2017HcriticalUplift); Assert.AreEqual(output.DeltaPhiCu, result.PipingDesignResults.Wti2017DeltaPhiCu); + Assert.AreEqual(output.FoSh, result.PipingDesignResults.Wti2017SafetyFactorHeave); + Assert.AreEqual(output.Hch, result.PipingDesignResults.Wti2017HcriticalHeave); + Assert.AreEqual(output.Gradient, result.PipingDesignResults.Wti2017Gradient); + // Decise is FoSu thus these must be overall. + Assert.AreEqual(output.FoSu, result.PipingDesignResults.Wti2017SafetyFactorOverall); + Assert.AreEqual(output.Hcu, result.PipingDesignResults.Wti2017HcriticalOverall); + Assert.AreEqual(output.ExitPointX, result.PipingDesignResults.LocalExitPointX); Assert.AreEqual(output.UpliftFactor, result.PipingDesignResults.UpliftFactor); Assert.AreEqual(output.UpliftSituation, result.PipingDesignResults.UpliftSituation); Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillXmlOutputFromDamTests.cs =================================================================== diff -u -r1919 -r1921 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillXmlOutputFromDamTests.cs (.../FillXmlOutputFromDamTests.cs) (revision 1919) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillXmlOutputFromDamTests.cs (.../FillXmlOutputFromDamTests.cs) (revision 1921) @@ -95,10 +95,16 @@ BlighHcritical = 0.4, LocalExitPointX = 34.21, Wti2017DeltaPhiCu = 1.09 * i, + EffectiveStress = 13.23 * i, Wti2017HcriticalUplift = 1.19 * i, Wti2017HcriticalPiping = 1.29 * i, + Wti2017HcriticalHeave = 1.24 * i, Wti2017SafetyFactorPiping = 1.39 * i, - Wti2017SafetyFactorUplift = 1.49 * i + Wti2017SafetyFactorUplift = 1.49 * i, + Wti2017SafetyFactorHeave = 1.59 * i, + Wti2017Gradient = 1.69 * i, + Wti2017HcriticalOverall = 1.79 * i, + Wti2017SafetyFactorOverall = 3.21 * i }; var situation = new UpliftSituation { Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedKernelWrapper.cs =================================================================== diff -u -r1920 -r1921 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedKernelWrapper.cs (.../WbiPipingSellmeijerRevisedKernelWrapper.cs) (revision 1920) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WbiPipingSellmeijerRevised/WbiPipingSellmeijerRevisedKernelWrapper.cs (.../WbiPipingSellmeijerRevisedKernelWrapper.cs) (revision 1921) @@ -63,7 +63,8 @@ var damPipingOutput = new WbiPipingSellmeijerRevisedOutput() { FoSp = defaultMaxReturnValue, - FoSu = defaultMaxReturnValue + FoSu = defaultMaxReturnValue, + FoSh = defaultMaxReturnValue }; kernelDataOutput = damPipingOutput; if (damKernelInput.SubSoilScenario.SegmentFailureMechanismType == FailureMechanismSystemType.Piping) @@ -94,22 +95,35 @@ public int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages) { var wbiPipingSellmeijerRevisedOutput = (WbiPipingSellmeijerRevisedOutput)kernelDataOutput; - var calculatorWbiSellmeijerRevised = CreatePipingCalculatorWbiSellmeijerRevised(kernelDataInput); - List kernelMessages = calculatorWbiSellmeijerRevised.Validate(); + List kernelMessages = new List(); messages = new List(); + + // Validate the WBI Heave calculator + var calculatorWbiHeave = CreateWtiHeaveCalculator(kernelDataInput); + kernelMessages.Clear(); + kernelMessages = calculatorWbiHeave.Validate(); foreach (string stringMessage in kernelMessages) { messages.Add(new LogMessage() { Message = stringMessage, MessageType = LogMessageType.Error }); } - var calculatorWbiUplift = CreateWTIUpliftCalculator(kernelDataInput); // Validate the WBI Uplift calculator + var calculatorWbiUplift = CreateWtiUpliftCalculator(kernelDataInput); kernelMessages.Clear(); kernelMessages = calculatorWbiUplift.Validate(); foreach (string stringMessage in kernelMessages) { messages.Add(new LogMessage() { Message = stringMessage, MessageType = LogMessageType.Error }); } + + // Validate the WBI Piping calculator + var calculatorWbiSellmeijerRevised = CreatePipingCalculatorWbiSellmeijerRevised(kernelDataInput); + kernelMessages.Clear(); + kernelMessages = calculatorWbiSellmeijerRevised.Validate(); + foreach (string stringMessage in kernelMessages) + { + messages.Add(new LogMessage() { Message = stringMessage, MessageType = LogMessageType.Error }); + } if (messages.Count > 0) { wbiPipingSellmeijerRevisedOutput.CalculationResult = CalculationResult.InvalidInputData; @@ -129,12 +143,21 @@ var wbiPipingSellmeijerRevisedOutput = (WbiPipingSellmeijerRevisedOutput)kernelDataOutput; ThrowWhenKernelInputNull(wbiPipingSellmeijerRevisedInput); ThrowWhenKernelOutputNull(wbiPipingSellmeijerRevisedOutput); - PerformSingleCalculationWbiUplift(out messages, wbiPipingSellmeijerRevisedOutput, wbiPipingSellmeijerRevisedInput); - // Only when Uplift succeeded, continue with piping. - if (messages.Count == 0) - { - PerformSingleCalculationWbiSellmeijerRevised(out messages, wbiPipingSellmeijerRevisedOutput, wbiPipingSellmeijerRevisedInput); - } + // Initialize result as no run. + wbiPipingSellmeijerRevisedOutput.CalculationResult = CalculationResult.NoRun; + messages = new List(); + + List upliftMessages; + PerformSingleCalculationWbiUplift(out upliftMessages, wbiPipingSellmeijerRevisedOutput, wbiPipingSellmeijerRevisedInput); + messages.AddRange(upliftMessages); + + List heaveMessages; + PerformSingleCalculationWbiHeave(out heaveMessages, wbiPipingSellmeijerRevisedOutput, wbiPipingSellmeijerRevisedInput); + messages.AddRange(heaveMessages); + + List pipingMessages; + PerformSingleCalculationWbiSellmeijerRevised(out pipingMessages, wbiPipingSellmeijerRevisedOutput, wbiPipingSellmeijerRevisedInput); + messages.AddRange(pipingMessages); } /// @@ -172,6 +195,27 @@ pipingDesignResults.Wti2017SafetyFactorUplift = Math.Min(damPipingOutput.FoSu, defaultMaxReturnValue); pipingDesignResults.Wti2017HcriticalUplift = damPipingOutput.Hcu; pipingDesignResults.Wti2017DeltaPhiCu = damPipingOutput.DeltaPhiCu; + // Add results of the wbi-heave calculation + pipingDesignResults.Wti2017SafetyFactorHeave = Math.Min(damPipingOutput.FoSh, defaultMaxReturnValue); ; + pipingDesignResults.Wti2017HcriticalHeave = damPipingOutput.Hch; + pipingDesignResults.Wti2017Gradient = damPipingOutput.Gradient; + // Add the overall results for WBI piping kernel (FoS = highest value of FoSh, FoSu and FoSp; HcO is Hc belonging to FoS), see MWDAM-1370 + var maxFoS = damPipingOutput.FoSp; + var overallHc = damPipingOutput.Hc; + if (damPipingOutput.FoSu > damPipingOutput.FoSp) + { + maxFoS = damPipingOutput.FoSu; + overallHc = damPipingOutput.Hcu; + } + if (damPipingOutput.FoSh > maxFoS) + { + maxFoS = damPipingOutput.FoSh; + overallHc = damPipingOutput.Hch; + } + // Make sure defaultMaxReturnValue is limit. + maxFoS = Math.Min(maxFoS, defaultMaxReturnValue); + pipingDesignResults.Wti2017SafetyFactorOverall = maxFoS; + pipingDesignResults.Wti2017HcriticalOverall = overallHc; designResults.Add(designResult); } @@ -214,11 +258,22 @@ damPipingInput.DTotal = dCoverLayer; double referenceLevel = Math.Max(location.PolderLevel, point.Z); // point.Z is surfacelevel damPipingInput.HExit = referenceLevel; + // Initialize result as no run. + damPipingOutput.CalculationResult = CalculationResult.NoRun; // Calculate the piping safety factor using the level of the given point - PerformSingleCalculationWbiUplift(out messages, damPipingOutput, damPipingInput); - PerformSingleCalculationWbiSellmeijerRevised(out messages, damPipingOutput, damPipingInput); + List upliftMessages; + PerformSingleCalculationWbiUplift(out upliftMessages, damPipingOutput, damPipingInput); + messages.AddRange(upliftMessages); + List heaveMessages; + PerformSingleCalculationWbiHeave(out heaveMessages, damPipingOutput, damPipingInput); + messages.AddRange(heaveMessages); + + List pipingMessages; + PerformSingleCalculationWbiSellmeijerRevised(out pipingMessages, damPipingOutput, damPipingInput); + messages.AddRange(pipingMessages); + // If too low, then determine required height and length (from uplift) if (damPipingOutput.FoSp < requiredFoS) { @@ -421,7 +476,12 @@ return calculator; } - private static WTIUpliftCalculator CreateWTIUpliftCalculator(IKernelDataInput kernelDataInput) + /// + /// Creates the wti uplift calculator. + /// + /// The kernel data input. + /// + private static WTIUpliftCalculator CreateWtiUpliftCalculator(IKernelDataInput kernelDataInput) { var wbiPipingSellmeijerRevisedInput = kernelDataInput as WbiPipingSellmeijerRevisedInput; ThrowWhenKernelInputNull(wbiPipingSellmeijerRevisedInput); @@ -440,6 +500,26 @@ } /// + /// Creates the wti heave calculator. + /// + /// The kernel data input. + /// + private static HeaveCalculator CreateWtiHeaveCalculator(IKernelDataInput kernelDataInput) + { + var wbiPipingSellmeijerRevisedInput = kernelDataInput as WbiPipingSellmeijerRevisedInput; + ThrowWhenKernelInputNull(wbiPipingSellmeijerRevisedInput); + var calculator = new HeaveCalculator + { + Ich = wbiPipingSellmeijerRevisedInput.Ich, + DTotal = wbiPipingSellmeijerRevisedInput.DTotal, + PhiExit = wbiPipingSellmeijerRevisedInput.PhiExit, + RExit = wbiPipingSellmeijerRevisedInput.RExit, + HExit = wbiPipingSellmeijerRevisedInput.HExit + }; + return calculator; + } + + /// /// Converts the CharacteristicPointType to PipingCharacteristicPointType. /// /// Type of the characteristic point. @@ -540,19 +620,15 @@ private static void PerformSingleCalculationWbiSellmeijerRevised(out List messages, WbiPipingSellmeijerRevisedOutput wbiPipingOutput, WbiPipingSellmeijerRevisedInput wbiPipingInput) { - wbiPipingOutput.CalculationResult = CalculationResult.NoRun; wbiPipingOutput.FoSp = defaultMaxReturnValue; messages = new List(); try { - if (wbiPipingOutput.UpliftSituation.IsUplift) - { - var calculator = CreatePipingCalculatorWbiSellmeijerRevised(wbiPipingInput); - calculator.Calculate(); - wbiPipingOutput.FoSp = calculator.FoSp; - wbiPipingOutput.Hc = calculator.Hc; - wbiPipingOutput.CalculationResult = CalculationResult.Succeeded; - } + var calculator = CreatePipingCalculatorWbiSellmeijerRevised(wbiPipingInput); + calculator.Calculate(); + wbiPipingOutput.FoSp = calculator.FoSp; + wbiPipingOutput.Hc = calculator.Hc; + wbiPipingOutput.CalculationResult = CalculationResult.Succeeded; } catch (Exception e) { @@ -570,20 +646,16 @@ 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; - } + 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) { @@ -592,6 +664,27 @@ } } + private static void PerformSingleCalculationWbiHeave(out List messages, WbiPipingSellmeijerRevisedOutput wbiPipingOutput, + WbiPipingSellmeijerRevisedInput wbiPipingInput) + { + wbiPipingOutput.FoSh = defaultMaxReturnValue; + messages = new List(); + try + { + var calculator = CreateWtiHeaveCalculator(wbiPipingInput); + calculator.Calculate(); + wbiPipingOutput.FoSh = calculator.FoSh; + wbiPipingOutput.Hch = calculator.Hch; + wbiPipingOutput.Gradient = calculator.Gradient; + 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 -r1919 -r1921 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlOutputFromDam.cs (.../FillXmlOutputFromDam.cs) (revision 1919) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlOutputFromDam.cs (.../FillXmlOutputFromDam.cs) (revision 1921) @@ -182,9 +182,27 @@ desResult.PipingDesignResults.Wbi2017DeltaPhiCuSpecified = designResult.PipingDesignResults.Wti2017DeltaPhiCu.HasValue; if (designResult.PipingDesignResults.Wti2017DeltaPhiCu.HasValue) desResult.PipingDesignResults.Wbi2017DeltaPhiCu = designResult.PipingDesignResults.Wti2017DeltaPhiCu.Value; + desResult.PipingDesignResults.Wbi2017FactorHeaveSpecified = designResult.PipingDesignResults.Wti2017SafetyFactorHeave.HasValue; + if (designResult.PipingDesignResults.Wti2017SafetyFactorHeave.HasValue) desResult.PipingDesignResults.Wbi2017FactorHeave = designResult.PipingDesignResults.Wti2017SafetyFactorHeave.Value; + + desResult.PipingDesignResults.Wbi2017HcriticalHeaveSpecified = designResult.PipingDesignResults.Wti2017HcriticalHeave.HasValue; + if (designResult.PipingDesignResults.Wti2017HcriticalHeave.HasValue) desResult.PipingDesignResults.Wbi2017HcriticalHeave = designResult.PipingDesignResults.Wti2017HcriticalHeave.Value; + + desResult.PipingDesignResults.Wbi2017GradientSpecified = designResult.PipingDesignResults.Wti2017Gradient.HasValue; + if (designResult.PipingDesignResults.Wti2017Gradient.HasValue) desResult.PipingDesignResults.Wbi2017Gradient = designResult.PipingDesignResults.Wti2017Gradient.Value; + + desResult.PipingDesignResults.Wbi2017FactorOverallSpecified = designResult.PipingDesignResults.Wti2017SafetyFactorOverall.HasValue; + if (designResult.PipingDesignResults.Wti2017SafetyFactorOverall.HasValue) desResult.PipingDesignResults.Wbi2017FactorOverall = designResult.PipingDesignResults.Wti2017SafetyFactorOverall.Value; + + desResult.PipingDesignResults.Wbi2017HcriticalOverallSpecified = designResult.PipingDesignResults.Wti2017HcriticalOverall.HasValue; + if (designResult.PipingDesignResults.Wti2017HcriticalOverall.HasValue) desResult.PipingDesignResults.Wbi2017HcriticalOverall = designResult.PipingDesignResults.Wti2017HcriticalOverall.Value; + desResult.PipingDesignResults.ExitPointXSpecified = designResult.PipingDesignResults.LocalExitPointX.HasValue; if (designResult.PipingDesignResults.LocalExitPointX.HasValue) desResult.PipingDesignResults.ExitPointX = designResult.PipingDesignResults.LocalExitPointX.Value; + desResult.PipingDesignResults.Wbi2017EffectiveStressSpecified = designResult.PipingDesignResults.EffectiveStress.HasValue; + if (designResult.PipingDesignResults.EffectiveStress.HasValue) desResult.PipingDesignResults.Wbi2017EffectiveStress = designResult.PipingDesignResults.EffectiveStress.Value; + if (designResult.PipingDesignResults.UpliftSituation.HasValue) { var uplift = designResult.PipingDesignResults.UpliftSituation.Value; Index: DamEngine/trunk/src/Deltares.DamEngine.Io/DamOutput.cs =================================================================== diff -u -r1919 -r1921 --- DamEngine/trunk/src/Deltares.DamEngine.Io/DamOutput.cs (.../DamOutput.cs) (revision 1919) +++ DamEngine/trunk/src/Deltares.DamEngine.Io/DamOutput.cs (.../DamOutput.cs) (revision 1921) @@ -1764,6 +1764,30 @@ private bool wbi2017DeltaPhiCuFieldSpecified; + private double wbi2017FactorHeaveField; + + private bool wbi2017FactorHeaveFieldSpecified; + + private double wbi2017HcriticalHeaveField; + + private bool wbi2017HcriticalHeaveFieldSpecified; + + private double wbi2017GradientField; + + private bool wbi2017GradientFieldSpecified; + + private double wbi2017FactorOverallField; + + private bool wbi2017FactorOverallFieldSpecified; + + private double wbi2017HcriticalOverallField; + + private bool wbi2017HcriticalOverallFieldSpecified; + + private double wbi2017EffectiveStressField; + + private bool wbi2017EffectiveStressFieldSpecified; + /// public UpliftSituation UpliftSituation { get { @@ -2102,6 +2126,138 @@ this.wbi2017DeltaPhiCuFieldSpecified = value; } } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double Wbi2017FactorHeave { + get { + return this.wbi2017FactorHeaveField; + } + set { + this.wbi2017FactorHeaveField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Wbi2017FactorHeaveSpecified { + get { + return this.wbi2017FactorHeaveFieldSpecified; + } + set { + this.wbi2017FactorHeaveFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double Wbi2017HcriticalHeave { + get { + return this.wbi2017HcriticalHeaveField; + } + set { + this.wbi2017HcriticalHeaveField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Wbi2017HcriticalHeaveSpecified { + get { + return this.wbi2017HcriticalHeaveFieldSpecified; + } + set { + this.wbi2017HcriticalHeaveFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double Wbi2017Gradient { + get { + return this.wbi2017GradientField; + } + set { + this.wbi2017GradientField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Wbi2017GradientSpecified { + get { + return this.wbi2017GradientFieldSpecified; + } + set { + this.wbi2017GradientFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double Wbi2017FactorOverall { + get { + return this.wbi2017FactorOverallField; + } + set { + this.wbi2017FactorOverallField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Wbi2017FactorOverallSpecified { + get { + return this.wbi2017FactorOverallFieldSpecified; + } + set { + this.wbi2017FactorOverallFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double Wbi2017HcriticalOverall { + get { + return this.wbi2017HcriticalOverallField; + } + set { + this.wbi2017HcriticalOverallField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Wbi2017HcriticalOverallSpecified { + get { + return this.wbi2017HcriticalOverallFieldSpecified; + } + set { + this.wbi2017HcriticalOverallFieldSpecified = value; + } + } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double Wbi2017EffectiveStress { + get { + return this.wbi2017EffectiveStressField; + } + set { + this.wbi2017EffectiveStressField = value; + } + } + + /// + [System.Xml.Serialization.XmlIgnoreAttribute()] + public bool Wbi2017EffectiveStressSpecified { + get { + return this.wbi2017EffectiveStressFieldSpecified; + } + set { + this.wbi2017EffectiveStressFieldSpecified = value; + } + } } /// Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlOutput.cs =================================================================== diff -u -r1919 -r1921 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlOutput.cs (.../FillDamFromXmlOutput.cs) (revision 1919) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlOutput.cs (.../FillDamFromXmlOutput.cs) (revision 1921) @@ -214,8 +214,20 @@ if (designResult.PipingDesignResults.Wbi2017DeltaPhiCuSpecified) desResult.PipingDesignResults.Wti2017DeltaPhiCu = designResult.PipingDesignResults.Wbi2017DeltaPhiCu; + if (designResult.PipingDesignResults.Wbi2017FactorHeaveSpecified) desResult.PipingDesignResults.Wti2017SafetyFactorHeave = designResult.PipingDesignResults.Wbi2017FactorHeave; + + if (designResult.PipingDesignResults.Wbi2017HcriticalHeaveSpecified) desResult.PipingDesignResults.Wti2017HcriticalHeave = designResult.PipingDesignResults.Wbi2017HcriticalHeave; + + if (designResult.PipingDesignResults.Wbi2017GradientSpecified) desResult.PipingDesignResults.Wti2017Gradient = designResult.PipingDesignResults.Wbi2017Gradient; + + if (designResult.PipingDesignResults.Wbi2017FactorOverallSpecified) desResult.PipingDesignResults.Wti2017SafetyFactorOverall = designResult.PipingDesignResults.Wbi2017FactorOverall; + + if (designResult.PipingDesignResults.Wbi2017HcriticalOverallSpecified) desResult.PipingDesignResults.Wti2017HcriticalOverall = designResult.PipingDesignResults.Wbi2017HcriticalOverall; + if (designResult.PipingDesignResults.ExitPointXSpecified) desResult.PipingDesignResults.LocalExitPointX = designResult.PipingDesignResults.ExitPointX; + if (designResult.PipingDesignResults.Wbi2017EffectiveStressSpecified) desResult.PipingDesignResults.EffectiveStress = designResult.PipingDesignResults.Wbi2017EffectiveStress; + if (designResult.PipingDesignResults.UpliftSituation != null) { var uplift = designResult.PipingDesignResults.UpliftSituation;