Index: Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismSectionResultInitialFailureMechanismResultExtensions.cs =================================================================== diff -u -rd6bb75c30692cf3fdb09af9eb59b77d10fa99ed0 -r7d8dfbaa6c5f57d6e329ea9885c499477b0188ae --- Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismSectionResultInitialFailureMechanismResultExtensions.cs (.../PipingFailureMechanismSectionResultInitialFailureMechanismResultExtensions.cs) (revision d6bb75c30692cf3fdb09af9eb59b77d10fa99ed0) +++ Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismSectionResultInitialFailureMechanismResultExtensions.cs (.../PipingFailureMechanismSectionResultInitialFailureMechanismResultExtensions.cs) (revision 7d8dfbaa6c5f57d6e329ea9885c499477b0188ae) @@ -69,14 +69,9 @@ (scenario, lineSegments) => scenario.IsSurfaceLineIntersectionWithReferenceLineInSection(lineSegments)) .ToArray(); - if (relevantScenarios.Length == 0 - || !relevantScenarios.All(s => s.HasOutput) - || Math.Abs(CalculationScenarioHelper.GetTotalContribution(relevantScenarios) - 1.0) > 1e-6) - { - return double.NaN; - } - - return relevantScenarios.Sum(scenario => StatisticsConverter.ReliabilityToProbability(getOutputFunc(scenario).Reliability) * (double) scenario.Contribution); + return ScenariosAreValid(relevantScenarios) + ? relevantScenarios.Sum(scenario => StatisticsConverter.ReliabilityToProbability(getOutputFunc(scenario).Reliability) * (double) scenario.Contribution) + : double.NaN; } /// @@ -108,9 +103,7 @@ (scenario, lineSegments) => scenario.IsSurfaceLineIntersectionWithReferenceLineInSection(lineSegments)) .ToArray(); - if (relevantScenarios.Length == 0 - || !relevantScenarios.All(s => s.HasOutput) - || Math.Abs(CalculationScenarioHelper.GetTotalContribution(relevantScenarios) - 1.0) > 1e-6) + if (!ScenariosAreValid(relevantScenarios)) { return double.NaN; } @@ -125,5 +118,13 @@ return totalInitialFailureMechanismResult; } + + private static bool ScenariosAreValid(T[] relevantScenarios) + where T : IPipingCalculationScenario + { + return relevantScenarios.Any() + && relevantScenarios.All(s => s.HasOutput) + && !(Math.Abs(CalculationScenarioHelper.GetTotalContribution(relevantScenarios) - 1.0) > 1e-6); + } } } \ No newline at end of file