Index: Ringtoets/Piping/src/Ringtoets.Piping.Calculation/Ringtoets.Piping.Calculation.csproj
===================================================================
diff -u -rdcffe8961a89f7147663f1c9b3ee4606fe611c67 -r1d8e1d2a0bb1d08433a9d6046942fa778b019489
--- Ringtoets/Piping/src/Ringtoets.Piping.Calculation/Ringtoets.Piping.Calculation.csproj (.../Ringtoets.Piping.Calculation.csproj) (revision dcffe8961a89f7147663f1c9b3ee4606fe611c67)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Calculation/Ringtoets.Piping.Calculation.csproj (.../Ringtoets.Piping.Calculation.csproj) (revision 1d8e1d2a0bb1d08433a9d6046942fa778b019489)
@@ -93,6 +93,10 @@
Core.Common.Version
False
+
+ {d4200f43-3f72-4f42-af0a-8ced416a38ec}
+ Ringtoets.Common.Data
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Ringtoets.Piping.Data
Index: Ringtoets/Piping/src/Ringtoets.Piping.Calculation/SemiProbabilistic/PipingSemiProbabilisticResultTransformer.cs
===================================================================
diff -u -r019c82bf6273ff150976c8c2ea9b895258951455 -r1d8e1d2a0bb1d08433a9d6046942fa778b019489
--- Ringtoets/Piping/src/Ringtoets.Piping.Calculation/SemiProbabilistic/PipingSemiProbabilisticResultTransformer.cs (.../PipingSemiProbabilisticResultTransformer.cs) (revision 019c82bf6273ff150976c8c2ea9b895258951455)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Calculation/SemiProbabilistic/PipingSemiProbabilisticResultTransformer.cs (.../PipingSemiProbabilisticResultTransformer.cs) (revision 1d8e1d2a0bb1d08433a9d6046942fa778b019489)
@@ -9,25 +9,58 @@
///
public class PipingSemiProbabilisticResultTransformer
{
- private readonly PipingOutput result;
+ private readonly double heaveFactorOfSafety;
+ private readonly double upliftFactorOfSafety;
+ private readonly double sellmeijerFactorOfSafety;
+
private readonly int returnPeriod;
private readonly double constantA;
private readonly double constantB;
private readonly double assessmentSectionLength;
private readonly double contribution;
///
+ /// Calculates the semi-probabilistic results given a with .
+ ///
+ ///
+ ///
+ public static void Transform(PipingCalculation calculation)
+ {
+ GeneralPipingInput semiProbabilisticParameters = calculation.SemiProbabilisticParameters;
+ var result = calculation.Output;
+
+ var calculator = new PipingSemiProbabilisticResultTransformer(
+ result.SellmeijerFactorOfSafety,
+ result.UpliftFactorOfSafety,
+ result.HeaveFactorOfSafety,
+ semiProbabilisticParameters.Norm,
+ semiProbabilisticParameters.A,
+ semiProbabilisticParameters.B,
+ semiProbabilisticParameters.SectionLength,
+ semiProbabilisticParameters.Contribution/100);
+
+ calculation.SemiProbabilisticOutput = new PipingSemiProbabilisticOutput
+ {
+ PipingFactorOfSafety = calculator.FactorOfSafety()
+ };
+ }
+
+ ///
/// Creates a new instance of .
///
- /// The object containing results for piping's sub mechanisms.
+ ///
+ ///
+ ///
/// The return period.
/// The constant a.
/// The constant b.
/// The length of the assessment section.
/// The contribution of piping to the total failure.
- public PipingSemiProbabilisticResultTransformer(PipingOutput result, int returnPeriod, double constantA, double constantB, double assessmentSectionLength, double contribution)
+ public PipingSemiProbabilisticResultTransformer(double sellmeijerFactorOfSafety, double upliftFactorOfSafety, double heaveFactorOfSafety, int returnPeriod, double constantA, double constantB, double assessmentSectionLength, double contribution)
{
- this.result = result;
+ this.heaveFactorOfSafety = heaveFactorOfSafety;
+ this.upliftFactorOfSafety = upliftFactorOfSafety;
+ this.sellmeijerFactorOfSafety = sellmeijerFactorOfSafety;
this.returnPeriod = returnPeriod;
this.constantA = constantA;
this.constantB = constantB;
@@ -41,8 +74,7 @@
/// A value represening failure probability.
public double FailureProbabilityUplift()
{
- var factorOfSafety = result.UpliftFactorOfSafety;
- return FailureProbability(factorOfSafety, upliftFactors);
+ return FailureProbability(upliftFactorOfSafety, upliftFactors);
}
///
@@ -51,8 +83,7 @@
/// A value represening failure probability.
public double FailureProbabilityHeave()
{
- var factorOfSafety = result.HeaveFactorOfSafety;
- return FailureProbability(factorOfSafety, heaveFactors);
+ return FailureProbability(heaveFactorOfSafety, heaveFactors);
}
///
@@ -61,8 +92,7 @@
/// A value represening failure probability.
public double FailureProbabilitySellmeijer()
{
- var factorOfSafety = result.SellmeijerFactorOfSafety;
- return FailureProbability(factorOfSafety, sellmeijerFactors);
+ return FailureProbability(sellmeijerFactorOfSafety, sellmeijerFactors);
}
///
Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs
===================================================================
diff -u -r1c01ea681887e96b5b80fb7d23680a4eeac9bd50 -r1d8e1d2a0bb1d08433a9d6046942fa778b019489
--- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs (.../PipingCalculation.cs) (revision 1c01ea681887e96b5b80fb7d23680a4eeac9bd50)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs (.../PipingCalculation.cs) (revision 1d8e1d2a0bb1d08433a9d6046942fa778b019489)
@@ -50,6 +50,7 @@
Comments = new InputPlaceholder(Resources.Comments_DisplayName);
InputParameters = new PipingInput(generalInputParameters);
+ SemiProbabilisticParameters = generalInputParameters;
}
///
@@ -58,6 +59,11 @@
public PlaceholderWithReadonlyName Comments { get; private set; }
///
+ /// Gets the parameters required to perform a semi-probabilistic assessment.
+ ///
+ public GeneralPipingInput SemiProbabilisticParameters { get; private set; }
+
+ ///
/// Gets the input parameters to perform a piping calculation with.
///
public PipingInput InputParameters { get; private set; }
@@ -68,6 +74,11 @@
public PipingOutput Output { get; set; }
///
+ /// Gets or sets the semi-probabilistic calculation result.
+ ///
+ public PipingSemiProbabilisticOutput SemiProbabilisticOutput { get; set; }
+
+ ///
/// Gets or sets the name of this calculation.
///
public string Name { get; set; }
Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationActivity.cs
===================================================================
diff -u -r4512af7782ee31b36941bb280b54d9da2953dd71 -r1d8e1d2a0bb1d08433a9d6046942fa778b019489
--- Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationActivity.cs (.../PipingCalculationActivity.cs) (revision 4512af7782ee31b36941bb280b54d9da2953dd71)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationActivity.cs (.../PipingCalculationActivity.cs) (revision 1d8e1d2a0bb1d08433a9d6046942fa778b019489)
@@ -20,6 +20,7 @@
// All rights reserved.
using Core.Common.Base.Service;
+using Ringtoets.Piping.Calculation.SemiProbabilistic;
using Ringtoets.Piping.Data;
namespace Ringtoets.Piping.Service
@@ -60,6 +61,7 @@
calculation.Output = null;
PipingCalculationService.Calculate(calculation);
+ PipingSemiProbabilisticResultTransformer.Transform(calculation);
}
protected override void OnCancel()
Index: Ringtoets/Piping/test/Ringtoets.Piping.Calculation.Test/Ringtoets.Piping.Calculation.Test.csproj
===================================================================
diff -u -rdcffe8961a89f7147663f1c9b3ee4606fe611c67 -r1d8e1d2a0bb1d08433a9d6046942fa778b019489
--- Ringtoets/Piping/test/Ringtoets.Piping.Calculation.Test/Ringtoets.Piping.Calculation.Test.csproj (.../Ringtoets.Piping.Calculation.Test.csproj) (revision dcffe8961a89f7147663f1c9b3ee4606fe611c67)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Calculation.Test/Ringtoets.Piping.Calculation.Test.csproj (.../Ringtoets.Piping.Calculation.Test.csproj) (revision 1d8e1d2a0bb1d08433a9d6046942fa778b019489)
@@ -79,6 +79,10 @@
{D749EE4C-CE50-4C17-BF01-9A953028C126}
Core.Common.TestUtil
+
+ {d4200f43-3f72-4f42-af0a-8ced416a38ec}
+ Ringtoets.Common.Data
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Ringtoets.Piping.Data
Index: Ringtoets/Piping/test/Ringtoets.Piping.Calculation.Test/SemiProbabilistic/PipingSemiProbabilisticResultTransformerTest.cs
===================================================================
diff -u -r019c82bf6273ff150976c8c2ea9b895258951455 -r1d8e1d2a0bb1d08433a9d6046942fa778b019489
--- Ringtoets/Piping/test/Ringtoets.Piping.Calculation.Test/SemiProbabilistic/PipingSemiProbabilisticResultTransformerTest.cs (.../PipingSemiProbabilisticResultTransformerTest.cs) (revision 019c82bf6273ff150976c8c2ea9b895258951455)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Calculation.Test/SemiProbabilistic/PipingSemiProbabilisticResultTransformerTest.cs (.../PipingSemiProbabilisticResultTransformerTest.cs) (revision 1d8e1d2a0bb1d08433a9d6046942fa778b019489)
@@ -1,4 +1,5 @@
-using NUnit.Framework;
+using System;
+using NUnit.Framework;
using Ringtoets.Piping.Calculation.SemiProbabilistic;
using Ringtoets.Piping.Data;
@@ -16,7 +17,7 @@
{
// Setup
var calculatorResult = new PipingOutput(double.NaN, factorOfSafety, double.NaN, double.NaN, double.NaN, double.NaN);
- var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult, norm, double.NaN, double.NaN, double.NaN, double.NaN);
+ var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult.SellmeijerFactorOfSafety, calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, norm, double.NaN, double.NaN, double.NaN, double.NaN);
// Call
double result = transformer.FailureProbabilityUplift();
@@ -34,7 +35,7 @@
{
// Setup
var calculatorResult = new PipingOutput(double.NaN, double.NaN, double.NaN, factorOfSafety, double.NaN, double.NaN);
- var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult, norm, double.NaN, double.NaN, double.NaN, double.NaN);
+ var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult.SellmeijerFactorOfSafety, calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, norm, double.NaN, double.NaN, double.NaN, double.NaN);
// Call
double result = transformer.FailureProbabilityHeave();
@@ -52,7 +53,7 @@
{
// Setup
var calculatorResult = new PipingOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, factorOfSafety);
- var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult, norm, double.NaN, double.NaN, double.NaN, double.NaN);
+ var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult.SellmeijerFactorOfSafety, calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, norm, double.NaN, double.NaN, double.NaN, double.NaN);
// Call
double result = transformer.FailureProbabilitySellmeijer();
@@ -72,7 +73,7 @@
{
// Setup
var calculatorResult = new PipingOutput(double.NaN, fosUplift, double.NaN, fosHeave, double.NaN, fosSellmeijer);
- var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult, norm, double.NaN, double.NaN, double.NaN, double.NaN);
+ var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult.SellmeijerFactorOfSafety, calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, norm, double.NaN, double.NaN, double.NaN, double.NaN);
// Call
double result = transformer.BetaCrossPiping();
@@ -91,7 +92,7 @@
{
// Setup
var calculatorResult = new PipingOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN);
- var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult, norm, a, b, assessmentSectionLength, contribution);
+ var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult.SellmeijerFactorOfSafety, calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, norm, a, b, assessmentSectionLength, contribution);
// Call
double result = transformer.BetaCrossAllowed();
@@ -115,7 +116,7 @@
double expectedResult = 1.134713444;
var calculatorResult = new PipingOutput(double.NaN, fosUplift, double.NaN, fosHeave, double.NaN, fosSellmeijer);
- var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult, norm, a, b, assessmentSectionLength, contribution);
+ var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult.SellmeijerFactorOfSafety, calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, norm, a, b, assessmentSectionLength, contribution);
// Call
double result = transformer.FactorOfSafety();
@@ -138,7 +139,7 @@
{
// Setup
var calculatorResult = new PipingOutput(double.NaN, fosUplift, double.NaN, fosHeave, double.NaN, fosSellmeijer);
- var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult, norm, a, b, assessmentSectionLength, contribution);
+ var transformer = new PipingSemiProbabilisticResultTransformer(calculatorResult.SellmeijerFactorOfSafety, calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, norm, a, b, assessmentSectionLength, contribution);
var betaAllowed = transformer.BetaCrossAllowed();
var betaPiping = transformer.BetaCrossPiping();
@@ -149,5 +150,28 @@
// Assert
Assert.AreEqual(betaAllowed/betaPiping, result, 1e-8);
}
+
+ [Test]
+ public void Transform_CompleteInput_ReturnsPipingSemiProbabilisticOutputWithValues()
+ {
+ // Setup
+ var generalInput = new GeneralPipingInput
+ {
+ SectionLength = 6000,
+ Norm = 30000,
+ Contribution = 24
+ };
+ var pipingOutput = new PipingOutput(double.NaN, 1.2, double.NaN, 0.6, double.NaN, 0.9);
+ var pipingCalculation = new PipingCalculation(generalInput)
+ {
+ Output = pipingOutput
+ };
+
+ // Call
+ PipingSemiProbabilisticResultTransformer.Transform(pipingCalculation);
+
+ // Assert
+ Assert.AreEqual(1.134713444, pipingCalculation.SemiProbabilisticOutput.PipingFactorOfSafety, 1e-8);
+ }
}
}
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationTest.cs
===================================================================
diff -u -r1c01ea681887e96b5b80fb7d23680a4eeac9bd50 -r1d8e1d2a0bb1d08433a9d6046942fa778b019489
--- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationTest.cs (.../PipingCalculationTest.cs) (revision 1c01ea681887e96b5b80fb7d23680a4eeac9bd50)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingCalculationTest.cs (.../PipingCalculationTest.cs) (revision 1d8e1d2a0bb1d08433a9d6046942fa778b019489)
@@ -3,6 +3,7 @@
using Core.Common.Base;
using NUnit.Framework;
using Rhino.Mocks;
+using Ringtoets.Piping.Calculation.SemiProbabilistic;
using Ringtoets.Piping.Calculation.TestUtil;
namespace Ringtoets.Piping.Data.Test
@@ -36,6 +37,7 @@
Assert.IsFalse(calculation.HasOutput);
Assert.IsNull(calculation.Output);
+ Assert.IsNull(calculation.SemiProbabilisticOutput);
}
[Test]
Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Ringtoets.Piping.Data.Test.csproj
===================================================================
diff -u -r019c82bf6273ff150976c8c2ea9b895258951455 -r1d8e1d2a0bb1d08433a9d6046942fa778b019489
--- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Ringtoets.Piping.Data.Test.csproj (.../Ringtoets.Piping.Data.Test.csproj) (revision 019c82bf6273ff150976c8c2ea9b895258951455)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/Ringtoets.Piping.Data.Test.csproj (.../Ringtoets.Piping.Data.Test.csproj) (revision 1d8e1d2a0bb1d08433a9d6046942fa778b019489)
@@ -100,6 +100,10 @@
{70f8cc9c-5bc8-4fb2-b201-eae7fa8088c2}
Ringtoets.HydraRing.Data
+
+ {D64E4F0E-E341-496F-82B2-941AD202B4E3}
+ Ringtoets.Piping.Calculation
+
{ce994cc9-6f6a-48ac-b4be-02c30a21f4db}
Ringtoets.Piping.Data