Пример #1
0
        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);
            }
        }
Пример #2
0
        public void CreateForResultWithProfileAndSectionProbabilities_WithValidResult_ReturnsExpectedFailureMechanismSectionAssembly()
        {
            // Setup
            var    random                    = new Random(21);
            double profileProbability        = random.NextDouble(0.0001, 0.001);
            double sectionProbability        = random.NextDouble(0.0, 0.01);
            EInterpretationCategory category = random.NextEnumValue(new[]
            {
                EInterpretationCategory.III,
                EInterpretationCategory.II,
                EInterpretationCategory.I,
                EInterpretationCategory.Zero,
                EInterpretationCategory.IMin,
                EInterpretationCategory.IIMin,
                EInterpretationCategory.IIIMin
            });

            var result = new ResultWithProfileAndSectionProbabilities(
                new Probability(profileProbability), new Probability(sectionProbability));

            // Call
            FailureMechanismSectionAssemblyResult createdAssemblyResult = FailureMechanismSectionAssemblyResultCreator.Create(result, category);

            // Assert
            Assert.AreEqual(profileProbability, createdAssemblyResult.ProfileProbability);
            Assert.AreEqual(sectionProbability, createdAssemblyResult.SectionProbability);
            Assert.AreEqual(result.LengthEffectFactor, createdAssemblyResult.N);
            Assert.AreEqual(FailureMechanismSectionAssemblyGroupConverter.ConvertTo(category),
                            createdAssemblyResult.FailureMechanismSectionAssemblyGroup);
        }
Пример #3
0
        private static FailureMechanismSectionAssemblyResultWrapper AssembleWithUndefinedProbabilities(FailureMechanismSectionAssemblyInput input, IAssessmentResultsTranslator kernel)
        {
            EInterpretationCategory interpretationCategory = kernel.DetermineInterpretationCategoryWithoutProbabilityEstimationBoi0C1(GetAnalysisStatus(input));
            Probability             sectionProbability     = kernel.TranslateInterpretationCategoryToProbabilityBoi0C2(interpretationCategory);

            return(new FailureMechanismSectionAssemblyResultWrapper(
                       FailureMechanismSectionAssemblyResultCreator.Create(sectionProbability, interpretationCategory),
                       AssemblyMethod.BOI0C2, AssemblyMethod.BOI0C1));
        }
Пример #4
0
        public void CreateForResultWithProfileAndSectionProbabilities_ResultNull_ThrowsArgumentNullException()
        {
            // Setup
            var random = new Random(21);

            // Call
            void Call() => FailureMechanismSectionAssemblyResultCreator.Create(null, random.NextEnumValue <EInterpretationCategory>());

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("result", exception.ParamName);
        }
Пример #5
0
        public void CreateForProbabilityAndCategory_WithValidData_ReturnsExpectedFailureMechanismSectionAssembly()
        {
            // Setup
            var    random             = new Random(21);
            double sectionProbability = random.NextDouble();
            var    category           = random.NextEnumValue <EInterpretationCategory>();

            // Call
            FailureMechanismSectionAssemblyResult result = FailureMechanismSectionAssemblyResultCreator.Create(
                new Probability(sectionProbability), category);

            // Assert
            Assert.AreEqual(sectionProbability, result.ProfileProbability);
            Assert.AreEqual(sectionProbability, result.SectionProbability);
            Assert.AreEqual(1.0, result.N);
            Assert.AreEqual(FailureMechanismSectionAssemblyGroupConverter.ConvertTo(category),
                            result.FailureMechanismSectionAssemblyGroup);
        }