// 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 Core.Common.Base.Data;
using Ringtoets.Common.Data;
using Ringtoets.Common.Data.Probabilistics;
using BaseConstructionProperties = Ringtoets.Common.Data.StructureBase.ConstructionProperties;
namespace Ringtoets.StabilityPointStructures.Data
{
///
/// Definition of a stability point structure for the .
///
public class StabilityPointStructure : StructureBase
{
///
/// Initializes a new instance of the class.
///
/// The construction properties.
/// Thrown when
/// or is null , empty or consists of whitespace.
/// Thrown when is null.
public StabilityPointStructure(ConstructionProperties constructionProperties) : base(constructionProperties)
{
StorageStructureArea = new VariationCoefficientLogNormalDistribution(2)
{
Mean = constructionProperties.StorageStructureArea.Mean,
CoefficientOfVariation = constructionProperties.StorageStructureArea.CoefficientOfVariation
};
AllowedLevelIncreaseStorage = new LogNormalDistribution(2)
{
Mean = constructionProperties.AllowedLevelIncreaseStorage.Mean,
StandardDeviation = constructionProperties.AllowedLevelIncreaseStorage.StandardDeviation
};
WidthFlowApertures = new VariationCoefficientNormalDistribution(2)
{
Mean = constructionProperties.WidthFlowApertures.Mean,
CoefficientOfVariation = constructionProperties.WidthFlowApertures.CoefficientOfVariation
};
InsideWaterLevel = new NormalDistribution(2)
{
Mean = constructionProperties.InsideWaterLevel.Mean,
StandardDeviation = constructionProperties.InsideWaterLevel.StandardDeviation
};
ThresholdHeightOpenWeir = new NormalDistribution(2)
{
Mean = constructionProperties.ThresholdHeightOpenWeir.Mean,
StandardDeviation = constructionProperties.ThresholdHeightOpenWeir.StandardDeviation
};
CriticalOvertoppingDischarge = new VariationCoefficientLogNormalDistribution(2)
{
Mean = constructionProperties.CriticalOvertoppingDischarge.Mean,
CoefficientOfVariation = constructionProperties.CriticalOvertoppingDischarge.CoefficientOfVariation
};
FlowWidthAtBottomProtection = new LogNormalDistribution(2)
{
Mean = constructionProperties.FlowWidthAtBottomProtection.Mean,
StandardDeviation = constructionProperties.FlowWidthAtBottomProtection.StandardDeviation
};
ConstructiveStrengthLinearLoadModel = new VariationCoefficientLogNormalDistribution(2)
{
Mean = constructionProperties.ConstructiveStrengthLinearLoadModel.Mean,
CoefficientOfVariation = constructionProperties.ConstructiveStrengthLinearLoadModel.CoefficientOfVariation
};
ConstructiveStrengthQuadraticLoadModel = new VariationCoefficientLogNormalDistribution(2)
{
Mean = constructionProperties.ConstructiveStrengthQuadraticLoadModel.Mean,
CoefficientOfVariation = constructionProperties.ConstructiveStrengthQuadraticLoadModel.CoefficientOfVariation
};
BankWidth = new NormalDistribution(2)
{
Mean = constructionProperties.BankWidth.Mean,
StandardDeviation = constructionProperties.BankWidth.StandardDeviation
};
InsideWaterLevelFailureConstruction = new NormalDistribution(2)
{
Mean = constructionProperties.InsideWaterLevelFailureConstruction.Mean,
StandardDeviation = constructionProperties.InsideWaterLevelFailureConstruction.StandardDeviation
};
EvaluationLevel = new RoundedDouble(2, constructionProperties.EvaluationLevel);
LevelCrestStructure = new NormalDistribution(2)
{
Mean = constructionProperties.LevelCrestStructure.Mean,
StandardDeviation = constructionProperties.LevelCrestStructure.StandardDeviation
};
VerticalDistance = new RoundedDouble(2, constructionProperties.VerticalDistance);
FailureProbabilityRepairClosure = new RoundedDouble(2, constructionProperties.FailureProbabilityRepairClosure);
FailureCollisionEnergy = new VariationCoefficientLogNormalDistribution(2)
{
Mean = constructionProperties.FailureCollisionEnergy.Mean,
CoefficientOfVariation = constructionProperties.FailureCollisionEnergy.CoefficientOfVariation
};
ShipMass = new VariationCoefficientNormalDistribution(2)
{
Mean = constructionProperties.ShipMass.Mean,
CoefficientOfVariation = constructionProperties.ShipMass.CoefficientOfVariation
};
ShipVelocity = new VariationCoefficientNormalDistribution(2)
{
Mean = constructionProperties.ShipVelocity.Mean,
CoefficientOfVariation = constructionProperties.ShipVelocity.CoefficientOfVariation
};
LevellingCount = constructionProperties.LevellingCount;
ProbabilityCollisionSecondaryStructure = new RoundedDouble(2, constructionProperties.ProbabilityCollisionSecondaryStructure);
FlowVelocityStructureClosable = new NormalDistribution(2)
{
Mean = constructionProperties.FlowVelocityStructureClosable.Mean,
StandardDeviation = constructionProperties.FlowVelocityStructureClosable.StandardDeviation
};
StabilityLinearLoadModel = new VariationCoefficientLogNormalDistribution(2)
{
Mean = constructionProperties.StabilityLinearLoadModel.Mean,
CoefficientOfVariation = constructionProperties.StabilityLinearLoadModel.CoefficientOfVariation
};
StabilityQuadraticLoadModel = new VariationCoefficientLogNormalDistribution(2)
{
Mean = constructionProperties.StabilityQuadraticLoadModel.Mean,
CoefficientOfVariation = constructionProperties.StabilityQuadraticLoadModel.CoefficientOfVariation
};
AreaFlowApertures = new LogNormalDistribution(2)
{
Mean = constructionProperties.AreaFlowApertures.Mean,
StandardDeviation = constructionProperties.AreaFlowApertures.StandardDeviation
};
InflowModelType = constructionProperties.InflowModelType;
}
///
/// Gets the storage area of the stability point structure.
/// [m^2]
///
public VariationCoefficientLogNormalDistribution StorageStructureArea { get; private set; }
///
/// Gets the allowed increase of level for storage of the stability point structure.
/// [m]
///
public LogNormalDistribution AllowedLevelIncreaseStorage { get; private set; }
///
/// Gets the width of the flow apertures of the stability point structure.
/// [m]
///
public VariationCoefficientNormalDistribution WidthFlowApertures { get; private set; }
///
/// Gets the interior water level of the stability point structure.
/// [m+NAP]
///
public NormalDistribution InsideWaterLevel { get; private set; }
///
/// Gets the threshold height of the opened stability point structure.
/// [m+NAP]
///
public NormalDistribution ThresholdHeightOpenWeir { get; private set; }
///
/// Gets the critical overtopping discharge of the stability point structure.
/// [m^3/s/m]
///
public VariationCoefficientLogNormalDistribution CriticalOvertoppingDischarge { get; private set; }
///
/// Gets the flow width of the stability point structure at the bottom protection.
/// [m]
///
public LogNormalDistribution FlowWidthAtBottomProtection { get; private set; }
///
/// Gets the constructive strength of the linear load model of the stability point structure.
/// [kN/m^2]
///
public VariationCoefficientLogNormalDistribution ConstructiveStrengthLinearLoadModel { get; private set; }
///
/// Gets the constructive strength of the quadratic load model of the stability point structure.
/// [kN/m]
///
public VariationCoefficientLogNormalDistribution ConstructiveStrengthQuadraticLoadModel { get; private set; }
///
/// Gets the bank width of the stability point structure.
/// [m]
///
public NormalDistribution BankWidth { get; private set; }
///
/// Gets the inside water level failure construction of the stability point structure.
/// [m+NAP]
///
public NormalDistribution InsideWaterLevelFailureConstruction { get; private set; }
///
/// Gets the evaluation level of the stability point structure.
/// [m+NAP]
///
public RoundedDouble EvaluationLevel { get; private set; }
///
/// Gets the crest level of the stability point structure.
/// [m+NAP]
///
public NormalDistribution LevelCrestStructure { get; private set; }
///
/// Gets the vertical distance of the stability point structure.
/// [m]
///
public RoundedDouble VerticalDistance { get; private set; }
///
/// Gets the probability of failing to repair a failed closure of the stability point structure.
/// [1/year]
///
public RoundedDouble FailureProbabilityRepairClosure { get; private set; }
///
/// Gets the failure collision energy of the stability point structure.
/// [kNm]
///
public VariationCoefficientLogNormalDistribution FailureCollisionEnergy { get; private set; }
///
/// Gets the mass of the ship.
/// [ton]
///
public VariationCoefficientNormalDistribution ShipMass { get; private set; }
///
/// Gets the velocity of the ship.
/// [m/s]
///
public VariationCoefficientNormalDistribution ShipVelocity { get; private set; }
///
/// Gets the levelling count.
/// [1/year]
///
public int LevellingCount { get; private set; }
///
/// Gets the probability of a secondary collision on the structure.
/// [1/year/levelling]
///
public RoundedDouble ProbabilityCollisionSecondaryStructure { get; private set; }
///
/// Gets the maximum flow velocity at which the structure is closable.
/// [m/s]
///
public NormalDistribution FlowVelocityStructureClosable { get; private set; }
///
/// Gets the stability properties of the linear load model of the stability point structure.
/// [kN/m^2]
///
public VariationCoefficientLogNormalDistribution StabilityLinearLoadModel { get; private set; }
///
/// Gets the stability properties of the quadratic load model of the stability point structure.
/// [kN/m]
///
public VariationCoefficientLogNormalDistribution StabilityQuadraticLoadModel { get; private set; }
///
/// Gets the area of the flow aperture of the stability point structure.
/// [m^2]
///
public LogNormalDistribution AreaFlowApertures { get; private set; }
///
/// Gets the type of stability point structure inflow model.
///
public StabilityPointStructureInflowModelType InflowModelType { get; private set; }
///
/// Class holding the various construction parameters for .
///
public new class ConstructionProperties : BaseConstructionProperties
{
///
/// Initializes a new instance of the class.
///
public ConstructionProperties()
{
StorageStructureArea = new VariationCoefficientLogNormalDistribution(2);
AllowedLevelIncreaseStorage = new LogNormalDistribution(2);
WidthFlowApertures = new VariationCoefficientNormalDistribution(2);
InsideWaterLevel = new NormalDistribution(2);
ThresholdHeightOpenWeir = new NormalDistribution(2);
CriticalOvertoppingDischarge = new VariationCoefficientLogNormalDistribution(2);
FlowWidthAtBottomProtection = new LogNormalDistribution(2);
ConstructiveStrengthLinearLoadModel = new VariationCoefficientLogNormalDistribution(2);
ConstructiveStrengthQuadraticLoadModel = new VariationCoefficientLogNormalDistribution(2);
BankWidth = new NormalDistribution(2);
InsideWaterLevelFailureConstruction = new NormalDistribution(2);
LevelCrestStructure = new NormalDistribution(2);
FailureCollisionEnergy = new VariationCoefficientLogNormalDistribution(2);
ShipMass = new VariationCoefficientNormalDistribution(2);
ShipVelocity = new VariationCoefficientNormalDistribution(2);
FlowVelocityStructureClosable = new NormalDistribution(2);
StabilityLinearLoadModel = new VariationCoefficientLogNormalDistribution(2);
StabilityQuadraticLoadModel = new VariationCoefficientLogNormalDistribution(2);
AreaFlowApertures = new LogNormalDistribution(2);
}
///
/// Gets the storage area of the stability point structure.
/// [m^2]
///
public VariationCoefficientLogNormalDistribution StorageStructureArea { get; private set; }
///
/// Gets the allowed increase of level for storage of the stability point structure.
/// [m]
///
public LogNormalDistribution AllowedLevelIncreaseStorage { get; private set; }
///
/// Gets the width of the flow apertures of the stability point structure.
/// [m]
///
public VariationCoefficientNormalDistribution WidthFlowApertures { get; private set; }
///
/// Gets the interior water level of the stability point structure.
/// [m+NAP]
///
public NormalDistribution InsideWaterLevel { get; private set; }
///
/// Gets the threshold height of the opened stability point structure.
/// [m+NAP]
///
public NormalDistribution ThresholdHeightOpenWeir { get; private set; }
///
/// Gets the critical overtopping discharge of the stability point structure.
/// [m^3/s/m]
///
public VariationCoefficientLogNormalDistribution CriticalOvertoppingDischarge { get; private set; }
///
/// Gets the flow width of the stability point structure at the bottom protection.
/// [m]
///
public LogNormalDistribution FlowWidthAtBottomProtection { get; private set; }
///
/// Gets the constructive strength of the linear load model of the stability point structure.
/// [kN/m^2]
///
public VariationCoefficientLogNormalDistribution ConstructiveStrengthLinearLoadModel { get; private set; }
///
/// Gets the constructive strength of the quadratic load model of the stability point structure.
/// [kN/m]
///
public VariationCoefficientLogNormalDistribution ConstructiveStrengthQuadraticLoadModel { get; private set; }
///
/// Gets the bank width of the stability point structure.
/// [m]
///
public NormalDistribution BankWidth { get; private set; }
///
/// Gets the inside water level failure construction of the stability point structure.
/// [m+NAP]
///
public NormalDistribution InsideWaterLevelFailureConstruction { get; private set; }
///
/// Gets the evaluation level of the stability point structure.
/// [m+NAP]
///
public double EvaluationLevel { get; set; }
///
/// Gets the crest level of the stability point structure.
/// [m+NAP]
///
public NormalDistribution LevelCrestStructure { get; private set; }
///
/// Gets the vertical distance of the stability point structure.
/// [m]
///
public double VerticalDistance { get; set; }
///
/// Gets the probability of failing to repair a failed closure of the stability point structure.
/// [1/year]
///
public double FailureProbabilityRepairClosure { get; set; }
///
/// Gets the failure collision energy of the stability point structure.
/// [kNm]
///
public VariationCoefficientLogNormalDistribution FailureCollisionEnergy { get; private set; }
///
/// Gets the mass of the ship.
/// [tons]
///
public VariationCoefficientNormalDistribution ShipMass { get; private set; }
///
/// Gets the velocity of the ship.
/// [m/s]
///
public VariationCoefficientNormalDistribution ShipVelocity { get; private set; }
///
/// Gets the levelling count.
/// [1/year]
///
public int LevellingCount { get; set; }
///
/// Gets the probability of a secondary collision on the structure.
/// [1/year/levelling]
///
public double ProbabilityCollisionSecondaryStructure { get; set; }
///
/// Gets the maximum flow velocity at which the structure is closable.
/// [m/s]
///
public NormalDistribution FlowVelocityStructureClosable { get; private set; }
///
/// Gets the stability properties of the linear load model of the stability point structure.
/// [kN/m^2]
///
public VariationCoefficientLogNormalDistribution StabilityLinearLoadModel { get; private set; }
///
/// Gets the stability properties of the quadratic load model of the stability point structure.
/// [kN/m]
///
public VariationCoefficientLogNormalDistribution StabilityQuadraticLoadModel { get; private set; }
///
/// Gets the area of the flow aperture of the stability point structure.
/// [m^2]
///
public LogNormalDistribution AreaFlowApertures { get; private set; }
///
/// Gets the type of stability point structure inflow model.
///
public StabilityPointStructureInflowModelType InflowModelType { get; set; }
}
}
}