// Copyright (C) Stichting Deltares 2016. All rights reserved. // // This file is part of Ringtoets. // // Ringtoets is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using System.Collections.Generic; using Core.Common.Base; using Core.Common.Base.Geometry; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.GrassCoverErosionInwards.Data; using Ringtoets.HeightStructures.Data; using Ringtoets.HydraRing.Data; using Ringtoets.Integration.Data.Properties; using Ringtoets.Integration.Data.StandAlone; using Ringtoets.Piping.Data; namespace Ringtoets.Integration.Data { /// /// The section to be assessed by the user for safety in regards of various failure mechanisms. /// public sealed class AssessmentSection : Observable, IAssessmentSection { private ReferenceLine referenceLine; private FailureMechanismContribution contribution; /// /// Initializes a new instance of the class. /// /// The composition of the assessment section, e.g. what /// type of elements can be found within the assessment section. public AssessmentSection(AssessmentSectionComposition composition) { Name = Resources.AssessmentSection_DisplayName; PipingFailureMechanism = new PipingFailureMechanism(); GrassCoverErosionInwards = new GrassCoverErosionInwardsFailureMechanism(); MacrostabilityInwards = new MacrostabilityInwardsFailureMechanism(); MacrostabilityOutwards = new MacrostabilityOutwardsFailureMechanism(); Microstability = new MicrostabilityFailureMechanism(); StabilityStoneCover = new StabilityStoneCoverFailureMechanism(); WaveImpactAsphaltCover = new WaveImpactAsphaltCoverFailureMechanism(); WaterPressureAsphaltCover = new WaterPressureAsphaltCoverFailureMechanism(); GrassCoverErosionOutwards = new GrassCoverErosionOutwardsFailureMechanism(); GrassCoverSlipOffOutwards = new GrassCoverSlipOffOutwardsFailureMechanism(); GrassCoverSlipOffInwards = new GrassCoverSlipOffInwardsFailureMechanism(); HeightStructures = new HeightStructuresFailureMechanism(); ClosingStructure = new ClosingStructureFailureMechanism(); StrengthStabilityPointConstruction = new StrengthStabilityPointConstructionFailureMechanism(); StrengthStabilityLengthwiseConstruction = new StrengthStabilityLengthwiseConstructionFailureMechanism(); PipingStructure = new PipingStructureFailureMechanism(); DuneErosion = new DuneErosionFailureMechanism(); TechnicalInnovation = new TechnicalInnovationFailureMechanism(); FailureMechanismContribution = new FailureMechanismContribution(GetContributingFailureMechanisms(), 30, 30000); ChangeComposition(composition); } /// /// Gets the "Dijken en dammen - Piping" failure mechanism. /// public PipingFailureMechanism PipingFailureMechanism { get; private set; } /// /// Gets the "Dijken en dammen - Grasbekleding erosie kruin en binnentalud" failure mechanism. /// public GrassCoverErosionInwardsFailureMechanism GrassCoverErosionInwards { get; private set; } /// /// Gets the "Dijken en dammen - Macrostabiliteit binnenwaarts" failure mechanism. /// public MacrostabilityInwardsFailureMechanism MacrostabilityInwards { get; private set; } /// /// Gets the "Dijken en dammen - Macrostabiliteit buitenwaarts" failure mechanism. /// public MacrostabilityOutwardsFailureMechanism MacrostabilityOutwards { get; private set; } /// /// Gets the "Dijken en dammen - Microstabiliteit" failure mechanism. /// public MicrostabilityFailureMechanism Microstability { get; private set; } /// /// Gets the "Dijken en dammen - Stabiliteit steenzetting" failure mechanism. /// public StabilityStoneCoverFailureMechanism StabilityStoneCover { get; private set; } /// /// Gets the "Dijken en dammen - Golfklappen op asfaltbekledingen" failure mechanism. /// public WaveImpactAsphaltCoverFailureMechanism WaveImpactAsphaltCover { get; private set; } /// /// Gets the "Dijken en dammen - Wateroverdruk bij asfaltbekleding" failure mechanism. /// public WaterPressureAsphaltCoverFailureMechanism WaterPressureAsphaltCover { get; private set; } /// /// Gets the "Dijken en dammen - Grasbekleding erosie buitentalud" failure mechanism. /// public GrassCoverErosionOutwardsFailureMechanism GrassCoverErosionOutwards { get; private set; } /// /// Gets the "Dijken en dammen - Grasbekleding afschuiven buitentalud" failure mechanism. /// public GrassCoverSlipOffOutwardsFailureMechanism GrassCoverSlipOffOutwards { get; private set; } /// /// Gets the "Dijken en dammen - Grasbekleding afschuiven binnentalud" failure mechanism. /// public GrassCoverSlipOffInwardsFailureMechanism GrassCoverSlipOffInwards { get; private set; } /// /// Gets the "Kunstwerken - Hoogte kunstwerk" failure mechanism. /// public HeightStructuresFailureMechanism HeightStructures { get; private set; } /// /// Gets the "Kunstwerken - Betrouwbaarheid sluiting kunstwerk" failure mechanism. /// public ClosingStructureFailureMechanism ClosingStructure { get; private set; } /// /// Gets the "Kunstwerken - Piping bij kunstwerk" failure mechanism. /// public PipingStructureFailureMechanism PipingStructure { get; private set; } /// /// Gets the "Kunstwerken - Sterkte en stabiliteit puntconstructies" failure mechanism. /// public StrengthStabilityPointConstructionFailureMechanism StrengthStabilityPointConstruction { get; private set; } /// /// Gets the "Kunstwerken - Sterkte en stabiliteit langsconstructies" failure mechanism. /// public StrengthStabilityLengthwiseConstructionFailureMechanism StrengthStabilityLengthwiseConstruction { get; private set; } /// /// Gets the "Duinwaterkering - Duinafslag" failure mechanism. /// public DuneErosionFailureMechanism DuneErosion { get; private set; } /// /// Gets the "Technische innovaties - Technische innovaties" failure mechanism. /// public TechnicalInnovationFailureMechanism TechnicalInnovation { get; private set; } public string Name { get; set; } public string Comments { get; set; } public AssessmentSectionComposition Composition { get; private set; } public ReferenceLine ReferenceLine { get { return referenceLine; } set { referenceLine = value; PipingFailureMechanism.NormProbabilityInput.SectionLength = value == null ? double.NaN : Math2D.Length(value.Points); } } public FailureMechanismContribution FailureMechanismContribution { get { return contribution; } private set { contribution = value; PipingFailureMechanism.NormProbabilityInput.Norm = value.Norm; HeightStructures.NormProbabilityInput.Norm = value.Norm; } } public HydraulicBoundaryDatabase HydraulicBoundaryDatabase { get; set; } public long StorageId { get; set; } public IEnumerable GetFailureMechanisms() { yield return PipingFailureMechanism; yield return GrassCoverErosionInwards; yield return MacrostabilityInwards; yield return MacrostabilityOutwards; yield return Microstability; yield return StabilityStoneCover; yield return WaveImpactAsphaltCover; yield return WaterPressureAsphaltCover; yield return GrassCoverErosionOutwards; yield return GrassCoverSlipOffOutwards; yield return GrassCoverSlipOffInwards; yield return HeightStructures; yield return ClosingStructure; yield return PipingStructure; yield return StrengthStabilityPointConstruction; yield return StrengthStabilityLengthwiseConstruction; yield return DuneErosion; 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) { case AssessmentSectionComposition.Dike: PipingFailureMechanism.Contribution = 24; GrassCoverErosionInwards.Contribution = 24; MacrostabilityInwards.Contribution = 4; StabilityStoneCover.Contribution = 3; WaveImpactAsphaltCover.Contribution = 1; GrassCoverErosionOutwards.Contribution = 5; GrassCoverSlipOffOutwards.Contribution = 1; HeightStructures.Contribution = 24; ClosingStructure.Contribution = 4; PipingStructure.Contribution = 2; StrengthStabilityPointConstruction.Contribution = 2; DuneErosion.Contribution = 0; FailureMechanismContribution.UpdateContributions(GetContributingFailureMechanisms(), 30); break; case AssessmentSectionComposition.Dune: PipingFailureMechanism.Contribution = 0; GrassCoverErosionInwards.Contribution = 0; MacrostabilityInwards.Contribution = 0; StabilityStoneCover.Contribution = 0; WaveImpactAsphaltCover.Contribution = 0; GrassCoverErosionOutwards.Contribution = 0; GrassCoverSlipOffOutwards.Contribution = 0; HeightStructures.Contribution = 0; ClosingStructure.Contribution = 0; PipingStructure.Contribution = 0; StrengthStabilityPointConstruction.Contribution = 0; DuneErosion.Contribution = 70; FailureMechanismContribution.UpdateContributions(GetContributingFailureMechanisms(), 30); break; case AssessmentSectionComposition.DikeAndDune: PipingFailureMechanism.Contribution = 24; GrassCoverErosionInwards.Contribution = 24; MacrostabilityInwards.Contribution = 4; StabilityStoneCover.Contribution = 3; WaveImpactAsphaltCover.Contribution = 1; GrassCoverErosionOutwards.Contribution = 5; GrassCoverSlipOffOutwards.Contribution = 1; HeightStructures.Contribution = 24; ClosingStructure.Contribution = 4; PipingStructure.Contribution = 2; StrengthStabilityPointConstruction.Contribution = 2; DuneErosion.Contribution = 10; FailureMechanismContribution.UpdateContributions(GetContributingFailureMechanisms(), 20); break; default: throw new NotImplementedException(); } Composition = newComposition; } } }