Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingSemiProbabilisticOutput.cs =================================================================== diff -u -r746902d8ff996441c8d885dbea8bc605fcee8239 -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingSemiProbabilisticOutput.cs (.../PipingSemiProbabilisticOutput.cs) (revision 746902d8ff996441c8d885dbea8bc605fcee8239) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingSemiProbabilisticOutput.cs (.../PipingSemiProbabilisticOutput.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b) @@ -9,36 +9,107 @@ /// /// Creates a new instance of . /// - /// The factor of safety for the uplift sub calculation. - /// The factor of safety for the heave sub calculation. - /// The factor of safety for the Sellmeijer sub calculation. + /// The factor of safety for the uplift sub-mechanism. + /// The reliability of uplift the sub-mechanism. + /// The probability of failure due to the uplift sub-mechanism. + /// The factor of safety for the heave sub-mechanism. + /// The reliability of the heave sub-mechanism. + /// The probability of failure due to the heave sub-mechanism. + /// The factor of safety for the Sellmeijer sub-mechanism. + /// The reliability of the Sellmeijer sub-mechanism. + /// The probability of failure due to the Sellmeijer sub-mechanism. + /// The required (maximum allowed) probability of failure due to piping. + /// The required (maximum allowed) reliabiality of the piping failure mechanism + /// The calculated probability of failing due to piping. + /// The calculated reliability of the piping failure mechanism. /// The factor of safety for the piping failure mechanims. - public PipingSemiProbabilisticOutput(double upliftFactorOfSafety, double heaveFactorOfSafety, double sellmeijerFactorOfSafety, double pipingFactorOfSafety) + public PipingSemiProbabilisticOutput(double upliftFactorOfSafety, double upliftReliability, double upliftProbability, double heaveFactorOfSafety, double heaveReliability, double heaveProbability, double sellmeijerFactorOfSafety, double sellmeijerReliability, double sellmeijerProbability, double requiredProbability, double requiredReliability, double pipingProbability, double pipingReliability, double pipingFactorOfSafety) { UpliftFactorOfSafety = upliftFactorOfSafety; + UpliftReliability = upliftReliability; + UpliftProbability = upliftProbability; HeaveFactorOfSafety = heaveFactorOfSafety; + HeaveReliability = heaveReliability; + HeaveProbability = heaveProbability; SellmeijerFactorOfSafety = sellmeijerFactorOfSafety; + SellmeijerReliability = sellmeijerReliability; + SellmeijerProbability = sellmeijerProbability; + + RequiredProbability = requiredProbability; + RequiredReliability = requiredReliability; + PipingProbability = pipingProbability; + PipingReliability = pipingReliability; PipingFactorOfSafety = pipingFactorOfSafety; } /// - /// Gets or sets the factor of safety of the piping failure mechanism. + /// Gets the required probability of the piping failure mechanism. /// + public double RequiredProbability { get; private set; } + + /// + /// Get the required reliability of the piping failure mechanism. + /// + public double RequiredReliability { get; private set; } + + /// + /// Gets the factor of safety of the piping failure mechanism. + /// public double PipingFactorOfSafety { get; private set; } /// - /// The factor of safety for the uplift sub calculation. + /// Gets the reliability of the piping failure mechanism. /// + public double PipingReliability { get; private set; } + + /// + /// Gets the probability of failing due to the piping failure mechanism. + /// + public double PipingProbability { get; private set; } + + /// + /// Gets the factor of safety for the uplift sub-mechanism. + /// public double UpliftFactorOfSafety { get; private set; } /// - /// The factor of safety for the heave sub calculation. + /// Gets the reliability for the uplift sub-mechanism. /// + public double UpliftReliability{ get; private set; } + + /// + /// Gets the probability of failing due to the uplift failure sub-mechanism. + /// + public double UpliftProbability{ get; private set; } + + /// + /// Gets the factor of safety for the heave sub-mechanism. + /// public double HeaveFactorOfSafety { get; private set; } /// - /// The factor of safety for the Sellmeijer sub calculation. + /// Gets the reliability for the heave sub-mechanism. /// + public double HeaveReliability { get; private set; } + + /// + /// Gets the probability of failing due to the heave failure sub-mechanism. + /// + public double HeaveProbability { get; private set; } + + /// + /// Gets the factor of safety for the Sellmeijer sub-mechanism. + /// public double SellmeijerFactorOfSafety { get; private set; } + + /// + /// Gets the reliability for the Sellmeijer sub-mechanism. + /// + public double SellmeijerReliability { get; private set; } + + /// + /// Gets the probability of failing due to the Sellmeijer failure sub-mechanism. + /// + public double SellmeijerProbability { get; private set; } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -r746902d8ff996441c8d885dbea8bc605fcee8239 -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 746902d8ff996441c8d885dbea8bc605fcee8239) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b) @@ -1130,151 +1130,304 @@ } /// - /// Looks up a localized string similar to Veiligheidsfactor heave.. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// - public static string PipingOutput_HeaveFactorOfSafety_Description { + public static System.Drawing.Bitmap PipingOutputIcon { get { - return ResourceManager.GetString("PipingOutput_HeaveFactorOfSafety_Description", resourceCulture); + object obj = ResourceManager.GetObject("PipingOutputIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); } } /// - /// Looks up a localized string similar to Veiligheidsfactor heave. + /// Looks up a localized string similar to Heave. /// - public static string PipingOutput_HeaveFactorOfSafety_DisplayName { + public static string PipingSemiProbabilisticOutput_Categories_Heave { get { - return ResourceManager.GetString("PipingOutput_HeaveFactorOfSafety_DisplayName", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_Categories_Heave", resourceCulture); } } /// - /// Looks up a localized string similar to Z-waarde heave.. + /// Looks up a localized string similar to Piping. /// - public static string PipingOutput_HeaveZValue_Description { + public static string PipingSemiProbabilisticOutput_Categories_Piping { get { - return ResourceManager.GetString("PipingOutput_HeaveZValue_Description", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_Categories_Piping", resourceCulture); } } /// - /// Looks up a localized string similar to Z-waarde heave. + /// Looks up a localized string similar to Interne erosie (Sellmeijer). /// - public static string PipingOutput_HeaveZValue_DisplayName { + public static string PipingSemiProbabilisticOutput_Categories_Sellmeijer { get { - return ResourceManager.GetString("PipingOutput_HeaveZValue_DisplayName", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_Categories_Sellmeijer", resourceCulture); } } /// + /// Looks up a localized string similar to Opbarsten. + /// + public static string PipingSemiProbabilisticOutput_Categories_Uplift { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_Categories_Uplift", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to De veiligheidsfactor voor het heave faalmechanisme.. + /// + public static string PipingSemiProbabilisticOutput_HeaveFactorOfSafety_Description { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_HeaveFactorOfSafety_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Veiligheidsfactor [-]. + /// + public static string PipingSemiProbabilisticOutput_HeaveFactorOfSafety_DisplayName { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_HeaveFactorOfSafety_DisplayName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to De kans dat het faalmechanisme heave optreedt.. + /// + public static string PipingSemiProbabilisticOutput_HeaveProbability_Description { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_HeaveProbability_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kans van voorkomen [1/jaar]. + /// + public static string PipingSemiProbabilisticOutput_HeaveProbability_DisplayName { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_HeaveProbability_DisplayName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to De betrouwbaarheidsindex van het heave faalmechanisme.. + /// + public static string PipingSemiProbabilisticOutput_HeaveReliability_Description { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_HeaveReliability_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Betrouwbaarheidsindex [-]. + /// + public static string PipingSemiProbabilisticOutput_HeaveReliability_DisplayName { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_HeaveReliability_DisplayName", resourceCulture); + } + } + + /// /// Looks up a localized string similar to De veiligheidsfactor voor het piping faalmechanisme.. /// - public static string PipingOutput_PipingFactorOfSafety_Description { + public static string PipingSemiProbabilisticOutput_PipingFactorOfSafety_Description { get { - return ResourceManager.GetString("PipingOutput_PipingFactorOfSafety_Description", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_PipingFactorOfSafety_Description", resourceCulture); } } /// /// Looks up a localized string similar to Veiligheidsfactor [-]. /// - public static string PipingOutput_PipingFactorOfSafety_DisplayName { + public static string PipingSemiProbabilisticOutput_PipingFactorOfSafety_DisplayName { get { - return ResourceManager.GetString("PipingOutput_PipingFactorOfSafety_DisplayName", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_PipingFactorOfSafety_DisplayName", resourceCulture); } } /// - /// Looks up a localized string similar to Piping resultaten. + /// Looks up a localized string similar to De kans dat het faalmechanisme piping optreedt.. /// - public static string PipingOutput_Properties_DisplayName { + public static string PipingSemiProbabilisticOutput_PipingProbability_Description { get { - return ResourceManager.GetString("PipingOutput_Properties_DisplayName", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_PipingProbability_Description", resourceCulture); } } /// - /// Looks up a localized string similar to Veiligheidsfactor Sellmeijer.. + /// Looks up a localized string similar to Faalkans [1/jaar]. /// - public static string PipingOutput_SellmeijerFactorOfSafety_Description { + public static string PipingSemiProbabilisticOutput_PipingProbability_DisplayName { get { - return ResourceManager.GetString("PipingOutput_SellmeijerFactorOfSafety_Description", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_PipingProbability_DisplayName", resourceCulture); } } /// - /// Looks up a localized string similar to Veiligheidsfactor Sellmeijer. + /// Looks up a localized string similar to De betrouwbaarheidsindex van het piping faalmechanisme.. /// - public static string PipingOutput_SellmeijerFactorOfSafety_DisplayName { + public static string PipingSemiProbabilisticOutput_PipingReliability_Description { get { - return ResourceManager.GetString("PipingOutput_SellmeijerFactorOfSafety_DisplayName", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_PipingReliability_Description", resourceCulture); } } /// - /// Looks up a localized string similar to Z-waarde Sellmeijer.. + /// Looks up a localized string similar to Betrouwbaarheidsindex [-]. /// - public static string PipingOutput_SellmeijerZValue_Description { + public static string PipingSemiProbabilisticOutput_PipingReliability_DisplayName { get { - return ResourceManager.GetString("PipingOutput_SellmeijerZValue_Description", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_PipingReliability_DisplayName", resourceCulture); } } /// - /// Looks up a localized string similar to Z-waarde Sellmeijer. + /// Looks up a localized string similar to De maximaal toegestane betrouwbaarheidsindex voor het faalmechanisme piping.. /// - public static string PipingOutput_SellmeijerZValue_DisplayName { + public static string PipingSemiProbabilisticOutput_RequiredProbability_Description { get { - return ResourceManager.GetString("PipingOutput_SellmeijerZValue_DisplayName", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_RequiredProbability_Description", resourceCulture); } } /// - /// Looks up a localized string similar to Veiligheidsfactor opbarsten. + /// Looks up a localized string similar to Betrouwbaarheidsindex faalkanseis [-]. /// - public static string PipingOutput_UpliftFactorOfSafety_Description { + public static string PipingSemiProbabilisticOutput_RequiredProbability_DisplayName { get { - return ResourceManager.GetString("PipingOutput_UpliftFactorOfSafety_Description", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_RequiredProbability_DisplayName", resourceCulture); } } /// - /// Looks up a localized string similar to Veiligheidsfactor opbarsten. + /// Looks up a localized string similar to De maximaal toegestane kans dat het faalmechanisme piping optreedt.. /// - public static string PipingOutput_UpliftFactorOfSafety_DisplayName { + public static string PipingSemiProbabilisticOutput_RequiredReliability_Description { get { - return ResourceManager.GetString("PipingOutput_UpliftFactorOfSafety_DisplayName", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_RequiredReliability_Description", resourceCulture); } } /// - /// Looks up a localized string similar to Z-waarde opbarsten.. + /// Looks up a localized string similar to Faalkanseis [1/jaar]. /// - public static string PipingOutput_UpliftZValue_Description { + public static string PipingSemiProbabilisticOutput_RequiredReliability_DisplayName { get { - return ResourceManager.GetString("PipingOutput_UpliftZValue_Description", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_RequiredReliability_DisplayName", resourceCulture); } } /// - /// Looks up a localized string similar to Z-waarde opbarsten. + /// Looks up a localized string similar to De veiligheidsfactor voor het Sellmeijer faalmechanisme.. /// - public static string PipingOutput_UpliftZValue_DisplayName { + public static string PipingSemiProbabilisticOutput_SellmeijerFactorOfSafety_Description { get { - return ResourceManager.GetString("PipingOutput_UpliftZValue_DisplayName", resourceCulture); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_SellmeijerFactorOfSafety_Description", resourceCulture); } } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Looks up a localized string similar to Veiligheidsfactor [-]. /// - public static System.Drawing.Bitmap PipingOutputIcon { + public static string PipingSemiProbabilisticOutput_SellmeijerFactorOfSafety_DisplayName { get { - object obj = ResourceManager.GetObject("PipingOutputIcon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); + return ResourceManager.GetString("PipingSemiProbabilisticOutput_SellmeijerFactorOfSafety_DisplayName", resourceCulture); } } /// + /// Looks up a localized string similar to De kans dat het faalmechanisme Sellmeijer optreedt.. + /// + public static string PipingSemiProbabilisticOutput_SellmeijerProbability_Description { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_SellmeijerProbability_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kans van voorkomen [1/jaar]. + /// + public static string PipingSemiProbabilisticOutput_SellmeijerProbability_DisplayName { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_SellmeijerProbability_DisplayName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to De betrouwbaarheidsindex van het Sellmeijer faalmechanisme.. + /// + public static string PipingSemiProbabilisticOutput_SellmeijerReliability_Description { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_SellmeijerReliability_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Betrouwbaarheidsindex [-]. + /// + public static string PipingSemiProbabilisticOutput_SellmeijerReliability_DisplayName { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_SellmeijerReliability_DisplayName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to De veiligheidsfactor voor het opbarsten faalmechanisme.. + /// + public static string PipingSemiProbabilisticOutput_UpliftFactorOfSafety_Description { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_UpliftFactorOfSafety_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Veiligheidsfactor [-]. + /// + public static string PipingSemiProbabilisticOutput_UpliftFactorOfSafety_DisplayName { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_UpliftFactorOfSafety_DisplayName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to De kans dat het faalmechanisme opbarsten optreedt.. + /// + public static string PipingSemiProbabilisticOutput_UpliftProbability_Description { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_UpliftProbability_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Kans van voorkomen [1/jaar]. + /// + public static string PipingSemiProbabilisticOutput_UpliftProbability_DisplayName { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_UpliftProbability_DisplayName", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to De betrouwbaarheidsindex van het opbarsten faalmechanisme.. + /// + public static string PipingSemiProbabilisticOutput_UpliftReliability_Description { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_UpliftReliability_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Betrouwbaarheidsindex [-]. + /// + public static string PipingSemiProbabilisticOutput_UpliftReliability_DisplayName { + get { + return ResourceManager.GetString("PipingSemiProbabilisticOutput_UpliftReliability_DisplayName", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Het niveau van de onderkant van dit profiel.. /// public static string PipingSoilProfile_Bottom_Description { Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx =================================================================== diff -u -r746902d8ff996441c8d885dbea8bc605fcee8239 -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx (.../Resources.resx) (revision 746902d8ff996441c8d885dbea8bc605fcee8239) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx (.../Resources.resx) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b) @@ -253,45 +253,24 @@ Piping resultaat - - Veiligheidsfactor heave. + + De veiligheidsfactor voor het heave faalmechanisme. - - Veiligheidsfactor heave + + Veiligheidsfactor [-] - - Z-waarde heave. + + De veiligheidsfactor voor het Sellmeijer faalmechanisme. - - Z-waarde heave + + Veiligheidsfactor [-] - - Piping resultaten + + De veiligheidsfactor voor het opbarsten faalmechanisme. - - Veiligheidsfactor Sellmeijer. + + Veiligheidsfactor [-] - - Veiligheidsfactor Sellmeijer - - - Z-waarde Sellmeijer. - - - Z-waarde Sellmeijer - - - Veiligheidsfactor opbarsten - - - Veiligheidsfactor opbarsten - - - Z-waarde opbarsten. - - - Z-waarde opbarsten - Profielmetingen @@ -604,10 +583,82 @@ Grondeigenschappen - + De veiligheidsfactor voor het piping faalmechanisme. - + Veiligheidsfactor [-] + + De kans dat het faalmechanisme heave optreedt. + + + Kans van voorkomen [1/jaar] + + + De betrouwbaarheidsindex van het heave faalmechanisme. + + + Betrouwbaarheidsindex [-] + + + De kans dat het faalmechanisme piping optreedt. + + + Faalkans [1/jaar] + + + De betrouwbaarheidsindex van het piping faalmechanisme. + + + Betrouwbaarheidsindex [-] + + + De maximaal toegestane betrouwbaarheidsindex voor het faalmechanisme piping. + + + Betrouwbaarheidsindex faalkanseis [-] + + + De maximaal toegestane kans dat het faalmechanisme piping optreedt. + + + Faalkanseis [1/jaar] + + + De kans dat het faalmechanisme Sellmeijer optreedt. + + + Kans van voorkomen [1/jaar] + + + De betrouwbaarheidsindex van het Sellmeijer faalmechanisme. + + + Betrouwbaarheidsindex [-] + + + De kans dat het faalmechanisme opbarsten optreedt. + + + Kans van voorkomen [1/jaar] + + + De betrouwbaarheidsindex van het opbarsten faalmechanisme. + + + Betrouwbaarheidsindex [-] + + + Heave + + + Piping + + + Interne erosie (Sellmeijer) + + + Opbarsten + \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingSemiProbabilisticOutputProperties.cs =================================================================== diff -u -r746902d8ff996441c8d885dbea8bc605fcee8239 -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingSemiProbabilisticOutputProperties.cs (.../PipingSemiProbabilisticOutputProperties.cs) (revision 746902d8ff996441c8d885dbea8bc605fcee8239) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingSemiProbabilisticOutputProperties.cs (.../PipingSemiProbabilisticOutputProperties.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b) @@ -7,9 +7,42 @@ { public class PipingSemiProbabilisticOutputProperties : ObjectProperties { - [ResourcesCategory(typeof(Resources), "Categories_General")] - [ResourcesDisplayName(typeof(Resources), "PipingOutput_HeaveFactorOfSafety_DisplayName")] - [ResourcesDescription(typeof(Resources), "PipingOutput_HeaveFactorOfSafety_Description")] + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Uplift")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_UpliftFactorOfSafety_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_UpliftFactorOfSafety_Description")] + public double UpliftFactorOfSafety + { + get + { + return data.UpliftFactorOfSafety; + } + } + + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Uplift")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_UpliftReliability_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_UpliftReliability_Description")] + public double UpliftReliability + { + get + { + return data.UpliftReliability; + } + } + + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Uplift")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_UpliftProbability_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_UpliftProbability_Description")] + public double UpliftProbability + { + get + { + return data.UpliftProbability; + } + } + + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Heave")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_HeaveFactorOfSafety_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_HeaveFactorOfSafety_Description")] public double HeaveFactorOfSafety { get @@ -18,20 +51,31 @@ } } - [ResourcesCategory(typeof(Resources), "Categories_General")] - [ResourcesDisplayName(typeof(Resources), "PipingOutput_UpliftFactorOfSafety_DisplayName")] - [ResourcesDescription(typeof(Resources), "PipingOutput_UpliftFactorOfSafety_Description")] - public double UpliftFactorOfSafety + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Heave")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_HeaveReliability_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_HeaveReliability_Description")] + public double HeaveReliability { get { - return data.UpliftFactorOfSafety; + return data.HeaveReliability; } } - [ResourcesCategory(typeof(Resources), "Categories_General")] - [ResourcesDisplayName(typeof(Resources), "PipingOutput_SellmeijerFactorOfSafety_DisplayName")] - [ResourcesDescription(typeof(Resources), "PipingOutput_SellmeijerFactorOfSafety_Description")] + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Heave")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_HeaveProbability_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_HeaveProbability_Description")] + public double HeaveProbability + { + get + { + return data.HeaveProbability; + } + } + + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Sellmeijer")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_SellmeijerFactorOfSafety_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_SellmeijerFactorOfSafety_Description")] public double SellmeijerFactorOfSafety { get @@ -40,9 +84,75 @@ } } - [ResourcesCategory(typeof(Resources), "Categories_General")] - [ResourcesDisplayName(typeof(Resources), "PipingOutput_PipingFactorOfSafety_DisplayName")] - [ResourcesDescription(typeof(Resources), "PipingOutput_PipingFactorOfSafety_Description")] + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Sellmeijer")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_SellmeijerReliability_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_SellmeijerReliability_Description")] + public double SellmeijerReliability + { + get + { + return data.SellmeijerReliability; + } + } + + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Sellmeijer")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_SellmeijerProbability_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_SellmeijerProbability_Description")] + public double SellmeijerProbability + { + get + { + return data.SellmeijerProbability; + } + } + + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Piping")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_RequiredProbability_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_RequiredProbability_Description")] + public double RequiredProbability + { + get + { + return data.RequiredProbability; + } + } + + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Piping")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_RequiredReliability_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_RequiredReliability_Description")] + public double RequiredReliability + { + get + { + return data.RequiredReliability; + } + } + + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Piping")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_PipingProbability_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_PipingProbability_Description")] + public double PipingProbability + { + get + { + return data.PipingProbability; + } + } + + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Piping")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_PipingReliability_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_PipingReliability_Description")] + public double PipingReliability + { + get + { + return data.PipingReliability; + } + } + + [ResourcesCategory(typeof(Resources), "PipingSemiProbabilisticOutput_Categories_Piping")] + [ResourcesDisplayName(typeof(Resources), "PipingSemiProbabilisticOutput_PipingFactorOfSafety_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingSemiProbabilisticOutput_PipingFactorOfSafety_Description")] public double PipingFactorOfSafety { get Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingSemiProbabilisticCalculationService.cs =================================================================== diff -u -r746902d8ff996441c8d885dbea8bc605fcee8239 -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b --- Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingSemiProbabilisticCalculationService.cs (.../PipingSemiProbabilisticCalculationService.cs) (revision 746902d8ff996441c8d885dbea8bc605fcee8239) +++ Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingSemiProbabilisticCalculationService.cs (.../PipingSemiProbabilisticCalculationService.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b) @@ -9,8 +9,9 @@ /// public class PipingSemiProbabilisticCalculationService { - private readonly double heaveFactorOfSafety; + // Inputs private readonly double upliftFactorOfSafety; + private readonly double heaveFactorOfSafety; private readonly double sellmeijerFactorOfSafety; private readonly int returnPeriod; @@ -19,44 +20,22 @@ private readonly double assessmentSectionLength; private readonly double contribution; - /// - /// Calculates the semi-probabilistic results given a with . - /// - /// 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. - public static void Calculate(PipingCalculation calculation) - { - ValidateOutputOnCalculation(calculation); + // Intermediate results + private double heaveReliability; + private double upliftReliability; + private double sellmeijerReliability; - SemiProbabilisticPipingInput semiProbabilisticParameters = calculation.SemiProbabilisticParameters; - var pipingOutput = calculation.Output; + private double heaveProbability; + private double upliftProbability; + private double sellmeijerProbability; - var calculator = new PipingSemiProbabilisticCalculationService( - pipingOutput.UpliftFactorOfSafety, - pipingOutput.HeaveFactorOfSafety, - pipingOutput.SellmeijerFactorOfSafety, - semiProbabilisticParameters.Norm, - semiProbabilisticParameters.A, - semiProbabilisticParameters.B, - semiProbabilisticParameters.SectionLength, - semiProbabilisticParameters.Contribution/100); + private double pipingProbability; + private double pipingReliability; - calculation.SemiProbabilisticOutput = new PipingSemiProbabilisticOutput( - pipingOutput.UpliftFactorOfSafety, - pipingOutput.HeaveFactorOfSafety, - pipingOutput.SellmeijerFactorOfSafety, - calculator.FactorOfSafety() - ); - } + private double requiredProbability; + private double requiredReliability; - 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 pipingFactorOfSafety; /// /// Creates a new instance of . @@ -82,12 +61,66 @@ } /// + /// Calculates the semi-probabilistic results given a with . + /// + /// 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. + public static void Calculate(PipingCalculation calculation) + { + ValidateOutputOnCalculation(calculation); + + SemiProbabilisticPipingInput semiProbabilisticParameters = calculation.SemiProbabilisticParameters; + var pipingOutput = calculation.Output; + + var calculator = new PipingSemiProbabilisticCalculationService( + pipingOutput.UpliftFactorOfSafety, + pipingOutput.HeaveFactorOfSafety, + pipingOutput.SellmeijerFactorOfSafety, + semiProbabilisticParameters.Norm, + semiProbabilisticParameters.A, + semiProbabilisticParameters.B, + semiProbabilisticParameters.SectionLength, + semiProbabilisticParameters.Contribution / 100); + calculator.Calculate(); + + calculation.SemiProbabilisticOutput = new PipingSemiProbabilisticOutput( + calculator.upliftFactorOfSafety, + calculator.upliftReliability, + calculator.upliftProbability, + calculator.heaveFactorOfSafety, + calculator.heaveReliability, + calculator.heaveProbability, + calculator.sellmeijerFactorOfSafety, + calculator.sellmeijerReliability, + calculator.sellmeijerProbability, + calculator.requiredProbability, + calculator.requiredReliability, + calculator.pipingProbability, + calculator.pipingReliability, + calculator.pipingFactorOfSafety + ); + } + + private void Calculate() + { + FailureProbabilityUplift(); + FailureProbabilityHeave(); + FailureProbabilitySellmeijer(); + BetaCrossPiping(); + BetaCrossRequired(); + FactorOfSafety(); + } + + /// /// Returns the failure probability of the uplift sub mechanism. /// /// A value represening failure probability. public double FailureProbabilityUplift() { - return FailureProbability(upliftFactorOfSafety, upliftFactors); + upliftReliability = SubMechanismReliability(upliftFactorOfSafety, upliftFactors); + upliftProbability = ReliabilityToProbability(upliftReliability); + return upliftProbability; } /// @@ -96,7 +129,9 @@ /// A value represening failure probability. public double FailureProbabilityHeave() { - return FailureProbability(heaveFactorOfSafety, heaveFactors); + heaveReliability = SubMechanismReliability(heaveFactorOfSafety, heaveFactors); + heaveProbability = ReliabilityToProbability(heaveReliability); + return heaveProbability; } /// @@ -105,7 +140,9 @@ /// A value represening failure probability. public double FailureProbabilitySellmeijer() { - return FailureProbability(sellmeijerFactorOfSafety, sellmeijerFactors); + sellmeijerReliability = SubMechanismReliability(sellmeijerFactorOfSafety, sellmeijerFactors); + sellmeijerProbability = ReliabilityToProbability(sellmeijerReliability); + return sellmeijerProbability; } /// @@ -114,18 +151,20 @@ /// A value representing the reliability. public double BetaCrossPiping() { - var minFailureProbability = Math.Min(Math.Min(FailureProbabilityHeave(), FailureProbabilityUplift()), FailureProbabilitySellmeijer()); - return Normal.InvCDF(0.0, 1.0, 1 - minFailureProbability); + pipingProbability = Math.Min(Math.Min(heaveProbability, upliftProbability), sellmeijerProbability); + pipingReliability = ProbabilityToReliability(pipingProbability); + return pipingReliability; } /// - /// Returns the allowed reliability of the piping failure mechanism for the complete assessment section. + /// Returns the required reliability of the piping failure mechanism for the complete assessment section. /// - /// A value representing the allowed reliability. - public double BetaCrossAllowed() + /// A value representing the required reliability. + public double BetaCrossRequired() { - var normCross = (contribution/returnPeriod)/(1 + (constantA*assessmentSectionLength)/constantB); - return Normal.InvCDF(0, 1, 1 - normCross); + requiredProbability = (contribution/returnPeriod)/(1 + (constantA*assessmentSectionLength)/constantB); + requiredReliability = ProbabilityToReliability(requiredProbability); + return requiredReliability; } /// @@ -135,19 +174,36 @@ /// A factor of safety value. public double FactorOfSafety() { - return BetaCrossAllowed()/BetaCrossPiping(); + pipingFactorOfSafety = requiredReliability/pipingReliability; + return pipingFactorOfSafety; } - private double FailureProbability(double factorOfSafety, SubCalculationFactors factors) + 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); - var bNorm = Normal.InvCDF(0, 1, 1 - norm); + var bNorm = ProbabilityToReliability(norm); - var betaCross = (1/factors.A)*(Math.Log(factorOfSafety/factors.B) + (factors.C*bNorm)); + return (1/factors.A)*(Math.Log(factorOfSafety/factors.B) + (factors.C*bNorm)); + } - return Normal.CDF(0, 1, -betaCross); + private double ReliabilityToProbability(double reliability) + { + return Normal.CDF(0, 1, -reliability); } + private double ProbabilityToReliability(double probability) + { + return Normal.InvCDF(0, 1, 1 - probability); + } + #region sub-calculation constants private struct SubCalculationFactors Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSemiProbabilisticOutputTest.cs =================================================================== diff -u -r746902d8ff996441c8d885dbea8bc605fcee8239 -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSemiProbabilisticOutputTest.cs (.../PipingSemiProbabilisticOutputTest.cs) (revision 746902d8ff996441c8d885dbea8bc605fcee8239) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSemiProbabilisticOutputTest.cs (.../PipingSemiProbabilisticOutputTest.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b) @@ -11,17 +11,51 @@ // Setup var random = new Random(21); double upliftFactorOfSafety = random.NextDouble(); + double upliftReliability = random.NextDouble(); + double upliftProbability = random.NextDouble(); double heaveFactorOfSafety = random.NextDouble(); + double heaveReliability = random.NextDouble(); + double heaveProbability = random.NextDouble(); double sellmeijerFactorOfSafety = random.NextDouble(); + double sellmeijerReliability = random.NextDouble(); + double sellmeijerProbability = random.NextDouble(); + double requiredProbability = random.NextDouble(); + double requiredReliability = random.NextDouble(); + double pipingProbability = random.NextDouble(); + double pipingReliability = random.NextDouble(); double pipingFactorOfSafety = random.NextDouble(); // Call - var output = new PipingSemiProbabilisticOutput(upliftFactorOfSafety, heaveFactorOfSafety, sellmeijerFactorOfSafety, pipingFactorOfSafety); + var output = new PipingSemiProbabilisticOutput( + upliftFactorOfSafety, + upliftReliability, + upliftProbability, + heaveFactorOfSafety, + heaveReliability, + heaveProbability, + sellmeijerFactorOfSafety, + sellmeijerReliability, + sellmeijerProbability, + requiredProbability, + requiredReliability, + pipingProbability, + pipingReliability, + 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); } } Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingSemiProbabilisticOutputPropertiesTest.cs =================================================================== diff -u -r746902d8ff996441c8d885dbea8bc605fcee8239 -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingSemiProbabilisticOutputPropertiesTest.cs (.../PipingSemiProbabilisticOutputPropertiesTest.cs) (revision 746902d8ff996441c8d885dbea8bc605fcee8239) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingSemiProbabilisticOutputPropertiesTest.cs (.../PipingSemiProbabilisticOutputPropertiesTest.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b) @@ -25,16 +25,36 @@ { // Setup var random = new Random(22); - double upliftFactorOfSafety = random.NextDouble(); + double upliftReliability = random.NextDouble(); + double upliftProbability = random.NextDouble(); double heaveFactorOfSafety = random.NextDouble(); + double heaveReliability = random.NextDouble(); + double heaveProbability = random.NextDouble(); double sellmeijerFactorOfSafety = random.NextDouble(); + double sellmeijerReliability = random.NextDouble(); + double sellmeijerProbability = random.NextDouble(); + double requiredProbability = random.NextDouble(); + double requiredReliability = random.NextDouble(); + double pipingProbability = random.NextDouble(); + double pipingReliability = random.NextDouble(); double pipingFactorOfSafety = random.NextDouble(); + // Call var semiProbabilisticOutput = new PipingSemiProbabilisticOutput( - upliftFactorOfSafety, - heaveFactorOfSafety, - sellmeijerFactorOfSafety, + upliftFactorOfSafety, + upliftReliability, + upliftProbability, + heaveFactorOfSafety, + heaveReliability, + heaveProbability, + sellmeijerFactorOfSafety, + sellmeijerReliability, + sellmeijerProbability, + requiredProbability, + requiredReliability, + pipingProbability, + pipingReliability, pipingFactorOfSafety); var properties = new PipingSemiProbabilisticOutputProperties @@ -44,8 +64,18 @@ // 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); } } Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TreeNodeInfos/PipingSemiProbabilisticOutputTreeNodeInfoTest.cs =================================================================== diff -u -r746902d8ff996441c8d885dbea8bc605fcee8239 -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TreeNodeInfos/PipingSemiProbabilisticOutputTreeNodeInfoTest.cs (.../PipingSemiProbabilisticOutputTreeNodeInfoTest.cs) (revision 746902d8ff996441c8d885dbea8bc605fcee8239) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TreeNodeInfos/PipingSemiProbabilisticOutputTreeNodeInfoTest.cs (.../PipingSemiProbabilisticOutputTreeNodeInfoTest.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b) @@ -51,7 +51,7 @@ public void Text_Always_ReturnsTextFromResource() { // Setup - var pipingOutput = mocks.StrictMock(0, 0, 0, 0); + var pipingOutput = mocks.StrictMock(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); mocks.ReplayAll(); @@ -68,7 +68,7 @@ public void Image_Always_ReturnsSetImage() { // Setup - var pipingOutput = mocks.StrictMock(0, 0, 0, 0); + var pipingOutput = mocks.StrictMock(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); mocks.ReplayAll(); Index: Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingSemiProbabilisticCalculationServiceTest.cs =================================================================== diff -u -r746902d8ff996441c8d885dbea8bc605fcee8239 -r37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b --- Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingSemiProbabilisticCalculationServiceTest.cs (.../PipingSemiProbabilisticCalculationServiceTest.cs) (revision 746902d8ff996441c8d885dbea8bc605fcee8239) +++ Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingSemiProbabilisticCalculationServiceTest.cs (.../PipingSemiProbabilisticCalculationServiceTest.cs) (revision 37e31f1893a9cfe14e9f05779eb6a0e12f6d7b6b) @@ -16,14 +16,21 @@ public void FailureProbabilityUplift_DifferentInputs_ReturnsExpectedValue(int norm, double factorOfSafety, double expectedResult) { // Setup + var pipingInput = new SemiProbabilisticPipingInput + { + Norm = norm + }; var calculatorResult = new PipingOutput(double.NaN, factorOfSafety, double.NaN, double.NaN, double.NaN, double.NaN); - var transformer = new PipingSemiProbabilisticCalculationService(calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, calculatorResult.SellmeijerFactorOfSafety, norm, double.NaN, double.NaN, double.NaN, double.NaN); + var calculation = AsPipingCalculation(calculatorResult, pipingInput); + + PipingSemiProbabilisticCalculationService.Calculate(calculation); + // Call - double result = transformer.FailureProbabilityUplift(); + double result = calculation.SemiProbabilisticOutput.UpliftProbability; // Assert - Assert.AreEqual(expectedResult, result, 1e-6); + Assert.AreEqual(expectedResult, result, 1e-8); } [Test] @@ -34,14 +41,21 @@ public void FailureProbabilityHeave_DifferentInputs_ReturnsExpectedValue(int norm, double factorOfSafety, double expectedResult) { // Setup + var pipingInput = new SemiProbabilisticPipingInput + { + Norm = norm + }; var calculatorResult = new PipingOutput(double.NaN, double.NaN, double.NaN, factorOfSafety, double.NaN, double.NaN); - var transformer = new PipingSemiProbabilisticCalculationService(calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, calculatorResult.SellmeijerFactorOfSafety, norm, double.NaN, double.NaN, double.NaN, double.NaN); + var calculation = AsPipingCalculation(calculatorResult, pipingInput); + + PipingSemiProbabilisticCalculationService.Calculate(calculation); + // Call - double result = transformer.FailureProbabilityHeave(); + double result = calculation.SemiProbabilisticOutput.HeaveProbability; // Assert - Assert.AreEqual(expectedResult, result, 1e-6); + Assert.AreEqual(expectedResult, result, 1e-8); } [Test] @@ -52,11 +66,18 @@ public void FailureProbabilitySellmeijer_DifferentInputs_ReturnsExpectedValue(int norm, double factorOfSafety, double expectedResult) { // Setup + var pipingInput = new SemiProbabilisticPipingInput + { + Norm = norm + }; var calculatorResult = new PipingOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, factorOfSafety); - var transformer = new PipingSemiProbabilisticCalculationService(calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, calculatorResult.SellmeijerFactorOfSafety, norm, double.NaN, double.NaN, double.NaN, double.NaN); + var calculation = AsPipingCalculation(calculatorResult, pipingInput); + + PipingSemiProbabilisticCalculationService.Calculate(calculation); + // Call - double result = transformer.FailureProbabilitySellmeijer(); + double result = calculation.SemiProbabilisticOutput.SellmeijerProbability; // Assert Assert.AreEqual(expectedResult, result, 1e-8); @@ -73,29 +94,43 @@ { // Setup var calculatorResult = new PipingOutput(double.NaN, fosUplift, double.NaN, fosHeave, double.NaN, fosSellmeijer); - var transformer = new PipingSemiProbabilisticCalculationService(calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, calculatorResult.SellmeijerFactorOfSafety, norm, double.NaN, double.NaN, double.NaN, double.NaN); + var pipingInput = new SemiProbabilisticPipingInput + { + Norm = norm + }; + var calculation = AsPipingCalculation(calculatorResult, pipingInput); + + PipingSemiProbabilisticCalculationService.Calculate(calculation); + // Call - double result = transformer.BetaCrossPiping(); + double result = calculation.SemiProbabilisticOutput.PipingReliability; // Assert Assert.AreEqual(expectedResult, result, 1e-8); } [Test] - [TestCase(30000, 1, 350, 6000, 0.24, 4.916313847)] - [TestCase(20000, 1, 350, 6000, 0.12, 4.972362935)] - [TestCase(20000, 14, 350, 6000, 0.24, 5.327479413)] - [TestCase(20000, 1, 112, 6000, 0.24, 5.050875101)] - [TestCase(20000, 1, 350, 8000, 0.24, 4.890463519)] - public void BetaCrossAllowed_DifferentInputs_ReturnsExpectedValue(int norm, double a, double b, double assessmentSectionLength, double contribution, double expectedResult) + [TestCase(30000, 6000, 24, 4.916313847)] + [TestCase(20000, 6000, 12, 4.972362935)] + [TestCase(20000, 8000, 24, 4.890463519)] + public void BetaCrossAllowed_DifferentInputs_ReturnsExpectedValue(int norm, double assessmentSectionLength, double contribution, double expectedResult) { // Setup var calculatorResult = new PipingOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN); - var transformer = new PipingSemiProbabilisticCalculationService(calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, calculatorResult.SellmeijerFactorOfSafety, norm, a, b, assessmentSectionLength, contribution); + var pipingInput = new SemiProbabilisticPipingInput + { + Norm = norm, + SectionLength = assessmentSectionLength, + Contribution = contribution + }; + var calculation = AsPipingCalculation(calculatorResult, pipingInput); + + PipingSemiProbabilisticCalculationService.Calculate(calculation); + // Call - double result = transformer.BetaCrossAllowed(); + double result = calculation.SemiProbabilisticOutput.RequiredReliability; // Assert Assert.AreEqual(expectedResult, result, 1e-8); @@ -106,20 +141,27 @@ { // Setup int norm = 30000; - double a = 1; - double b = 350; double assessmentSectionLength = 6000; - double contribution = 0.24; + double contribution = 24; double fosUplift = 1.2; double fosHeave = 0.6; double fosSellmeijer = 0.9; double expectedResult = 1.134713444; var calculatorResult = new PipingOutput(double.NaN, fosUplift, double.NaN, fosHeave, double.NaN, fosSellmeijer); - var transformer = new PipingSemiProbabilisticCalculationService(calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, calculatorResult.SellmeijerFactorOfSafety, norm, a, b, assessmentSectionLength, contribution); + var pipingInput = new SemiProbabilisticPipingInput + { + Norm = norm, + SectionLength = assessmentSectionLength, + Contribution = contribution + }; + var calculation = AsPipingCalculation(calculatorResult, pipingInput); + + PipingSemiProbabilisticCalculationService.Calculate(calculation); + // Call - double result = transformer.FactorOfSafety(); + double result = calculation.SemiProbabilisticOutput.PipingFactorOfSafety; // Assert Assert.AreEqual(expectedResult, result, 1e-8); @@ -129,26 +171,30 @@ [Combinatorial] public void FactorOfSafety_DifferentInputs_ReturnsExpectedValue( [Values(20000, 30000)] int norm, - [Values(1, 14)] double a, - [Values(112, 350)] double b, [Values(6000, 8000)] double assessmentSectionLength, - [Values(0.12, 0.24)] double contribution, + [Values(12, 24)] double contribution, [Values(1.2, 1.0)] double fosUplift, [Values(1.4, 0.6)] double fosHeave, [Values(0.9, 1.1)] double fosSellmeijer) { // Setup var calculatorResult = new PipingOutput(double.NaN, fosUplift, double.NaN, fosHeave, double.NaN, fosSellmeijer); - var transformer = new PipingSemiProbabilisticCalculationService(calculatorResult.UpliftFactorOfSafety, calculatorResult.HeaveFactorOfSafety, calculatorResult.SellmeijerFactorOfSafety, norm, a, b, assessmentSectionLength, contribution); + var pipingInput = new SemiProbabilisticPipingInput + { + Norm = norm, + SectionLength = assessmentSectionLength, + Contribution = contribution + }; - var betaAllowed = transformer.BetaCrossAllowed(); - var betaPiping = transformer.BetaCrossPiping(); + var calculation = AsPipingCalculation(calculatorResult, pipingInput); + PipingSemiProbabilisticCalculationService.Calculate(calculation); + // Call - double result = transformer.FactorOfSafety(); + double result = calculation.SemiProbabilisticOutput.PipingFactorOfSafety; // Assert - Assert.AreEqual(betaAllowed/betaPiping, result, 1e-8); + Assert.AreEqual(calculation.SemiProbabilisticOutput.RequiredReliability / calculation.SemiProbabilisticOutput.PipingReliability, result, 1e-8); } [Test] @@ -188,5 +234,13 @@ // Assert TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, "Cannot perform a semi-probabilistic calculation without output form the piping kernel."); } + + private PipingCalculation AsPipingCalculation(PipingOutput pipingOutput, SemiProbabilisticPipingInput semiProbabilisticPipingInput) + { + return new PipingCalculation(new GeneralPipingInput(), semiProbabilisticPipingInput) + { + Output = pipingOutput + }; + } } } \ No newline at end of file