Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingSemiProbabilisticOutputProperties.cs
===================================================================
diff -u -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b -rcfefec5a1180c70370d17ae82a7629e0d2ac24b7
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingSemiProbabilisticOutputProperties.cs (.../PipingSemiProbabilisticOutputProperties.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingSemiProbabilisticOutputProperties.cs (.../PipingSemiProbabilisticOutputProperties.cs) (revision cfefec5a1180c70370d17ae82a7629e0d2ac24b7)
@@ -1,3 +1,4 @@
+using Core.Common.Base.Data;
using Core.Common.Gui.PropertyBag;
using Core.Common.Utils.Attributes;
using Ringtoets.Piping.Data;
@@ -10,7 +11,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Uplift")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_UpliftFactorOfSafety_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_UpliftFactorOfSafety_Description")]
- public double UpliftFactorOfSafety
+ public RoundedDouble UpliftFactorOfSafety
{
get
{
@@ -21,7 +22,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Uplift")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_UpliftReliability_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_UpliftReliability_Description")]
- public double UpliftReliability
+ public RoundedDouble UpliftReliability
{
get
{
@@ -32,7 +33,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Uplift")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_UpliftProbability_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_UpliftProbability_Description")]
- public double UpliftProbability
+ public RoundedDouble UpliftProbability
{
get
{
@@ -43,7 +44,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Heave")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_HeaveFactorOfSafety_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_HeaveFactorOfSafety_Description")]
- public double HeaveFactorOfSafety
+ public RoundedDouble HeaveFactorOfSafety
{
get
{
@@ -54,7 +55,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Heave")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_HeaveReliability_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_HeaveReliability_Description")]
- public double HeaveReliability
+ public RoundedDouble HeaveReliability
{
get
{
@@ -65,7 +66,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Heave")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_HeaveProbability_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_HeaveProbability_Description")]
- public double HeaveProbability
+ public RoundedDouble HeaveProbability
{
get
{
@@ -76,7 +77,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Sellmeijer")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_SellmeijerFactorOfSafety_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_SellmeijerFactorOfSafety_Description")]
- public double SellmeijerFactorOfSafety
+ public RoundedDouble SellmeijerFactorOfSafety
{
get
{
@@ -87,7 +88,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Sellmeijer")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_SellmeijerReliability_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_SellmeijerReliability_Description")]
- public double SellmeijerReliability
+ public RoundedDouble SellmeijerReliability
{
get
{
@@ -98,7 +99,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Sellmeijer")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_SellmeijerProbability_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_SellmeijerProbability_Description")]
- public double SellmeijerProbability
+ public RoundedDouble SellmeijerProbability
{
get
{
@@ -109,7 +110,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Piping")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_RequiredProbability_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_RequiredProbability_Description")]
- public double RequiredProbability
+ public RoundedDouble RequiredProbability
{
get
{
@@ -120,7 +121,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Piping")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_RequiredReliability_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_RequiredReliability_Description")]
- public double RequiredReliability
+ public RoundedDouble RequiredReliability
{
get
{
@@ -131,7 +132,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Piping")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_PipingProbability_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_PipingProbability_Description")]
- public double PipingProbability
+ public RoundedDouble PipingProbability
{
get
{
@@ -142,7 +143,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Piping")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_PipingReliability_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_PipingReliability_Description")]
- public double PipingReliability
+ public RoundedDouble PipingReliability
{
get
{
@@ -153,7 +154,7 @@
[ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Piping")]
[ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_PipingFactorOfSafety_DisplayName")]
[ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_PipingFactorOfSafety_Description")]
- public double PipingFactorOfSafety
+ public RoundedDouble PipingFactorOfSafety
{
get
{
Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingSemiProbabilisticCalculationService.cs
===================================================================
diff -u -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b -rcfefec5a1180c70370d17ae82a7629e0d2ac24b7
--- Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingSemiProbabilisticCalculationService.cs (.../PipingSemiProbabilisticCalculationService.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingSemiProbabilisticCalculationService.cs (.../PipingSemiProbabilisticCalculationService.cs) (revision cfefec5a1180c70370d17ae82a7629e0d2ac24b7)
@@ -48,7 +48,7 @@
/// The constant b.
/// The length of the assessment section.
/// The contribution of piping to the total failure.
- public PipingSemiProbabilisticCalculationService(double upliftFactorOfSafety, double heaveFactorOfSafety, double sellmeijerFactorOfSafety, int returnPeriod, double constantA, double constantB, double assessmentSectionLength, double contribution)
+ private PipingSemiProbabilisticCalculationService(double upliftFactorOfSafety, double heaveFactorOfSafety, double sellmeijerFactorOfSafety, int returnPeriod, double constantA, double constantB, double assessmentSectionLength, double contribution)
{
this.heaveFactorOfSafety = heaveFactorOfSafety;
this.upliftFactorOfSafety = upliftFactorOfSafety;
@@ -65,13 +65,13 @@
///
/// The calculation which is used as input for the semi-probabilistic assessment. If the semi-
/// probabilistic calculation is successful, is set.
- /// Thrown when calculation has no output from a piping calculation.
+ /// Thrown when calculation has no output from a piping calculation.
public static void Calculate(PipingCalculation calculation)
{
ValidateOutputOnCalculation(calculation);
SemiProbabilisticPipingInput semiProbabilisticParameters = calculation.SemiProbabilisticParameters;
- var pipingOutput = calculation.Output;
+ PipingOutput pipingOutput = calculation.Output;
var calculator = new PipingSemiProbabilisticCalculationService(
pipingOutput.UpliftFactorOfSafety,
@@ -81,7 +81,8 @@
semiProbabilisticParameters.A,
semiProbabilisticParameters.B,
semiProbabilisticParameters.SectionLength,
- semiProbabilisticParameters.Contribution / 100);
+ semiProbabilisticParameters.Contribution/100);
+
calculator.Calculate();
calculation.SemiProbabilisticOutput = new PipingSemiProbabilisticOutput(
@@ -102,90 +103,66 @@
);
}
+ ///
+ /// Performs the full semi-probabilistic calculation while setting intermediate results.
+ ///
private void Calculate()
{
- FailureProbabilityUplift();
- FailureProbabilityHeave();
- FailureProbabilitySellmeijer();
- BetaCrossPiping();
- BetaCrossRequired();
- FactorOfSafety();
+ CalculatePipingReliability();
+
+ CalculateRequiredReliability();
+
+ pipingFactorOfSafety = requiredReliability/pipingReliability;
}
///
- /// Returns the failure probability of the uplift sub mechanism.
+ /// Calculates the required reliability based on the norm and length of the assessment section and the contribution of piping.
///
- /// A value represening failure probability.
- public double FailureProbabilityUplift()
+ private void CalculateRequiredReliability()
{
- upliftReliability = SubMechanismReliability(upliftFactorOfSafety, upliftFactors);
- upliftProbability = ReliabilityToProbability(upliftReliability);
- return upliftProbability;
+ requiredProbability = RequiredProbability();
+ requiredReliability = ProbabilityToReliability(requiredProbability);
}
///
- /// Returns the failure probability of the heave sub mechanism.
+ /// Calculates the reliability of piping based on the factors of safety from the sub-mechanisms.
///
- /// A value represening failure probability.
- public double FailureProbabilityHeave()
+ private void CalculatePipingReliability()
{
+ upliftReliability = SubMechanismReliability(upliftFactorOfSafety, upliftFactors);
+ upliftProbability = ReliabilityToProbability(upliftReliability);
+
heaveReliability = SubMechanismReliability(heaveFactorOfSafety, heaveFactors);
heaveProbability = ReliabilityToProbability(heaveReliability);
- return heaveProbability;
- }
- ///
- /// Returns the failure probability of the Sellmeijer sub mechanism.
- ///
- /// A value represening failure probability.
- public double FailureProbabilitySellmeijer()
- {
sellmeijerReliability = SubMechanismReliability(sellmeijerFactorOfSafety, sellmeijerFactors);
sellmeijerProbability = ReliabilityToProbability(sellmeijerReliability);
- return sellmeijerProbability;
- }
- ///
- /// Returns the reliability index of the piping failure mechanism.
- ///
- /// A value representing the reliability.
- public double BetaCrossPiping()
- {
- pipingProbability = Math.Min(Math.Min(heaveProbability, upliftProbability), sellmeijerProbability);
+ pipingProbability = PipingProbability(upliftProbability, heaveProbability, sellmeijerProbability);
pipingReliability = ProbabilityToReliability(pipingProbability);
- return pipingReliability;
}
///
- /// Returns the required reliability of the piping failure mechanism for the complete assessment section.
+ /// Calculates the probability of occurrence of the piping failure mechanism.
///
- /// A value representing the required reliability.
- public double BetaCrossRequired()
+ /// The calculated probability of the heave sub-mechanism.
+ /// The calculated probability of the uplift sub-mechanism.
+ /// The calculated probability of the Sellmeijer sub-mechanism.
+ /// A value representing the probability of occurrence of piping.
+ private static double PipingProbability(double probabilityOfHeave, double probabilityOfUplift, double probabilityOfSellmeijer)
{
- requiredProbability = (contribution/returnPeriod)/(1 + (constantA*assessmentSectionLength)/constantB);
- requiredReliability = ProbabilityToReliability(requiredProbability);
- return requiredReliability;
+ return Math.Min(Math.Min(probabilityOfHeave, probabilityOfUplift), probabilityOfSellmeijer);
}
///
- /// Returns the safety factor of piping based on the factor of safety of
- /// the sub mechanisms.
+ /// Calculates the required probability of the piping failure mechanism for the complete assessment section.
///
- /// A factor of safety value.
- public double FactorOfSafety()
+ /// A value representing the required probability.
+ private double RequiredProbability()
{
- pipingFactorOfSafety = requiredReliability/pipingReliability;
- return pipingFactorOfSafety;
+ return (contribution/returnPeriod)/(1 + (constantA*assessmentSectionLength)/constantB);
}
- private static void ValidateOutputOnCalculation(PipingCalculation calculation)
- {
- if (!calculation.HasOutput)
- {
- throw new ArgumentNullException("calculation", "Cannot perform a semi-probabilistic calculation without output form the piping kernel.");
- }
- }
-
private double SubMechanismReliability(double factorOfSafety, SubCalculationFactors factors)
{
var norm = (1.0/returnPeriod);
@@ -194,12 +171,20 @@
return (1/factors.A)*(Math.Log(factorOfSafety/factors.B) + (factors.C*bNorm));
}
- private double ReliabilityToProbability(double reliability)
+ private static void ValidateOutputOnCalculation(PipingCalculation calculation)
{
+ if (!calculation.HasOutput)
+ {
+ throw new ArgumentException("Cannot perform a semi-probabilistic calculation without output form the piping kernel.");
+ }
+ }
+
+ private static double ReliabilityToProbability(double reliability)
+ {
return Normal.CDF(0, 1, -reliability);
}
- private double ProbabilityToReliability(double probability)
+ private static double ProbabilityToReliability(double probability)
{
return Normal.InvCDF(0, 1, 1 - probability);
}
Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSemiProbabilisticOutputTest.cs
===================================================================
diff -u -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b -rcfefec5a1180c70370d17ae82a7629e0d2ac24b7
--- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSemiProbabilisticOutputTest.cs (.../PipingSemiProbabilisticOutputTest.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSemiProbabilisticOutputTest.cs (.../PipingSemiProbabilisticOutputTest.cs) (revision cfefec5a1180c70370d17ae82a7629e0d2ac24b7)
@@ -1,4 +1,5 @@
using System;
+using Core.Common.Base.Data;
using NUnit.Framework;
namespace Ringtoets.Piping.Data.Test
@@ -43,20 +44,26 @@
pipingFactorOfSafety);
// Assert
- Assert.AreEqual(upliftFactorOfSafety, output.UpliftFactorOfSafety);
- Assert.AreEqual(upliftReliability, output.UpliftReliability);
- Assert.AreEqual(upliftProbability, output.UpliftProbability);
- Assert.AreEqual(heaveFactorOfSafety, output.HeaveFactorOfSafety);
- Assert.AreEqual(heaveReliability, output.HeaveReliability);
- Assert.AreEqual(heaveProbability, output.HeaveProbability);
- Assert.AreEqual(sellmeijerFactorOfSafety, output.SellmeijerFactorOfSafety);
- Assert.AreEqual(sellmeijerReliability, output.SellmeijerReliability);
- Assert.AreEqual(sellmeijerProbability, output.SellmeijerProbability);
- Assert.AreEqual(requiredProbability, output.RequiredProbability);
- Assert.AreEqual(requiredReliability, output.RequiredReliability);
- Assert.AreEqual(pipingProbability, output.PipingProbability);
- Assert.AreEqual(pipingReliability, output.PipingReliability);
- Assert.AreEqual(pipingFactorOfSafety, output.PipingFactorOfSafety);
- }
+ Assert.AreEqual(upliftFactorOfSafety, output.UpliftFactorOfSafety, GetAccuracy(output.UpliftFactorOfSafety));
+ Assert.AreEqual(upliftReliability, output.UpliftReliability, GetAccuracy(output.UpliftReliability));
+ Assert.AreEqual(upliftProbability, output.UpliftProbability, GetAccuracy(output.UpliftProbability));
+ Assert.AreEqual(heaveFactorOfSafety, output.HeaveFactorOfSafety, GetAccuracy(output.HeaveFactorOfSafety));
+ Assert.AreEqual(heaveReliability, output.HeaveReliability, GetAccuracy(output.HeaveReliability));
+ Assert.AreEqual(heaveProbability, output.HeaveProbability, GetAccuracy(output.HeaveProbability));
+ Assert.AreEqual(sellmeijerFactorOfSafety, output.SellmeijerFactorOfSafety, GetAccuracy(output.SellmeijerFactorOfSafety));
+ Assert.AreEqual(sellmeijerReliability, output.SellmeijerReliability, GetAccuracy(output.SellmeijerReliability));
+ Assert.AreEqual(sellmeijerProbability, output.SellmeijerProbability, GetAccuracy(output.SellmeijerProbability));
+ Assert.AreEqual(requiredProbability, output.RequiredProbability, GetAccuracy(output.RequiredProbability));
+ Assert.AreEqual(requiredReliability, output.RequiredReliability, GetAccuracy(output.RequiredReliability));
+ Assert.AreEqual(pipingProbability, output.PipingProbability, GetAccuracy(output.PipingProbability));
+ Assert.AreEqual(pipingReliability, output.PipingReliability, GetAccuracy(output.PipingReliability));
+ Assert.AreEqual(pipingFactorOfSafety, output.PipingFactorOfSafety, GetAccuracy(output.PipingFactorOfSafety));
+ }
+
+
+ private static double GetAccuracy(RoundedDouble d)
+ {
+ return Math.Pow(10.0, -d.NumberOfDecimalPlaces);
+ }
}
}
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingSemiProbabilisticOutputPropertiesTest.cs
===================================================================
diff -u -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b -rcfefec5a1180c70370d17ae82a7629e0d2ac24b7
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingSemiProbabilisticOutputPropertiesTest.cs (.../PipingSemiProbabilisticOutputPropertiesTest.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingSemiProbabilisticOutputPropertiesTest.cs (.../PipingSemiProbabilisticOutputPropertiesTest.cs) (revision cfefec5a1180c70370d17ae82a7629e0d2ac24b7)
@@ -1,4 +1,5 @@
using System;
+using Core.Common.Base.Data;
using Core.Common.Gui.PropertyBag;
using NUnit.Framework;
using Ringtoets.Piping.Data;
@@ -63,20 +64,26 @@
};
// Call & Assert
- Assert.AreEqual(upliftFactorOfSafety, properties.UpliftFactorOfSafety);
- Assert.AreEqual(upliftReliability, properties.UpliftReliability);
- Assert.AreEqual(upliftProbability, properties.UpliftProbability);
- Assert.AreEqual(heaveFactorOfSafety, properties.HeaveFactorOfSafety);
- Assert.AreEqual(heaveReliability, properties.HeaveReliability);
- Assert.AreEqual(heaveProbability, properties.HeaveProbability);
- Assert.AreEqual(sellmeijerFactorOfSafety, properties.SellmeijerFactorOfSafety);
- Assert.AreEqual(sellmeijerReliability, properties.SellmeijerReliability);
- Assert.AreEqual(sellmeijerProbability, properties.SellmeijerProbability);
- Assert.AreEqual(requiredProbability, properties.RequiredProbability);
- Assert.AreEqual(requiredReliability, properties.RequiredReliability);
- Assert.AreEqual(pipingProbability, properties.PipingProbability);
- Assert.AreEqual(pipingReliability, properties.PipingReliability);
- Assert.AreEqual(pipingFactorOfSafety, properties.PipingFactorOfSafety);
+ Assert.AreEqual(upliftFactorOfSafety, properties.UpliftFactorOfSafety, GetAccuracy(properties.UpliftFactorOfSafety));
+ Assert.AreEqual(upliftReliability, properties.UpliftReliability, GetAccuracy(properties.UpliftReliability));
+ Assert.AreEqual(upliftProbability, properties.UpliftProbability, GetAccuracy(properties.UpliftProbability));
+ Assert.AreEqual(heaveFactorOfSafety, properties.HeaveFactorOfSafety, GetAccuracy(properties.HeaveFactorOfSafety));
+ Assert.AreEqual(heaveReliability, properties.HeaveReliability, GetAccuracy(properties.HeaveReliability));
+ Assert.AreEqual(heaveProbability, properties.HeaveProbability, GetAccuracy(properties.HeaveProbability));
+ Assert.AreEqual(sellmeijerFactorOfSafety, properties.SellmeijerFactorOfSafety, GetAccuracy(properties.SellmeijerFactorOfSafety));
+ Assert.AreEqual(sellmeijerReliability, properties.SellmeijerReliability, GetAccuracy(properties.SellmeijerReliability));
+ Assert.AreEqual(sellmeijerProbability, properties.SellmeijerProbability, GetAccuracy(properties.SellmeijerProbability));
+ Assert.AreEqual(requiredProbability, properties.RequiredProbability, GetAccuracy(properties.RequiredProbability));
+ Assert.AreEqual(requiredReliability, properties.RequiredReliability, GetAccuracy(properties.RequiredReliability));
+ Assert.AreEqual(pipingProbability, properties.PipingProbability, GetAccuracy(properties.PipingProbability));
+ Assert.AreEqual(pipingReliability, properties.PipingReliability, GetAccuracy(properties.PipingReliability));
+ Assert.AreEqual(pipingFactorOfSafety, properties.PipingFactorOfSafety, GetAccuracy(properties.PipingFactorOfSafety));
}
+
+
+ private static double GetAccuracy(RoundedDouble d)
+ {
+ return Math.Pow(10.0, -d.NumberOfDecimalPlaces);
+ }
}
}
\ No newline at end of file
Index: Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingSemiProbabilisticCalculationServiceTest.cs
===================================================================
diff -u -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b -rcfefec5a1180c70370d17ae82a7629e0d2ac24b7
--- Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingSemiProbabilisticCalculationServiceTest.cs (.../PipingSemiProbabilisticCalculationServiceTest.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingSemiProbabilisticCalculationServiceTest.cs (.../PipingSemiProbabilisticCalculationServiceTest.cs) (revision cfefec5a1180c70370d17ae82a7629e0d2ac24b7)
@@ -1,4 +1,5 @@
using System;
+using Core.Common.Base.Data;
using Core.Common.TestUtil;
using NUnit.Framework;
using Ringtoets.Piping.Data;
@@ -27,10 +28,10 @@
PipingSemiProbabilisticCalculationService.Calculate(calculation);
// Call
- double result = calculation.SemiProbabilisticOutput.UpliftProbability;
+ RoundedDouble result = calculation.SemiProbabilisticOutput.UpliftProbability;
// Assert
- Assert.AreEqual(expectedResult, result, 1e-8);
+ Assert.AreEqual(expectedResult, result, GetAccuracy(result));
}
[Test]
@@ -52,10 +53,10 @@
PipingSemiProbabilisticCalculationService.Calculate(calculation);
// Call
- double result = calculation.SemiProbabilisticOutput.HeaveProbability;
+ RoundedDouble result = calculation.SemiProbabilisticOutput.HeaveProbability;
// Assert
- Assert.AreEqual(expectedResult, result, 1e-8);
+ Assert.AreEqual(expectedResult, result, GetAccuracy(result));
}
[Test]
@@ -77,10 +78,10 @@
PipingSemiProbabilisticCalculationService.Calculate(calculation);
// Call
- double result = calculation.SemiProbabilisticOutput.SellmeijerProbability;
+ RoundedDouble result = calculation.SemiProbabilisticOutput.SellmeijerProbability;
// Assert
- Assert.AreEqual(expectedResult, result, 1e-8);
+ Assert.AreEqual(expectedResult, result, GetAccuracy(result));
}
[Test]
@@ -104,10 +105,10 @@
PipingSemiProbabilisticCalculationService.Calculate(calculation);
// Call
- double result = calculation.SemiProbabilisticOutput.PipingReliability;
+ RoundedDouble result = calculation.SemiProbabilisticOutput.PipingReliability;
// Assert
- Assert.AreEqual(expectedResult, result, 1e-8);
+ Assert.AreEqual(expectedResult, result, GetAccuracy(result));
}
[Test]
@@ -130,10 +131,10 @@
PipingSemiProbabilisticCalculationService.Calculate(calculation);
// Call
- double result = calculation.SemiProbabilisticOutput.RequiredReliability;
+ RoundedDouble result = calculation.SemiProbabilisticOutput.RequiredReliability;
// Assert
- Assert.AreEqual(expectedResult, result, 1e-8);
+ Assert.AreEqual(expectedResult, result, GetAccuracy(result));
}
[Test]
@@ -161,10 +162,10 @@
PipingSemiProbabilisticCalculationService.Calculate(calculation);
// Call
- double result = calculation.SemiProbabilisticOutput.PipingFactorOfSafety;
+ RoundedDouble result = calculation.SemiProbabilisticOutput.PipingFactorOfSafety;
// Assert
- Assert.AreEqual(expectedResult, result, 1e-8);
+ Assert.AreEqual(expectedResult, result, GetAccuracy(result));
}
[Test]
@@ -191,10 +192,10 @@
PipingSemiProbabilisticCalculationService.Calculate(calculation);
// Call
- double result = calculation.SemiProbabilisticOutput.PipingFactorOfSafety;
+ RoundedDouble result = calculation.SemiProbabilisticOutput.PipingFactorOfSafety;
// Assert
- Assert.AreEqual(calculation.SemiProbabilisticOutput.RequiredReliability / calculation.SemiProbabilisticOutput.PipingReliability, result, 1e-8);
+ Assert.AreEqual(calculation.SemiProbabilisticOutput.RequiredReliability / calculation.SemiProbabilisticOutput.PipingReliability, result, GetAccuracy(result));
}
[Test]
@@ -218,11 +219,12 @@
PipingSemiProbabilisticCalculationService.Calculate(pipingCalculation);
// Assert
- Assert.AreEqual(1.134713444, pipingCalculation.SemiProbabilisticOutput.PipingFactorOfSafety, 1e-8);
+ RoundedDouble result = pipingCalculation.SemiProbabilisticOutput.PipingFactorOfSafety;
+ Assert.AreEqual(1.134713444, result, GetAccuracy(result));
}
[Test]
- public void Calculate_MissingOutput_ThrowsArgumentNullException()
+ public void Calculate_MissingOutput_ThrowsArgumentException()
{
// Setup
var generalInput = new GeneralPipingInput();
@@ -232,7 +234,7 @@
TestDelegate test = () => PipingSemiProbabilisticCalculationService.Calculate(pipingCalculation);
// Assert
- TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, "Cannot perform a semi-probabilistic calculation without output form the piping kernel.");
+ TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, "Cannot perform a semi-probabilistic calculation without output form the piping kernel.");
}
private PipingCalculation AsPipingCalculation(PipingOutput pipingOutput, SemiProbabilisticPipingInput semiProbabilisticPipingInput)
@@ -242,5 +244,10 @@
Output = pipingOutput
};
}
+
+ private static double GetAccuracy(RoundedDouble d)
+ {
+ return Math.Pow(10.0, -d.NumberOfDecimalPlaces);
+ }
}
}
\ No newline at end of file