Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/HeightStructuresInput.cs =================================================================== diff -u -r20231cfee041a316978347564bd1fddbb41b9ffc -rb784ac8be54e88a798f4b7b7ad54ffe47b587e20 --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/HeightStructuresInput.cs (.../HeightStructuresInput.cs) (revision 20231cfee041a316978347564bd1fddbb41b9ffc) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/HeightStructuresInput.cs (.../HeightStructuresInput.cs) (revision b784ac8be54e88a798f4b7b7ad54ffe47b587e20) @@ -19,13 +19,296 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using Core.Common.Base; +using Core.Common.Base.Data; using Ringtoets.Common.Data.Calculation; +using Ringtoets.Common.Data.Probabilistics; +using Ringtoets.HydraRing.Data; namespace Ringtoets.HeightStructures.Data { /// /// Class that holds all height structures calculation specific input parameters. /// - public class HeightStructuresInput : Observable, ICalculationInput {} + public class HeightStructuresInput : Observable, ICalculationInput + { + private readonly NormalDistribution levelOfCrestOfStructure; + private readonly GeneralHeightStructuresInput generalInputParameters; + private readonly NormalDistribution modelfactorOvertoppingSuperCriticalFlow; + private readonly LognormalDistribution allowableIncreaseOfLevelForStorage; + private readonly LognormalDistribution storageStructureArea; + private readonly LognormalDistribution flowWidthAtBottomProtection; + private readonly LognormalDistribution criticalOvertoppingDischarge; + private RoundedDouble orientationOfTheNormalOfTheStructure; + private RoundedDouble failureProbabilityOfStructureGivenErosion; + private readonly NormalDistribution widthOfFlowApertures; + private RoundedDouble deviationOfTheWaveDirection; + private readonly LognormalDistribution stormDuration; + + /// + /// Creates a new instance of the class. + /// + /// General grass cover erosion inwards calculation input parameters that apply to each calculation. + /// When is null. + public HeightStructuresInput(GeneralHeightStructuresInput generalInputParameters) + { + if (generalInputParameters == null) + { + throw new ArgumentNullException("generalInputParameters"); + } + this.generalInputParameters = generalInputParameters; + + levelOfCrestOfStructure = new NormalDistribution(2) + { + StandardDeviation = new RoundedDouble(2, 0.05) + }; + + OrientationOfTheNormalOfTheStructure = new RoundedDouble(2); + + modelfactorOvertoppingSuperCriticalFlow = new NormalDistribution(2) + { + Mean = new RoundedDouble(2, 1.1), + StandardDeviation = new RoundedDouble(2, 0.03) + }; + + allowableIncreaseOfLevelForStorage = new LognormalDistribution(2) + { + StandardDeviation = new RoundedDouble(2, 0.1) + }; + + storageStructureArea = new LognormalDistribution(2) + { + StandardDeviation = new RoundedDouble(2, 0.1) + }; + + flowWidthAtBottomProtection = new LognormalDistribution(2) + { + StandardDeviation = new RoundedDouble(2, 0.05) + }; + + criticalOvertoppingDischarge = new LognormalDistribution(2) + { + StandardDeviation = new RoundedDouble(2, 0.15) + }; + + widthOfFlowApertures = new NormalDistribution(2) + { + StandardDeviation = new RoundedDouble(2, 0.05) + }; + + deviationOfTheWaveDirection = new RoundedDouble(2); + + stormDuration = new LognormalDistribution(2) + { + Mean = new RoundedDouble(2, 7.5), StandardDeviation = new RoundedDouble(2, 0.25) + }; + } + + #region Model Factors + + public NormalDistribution ModelfactorOvertoppingSuperCriticalFlow + { + get + { + return modelfactorOvertoppingSuperCriticalFlow; + } + set + { + modelfactorOvertoppingSuperCriticalFlow.Mean = value.Mean.ToPrecision(modelfactorOvertoppingSuperCriticalFlow.Mean.NumberOfDecimalPlaces); + } + } + + #endregion + + #region Hydraulic pressure + + /// + /// Gets or set the hydraulic boundary location from which to use the assessment level. + /// + public HydraulicBoundaryLocation HydraulicBoundaryLocation { get; set; } + + public RoundedDouble DeviationOfTheWaveDirection + { + get + { + return deviationOfTheWaveDirection; + } + set + { + deviationOfTheWaveDirection = value.ToPrecision(deviationOfTheWaveDirection.NumberOfDecimalPlaces); + } + } + + /// + /// Gets or sets the storm duration + /// + public LognormalDistribution StormDuration + { + get + { + return stormDuration; + } + set + { + stormDuration.Mean = value.Mean.ToPrecision(stormDuration.Mean.NumberOfDecimalPlaces); + } + } + + #endregion + + #region Schematisation + + public NormalDistribution LevelOfCrestOfStructure + { + get + { + return levelOfCrestOfStructure; + } + set + { + levelOfCrestOfStructure.Mean = value.Mean.ToPrecision(levelOfCrestOfStructure.Mean.NumberOfDecimalPlaces); + levelOfCrestOfStructure.StandardDeviation = value.StandardDeviation.ToPrecision(levelOfCrestOfStructure.StandardDeviation.NumberOfDecimalPlaces); + } + } + + public RoundedDouble OrientationOfTheNormalOfTheStructure + { + get + { + return orientationOfTheNormalOfTheStructure; + } + set + { + orientationOfTheNormalOfTheStructure = value.ToPrecision(orientationOfTheNormalOfTheStructure.NumberOfDecimalPlaces); + } + } + + public LognormalDistribution AllowableIncreaseOfLevelForStorage + { + get + { + return allowableIncreaseOfLevelForStorage; + } + set + { + allowableIncreaseOfLevelForStorage.Mean = value.Mean.ToPrecision(allowableIncreaseOfLevelForStorage.Mean.NumberOfDecimalPlaces); + allowableIncreaseOfLevelForStorage.StandardDeviation = value.StandardDeviation.ToPrecision(allowableIncreaseOfLevelForStorage.StandardDeviation.NumberOfDecimalPlaces); + } + } + + public LognormalDistribution StorageStructureArea + { + get + { + return storageStructureArea; + } + set + { + storageStructureArea.Mean = value.Mean.ToPrecision(storageStructureArea.Mean.NumberOfDecimalPlaces); + storageStructureArea.StandardDeviation = value.StandardDeviation.ToPrecision(storageStructureArea.StandardDeviation.NumberOfDecimalPlaces); + } + } + + public LognormalDistribution FlowWidthAtBottomProtection + { + get + { + return flowWidthAtBottomProtection; + } + set + { + flowWidthAtBottomProtection.Mean = value.Mean.ToPrecision(flowWidthAtBottomProtection.Mean.NumberOfDecimalPlaces); + flowWidthAtBottomProtection.StandardDeviation = value.StandardDeviation.ToPrecision(flowWidthAtBottomProtection.StandardDeviation.NumberOfDecimalPlaces); + } + } + + public LognormalDistribution CriticalOvertoppingDischarge + { + get + { + return criticalOvertoppingDischarge; + } + set + { + criticalOvertoppingDischarge.Mean = value.Mean.ToPrecision(criticalOvertoppingDischarge.Mean.NumberOfDecimalPlaces); + criticalOvertoppingDischarge.StandardDeviation = value.StandardDeviation.ToPrecision(criticalOvertoppingDischarge.StandardDeviation.NumberOfDecimalPlaces); + } + } + + public RoundedDouble FailureProbabilityOfStructureGivenErosion + { + get + { + return failureProbabilityOfStructureGivenErosion; + } + set + { + failureProbabilityOfStructureGivenErosion = value.ToPrecision(failureProbabilityOfStructureGivenErosion.NumberOfDecimalPlaces); + } + } + + public NormalDistribution WidthOfFlowApertures + { + get + { + return widthOfFlowApertures; + } + set + { + widthOfFlowApertures.Mean = value.Mean.ToPrecision(widthOfFlowApertures.Mean.NumberOfDecimalPlaces); + widthOfFlowApertures.StandardDeviation = value.StandardDeviation.ToPrecision(widthOfFlowApertures.StandardDeviation.NumberOfDecimalPlaces); + } + } + + #endregion + + #region General input parameters + + /// + /// Gets the gravitational acceleration. + /// + public RoundedDouble GravitationalAcceleration + { + get + { + return generalInputParameters.GravitationalAcceleration; + } + } + + /// + /// Gets the model factor overtopping. + /// + public LognormalDistribution ModelfactorOvertopping + { + get + { + return generalInputParameters.ModelfactorOvertopping; + } + } + + /// + /// Gets the model factor for storage volume. + /// + public LognormalDistribution ModelFactorForStorageVolume + { + get + { + return generalInputParameters.ModelFactorForStorageVolume; + } + } + + /// + /// Gets the model factor for incoming flow volume. + /// + public RoundedDouble ModelFactorForIncomingFlowVolume + { + get + { + return generalInputParameters.ModelFactorForIncomingFlowVolume; + } + } + + #endregion + } } \ No newline at end of file