public FailureMechanismAssemblyResultWrapper Assemble(double failureMechanismN, IEnumerable <RiskeerFailureMechanismSectionAssemblyResult> sectionAssemblyResults, bool applySectionLengthEffect) { if (sectionAssemblyResults == null) { throw new ArgumentNullException(nameof(sectionAssemblyResults)); } try { IFailureMechanismResultAssembler kernel = factory.CreateFailureMechanismAssemblyKernel(); FailureMechanismAssemblyResult result; if (applySectionLengthEffect) { result = kernel.CalculateFailureMechanismFailureProbabilityWithLengthEffectBoi1A2( failureMechanismN, sectionAssemblyResults.Select(FailureMechanismAssemblyCalculatorInputCreator.CreateResultWithProfileAndSectionProbabilities), false); return(new FailureMechanismAssemblyResultWrapper(result.Probability, AssemblyMethod.BOI1A2)); } result = kernel.CalculateFailureMechanismFailureProbabilityBoi1A1( failureMechanismN, sectionAssemblyResults.Select(sr => AssemblyCalculatorInputCreator.CreateProbability(sr.SectionProbability)), false); return(new FailureMechanismAssemblyResultWrapper(result.Probability, AssemblyMethod.BOI1A1)); } catch (AssemblyException e) { throw new FailureMechanismAssemblyCalculatorException(AssemblyErrorMessageCreator.CreateErrorMessage(e.Errors), e); } catch (Exception e) { throw new FailureMechanismAssemblyCalculatorException(AssemblyErrorMessageCreator.CreateGenericErrorMessage(), e); } }
public FailureMechanismSectionAssemblyResultWrapper AssembleFailureMechanismSection(FailureMechanismSectionAssemblyInput input) { if (input == null) { throw new ArgumentNullException(nameof(input)); } try { IAssessmentResultsTranslator kernel = factory.CreateFailureMechanismSectionAssemblyKernel(); if (!IsProbabilityDefined(input)) { return(AssembleWithUndefinedProbabilities(input, kernel)); } Probability sectionProbability = kernel.DetermineRepresentativeProbabilityBoi0A1( input.FurtherAnalysisType != FailureMechanismSectionResultFurtherAnalysisType.NotNecessary, AssemblyCalculatorInputCreator.CreateProbability(input.InitialSectionProbability), AssemblyCalculatorInputCreator.CreateProbability(input.RefinedSectionProbability)); EInterpretationCategory interpretationCategory = AssembleInterpretationCategory(input, kernel, sectionProbability); return(new FailureMechanismSectionAssemblyResultWrapper( FailureMechanismSectionAssemblyResultCreator.Create(sectionProbability, interpretationCategory), AssemblyMethod.BOI0A1, AssemblyMethod.BOI0B1)); } catch (AssemblyException e) { throw new FailureMechanismSectionAssemblyCalculatorException(AssemblyErrorMessageCreator.CreateErrorMessage(e.Errors), e); } catch (Exception e) { throw new FailureMechanismSectionAssemblyCalculatorException(AssemblyErrorMessageCreator.CreateGenericErrorMessage(), e); } }
private EInterpretationCategory AssembleInterpretationCategory(FailureMechanismSectionAssemblyInput input, IAssessmentResultsTranslator kernel, Probability probability) { ICategoryLimitsCalculator assemblyGroupsKernel = factory.CreateAssemblyGroupsKernel(); CategoriesList <InterpretationCategory> interpretationCategories = assemblyGroupsKernel.CalculateInterpretationCategoryLimitsBoi01( new AssessmentSection(AssemblyCalculatorInputCreator.CreateProbability(input.SignalFloodingProbability), AssemblyCalculatorInputCreator.CreateProbability(input.MaximumAllowableFloodingProbability))); return(kernel.DetermineInterpretationCategoryFromFailureMechanismSectionProbabilityBoi0B1( probability, interpretationCategories)); }
public void CreateProbability_Always_ReturnsProbability() { // Setup var random = new Random(21); double value = random.NextDouble(); // Call Probability probability = AssemblyCalculatorInputCreator.CreateProbability(value); // Assert Assert.AreEqual(value, probability); }
public IEnumerable <AssessmentSectionAssemblyGroupBoundaries> CalculateAssessmentSectionAssemblyGroupBoundaries(double signalFloodingProbability, double maximumAllowableFloodingProbability) { try { ICategoryLimitsCalculator kernel = factory.CreateAssemblyGroupsKernel(); CategoriesList <AssessmentSectionCategory> assessmentSectionCategories = kernel.CalculateAssessmentSectionCategoryLimitsBoi21( new AssessmentSection(AssemblyCalculatorInputCreator.CreateProbability(signalFloodingProbability), AssemblyCalculatorInputCreator.CreateProbability(maximumAllowableFloodingProbability))); return(AssessmentSectionAssemblyGroupCreator.CreateAssessmentSectionAssemblyGroupBoundaries(assessmentSectionCategories)); } catch (AssemblyException e) { throw new AssessmentSectionAssemblyGroupBoundariesCalculatorException(AssemblyErrorMessageCreator.CreateErrorMessage(e.Errors), e); } catch (Exception e) { throw new AssessmentSectionAssemblyGroupBoundariesCalculatorException(AssemblyErrorMessageCreator.CreateGenericErrorMessage(), e); } }
public AssessmentSectionAssemblyResultWrapper AssembleAssessmentSection(IEnumerable <double> failureMechanismProbabilities, double maximumAllowableFloodingProbability, double signalFloodingProbability) { if (failureMechanismProbabilities == null) { throw new ArgumentNullException(nameof(failureMechanismProbabilities)); } try { ICategoryLimitsCalculator categoryLimitsKernel = factory.CreateAssemblyGroupsKernel(); CategoriesList <AssessmentSectionCategory> assessmentSectionCategories = categoryLimitsKernel.CalculateAssessmentSectionCategoryLimitsBoi21( new AssessmentSection(AssemblyCalculatorInputCreator.CreateProbability(signalFloodingProbability), AssemblyCalculatorInputCreator.CreateProbability(maximumAllowableFloodingProbability))); IAssessmentGradeAssembler assessmentSectionAssemblyKernel = factory.CreateAssessmentSectionAssemblyKernel(); IEnumerable <Probability> probabilities = failureMechanismProbabilities.Select(AssemblyCalculatorInputCreator.CreateProbability) .ToArray(); Probability assemblyProbability = assessmentSectionAssemblyKernel.CalculateAssessmentSectionFailureProbabilityBoi2A1(probabilities, false); EAssessmentGrade assemblyCategory = assessmentSectionAssemblyKernel.DetermineAssessmentGradeBoi2B1(assemblyProbability, assessmentSectionCategories); return(new AssessmentSectionAssemblyResultWrapper( new AssessmentSectionAssemblyResult(assemblyProbability, AssessmentSectionAssemblyGroupCreator.CreateAssessmentSectionAssemblyGroup(assemblyCategory)), AssemblyMethod.BOI2A1, AssemblyMethod.BOI2B1)); } catch (AssemblyException e) { throw new AssessmentSectionAssemblyCalculatorException(AssemblyErrorMessageCreator.CreateErrorMessage(e.Errors), e); } catch (Exception e) { throw new AssessmentSectionAssemblyCalculatorException(AssemblyErrorMessageCreator.CreateGenericErrorMessage(), e); } }