// 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.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 while assembling.
FailureMechanismSectionAssembly AssembleSimpleAssessment(SimpleAssessmentResultType input);
///
/// Assembles the simple assessment for the given .
///
/// The to assemble for.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssembly AssembleSimpleAssessment(SimpleAssessmentValidityOnlyResultType input);
///
/// Assembles the detailed assessment based on the input parameter.
///
/// The to assemble for.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssemblyCategoryGroup AssembleDetailedAssessment(DetailedAssessmentResultType detailedAssessmentResult);
///
/// Assembles the detailed assessment based on the input parameters.
///
/// The to assemble for.
/// The probability to calculate with.
/// The input parameters used to determine the assembly categories.
/// A .
/// Thrown when is
/// an invalid .
/// Thrown when contains
/// a valid but unsupported .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssembly AssembleDetailedAssessment(DetailedAssessmentProbabilityOnlyResultType detailedAssessmentResult,
double probability,
AssemblyCategoriesInput assemblyCategoriesInput);
///
/// Assembles the detailed assessment based on the input parameters.
///
/// The to assemble for.
/// The probability to calculate with.
/// The 'N' parameter used to factor in the 'length effect'.
/// The input parameters used to determine the assembly categories.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssembly AssembleDetailedAssessment(DetailedAssessmentProbabilityOnlyResultType detailedAssessmentResult,
double probability,
double failureMechanismSectionN,
AssemblyCategoriesInput assemblyCategoriesInput);
///
/// 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 while assembling.
FailureMechanismSectionAssemblyCategoryGroup AssembleDetailedAssessment(
DetailedAssessmentResultType detailedAssessmentResultForFactorizedSignalingNorm,
DetailedAssessmentResultType detailedAssessmentResultForSignalingNorm,
DetailedAssessmentResultType detailedAssessmentResultForMechanismSpecificLowerLimitNorm,
DetailedAssessmentResultType detailedAssessmentResultForLowerLimitNorm,
DetailedAssessmentResultType detailedAssessmentResultForFactorizedLowerLimitNorm);
///
/// Assembles the tailor made assessment based on the input parameter.
///
/// The
/// to assemble for.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssemblyCategoryGroup AssembleTailorMadeAssessment(TailorMadeAssessmentResultType tailorMadeAssessmentResult);
///
/// Assembles the tailor made assessment based on the input parameters.
///
/// The
/// to assemble for.
/// The probability to calculate with.
/// The norm which has been defined on the assessment section.
/// The 'N' parameter used to factor in the 'length effect'.
/// The contribution of a failure mechanism.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType tailorMadeAssessmentResult,
double probability,
double normativeNorm,
double failureMechanismN,
double failureMechanismContribution);
///
/// Assembles the tailor made assessment based on the input parameters.
///
/// The
/// to assemble for.
/// The probability to calculate with.
/// The input parameters used to determine the assembly categories.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentProbabilityCalculationResultType tailorMadeAssessmentResult,
double probability,
AssemblyCategoriesInput assemblyCategoriesInput);
///
/// Assembles the tailor made assessment based on the input parameters.
///
/// The
/// to assemble for.
/// The probability to calculate with.
/// The 'N' parameter used to factor in the 'length effect'.
/// The input parameters used to determine the assembly categories.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentProbabilityCalculationResultType tailorMadeAssessmentResult,
double probability,
double failureMechanismSectionN,
AssemblyCategoriesInput assemblyCategoriesInput);
///
/// Assembles the tailor made assessment based on the input parameters.
///
/// The
/// to assemble for.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssemblyCategoryGroup AssembleTailorMadeAssessment(TailorMadeAssessmentCategoryGroupResultType tailorMadeAssessmentResult);
///
/// Assembles the combined assembly based on the given .
///
/// The simple assembly.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssembly AssembleCombined(FailureMechanismSectionAssembly simpleAssembly);
///
/// 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 while assembling.
FailureMechanismSectionAssembly AssembleCombined(FailureMechanismSectionAssembly simpleAssembly,
FailureMechanismSectionAssembly detailedAssembly,
FailureMechanismSectionAssembly tailorMadeAssembly);
///
/// Assembles the combined assembly based on the given .
///
/// The simple assembly.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssemblyCategoryGroup AssembleCombined(FailureMechanismSectionAssemblyCategoryGroup simpleAssembly);
///
/// Assembles the combined assembly based on the input parameters.
///
/// The simple assembly.
/// The tailor made assembly.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssemblyCategoryGroup AssembleCombined(FailureMechanismSectionAssemblyCategoryGroup simpleAssembly,
FailureMechanismSectionAssemblyCategoryGroup 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 while assembling.
FailureMechanismSectionAssemblyCategoryGroup AssembleCombined(FailureMechanismSectionAssemblyCategoryGroup simpleAssembly,
FailureMechanismSectionAssemblyCategoryGroup detailedAssembly,
FailureMechanismSectionAssemblyCategoryGroup tailorMadeAssembly);
///
/// Assembles the manual assembly based on the input parameters.
///
/// The probability to calculate with.
/// The input parameters used to determine the assembly categories.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssembly AssembleManual(double probability,
AssemblyCategoriesInput assemblyCategoriesInput);
///
/// Assembles the manual assembly based on the input parameters.
///
/// The probability to calculate with.
/// The 'N' parameter used to factor in the 'length effect'.
/// The input parameters used to determine the assembly categories.
/// A .
/// Thrown when
/// an error occurs while assembling.
FailureMechanismSectionAssembly AssembleManual(double probability,
double failureMechanismSectionN,
AssemblyCategoriesInput assemblyCategoriesInput);
}
}