// Copyright (C) Stichting Deltares 2017. All rights reserved. // // This file is part of Ringtoets. // // Ringtoets is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Probability; using Ringtoets.Common.Data.Structures; namespace Ringtoets.ClosingStructures.Data { /// /// Extension methods for obtaining level 2a results from output for an assessment of the /// closing structures failure mechanism. /// public static class ClosingStructuresfailureMechanismSection2aAssessmentResultExtensions { /// /// Gets the value for the detailed assessment of safety per failure mechanism section as a probability. /// /// The section result to get the assessment layer 2A for. /// The failure mechanism the calculations belong to. /// The assessment section the calculations belong to. /// The calculated assessment layer 2A; or when there is no /// calculation assigned to the section result or the calculation is not performed. /// Thrown when any parameter is null. public static double GetAssessmentLayerTwoA(this StructuresFailureMechanismSectionResult sectionResult, ClosingStructuresFailureMechanism failureMechanism, IAssessmentSection assessmentSection) { if (sectionResult == null) { throw new ArgumentNullException(nameof(sectionResult)); } if (failureMechanism == null) { throw new ArgumentNullException(nameof(failureMechanism)); } if (assessmentSection == null) { throw new ArgumentNullException(nameof(assessmentSection)); } if (sectionResult.Calculation == null || !sectionResult.Calculation.HasOutput) { return double.NaN; } ProbabilityAssessmentOutput derivedOutput = ClosingStructuresProbabilityAssessmentOutputFactory.Create(sectionResult.Calculation.Output, failureMechanism, assessmentSection); return derivedOutput.Probability; } } }