Esempio n. 1
0
        public void GivenScenarioRow_WhenOutputChangedAndUpdate_ThenDerivedOutputUpdated()
        {
            // Given
            var calculation = new GrassCoverErosionInwardsCalculationScenario
            {
                Output = new TestGrassCoverErosionInwardsOutput()
            };

            var row = new GrassCoverErosionInwardsScenarioRow(calculation);

            // Precondition
            ProbabilityAssessmentOutput expectedDerivedOutput = ProbabilityAssessmentOutputFactory.Create(calculation.Output.OvertoppingOutput.Reliability);

            Assert.AreEqual(expectedDerivedOutput.Probability, row.FailureProbability);

            var random = new Random(11);

            // When
            calculation.Output = new GrassCoverErosionInwardsOutput(new TestOvertoppingOutput(random.NextDouble()), null, null);
            row.Update();

            // Then
            ProbabilityAssessmentOutput newExpectedDerivedOutput = ProbabilityAssessmentOutputFactory.Create(calculation.Output.OvertoppingOutput.Reliability);

            Assert.AreEqual(newExpectedDerivedOutput.Probability, row.FailureProbability);
        }
        public void GivenScenarioRow_WhenOutputChangedAndUpdate_ThenDerivedOutputUpdated()
        {
            // Given
            var calculation = new StructuresCalculationScenario <HeightStructuresInput>
            {
                Output = new TestStructuresOutput()
            };

            var row = new HeightStructuresScenarioRow(calculation);

            // Precondition
            ProbabilityAssessmentOutput expectedDerivedOutput = ProbabilityAssessmentOutputFactory.Create(calculation.Output.Reliability);

            Assert.AreEqual(expectedDerivedOutput.Probability, row.FailureProbability);

            var random = new Random(11);

            // When
            calculation.Output = new TestStructuresOutput(random.NextDouble());
            row.Update();

            // Then
            ProbabilityAssessmentOutput newExpectedDerivedOutput = ProbabilityAssessmentOutputFactory.Create(calculation.Output.Reliability);

            Assert.AreEqual(newExpectedDerivedOutput.Probability, row.FailureProbability);
        }
        /// <summary>
        /// Gets the value for the initial failure mechanism result per failure mechanism section as a probability.
        /// </summary>
        /// <param name="sectionResult">The section result to get the initial failure mechanism result probability for.</param>
        /// <param name="calculationScenarios">All probabilistic calculation scenarios in the failure mechanism.</param>
        /// <returns>The calculated initial failure mechanism result probability; or <see cref="double.NaN"/> when there
        /// are no relevant calculations, when not all relevant calculations are performed or when the
        /// contributions of the relevant calculations don't add up to 1.</returns>
        /// <exception cref="ArgumentNullException">Thrown when any parameter is <c>null</c>.</exception>
        public static double GetInitialFailureMechanismResultProbability(this AdoptableWithProfileProbabilityFailureMechanismSectionResult sectionResult,
                                                                         IEnumerable <GrassCoverErosionInwardsCalculationScenario> calculationScenarios)
        {
            if (sectionResult == null)
            {
                throw new ArgumentNullException(nameof(sectionResult));
            }

            if (calculationScenarios == null)
            {
                throw new ArgumentNullException(nameof(calculationScenarios));
            }

            GrassCoverErosionInwardsCalculationScenario[] relevantScenarios = sectionResult.GetRelevantCalculationScenarios <GrassCoverErosionInwardsCalculationScenario>(
                calculationScenarios,
                (scenario, lineSegments) => scenario.IsDikeProfileIntersectionWithReferenceLineInSection(lineSegments))
                                                                              .ToArray();

            if (!CalculationScenarioHelper.ScenariosAreValid(relevantScenarios))
            {
                return(double.NaN);
            }

            double totalInitialFailureMechanismResult = 0;

            foreach (GrassCoverErosionInwardsCalculationScenario scenario in relevantScenarios)
            {
                ProbabilityAssessmentOutput derivedOutput = ProbabilityAssessmentOutputFactory.Create(scenario.Output.OvertoppingOutput.Reliability);
                totalInitialFailureMechanismResult += derivedOutput.Probability * (double)scenario.Contribution;
            }

            return(totalInitialFailureMechanismResult);
        }
        /// <summary>
        /// Gets the value for the initial failure mechanism result per failure mechanism section as a probability.
        /// </summary>
        /// <param name="sectionResult">The section result to get the initial failure mechanism result probability for.</param>
        /// <param name="calculationScenarios">All probabilistic calculation scenarios in the failure mechanism.</param>
        /// <typeparam name="T">The type of the structure which can be assigned to the calculation.</typeparam>
        /// <returns>The calculated initial failure mechanism result probability; or <see cref="double.NaN"/> when there
        /// are no relevant calculations, when not all relevant calculations are performed or when the
        /// contributions of the relevant calculations don't add up to 1.</returns>
        /// <exception cref="ArgumentNullException">Thrown when any parameter is <c>null</c>.</exception>
        public static double GetInitialFailureMechanismResultProbability <T>(this AdoptableFailureMechanismSectionResult sectionResult,
                                                                             IEnumerable <StructuresCalculationScenario <T> > calculationScenarios)
            where T : IStructuresCalculationInput <StructureBase>, new()
        {
            if (sectionResult == null)
            {
                throw new ArgumentNullException(nameof(sectionResult));
            }

            if (calculationScenarios == null)
            {
                throw new ArgumentNullException(nameof(calculationScenarios));
            }

            StructuresCalculationScenario <T>[] relevantScenarios = sectionResult.GetRelevantCalculationScenarios <StructuresCalculationScenario <T> >(
                calculationScenarios,
                (scenario, lineSegments) => scenario.IsStructureIntersectionWithReferenceLineInSection(lineSegments))
                                                                    .ToArray();

            if (!CalculationScenarioHelper.ScenariosAreValid(relevantScenarios))
            {
                return(double.NaN);
            }

            double totalInitialFailureMechanismResult = 0;

            foreach (StructuresCalculationScenario <T> scenario in relevantScenarios)
            {
                ProbabilityAssessmentOutput derivedOutput = ProbabilityAssessmentOutputFactory.Create(scenario.Output.Reliability);
                totalInitialFailureMechanismResult += derivedOutput.Probability * (double)scenario.Contribution;
            }

            return(totalInitialFailureMechanismResult);
        }
        public void Constructor_DifferentInputs_ExpectedValues(double reliability, double expectedResult)
        {
            // Call
            ProbabilityAssessmentOutput probabilityAssessmentOutput = ProbabilityAssessmentOutputFactory.Create(reliability);

            // Assert
            Assert.AreEqual(reliability, probabilityAssessmentOutput.Reliability, probabilityAssessmentOutput.Reliability.GetAccuracy());
            Assert.AreEqual(expectedResult, probabilityAssessmentOutput.Probability, 1e-6);
        }
        public void Constructor_ExpectedValues()
        {
            // Setup
            var    random      = new Random(5);
            double probability = random.NextDouble();
            double reliability = random.NextDouble();

            // Call
            var probabilityAssessmentOutput = new ProbabilityAssessmentOutput(probability, reliability);

            // Assert
            Assert.AreEqual(probability, probabilityAssessmentOutput.Probability);
            Assert.AreEqual(5, probabilityAssessmentOutput.Reliability.NumberOfDecimalPlaces);
            Assert.AreEqual(reliability, probabilityAssessmentOutput.Reliability, probabilityAssessmentOutput.Reliability.GetAccuracy());
        }
        public void Constructor_WithCalculationWithOutput_PropertiesFromCalculation()
        {
            // Setup
            var calculation = new StructuresCalculationScenario <HeightStructuresInput>
            {
                Output = new TestStructuresOutput()
            };

            // Call
            var row = new HeightStructuresScenarioRow(calculation);

            // Assert
            ProbabilityAssessmentOutput expectedDerivedOutput = ProbabilityAssessmentOutputFactory.Create(calculation.Output.Reliability);

            Assert.AreEqual(expectedDerivedOutput.Probability, row.FailureProbability);
        }
Esempio n. 8
0
        public void Constructor_WithCalculationWithOutput_PropertiesFromCalculation()
        {
            // Setup
            var calculation = new GrassCoverErosionInwardsCalculationScenario
            {
                Output = new TestGrassCoverErosionInwardsOutput()
            };

            // Call
            var row = new GrassCoverErosionInwardsScenarioRow(calculation);

            // Assert
            ProbabilityAssessmentOutput expectedDerivedOutput = ProbabilityAssessmentOutputFactory.Create(calculation.Output.OvertoppingOutput.Reliability);

            Assert.AreEqual(expectedDerivedOutput.Probability, row.FailureProbability);
        }
        public void GivenScenarioRow_WhenOutputSetAndUpdate_ThenDerivedOutputUpdated()
        {
            // Given
            var calculation = new StructuresCalculationScenario <HeightStructuresInput>();

            var row = new HeightStructuresScenarioRow(calculation);

            // Precondition
            Assert.IsNaN(row.FailureProbability);

            // When
            calculation.Output = new TestStructuresOutput();
            row.Update();

            // Then
            ProbabilityAssessmentOutput expectedDerivedOutput = ProbabilityAssessmentOutputFactory.Create(calculation.Output.Reliability);

            Assert.AreEqual(expectedDerivedOutput.Probability, row.FailureProbability);
        }
Esempio n. 10
0
        public void GivenScenarioRow_WhenOutputSetAndUpdate_ThenDerivedOutputUpdated()
        {
            // Given
            var calculation = new GrassCoverErosionInwardsCalculationScenario();

            var row = new GrassCoverErosionInwardsScenarioRow(calculation);

            // Precondition
            Assert.IsNaN(row.FailureProbability);

            // When
            calculation.Output = new TestGrassCoverErosionInwardsOutput();
            row.Update();

            // Then
            ProbabilityAssessmentOutput expectedDerivedOutput = ProbabilityAssessmentOutputFactory.Create(calculation.Output.OvertoppingOutput.Reliability);

            Assert.AreEqual(expectedDerivedOutput.Probability, row.FailureProbability);
        }
 private void CreateProbabilityAssessmentOutput()
 {
     probabilityAssessmentOutput = CalculationScenario.HasOutput
                                       ? ProbabilityAssessmentOutputFactory.Create(CalculationScenario.Output.OvertoppingOutput.Reliability)
                                       : null;
 }