Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Data/ClosingStructuresInput.cs =================================================================== diff -u -r64fea503e6e9cacfb0ff8f22cfdd864b60c95bab -r95e3abaeaafd7cff28c902e0bd9298d0c6b7218a --- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Data/ClosingStructuresInput.cs (.../ClosingStructuresInput.cs) (revision 64fea503e6e9cacfb0ff8f22cfdd864b60c95bab) +++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Data/ClosingStructuresInput.cs (.../ClosingStructuresInput.cs) (revision 95e3abaeaafd7cff28c902e0bd9298d0c6b7218a) @@ -84,8 +84,6 @@ Mean = (RoundedDouble) double.NaN, StandardDeviation = (RoundedDouble) 0.1 }; - - UpdateStructureProperties(); } #region Structure Index: Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Data/StabilityPointStructuresInput.cs =================================================================== diff -u -rabf027a3519fdb584ae797edd62f2baaab6d6968 -r95e3abaeaafd7cff28c902e0bd9298d0c6b7218a --- Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Data/StabilityPointStructuresInput.cs (.../StabilityPointStructuresInput.cs) (revision abf027a3519fdb584ae797edd62f2baaab6d6968) +++ Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Data/StabilityPointStructuresInput.cs (.../StabilityPointStructuresInput.cs) (revision 95e3abaeaafd7cff28c902e0bd9298d0c6b7218a) @@ -20,27 +20,20 @@ // All rights reserved. using System; -using System.Linq; -using Core.Common.Base; using Core.Common.Base.Data; -using Core.Common.Base.Geometry; -using Ringtoets.Common.Data.Calculation; -using Ringtoets.Common.Data.DikeProfiles; using Ringtoets.Common.Data.Probabilistics; -using Ringtoets.HydraRing.Data; +using Ringtoets.Common.Data.Structures; using RingtoetsDataCommonProperties = Ringtoets.Common.Data.Properties.Resources; namespace Ringtoets.StabilityPointStructures.Data { /// /// Class that holds all stability point structures calculation specific input parameters. /// - public class StabilityPointStructuresInput : Observable, ICalculationInput + public class StabilityPointStructuresInput : StructuresInputBase { private readonly NormalDistribution insideWaterLevelFailureConstruction; private readonly NormalDistribution insideWaterLevel; - private readonly VariationCoefficientLogNormalDistribution stormDuration; - private readonly NormalDistribution modelFactorSuperCriticalFlow; private readonly NormalDistribution drainCoefficient; private readonly NormalDistribution levelCrestStructure; private readonly NormalDistribution thresholdHeightOpenWeir; @@ -52,34 +45,24 @@ private readonly VariationCoefficientLogNormalDistribution failureCollisionEnergy; private readonly VariationCoefficientNormalDistribution shipMass; private readonly VariationCoefficientNormalDistribution shipVelocity; - private readonly LogNormalDistribution allowedLevelIncreaseStorage; - private readonly VariationCoefficientLogNormalDistribution storageStructureArea; - private readonly LogNormalDistribution flowWidthAtBottomProtection; - private readonly VariationCoefficientLogNormalDistribution criticalOvertoppingDischarge; - private readonly VariationCoefficientNormalDistribution widthFlowApertures; private readonly NormalDistribution bankWidth; private readonly NormalDistribution flowVelocityStructureClosable; - private ForeshoreProfile foreshoreProfile; - private RoundedDouble structureNormalOrientation; private RoundedDouble volumicWeightWater; private RoundedDouble factorStormDurationOpenStructure; private RoundedDouble evaluationLevel; private RoundedDouble verticalDistance; private double failureProbabilityRepairClosure; private double probabilityCollisionSecondaryStructure; - private double failureProbabilityStructureWithErosion; /// /// Creates a new instance of . /// public StabilityPointStructuresInput() { volumicWeightWater = new RoundedDouble(2, 9.81); - structureNormalOrientation = new RoundedDouble(2, double.NaN); factorStormDurationOpenStructure = new RoundedDouble(2, double.NaN); failureProbabilityRepairClosure = double.NaN; probabilityCollisionSecondaryStructure = double.NaN; - failureProbabilityStructureWithErosion = double.NaN; evaluationLevel = new RoundedDouble(2, 0); verticalDistance = new RoundedDouble(2, double.NaN); @@ -95,18 +78,6 @@ StandardDeviation = (RoundedDouble) 0.1 }; - stormDuration = new VariationCoefficientLogNormalDistribution(2) - { - Mean = (RoundedDouble) 6.0, - CoefficientOfVariation = (RoundedDouble) 0.25 - }; - - modelFactorSuperCriticalFlow = new NormalDistribution(2) - { - Mean = (RoundedDouble) 1.1, - StandardDeviation = (RoundedDouble) 0.03 - }; - drainCoefficient = new NormalDistribution(2) { Mean = (RoundedDouble) 1.0, @@ -179,58 +150,16 @@ CoefficientOfVariation = (RoundedDouble) 0.2 }; - allowedLevelIncreaseStorage = new LogNormalDistribution(2) - { - Mean = (RoundedDouble) double.NaN, - StandardDeviation = (RoundedDouble) 0.1 - }; - - storageStructureArea = new VariationCoefficientLogNormalDistribution(2) - { - Mean = (RoundedDouble) double.NaN, - CoefficientOfVariation = (RoundedDouble) 0.1 - }; - - flowWidthAtBottomProtection = new LogNormalDistribution(2) - { - Mean = (RoundedDouble) double.NaN, - StandardDeviation = (RoundedDouble) 0.05 - }; - - criticalOvertoppingDischarge = new VariationCoefficientLogNormalDistribution(2) - { - Mean = (RoundedDouble) double.NaN, - CoefficientOfVariation = (RoundedDouble) 0.15 - }; - - widthFlowApertures = new VariationCoefficientNormalDistribution(2) - { - Mean = (RoundedDouble) double.NaN, - CoefficientOfVariation = (RoundedDouble) 0.05 - }; - bankWidth = new NormalDistribution(2) { Mean = (RoundedDouble) double.NaN, StandardDeviation = (RoundedDouble) double.NaN }; - - UpdateForeshoreProperties(); } - private static bool ValidProbabilityValue(double probability) - { - return !double.IsNaN(probability) && probability >= 0 && probability <= 1; - } - #region Structure / calculation - + /// - /// Gets or sets the stability point structure. - /// - public StabilityPointStructure StabilityPointStructure { get; set; } - - /// /// Gets or sets the type of stability point structure inflow model. /// public StabilityPointStructureInflowModelType InflowModelType { get; set; } @@ -245,82 +174,6 @@ #region Hydraulic data /// - /// Gets or sets the hydraulic boundary location from which to use the assessment level. - /// - public HydraulicBoundaryLocation HydraulicBoundaryLocation { get; set; } - - #region Foreshore profile - - /// - /// Gets or sets the foreshore profile. - /// - public ForeshoreProfile ForeshoreProfile - { - get - { - return foreshoreProfile; - } - set - { - foreshoreProfile = value; - UpdateForeshoreProperties(); - } - } - - /// - /// Gets or sets whether the needs to be taken into account. - /// - public bool UseBreakWater { get; set; } - - /// - /// Gets or sets whether the needs to be taken into account. - /// - public bool UseForeshore { get; set; } - - /// - /// Gets the geometry of the foreshore. - /// - public RoundedPoint2DCollection ForeshoreGeometry - { - get - { - return foreshoreProfile != null - ? foreshoreProfile.Geometry - : new RoundedPoint2DCollection(2, Enumerable.Empty()); - } - } - - /// - /// Gets the . - /// - public BreakWater BreakWater { get; private set; } - - private void UpdateForeshoreProperties() - { - if (foreshoreProfile == null) - { - UseForeshore = false; - UseBreakWater = false; - BreakWater = GetDefaultBreakWaterProperties(); - } - else - { - UseForeshore = foreshoreProfile.Geometry.Count() > 1; - UseBreakWater = foreshoreProfile.HasBreakWater; - BreakWater = foreshoreProfile.HasBreakWater ? - new BreakWater(foreshoreProfile.BreakWater.Type, foreshoreProfile.BreakWater.Height) : - GetDefaultBreakWaterProperties(); - } - } - - private BreakWater GetDefaultBreakWaterProperties() - { - return new BreakWater(BreakWaterType.Dam, 0.0); - } - - #endregion - - /// /// Gets or sets the volumic weight of water. /// [kN/m^3] /// @@ -370,44 +223,11 @@ } } - /// - /// Gets or sets the storm duration. - /// [h] - /// - /// Only sets the mean. - public VariationCoefficientLogNormalDistribution StormDuration - { - get - { - return stormDuration; - } - set - { - stormDuration.Mean = value.Mean; - } - } - #endregion #region Model Inputs and critical values - + /// - /// Gets or sets the model factor for super critical flow. - /// - /// Only sets the mean. - public NormalDistribution ModelFactorSuperCriticalFlow - { - get - { - return modelFactorSuperCriticalFlow; - } - set - { - modelFactorSuperCriticalFlow.Mean = value.Mean; - } - } - - /// /// Gets or sets the factor for the storm duration open structure. /// public RoundedDouble FactorStormDurationOpenStructure @@ -477,34 +297,6 @@ } /// - /// Gets or sets the orientation of the normal of the structure. - /// [degrees] - /// - /// Thrown when the value of the orientation is not between [0, 360] degrees. - public RoundedDouble StructureNormalOrientation - { - get - { - return structureNormalOrientation; - } - set - { - if (double.IsNaN(value)) - { - structureNormalOrientation = value.ToPrecision(structureNormalOrientation.NumberOfDecimalPlaces); - return; - } - - RoundedDouble newOrientation = value.ToPrecision(structureNormalOrientation.NumberOfDecimalPlaces); - if (newOrientation < 0 || newOrientation > 360) - { - throw new ArgumentOutOfRangeException("value", RingtoetsDataCommonProperties.Orientation_Value_needs_to_be_between_0_and_360); - } - structureNormalOrientation = newOrientation; - } - } - - /// /// Gets or sets the threshold height of the open weir. /// [m+NAP] /// @@ -706,112 +498,6 @@ } /// - /// Gets or sets the allowed level increase of the storage volume. - /// [m] - /// - public LogNormalDistribution AllowedLevelIncreaseStorage - { - get - { - return allowedLevelIncreaseStorage; - } - set - { - allowedLevelIncreaseStorage.Mean = value.Mean; - allowedLevelIncreaseStorage.StandardDeviation = value.StandardDeviation; - } - } - - /// - /// Gets or sets the storage structure area. - /// [m^2] - /// - public VariationCoefficientLogNormalDistribution StorageStructureArea - { - get - { - return storageStructureArea; - } - set - { - storageStructureArea.Mean = value.Mean; - storageStructureArea.CoefficientOfVariation = value.CoefficientOfVariation; - } - } - - /// - /// Gets or sets the flow width at the bottom protection. - /// [m] - /// - public LogNormalDistribution FlowWidthAtBottomProtection - { - get - { - return flowWidthAtBottomProtection; - } - set - { - flowWidthAtBottomProtection.Mean = value.Mean; - flowWidthAtBottomProtection.StandardDeviation = value.StandardDeviation; - } - } - - /// - /// Gets or sets the critical overtopping discharge. - /// [m^2/s] - /// - public VariationCoefficientLogNormalDistribution CriticalOvertoppingDischarge - { - get - { - return criticalOvertoppingDischarge; - } - set - { - criticalOvertoppingDischarge.Mean = value.Mean; - criticalOvertoppingDischarge.CoefficientOfVariation = value.CoefficientOfVariation; - } - } - - /// - /// Gets or sets the failure probability of a structure with erosion. - /// [1/year] - /// - /// Thrown when the probability is not in interval [0,1]. - public double FailureProbabilityStructureWithErosion - { - get - { - return failureProbabilityStructureWithErosion; - } - set - { - if (!ValidProbabilityValue(value)) - { - throw new ArgumentOutOfRangeException("value", RingtoetsDataCommonProperties.FailureProbability_Value_needs_to_be_between_0_and_1); - } - failureProbabilityStructureWithErosion = value; - } - } - - /// - /// Gets or sets the width of the flow apertures. - /// [m] - /// - public VariationCoefficientNormalDistribution WidthFlowApertures - { - get - { - return widthFlowApertures; - } - set - { - widthFlowApertures.Mean = value.Mean; - widthFlowApertures.CoefficientOfVariation = value.CoefficientOfVariation; - } - } - - /// /// Gets or sets the bank width. /// [m] /// @@ -861,5 +547,37 @@ } #endregion + + protected override void UpdateStructureProperties() + { + if (Structure != null) + { + AllowedLevelIncreaseStorage = Structure.AllowedLevelIncreaseStorage; + AreaFlowApertures = Structure.AreaFlowApertures; + BankWidth = Structure.BankWidth; + ConstructiveStrengthLinearLoadModel = Structure.ConstructiveStrengthLinearLoadModel; + ConstructiveStrengthQuadraticLoadModel = Structure.ConstructiveStrengthQuadraticLoadModel; + CriticalOvertoppingDischarge = Structure.CriticalOvertoppingDischarge; + EvaluationLevel = Structure.EvaluationLevel; + FailureCollisionEnergy = Structure.FailureCollisionEnergy; + FailureProbabilityRepairClosure = Structure.FailureProbabilityRepairClosure; + FlowVelocityStructureClosable = Structure.FlowVelocityStructureClosable; + FlowWidthAtBottomProtection = Structure.FlowWidthAtBottomProtection; + InflowModelType = Structure.InflowModelType; + InsideWaterLevel = Structure.InsideWaterLevel; + InsideWaterLevelFailureConstruction = Structure.InsideWaterLevelFailureConstruction; + LevelCrestStructure = Structure.LevelCrestStructure; + LevellingCount = Structure.LevellingCount; + ProbabilityCollisionSecondaryStructure = Structure.ProbabilityCollisionSecondaryStructure; + ShipMass = Structure.ShipMass; + ShipVelocity = Structure.ShipVelocity; + StabilityLinearLoadModel = Structure.StabilityLinearLoadModel; + StabilityQuadraticLoadModel = Structure.StabilityQuadraticLoadModel; + StorageStructureArea = Structure.StorageStructureArea; + ThresholdHeightOpenWeir = Structure.ThresholdHeightOpenWeir; + VerticalDistance = Structure.VerticalDistance; + WidthFlowApertures = Structure.WidthFlowApertures; + } + } } } \ No newline at end of file Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Data.Test/Ringtoets.StabilityPointStructures.Data.Test.csproj =================================================================== diff -u -r2efa0fbe22fee2482e1583a7d6f5ccfdf168f660 -r95e3abaeaafd7cff28c902e0bd9298d0c6b7218a --- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Data.Test/Ringtoets.StabilityPointStructures.Data.Test.csproj (.../Ringtoets.StabilityPointStructures.Data.Test.csproj) (revision 2efa0fbe22fee2482e1583a7d6f5ccfdf168f660) +++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Data.Test/Ringtoets.StabilityPointStructures.Data.Test.csproj (.../Ringtoets.StabilityPointStructures.Data.Test.csproj) (revision 95e3abaeaafd7cff28c902e0bd9298d0c6b7218a) @@ -91,6 +91,10 @@ {3D4B9740-8348-4434-8D77-B611FC6EE57F} Ringtoets.StabilityPointStructures.Data + + {E9AC095B-8F10-41D2-9456-4A85E3BA91AD} + Ringtoets.StabilityPointStructures.Data.TestUtil +