// 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 System.Collections.Generic;
using System.ComponentModel;
using Ringtoets.AssemblyTool.Data;
using Ringtoets.Common.Primitives;
namespace Ringtoets.AssemblyTool.KernelWrapper.Calculators.Assembly
{
///
/// Interface representing a failure mechanism section assembly calculator.
///
public interface IFailureMechanismSectionAssemblyCalculator
{
///
/// Assembles the simple assessment for the given .
///
/// The to assemble for.
/// A .
/// Thrown when
/// an error occurs when performing the assembly.
FailureMechanismSectionAssembly AssembleSimpleAssessment(SimpleAssessmentResultType input);
///
/// Assembles the simple assessment for the given .
///
/// The to assemble for.
/// A .
/// Thrown when
/// an error occurs when performing the assembly.
FailureMechanismSectionAssembly AssembleSimpleAssessment(SimpleAssessmentValidityOnlyResultType input);
///
/// Assembles the detailed assessment based on the input parameters.
///
/// The to assemble for.
/// The calculated probability.
/// The collection of categories for this failure mechanism section.
/// A .
/// Thrown when is
/// an invalid .
/// Thrown when contains
/// a valid but unsupported .
/// Thrown when
/// an error occurs when performing the assembly.
FailureMechanismSectionAssembly AssembleDetailedAssessment(DetailedAssessmentProbabilityOnlyResultType detailedAssessmentResult,
double probability,
IEnumerable categories);
///
/// Assembles the detailed assessment based on the input parameters.
///
/// The to assemble for.
/// The calculated probability.
/// The collection of categories for this failure mechanism section.
/// The 'N' parameter used to factor in the 'length effect'.
/// A .
/// Thrown when
/// an error occurs when performing the assembly.
FailureMechanismSectionAssembly AssembleDetailedAssessment(DetailedAssessmentProbabilityOnlyResultType detailedAssessmentResult,
double probability,
IEnumerable categories,
double n);
///
/// Assembles the detailed assessment based on the input parameters.
///
/// The category Iv - IIv
/// to assemble for.
/// The category IIv - IIIv
/// to assemble for.
/// TThe category IIIv - IVv
/// to assemble for.
/// The category IVv - Vv
/// to assemble for.
/// The category Vv - VIv
/// to assemble for.
/// A .
/// Thrown when
/// an error occurs when performing the assembly.
FailureMechanismSectionAssemblyCategoryGroup AssembleDetailedAssessment(DetailedAssessmentResultType detailedAssessmentResultForFactorizedSignalingNorm,
DetailedAssessmentResultType detailedAssessmentResultForSignalingNorm,
DetailedAssessmentResultType detailedAssessmentResultForMechanismSpecificLowerLimitNorm,
DetailedAssessmentResultType detailedAssessmentResultForLowerLimitNorm,
DetailedAssessmentResultType detailedAssessmentResultForFactorizedLowerLimitNorm);
///
/// Assembles the tailor made assessment based on the input parameters.
///
/// The
/// to assemble for.
/// The calculated probability.
/// The collection of categories for this failure mechanism section.
/// A .
/// Thrown when
/// an error occurs when performing the assembly.
FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType tailorMadeAssessmentResult,
double probability,
IEnumerable categories);
///
/// Assembles the tailor made assessment based on the input parameters.
///
/// The
/// to assemble for.
/// The calculated probability.
/// The collection of categories for this failure mechanism section.
/// A .
/// Thrown when
/// an error occurs when performing the assembly.
FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentProbabilityCalculationResultType tailorMadeAssessmentResult,
double probability,
IEnumerable categories);
///
/// Assembles the tailor made assessment based on the input parameters.
///
/// The
/// to assemble for.
/// The calculated probability.
/// The collection of categories for this failure mechanism section.
/// The 'N' parameter used to factor in the 'length effect'.
/// A .
/// Thrown when
/// an error occurs when performing the assembly.
FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentProbabilityCalculationResultType tailorMadeAssessmentResult,
double probability,
IEnumerable categories,
double n);
///
/// Assembles the tailor made assessment based on the input parameters.
///
/// The
/// to assemble for.
/// A .
/// Thrown when
/// an error occurs when performing the assembly.
FailureMechanismSectionAssemblyCategoryGroup AssembleTailorMadeAssessment(FailureMechanismSectionAssemblyCategoryGroup tailorMadeAssessmentResult);
///
/// Assembles the combined assembly based on the input parameters.
///
/// The simple assembly.
/// The detailed assembly.
/// The tailor made assembly.
/// A .
/// Thrown when
/// an error occurs when performing the assembly.
FailureMechanismSectionAssembly AssembleCombined(FailureMechanismSectionAssembly simpleAssembly,
FailureMechanismSectionAssembly detailedAssembly,
FailureMechanismSectionAssembly tailorMadeAssembly);
///
/// Assembles the combined assembly based on the input parameters.
///
/// The simple assembly.
/// The detailed assembly.
/// The tailor made assembly.
/// A .
/// Thrown when
/// an error occurs when performing the assembly.
FailureMechanismSectionAssemblyCategoryGroup AssembleCombined(FailureMechanismSectionAssemblyCategoryGroup simpleAssembly,
FailureMechanismSectionAssemblyCategoryGroup detailedAssembly,
FailureMechanismSectionAssemblyCategoryGroup tailorMadeAssembly);
}
}