Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/HeightStructuresInput.cs
===================================================================
diff -u -rf989a06ad41e4081dd1d155fafa263e94b070816 -r3dc04fc5fb21350c7b4da44fdba336aead86560e
--- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/HeightStructuresInput.cs (.../HeightStructuresInput.cs) (revision f989a06ad41e4081dd1d155fafa263e94b070816)
+++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/HeightStructuresInput.cs (.../HeightStructuresInput.cs) (revision 3dc04fc5fb21350c7b4da44fdba336aead86560e)
@@ -19,37 +19,20 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// 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 RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources;
namespace Ringtoets.HeightStructures.Data
{
///
/// Class that holds all height structures calculation specific input parameters.
///
- public class HeightStructuresInput : Observable, ICalculationInput, IUseBreakWater, IUseForeshore
+ public class HeightStructuresInput : StructuresInputBase
{
private readonly NormalDistribution levelCrestStructure;
- private readonly NormalDistribution modelFactorSuperCriticalFlow;
- private readonly LogNormalDistribution allowedLevelIncreaseStorage;
- private readonly VariationCoefficientLogNormalDistribution storageStructureArea;
- private readonly LogNormalDistribution flowWidthAtBottomProtection;
- private readonly VariationCoefficientLogNormalDistribution criticalOvertoppingDischarge;
- private readonly VariationCoefficientNormalDistribution widthFlowApertures;
- private readonly VariationCoefficientLogNormalDistribution stormDuration;
- private RoundedDouble structureNormalOrientation;
private RoundedDouble deviationWaveDirection;
- private double failureProbabilityStructureWithErosion;
- private ForeshoreProfile foreshoreProfile;
- private HeightStructure heightStructure;
///
/// Creates a new instance of the class.
@@ -62,91 +45,19 @@
StandardDeviation = (RoundedDouble) 0.05
};
- structureNormalOrientation = new RoundedDouble(2, double.NaN);
-
- modelFactorSuperCriticalFlow = new NormalDistribution(2)
- {
- Mean = (RoundedDouble) 1.1,
- StandardDeviation = (RoundedDouble) 0.03
- };
-
- 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
- };
-
- failureProbabilityStructureWithErosion = double.NaN;
-
- widthFlowApertures = new VariationCoefficientNormalDistribution(2)
- {
- Mean = (RoundedDouble) double.NaN,
- CoefficientOfVariation = (RoundedDouble) 0.05
- };
-
deviationWaveDirection = new RoundedDouble(2, double.NaN);
- stormDuration = new VariationCoefficientLogNormalDistribution(2)
- {
- Mean = (RoundedDouble) 6.0,
- CoefficientOfVariation = (RoundedDouble) 0.25
- };
-
- UpdateHeightStructureProperties();
- UpdateForeshoreProperties();
+ UpdateStructureProperties();
}
private static bool ValidProbabilityValue(double probability)
{
return !double.IsNaN(probability) && probability <= 1 && probability >= 0;
}
- #region Model factors
-
- ///
- /// 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;
- }
- }
-
- #endregion
-
#region Hydraulic data
///
- /// Gets or sets the hydraulic boundary location from which to use the assessment level.
- ///
- public HydraulicBoundaryLocation HydraulicBoundaryLocation { get; set; }
-
- ///
/// Gets or sets the deviation of the wave direction.
/// [degrees]
///
@@ -162,23 +73,6 @@
}
}
- ///
- /// Gets or sets the storm duration.
- /// [hrs]
- ///
- /// Only sets the mean.
- public VariationCoefficientLogNormalDistribution StormDuration
- {
- get
- {
- return stormDuration;
- }
- set
- {
- stormDuration.Mean = value.Mean;
- }
- }
-
#endregion
#region Schematization
@@ -200,227 +94,21 @@
}
}
- ///
- /// Gets or sets the orientation of the normal of the structure.
- /// [degrees]
- ///
- /// Thrown when the value for the orientation is not between [0, 360] degrees.
- public RoundedDouble StructureNormalOrientation
+ protected override void UpdateStructureProperties()
{
- get
+ if (Structure != null)
{
- return structureNormalOrientation;
+ StructureNormalOrientation = Structure.StructureNormalOrientation;
+ LevelCrestStructure = Structure.LevelCrestStructure;
+ FlowWidthAtBottomProtection = Structure.FlowWidthAtBottomProtection;
+ CriticalOvertoppingDischarge = Structure.CriticalOvertoppingDischarge;
+ WidthFlowApertures = Structure.WidthFlowApertures;
+ FailureProbabilityStructureWithErosion = Structure.FailureProbabilityStructureWithErosion;
+ StorageStructureArea = Structure.StorageStructureArea;
+ AllowedLevelIncreaseStorage = Structure.AllowedLevelIncreaseStorage;
}
- set
- {
- if (double.IsNaN(value))
- {
- structureNormalOrientation = value.ToPrecision(structureNormalOrientation.NumberOfDecimalPlaces);
- return;
- }
-
- RoundedDouble newOrientationValue = value.ToPrecision(structureNormalOrientation.NumberOfDecimalPlaces);
- if (newOrientationValue < 0 || newOrientationValue > 360)
- {
- throw new ArgumentOutOfRangeException("value", RingtoetsCommonDataResources.Orientation_Value_needs_to_be_between_0_and_360);
- }
- structureNormalOrientation = newOrientationValue;
- }
}
- ///
- /// Gets or sets the allowed increase of level for the storage.
- /// [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^3/s/m]
- ///
- public VariationCoefficientLogNormalDistribution CriticalOvertoppingDischarge
- {
- get
- {
- return criticalOvertoppingDischarge;
- }
- set
- {
- criticalOvertoppingDischarge.Mean = value.Mean;
- criticalOvertoppingDischarge.CoefficientOfVariation = value.CoefficientOfVariation;
- }
- }
-
- ///
- /// Gets or sets the failure probability of structure given erosion.
- /// [1/year]
- ///
- /// Thrown when the value of the probability
- /// is not between [0, 1].
- public double FailureProbabilityStructureWithErosion
- {
- get
- {
- return failureProbabilityStructureWithErosion;
- }
- set
- {
- if (!ValidProbabilityValue(value))
- {
- throw new ArgumentOutOfRangeException("value", RingtoetsCommonDataResources.FailureProbability_Value_needs_to_be_between_0_and_1);
- }
- failureProbabilityStructureWithErosion = value;
- }
- }
-
- ///
- /// Gets or sets the width of flow apertures.
- /// [m]
- ///
- public VariationCoefficientNormalDistribution WidthFlowApertures
- {
- get
- {
- return widthFlowApertures;
- }
- set
- {
- widthFlowApertures.Mean = value.Mean;
- widthFlowApertures.CoefficientOfVariation = value.CoefficientOfVariation;
- }
- }
-
- ///
- /// Gets or sets the height structure.
- ///
- public HeightStructure HeightStructure
- {
- get
- {
- return heightStructure;
- }
- set
- {
- heightStructure = value;
- UpdateHeightStructureProperties();
- }
- }
-
- ///
- /// Gets or sets the foreshore profile.
- ///
- public ForeshoreProfile ForeshoreProfile
- {
- get
- {
- return foreshoreProfile;
- }
- set
- {
- foreshoreProfile = value;
- UpdateForeshoreProperties();
- }
- }
-
- public bool UseBreakWater { get; set; }
-
- public bool UseForeshore { get; set; }
-
- public RoundedPoint2DCollection ForeshoreGeometry
- {
- get
- {
- return foreshoreProfile != null
- ? foreshoreProfile.Geometry
- : new RoundedPoint2DCollection(2, Enumerable.Empty());
- }
- }
-
- public BreakWater BreakWater { get; private set; }
-
- private void UpdateHeightStructureProperties()
- {
- if (heightStructure != null)
- {
- StructureNormalOrientation = heightStructure.StructureNormalOrientation;
- LevelCrestStructure = heightStructure.LevelCrestStructure;
- FlowWidthAtBottomProtection = heightStructure.FlowWidthAtBottomProtection;
- CriticalOvertoppingDischarge = heightStructure.CriticalOvertoppingDischarge;
- WidthFlowApertures = heightStructure.WidthFlowApertures;
- FailureProbabilityStructureWithErosion = heightStructure.FailureProbabilityStructureWithErosion;
- StorageStructureArea = heightStructure.StorageStructureArea;
- AllowedLevelIncreaseStorage = heightStructure.AllowedLevelIncreaseStorage;
- }
- }
-
- private void UpdateForeshoreProperties()
- {
- if (foreshoreProfile == null)
- {
- UseForeshore = false;
- UseBreakWater = false;
- BreakWater = GetDefaultBreakWater();
- }
- else
- {
- UseForeshore = foreshoreProfile.Geometry.Count() > 1;
- UseBreakWater = foreshoreProfile.HasBreakWater;
- BreakWater = foreshoreProfile.HasBreakWater ?
- new BreakWater(foreshoreProfile.BreakWater.Type, foreshoreProfile.BreakWater.Height) :
- GetDefaultBreakWater();
- }
- }
-
- private static BreakWater GetDefaultBreakWater()
- {
- return new BreakWater(BreakWaterType.Dam, 0.0);
- }
-
#endregion
}
}
\ No newline at end of file