Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculation.cs =================================================================== diff -u -r8047e7fd59525ed424105aaefc4ee88b9ae8def6 -r3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculation.cs (.../GrassCoverErosionInwardsCalculation.cs) (revision 8047e7fd59525ed424105aaefc4ee88b9ae8def6) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculation.cs (.../GrassCoverErosionInwardsCalculation.cs) (revision 3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c) @@ -49,10 +49,6 @@ public GrassCoverErosionInwardsCalculation(GeneralGrassCoverErosionInwardsInput generalInputParameters, NormProbabilityInput normProbabilityInput) { - if (generalInputParameters == null) - { - throw new ArgumentNullException("generalInputParameters"); - } if (normProbabilityInput == null) { throw new ArgumentNullException("normProbabilityInput"); Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanism.cs =================================================================== diff -u -r4936ea40e490dd8a3ed500e1c5a8f8390ff31491 -r3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanism.cs (.../GrassCoverErosionInwardsFailureMechanism.cs) (revision 4936ea40e490dd8a3ed500e1c5a8f8390ff31491) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsFailureMechanism.cs (.../GrassCoverErosionInwardsFailureMechanism.cs) (revision 3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c) @@ -56,19 +56,18 @@ } } - public override void AddSection(FailureMechanismSection section) + public override double Contribution { - base.AddSection(section); - - sectionResults.Add(new GrassCoverErosionInwardsFailureMechanismSectionResult(section)); + get + { + return NormProbabilityInput.Contribution; + } + set + { + NormProbabilityInput.Contribution = value; + } } - public override void ClearAllSections() - { - base.ClearAllSections(); - sectionResults.Clear(); - } - /// /// Gets the general grass cover erosion inwards calculation input parameters that apply to each calculation. /// @@ -88,5 +87,18 @@ return sectionResults; } } + + public override void AddSection(FailureMechanismSection section) + { + base.AddSection(section); + + sectionResults.Add(new GrassCoverErosionInwardsFailureMechanismSectionResult(section)); + } + + public override void ClearAllSections() + { + base.ClearAllSections(); + sectionResults.Clear(); + } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs =================================================================== diff -u -r4aa6d896646fee50b7bc6fadd9c2251b4fdd4f2e -r3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 4aa6d896646fee50b7bc6fadd9c2251b4fdd4f2e) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c) @@ -125,8 +125,8 @@ yield return new TreeNodeInfo { - Text = pipingOutput => RingtoetsCommonFormsResources.CalculationOutput_DisplayName, - Image = pipingOutput => RingtoetsCommonFormsResources.GeneralOutputIcon, + Text = output => RingtoetsCommonFormsResources.CalculationOutput_DisplayName, + Image = output => RingtoetsCommonFormsResources.GeneralOutputIcon, ContextMenuStrip = (nodeData, parentData, treeViewControl) => Gui.Get(nodeData, treeViewControl) .AddExportItem() .AddSeparator() @@ -140,8 +140,7 @@ private static ExceedanceProbabilityCalculationActivity CreateHydraRingTargetProbabilityCalculationActivity(FailureMechanismSection failureMechanismSection, string hlcdDirectory, - GrassCoverErosionInwardsCalculation calculation, - double norm, double contribution) + GrassCoverErosionInwardsCalculation calculation) { var hydraulicBoundaryLocationId = (int) calculation.InputParameters.HydraulicBoundaryLocation.Id; var sectionLength = failureMechanismSection.GetSectionLength(); @@ -168,7 +167,7 @@ ParseBreakWater(inwardsInput) ), calculation.ClearOutput, - output => { ParseHydraRingOutput(calculation, norm, contribution, output); }); + output => { ParseHydraRingOutput(calculation, output); }); } private static HydraRingBreakWater ParseBreakWater(GrassCoverErosionInwardsInput input) @@ -209,11 +208,11 @@ } } - private static void ParseHydraRingOutput(GrassCoverErosionInwardsCalculation calculation, double norm, double contribution, ExceedanceProbabilityCalculationOutput output) + private static void ParseHydraRingOutput(GrassCoverErosionInwardsCalculation calculation, ExceedanceProbabilityCalculationOutput output) { if (output != null) { - GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, norm, contribution, output.Beta); + GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, output.Beta); calculation.NotifyObservers(); } else @@ -229,10 +228,7 @@ .Select(calc => CreateHydraRingTargetProbabilityCalculationActivity( failureMechanism.Sections.First(), // TODO: Pass dike section based on cross section of calculation with reference line Path.GetDirectoryName(assessmentSection.HydraulicBoundaryDatabase.FilePath), - calc, - assessmentSection.FailureMechanismContribution.Norm, - failureMechanism.Contribution - )).ToList()); + calc)).ToList()); } private static string AllDataAvailable(IAssessmentSection assessmentSection, GrassCoverErosionInwardsFailureMechanism failureMechanism) @@ -263,8 +259,8 @@ private static bool CloseFailureMechanismResultViewForData(GrassCoverErosionInwardsFailureMechanismResultView view, object o) { var assessmentSection = o as IAssessmentSection; - var failureMechanism = o as IFailureMechanism; - var failureMechanismContext = o as IFailureMechanismContext; + var failureMechanism = o as GrassCoverErosionInwardsFailureMechanism; + var failureMechanismContext = o as IFailureMechanismContext; if (assessmentSection != null) { return assessmentSection @@ -276,7 +272,7 @@ { failureMechanism = failureMechanismContext.WrappedData; } - return failureMechanism != null && ReferenceEquals(view.Data, ((GrassCoverErosionInwardsFailureMechanism) failureMechanism).SectionResults); + return failureMechanism != null && ReferenceEquals(view.Data, failureMechanism.SectionResults); } #endregion @@ -541,9 +537,7 @@ var activity = CreateHydraRingTargetProbabilityCalculationActivity( context.FailureMechanism.Sections.First(), // TODO: Pass dike section based on cross section of calculation with reference line Path.GetDirectoryName(context.AssessmentSection.HydraulicBoundaryDatabase.FilePath), - calculation, - context.AssessmentSection.FailureMechanismContribution.Norm, - context.FailureMechanism.Contribution); + calculation); ActivityProgressDialogRunner.Run(Gui.MainWindow, activity); } Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsOutputCalculationService.cs =================================================================== diff -u -r8047e7fd59525ed424105aaefc4ee88b9ae8def6 -r3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsOutputCalculationService.cs (.../GrassCoverErosionInwardsOutputCalculationService.cs) (revision 8047e7fd59525ed424105aaefc4ee88b9ae8def6) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsOutputCalculationService.cs (.../GrassCoverErosionInwardsOutputCalculationService.cs) (revision 3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c) @@ -22,9 +22,7 @@ using System; using MathNet.Numerics.Distributions; using Ringtoets.Common.Data.Calculation; -using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.GrassCoverErosionInwards.Data; -using Ringtoets.Integration.Data; namespace Ringtoets.GrassCoverErosionInwards.Service { @@ -54,20 +52,22 @@ } /// - /// Calculates the given the , , and . + /// Calculates the given the , and . /// /// The calculation which is used. - /// The amount of contribution as a percentage [0-100] for the as part of the overall verdict. - /// The norm which has been defined on the . /// The reliability result. /// Thrown when is null. - public static void Calculate(GrassCoverErosionInwardsCalculation calculation, double norm, double contribution, double reliability) + public static void Calculate(GrassCoverErosionInwardsCalculation calculation, double reliability) { if (calculation == null) { throw new ArgumentNullException("calculation"); } - var calculator = new GrassCoverErosionInwardsOutputCalculationService(norm, contribution, calculation.NormProbabilityInput.N, reliability); + var calculator = new GrassCoverErosionInwardsOutputCalculationService( + calculation.NormProbabilityInput.Norm, + calculation.NormProbabilityInput.Contribution, + calculation.NormProbabilityInput.N, + reliability); calculator.Calculate(); @@ -89,30 +89,30 @@ private void CalculateReliability() { - requiredProbability = AllowedCrossSectionProbability(contribution, norm, lengthEffectN); - probability = AllowedCrossSectionProbability(reliability); + requiredProbability = RequiredProbability(contribution, norm, lengthEffectN); + probability = ReliabilityToProbability(reliability); } private void CalculateRequiredReliability() { - requiredReliability = RequiredReliability(requiredProbability); + requiredReliability = ProbabilityToReliability(requiredProbability); } #region Sub calculations - private static double AllowedCrossSectionProbability(double probability, double contribution, double factorN) + private static double RequiredProbability(double probability, double contribution, double lengthEffectN) { - return probability*(1/contribution)/factorN; + return probability*(1/contribution)/lengthEffectN; } - private static double AllowedCrossSectionProbability(double grassCoverErosionInwardsCrossSectionProbability) + private static double ReliabilityToProbability(double reliability) { - return new Normal().Density(grassCoverErosionInwardsCrossSectionProbability); + return Normal.CDF(0, 1, -reliability); } - private static double RequiredReliability(double allowedCrossSectionProbability) + private static double ProbabilityToReliability(double requiredProbability) { - return new Normal().InverseCumulativeDistribution(1 - allowedCrossSectionProbability); + return Normal.InvCDF(0, 1, 1 - requiredProbability); } private static double FactorOfSafety(double reliability, double requiredReliability) Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsOutputCalculationServiceTest.cs =================================================================== diff -u -rb65d24ff4389f2f38904cc15d791cf93dd358b6e -r3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsOutputCalculationServiceTest.cs (.../GrassCoverErosionInwardsOutputCalculationServiceTest.cs) (revision b65d24ff4389f2f38904cc15d791cf93dd358b6e) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsOutputCalculationServiceTest.cs (.../GrassCoverErosionInwardsOutputCalculationServiceTest.cs) (revision 3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c) @@ -34,46 +34,70 @@ [Test] public void Calculate_NullCalculation_ThrowsArgumentNullException() { - // Setup & Call - TestDelegate test = () => GrassCoverErosionInwardsOutputCalculationService.Calculate(null, double.NaN, double.NaN, double.NaN); + //Call + TestDelegate test = () => GrassCoverErosionInwardsOutputCalculationService.Calculate(null, double.NaN); // Assert var exception = Assert.Throws(test); Assert.AreEqual("calculation", exception.ParamName); } [Test] - [TestCase(30000, 100, 60000)] - [TestCase(30000, 24, 250000)] - [TestCase(20000, 100, 40000)] - [TestCase(20000, 24, 166666.6667)] - public void RequiredProbability_DifferentInputs_ReturnsExpectedValue(int norm, double contribution, double expectedResult) + [TestCase(30000, 100, 2, 60000)] + [TestCase(30000, 100, 1, 30000)] + [TestCase(30000, 24, 2, 250000)] + [TestCase(30000, 24, 1, 125000)] + [TestCase(20000, 100, 2, 40000)] + [TestCase(20000, 100, 1, 20000)] + [TestCase(20000, 24, 2, 166666.6667)] + [TestCase(20000, 24, 1, 83333.33)] + public void RequiredProbability_DifferentInputs_ReturnsExpectedValue(int norm, double contribution, int lengthEffectN, double expectedResult) { // Setup var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), - new NormProbabilityInput()); + new NormProbabilityInput()) + { + NormProbabilityInput = + { + Norm = norm, + Contribution = contribution, + N = lengthEffectN + } + }; // Call - GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, norm, contribution, double.NaN); + GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, double.NaN); // Assert RoundedDouble output = calculation.Output.RequiredProbability; Assert.AreEqual(expectedResult, output, output.GetAccuracy()); } [Test] - [TestCase(30000, 100, 4.149409984)] - [TestCase(30000, 24, 4.465183916)] - [TestCase(20000, 100, 4.055626981)] - [TestCase(20000, 24, 4.377587847)] - public void RequiredReliability_DifferentInputs_ReturnsExpectedValue(int norm, double contribution, double expectedResult) + [TestCase(30000, 100, 2, 4.149409984)] + [TestCase(30000, 100, 1, 3.987878937)] + [TestCase(30000, 24, 2, 4.465183916)] + [TestCase(30000, 24, 1, 4.314451022)] + [TestCase(20000, 100, 2, 4.055626981)] + [TestCase(20000, 100, 1, 3.890591886)] + [TestCase(20000, 24, 2, 4.377587847)] + [TestCase(20000, 24, 1, 4.2240038)] + public void RequiredReliability_DifferentInputs_ReturnsExpectedValue(int norm, double contribution, int lengthEffectN, double expectedResult) { // Setup var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), - new NormProbabilityInput()); + new NormProbabilityInput()) + { + NormProbabilityInput = + { + Norm = norm, + Contribution = contribution, + N = lengthEffectN + } + }; // Call - GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, norm, contribution, double.NaN); + GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, double.NaN); // Assert RoundedDouble output = calculation.Output.RequiredReliability; @@ -83,31 +107,31 @@ [Test] [TestCase(1.23456, 1.23456)] [TestCase(789.123, 789.123)] - public void Reliability_DifferentInputs_ReturnsExpectedValue(double probability, double expectedResult) + public void Reliability_DifferentInputs_ReturnsExpectedValue(double reliability, double expectedResult) { // Setup var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityInput()); // Call - GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, double.NaN, double.NaN, probability); + GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, reliability); // Assert RoundedDouble output = calculation.Output.Reliability; Assert.AreEqual(expectedResult, output, output.GetAccuracy()); } [Test] - [TestCase(4, 7472.1535758)] - [TestCase(5, 672621.8295310)] - public void Probability_DifferentInputs_ReturnsExpectedValue(double probability, double expectedResult) + [TestCase(4, 31574.3855346)] + [TestCase(5, 3488555.78723)] + public void Probability_DifferentInputs_ReturnsExpectedValue(double reliability, double expectedResult) { // Setup var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityInput()); // Call - GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, double.NaN, double.NaN, probability); + GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, reliability); // Assert RoundedDouble output = calculation.Output.Probability; @@ -123,14 +147,21 @@ [TestCase(20000, 100, 4.149409984, 1.023124169)] [TestCase(20000, 24, 4.107479655, 0.938297482)] [TestCase(20000, 24, 4.149409984, 0.947875892)] - public void FactorOfSafety_DifferentInputs_ReturnsExpectedValue(int norm, double contribution, double probability, double expectedResult) + public void FactorOfSafety_DifferentInputs_ReturnsExpectedValue(int norm, double contribution, double reliability, double expectedResult) { // Setup var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), - new NormProbabilityInput()); + new NormProbabilityInput()) + { + NormProbabilityInput = + { + Norm = norm, + Contribution = contribution + } + }; // Call - GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, norm, contribution, probability); + GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, reliability); // Assert RoundedDouble output = calculation.Output.FactorOfSafety; Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/HeightStructuresGuiPlugin.cs =================================================================== diff -u -r7ddd944b70d252ae493bba48ea9b31c01634082d -r3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/HeightStructuresGuiPlugin.cs (.../HeightStructuresGuiPlugin.cs) (revision 7ddd944b70d252ae493bba48ea9b31c01634082d) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Plugin/HeightStructuresGuiPlugin.cs (.../HeightStructuresGuiPlugin.cs) (revision 3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c) @@ -28,7 +28,6 @@ using Ringtoets.Common.Data; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; -using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Forms.Helpers; using Ringtoets.Common.Forms.PresentationObjects; using Ringtoets.Common.Forms.TreeNodeInfos; @@ -136,8 +135,8 @@ private static bool CloseFailureMechanismResultViewForData(HeightStructuresFailureMechanismResultView view, object o) { var assessmentSection = o as IAssessmentSection; - var failureMechanism = o as IFailureMechanism; - var failureMechanismContext = o as IFailureMechanismContext; + var failureMechanism = o as HeightStructuresFailureMechanism; + var failureMechanismContext = o as IFailureMechanismContext; if (assessmentSection != null) { return assessmentSection @@ -149,7 +148,7 @@ { failureMechanism = failureMechanismContext.WrappedData; } - return failureMechanism != null && ReferenceEquals(view.Data, ((HeightStructuresFailureMechanism) failureMechanism).SectionResults); + return failureMechanism != null && ReferenceEquals(view.Data, (failureMechanism).SectionResults); } #endregion Index: Ringtoets/Integration/src/Ringtoets.Integration.Data/AssessmentSection.cs =================================================================== diff -u -r20bb156dfc129b1602ddbcddc73c0806807f19ab -r3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c --- Ringtoets/Integration/src/Ringtoets.Integration.Data/AssessmentSection.cs (.../AssessmentSection.cs) (revision 20bb156dfc129b1602ddbcddc73c0806807f19ab) +++ Ringtoets/Integration/src/Ringtoets.Integration.Data/AssessmentSection.cs (.../AssessmentSection.cs) (revision 3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c) @@ -195,6 +195,7 @@ private set { contribution = value; + GrassCoverErosionInwards.NormProbabilityInput.Norm = value.Norm; PipingFailureMechanism.NormProbabilityInput.Norm = value.Norm; HeightStructures.NormProbabilityInput.Norm = value.Norm; } @@ -226,23 +227,6 @@ yield return TechnicalInnovation; } - private IEnumerable GetContributingFailureMechanisms() - { - yield return PipingFailureMechanism; - yield return GrassCoverErosionInwards; - yield return MacrostabilityInwards; - yield return StabilityStoneCover; - yield return WaveImpactAsphaltCover; - yield return GrassCoverErosionOutwards; - yield return GrassCoverSlipOffOutwards; - yield return HeightStructures; - yield return ClosingStructure; - yield return PipingStructure; - yield return StrengthStabilityPointConstruction; - yield return DuneErosion; - } - - public void ChangeComposition(AssessmentSectionComposition newComposition) { switch (newComposition) @@ -297,5 +281,21 @@ } Composition = newComposition; } + + private IEnumerable GetContributingFailureMechanisms() + { + yield return PipingFailureMechanism; + yield return GrassCoverErosionInwards; + yield return MacrostabilityInwards; + yield return StabilityStoneCover; + yield return WaveImpactAsphaltCover; + yield return GrassCoverErosionOutwards; + yield return GrassCoverSlipOffOutwards; + yield return HeightStructures; + yield return ClosingStructure; + yield return PipingStructure; + yield return StrengthStabilityPointConstruction; + yield return DuneErosion; + } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs =================================================================== diff -u -r8ed27cd893d87ef66f1bc4f6936407dcff4a284c -r3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 8ed27cd893d87ef66f1bc4f6936407dcff4a284c) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 3739d94e5ef665dc97d80c8c3f7bc6ef4b19d93c) @@ -32,7 +32,6 @@ using Ringtoets.Common.Data; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; -using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Forms.Helpers; using Ringtoets.Common.Forms.PresentationObjects; using Ringtoets.Common.Forms.TreeNodeInfos; @@ -268,8 +267,8 @@ private static bool CloseFailureMechanismResultViewForData(PipingFailureMechanismResultView view, object o) { var assessmentSection = o as IAssessmentSection; - var failureMechanism = o as IFailureMechanism; - var failureMechanismContext = o as IFailureMechanismContext; + var failureMechanism = o as PipingFailureMechanism; + var failureMechanismContext = o as IFailureMechanismContext; if (assessmentSection != null) { return assessmentSection @@ -281,7 +280,7 @@ { failureMechanism = failureMechanismContext.WrappedData; } - return failureMechanism != null && ReferenceEquals(view.Data, ((PipingFailureMechanism) failureMechanism).SectionResults); + return failureMechanism != null && ReferenceEquals(view.Data, failureMechanism.SectionResults); } # endregion