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