/// <summary> /// Assembles the failure mechanism based on its input arguments. /// </summary> /// <param name="failureMechanismN">The length effect factor 'N' of the failure mechanism.</param> /// <param name="failureMechanismSectionAssemblyResults">A collection of <see cref="FailureMechanismSectionAssemblyResult"/>.</param> /// <param name="applyLengthEffect">Indicator whether the failure mechanism section length effect is applied.</param> /// <param name="failureMechanismAssemblyResult">The <see cref="FailureMechanismAssemblyResult"/>.</param> /// <returns>A <see cref="FailureMechanismAssemblyResultWrapper"/> containing the assembly result of the failure mechanism.</returns>> /// <exception cref="ArgumentNullException">Thrown when <paramref name="failureMechanismSectionAssemblyResults"/> /// or <paramref name="failureMechanismAssemblyResult"/> is <c>null</c>.</exception> /// <exception cref="AssemblyException">Thrown when the failure mechanism could not be successfully assembled.</exception> public static FailureMechanismAssemblyResultWrapper AssembleFailureMechanism( double failureMechanismN, IEnumerable <FailureMechanismSectionAssemblyResult> failureMechanismSectionAssemblyResults, bool applyLengthEffect, FailureMechanismAssemblyResult failureMechanismAssemblyResult) { if (failureMechanismSectionAssemblyResults == null) { throw new ArgumentNullException(nameof(failureMechanismSectionAssemblyResults)); } if (failureMechanismAssemblyResult == null) { throw new ArgumentNullException(nameof(failureMechanismAssemblyResult)); } if (failureMechanismAssemblyResult.ProbabilityResultType == FailureMechanismAssemblyProbabilityResultType.Manual) { return(new FailureMechanismAssemblyResultWrapper( failureMechanismAssemblyResult.ManualFailureMechanismAssemblyProbability, AssemblyMethod.Manual)); } try { IFailureMechanismAssemblyCalculator calculator = AssemblyToolCalculatorFactory.Instance.CreateFailureMechanismAssemblyCalculator(AssemblyToolKernelFactory.Instance); return(calculator.Assemble(failureMechanismN, failureMechanismSectionAssemblyResults, applyLengthEffect)); } catch (FailureMechanismAssemblyCalculatorException e) { throw new AssemblyException(e.Message, e); } }
public void CreateFailureMechanismAssemblyCalculator_WithKernelFactory_ReturnsCalculator() { // Setup IAssemblyToolCalculatorFactory factory = AssemblyToolCalculatorFactory.Instance; using (new AssemblyToolKernelFactoryConfig()) { // Call IFailureMechanismAssemblyCalculator calculator = factory.CreateFailureMechanismAssemblyCalculator(AssemblyToolKernelFactory.Instance); // Assert Assert.IsInstanceOf <FailureMechanismAssemblyCalculator>(calculator); } }