Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingSemiProbabilisticCalculationService.cs
===================================================================
diff -u -rfea3ed82dfb6dfcad535eef16efcbaa9c01564ed -r6f87ed1cff87554d4db586e61b73618dfe674242
--- Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingSemiProbabilisticCalculationService.cs (.../PipingSemiProbabilisticCalculationService.cs) (revision fea3ed82dfb6dfcad535eef16efcbaa9c01564ed)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingSemiProbabilisticCalculationService.cs (.../PipingSemiProbabilisticCalculationService.cs) (revision 6f87ed1cff87554d4db586e61b73618dfe674242)
@@ -72,10 +72,8 @@
/// The constant b.
/// The length of the assessment section.
/// The critical safety factor which is compared to the safety factor of uplift to determine a probability.
- /// The norm dependent factor used in determining the reliability of heave.
- /// The norm dependent factor used in determining the reliability of Sellmeijer.
/// The contribution of piping to the total failure.
- private PipingSemiProbabilisticCalculationService(double upliftFactorOfSafety, double heaveFactorOfSafety, double sellmeijerFactorOfSafety, int returnPeriod, double constantA, double constantB, double assessmentSectionLength, double upliftCriticalSafetyFactor, double heaveNormDependentFactor, double sellmeijerNormDependentFactor, double contribution)
+ private PipingSemiProbabilisticCalculationService(double upliftFactorOfSafety, double heaveFactorOfSafety, double sellmeijerFactorOfSafety, int returnPeriod, double constantA, double constantB, double assessmentSectionLength, double upliftCriticalSafetyFactor, double contribution)
{
this.heaveFactorOfSafety = heaveFactorOfSafety;
this.upliftFactorOfSafety = upliftFactorOfSafety;
@@ -85,8 +83,6 @@
this.constantB = constantB;
this.assessmentSectionLength = assessmentSectionLength;
this.upliftCriticalSafetyFactor = upliftCriticalSafetyFactor;
- this.heaveNormDependentFactor = heaveNormDependentFactor;
- this.sellmeijerNormDependentFactor = sellmeijerNormDependentFactor;
this.contribution = contribution;
}
@@ -116,8 +112,6 @@
pipingProbabilityAssessmentInput.B,
pipingProbabilityAssessmentInput.SectionLength,
pipingProbabilityAssessmentInput.UpliftCriticalSafetyFactor,
- pipingProbabilityAssessmentInput.GetHeaveNormDependentFactor(norm),
- pipingProbabilityAssessmentInput.GetSellmeijerNormDependentFactor(norm),
contribution/100);
calculator.Calculate();
@@ -167,10 +161,10 @@
{
upliftProbability = UpliftProbability();
- heaveReliability = HeaveReliability(heaveFactorOfSafety);
+ heaveReliability = SubMechanismReliability(heaveFactorOfSafety, heaveFactors);
heaveProbability = ReliabilityToProbability(heaveReliability);
- sellmeijerReliability = SellmeijerReliability(sellmeijerFactorOfSafety);
+ sellmeijerReliability = SubMechanismReliability(sellmeijerFactorOfSafety, sellmeijerFactors);
sellmeijerProbability = ReliabilityToProbability(sellmeijerReliability);
pipingProbability = PipingProbability(upliftProbability, heaveProbability, sellmeijerProbability);
@@ -203,14 +197,12 @@
return upliftFactorOfSafety <= upliftCriticalSafetyFactor ? 1 : 0;
}
- private double HeaveReliability(double factorOfSafety)
+ private double SubMechanismReliability(double factorOfSafety, SubCalculationFactors factors)
{
- return 2.08*Math.Log(factorOfSafety/heaveNormDependentFactor);
- }
+ var norm = (1.0/returnPeriod);
+ var bNorm = ProbabilityToReliability(norm);
- private double SellmeijerReliability(double factorOfSafety)
- {
- return 2.7*Math.Log(factorOfSafety/sellmeijerNormDependentFactor);
+ return (1/factors.A)*(Math.Log(factorOfSafety/factors.B) + (factors.C*bNorm));
}
private static void ValidateOutputOnCalculation(PipingCalculation calculation)
@@ -230,5 +222,30 @@
{
return Normal.InvCDF(0, 1, 1 - probability);
}
+
+ #region sub-calculation constants
+
+ private struct SubCalculationFactors
+ {
+ public double A;
+ public double B;
+ public double C;
+ }
+
+ private readonly SubCalculationFactors heaveFactors = new SubCalculationFactors
+ {
+ A = 0.48,
+ B = 0.37,
+ C = 0.30
+ };
+
+ private readonly SubCalculationFactors sellmeijerFactors = new SubCalculationFactors
+ {
+ A = 0.37,
+ B = 1.04,
+ C = 0.43
+ };
+
+ #endregion
}
}
\ No newline at end of file