// 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.Collections.Generic; namespace Ringtoets.HydraRing.Calculation.Data.Input.Overtopping { /// /// Container of all data necessary for performing an overtopping calculation via Hydra-Ring. /// public class OvertoppingCalculationInput : ExceedanceProbabilityCalculationInput { private readonly HydraRingSection section; private readonly IEnumerable profilePoints; private readonly IEnumerable forelandPoints; private readonly HydraRingBreakWater breakWater; private readonly double dikeHeight; private readonly double modelFactorCriticalOvertopping; private readonly double factorFbMean; private readonly double factorFbStandardDeviation; private readonly double factorFnMean; private readonly double factorFnStandardDeviation; private readonly double modelFactorOvertopping; private readonly double criticalOvertoppingMean; private readonly double criticalOvertoppingStandardDeviation; private readonly double modelFactorFrunupStandardDeviation; private readonly double modelFactorFrunupMean; private readonly double exponentModelFactorShallowStandardDeviation; private readonly double exponentModelFactorShallowMean; /// /// Creates a new instance of the class. /// /// The id of the hydraulic station to use during the calculation. /// The section to use during the calculation. /// The dike height to use during the calculation. /// The model factor critical overtopping to use during the calculation. /// The mean of the factor Fb to use during the calculation /// The standard deviation of the factor Fb to use during the calculation. /// The mean of the factor Fn to use during the calculation. /// The standard deviation of the factor Fn to use during the calculation. /// The factor overtopping to use during the calculation. /// The mean of the critical overtopping to use during the calculation. /// The standard deviation of the critical overtopping to use during the calculation. /// The mean of the factor frunup to use during the calculation. /// The standard deviation of the factor frunup to use during the calculation. /// The mean of the exponent model factor shallow to use during the calculation. /// The standard deviation of the exponent model factor shallow to use during the calculation. /// The profile points to use during the calculation. /// The foreland points to use during the calculation. /// The break water to use during the calculation. public OvertoppingCalculationInput(long hydraulicBoundaryLocationId, HydraRingSection hydraRingSection, double hydraRingDikeHeight, double hydraRingModelFactorCriticalOvertopping, double hydraRingFactorFbMean, double hydraRingFactorFbStandardDeviation, double hydraRingFactorFnMean, double hydraRingFactorFnStandardDeviation, double hydraRingmodelFactorOvertopping, double hydraRingCriticalOvertoppingMean, double hydraRingCriticalOvertoppingStandardDeviation, double hydraRingModelFactorFrunupMean, double hydraRingModelFactorFrunupStandardDeviation, double hydraRingExponentModelFactorShallowMean, double hydraRingExponentModelFactorShallowStandardDeviation, IEnumerable hydraRingProfilePoints, IEnumerable hydraRingForelandPoints, HydraRingBreakWater hydraRingBreakWater) : base(hydraulicBoundaryLocationId) { section = hydraRingSection; dikeHeight = hydraRingDikeHeight; modelFactorCriticalOvertopping = hydraRingModelFactorCriticalOvertopping; factorFbMean = hydraRingFactorFbMean; factorFbStandardDeviation = hydraRingFactorFbStandardDeviation; factorFnMean = hydraRingFactorFnMean; factorFnStandardDeviation = hydraRingFactorFnStandardDeviation; modelFactorOvertopping = hydraRingmodelFactorOvertopping; modelFactorFrunupMean = hydraRingModelFactorFrunupMean; modelFactorFrunupStandardDeviation = hydraRingModelFactorFrunupStandardDeviation; exponentModelFactorShallowMean = hydraRingExponentModelFactorShallowMean; exponentModelFactorShallowStandardDeviation = hydraRingExponentModelFactorShallowStandardDeviation; criticalOvertoppingMean = hydraRingCriticalOvertoppingMean; criticalOvertoppingStandardDeviation = hydraRingCriticalOvertoppingStandardDeviation; profilePoints = hydraRingProfilePoints; forelandPoints = hydraRingForelandPoints; breakWater = hydraRingBreakWater; } public override HydraRingFailureMechanismType FailureMechanismType { get { return HydraRingFailureMechanismType.DikesOvertopping; } } public override int VariableId { get { return 1; } } public override HydraRingSection Section { get { return section; } } public override IEnumerable ProfilePoints { get { return profilePoints; } } public override IEnumerable ForelandsPoints { get { return forelandPoints; } } public override HydraRingBreakWater BreakWater { get { return breakWater; } } public override IEnumerable Variables { get { return GetHydraRingVariables(); } } public override int? GetSubMechanismModelId(int subMechanismId) { switch (subMechanismId) { case 102: return 94; case 103: return 95; default: return null; } } private IEnumerable GetHydraRingVariables() { // Dike height yield return new HydraRingVariable(1, HydraRingDistributionType.Deterministic, dikeHeight, HydraRingDeviationType.Standard, double.NaN, double.NaN, double.NaN); // Model factor critical overtopping yield return new HydraRingVariable(8, HydraRingDistributionType.Deterministic, modelFactorCriticalOvertopping, HydraRingDeviationType.Standard, double.NaN, double.NaN, double.NaN); // Factor Fb yield return new HydraRingVariable(10, HydraRingDistributionType.Normal, double.NaN, HydraRingDeviationType.Standard, factorFbMean, factorFbStandardDeviation, double.NaN); // Factor Fn yield return new HydraRingVariable(11, HydraRingDistributionType.Normal, double.NaN, HydraRingDeviationType.Standard, factorFnMean, factorFnStandardDeviation, double.NaN); // Model factor overtopping yield return new HydraRingVariable(12, HydraRingDistributionType.Deterministic, modelFactorOvertopping, HydraRingDeviationType.Standard, double.NaN, double.NaN, double.NaN); // Critical overtopping yield return new HydraRingVariable(17, HydraRingDistributionType.LogNormal, double.NaN, HydraRingDeviationType.Standard, criticalOvertoppingMean, criticalOvertoppingStandardDeviation, double.NaN); // Model factor Frunup yield return new HydraRingVariable(120, HydraRingDistributionType.Normal, double.NaN, HydraRingDeviationType.Standard, modelFactorFrunupMean, modelFactorFrunupStandardDeviation, double.NaN); // Exponent model factor shallow yield return new HydraRingVariable(123, HydraRingDistributionType.Normal, double.NaN, HydraRingDeviationType.Standard, exponentModelFactorShallowMean, exponentModelFactorShallowStandardDeviation, double.NaN); } } }