// Copyright (C) Stichting Deltares 2017. 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 NormalDistribution(2) { Mean = constructionProperties.WidthFlowApertures.Mean, StandardDeviation = constructionProperties.WidthFlowApertures.StandardDeviation }; 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 = 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 = constructionProperties.ProbabilityCollisionSecondaryStructure; FlowVelocityStructureClosable = new VariationCoefficientNormalDistribution(2) { Mean = constructionProperties.FlowVelocityStructureClosable.Mean, CoefficientOfVariation = (RoundedDouble) 0.2 }; 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; } /// /// Gets the allowed increase of level for storage of the stability point structure. /// [m] /// public LogNormalDistribution AllowedLevelIncreaseStorage { get; } /// /// Gets the width of the flow apertures of the stability point structure. /// [m] /// public NormalDistribution WidthFlowApertures { get; } /// /// Gets the interior water level of the stability point structure. /// [m+NAP] /// public NormalDistribution InsideWaterLevel { get; } /// /// Gets the threshold height of the opened stability point structure. /// [m+NAP] /// public NormalDistribution ThresholdHeightOpenWeir { get; } /// /// Gets the critical overtopping discharge per meter of the stability point structure. /// [m^3/s/m] /// public VariationCoefficientLogNormalDistribution CriticalOvertoppingDischarge { get; } /// /// Gets the flow width of the stability point structure at the bottom protection. /// [m] /// public LogNormalDistribution FlowWidthAtBottomProtection { get; } /// /// Gets the constructive strength of the linear load model of the stability point structure. /// [kN/m^2] /// public VariationCoefficientLogNormalDistribution ConstructiveStrengthLinearLoadModel { get; } /// /// Gets the constructive strength of the quadratic load model of the stability point structure. /// [kN/m] /// public VariationCoefficientLogNormalDistribution ConstructiveStrengthQuadraticLoadModel { get; } /// /// Gets the bank width of the stability point structure. /// [m] /// public NormalDistribution BankWidth { get; } /// /// Gets the inside water level failure construction of the stability point structure. /// [m+NAP] /// public NormalDistribution InsideWaterLevelFailureConstruction { get; } /// /// 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; } /// /// 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 double FailureProbabilityRepairClosure { get; private set; } /// /// Gets the failure collision energy of the stability point structure. /// [kN m] /// public VariationCoefficientLogNormalDistribution FailureCollisionEnergy { get; } /// /// Gets the mass of the ship. /// [ton] /// public VariationCoefficientNormalDistribution ShipMass { get; } /// /// Gets the velocity of the ship. /// [m/s] /// public VariationCoefficientNormalDistribution ShipVelocity { get; } /// /// Gets the levelling count. /// [1/year] /// public int LevellingCount { get; private set; } /// /// Gets the probability of a secondary collision on the structure per levelling. /// [1/year/levelling] /// public double ProbabilityCollisionSecondaryStructure { get; private set; } /// /// Gets the maximum flow velocity at which the structure is closable. /// [m/s] /// public VariationCoefficientNormalDistribution FlowVelocityStructureClosable { get; } /// /// Gets the stability properties of the linear load model of the stability point structure. /// [kN/m^2] /// public VariationCoefficientLogNormalDistribution StabilityLinearLoadModel { get; } /// /// Gets the stability properties of the quadratic load model of the stability point structure. /// [kN/m] /// public VariationCoefficientLogNormalDistribution StabilityQuadraticLoadModel { get; } /// /// Gets the area of the flow aperture of the stability point structure. /// [m^2] /// public LogNormalDistribution AreaFlowApertures { get; } /// /// Gets the type of stability point structure inflow model. /// public StabilityPointStructureInflowModelType InflowModelType { get; private set; } /// /// Copies the property values of the to the /// . /// /// The to get the property /// values from. /// Thrown when /// is null. public void CopyProperties(StabilityPointStructure fromStructure) { base.CopyProperties(fromStructure); StorageStructureArea.Mean = fromStructure.StorageStructureArea.Mean; StorageStructureArea.CoefficientOfVariation = fromStructure.StorageStructureArea.CoefficientOfVariation; AllowedLevelIncreaseStorage.Mean = fromStructure.AllowedLevelIncreaseStorage.Mean; AllowedLevelIncreaseStorage.StandardDeviation = fromStructure.AllowedLevelIncreaseStorage.StandardDeviation; WidthFlowApertures.Mean = fromStructure.WidthFlowApertures.Mean; WidthFlowApertures.StandardDeviation = fromStructure.WidthFlowApertures.StandardDeviation; InsideWaterLevel.Mean = fromStructure.InsideWaterLevel.Mean; InsideWaterLevel.StandardDeviation = fromStructure.InsideWaterLevel.StandardDeviation; ThresholdHeightOpenWeir.Mean = fromStructure.ThresholdHeightOpenWeir.Mean; ThresholdHeightOpenWeir.StandardDeviation = fromStructure.ThresholdHeightOpenWeir.StandardDeviation; CriticalOvertoppingDischarge.Mean = fromStructure.CriticalOvertoppingDischarge.Mean; CriticalOvertoppingDischarge.CoefficientOfVariation = fromStructure.CriticalOvertoppingDischarge.CoefficientOfVariation; FlowWidthAtBottomProtection.Mean = fromStructure.FlowWidthAtBottomProtection.Mean; FlowWidthAtBottomProtection.StandardDeviation = fromStructure.FlowWidthAtBottomProtection.StandardDeviation; ConstructiveStrengthLinearLoadModel.Mean = fromStructure.ConstructiveStrengthLinearLoadModel.Mean; ConstructiveStrengthLinearLoadModel.CoefficientOfVariation = fromStructure.ConstructiveStrengthLinearLoadModel.CoefficientOfVariation; ConstructiveStrengthQuadraticLoadModel.Mean = fromStructure.ConstructiveStrengthQuadraticLoadModel.Mean; ConstructiveStrengthQuadraticLoadModel.CoefficientOfVariation = fromStructure.ConstructiveStrengthQuadraticLoadModel.CoefficientOfVariation; BankWidth.Mean = fromStructure.BankWidth.Mean; BankWidth.StandardDeviation = fromStructure.BankWidth.StandardDeviation; InsideWaterLevelFailureConstruction.Mean = fromStructure.InsideWaterLevelFailureConstruction.Mean; InsideWaterLevelFailureConstruction.StandardDeviation = fromStructure.InsideWaterLevelFailureConstruction.StandardDeviation; EvaluationLevel = fromStructure.EvaluationLevel; LevelCrestStructure.Mean = fromStructure.LevelCrestStructure.Mean; LevelCrestStructure.StandardDeviation = fromStructure.LevelCrestStructure.StandardDeviation; VerticalDistance = fromStructure.VerticalDistance; FailureProbabilityRepairClosure = fromStructure.FailureProbabilityRepairClosure; FailureCollisionEnergy.Mean = fromStructure.FailureCollisionEnergy.Mean; FailureCollisionEnergy.CoefficientOfVariation = fromStructure.FailureCollisionEnergy.CoefficientOfVariation; ShipMass.Mean = fromStructure.ShipMass.Mean; ShipMass.CoefficientOfVariation = fromStructure.ShipMass.CoefficientOfVariation; ShipVelocity.Mean = fromStructure.ShipVelocity.Mean; ShipVelocity.CoefficientOfVariation = fromStructure.ShipVelocity.CoefficientOfVariation; LevellingCount = fromStructure.LevellingCount; ProbabilityCollisionSecondaryStructure = fromStructure.ProbabilityCollisionSecondaryStructure; FlowVelocityStructureClosable.Mean = fromStructure.FlowVelocityStructureClosable.Mean; StabilityLinearLoadModel.Mean = fromStructure.StabilityLinearLoadModel.Mean; StabilityLinearLoadModel.CoefficientOfVariation = fromStructure.StabilityLinearLoadModel.CoefficientOfVariation; StabilityQuadraticLoadModel.Mean = fromStructure.StabilityQuadraticLoadModel.Mean; StabilityQuadraticLoadModel.CoefficientOfVariation = fromStructure.StabilityQuadraticLoadModel.CoefficientOfVariation; AreaFlowApertures.Mean = fromStructure.AreaFlowApertures.Mean; AreaFlowApertures.StandardDeviation = fromStructure.AreaFlowApertures.StandardDeviation; InflowModelType = fromStructure.InflowModelType; } public override bool Equals(object obj) { return base.Equals(obj) && Equals((StabilityPointStructure) obj); } public override int GetHashCode() { unchecked { int hashCode = base.GetHashCode(); hashCode = (hashCode * 397) ^ StorageStructureArea.GetHashCode(); hashCode = (hashCode * 397) ^ AllowedLevelIncreaseStorage.GetHashCode(); hashCode = (hashCode * 397) ^ WidthFlowApertures.GetHashCode(); hashCode = (hashCode * 397) ^ InsideWaterLevel.GetHashCode(); hashCode = (hashCode * 397) ^ ThresholdHeightOpenWeir.GetHashCode(); hashCode = (hashCode * 397) ^ CriticalOvertoppingDischarge.GetHashCode(); hashCode = (hashCode * 397) ^ FlowWidthAtBottomProtection.GetHashCode(); hashCode = (hashCode * 397) ^ ConstructiveStrengthLinearLoadModel.GetHashCode(); hashCode = (hashCode * 397) ^ ConstructiveStrengthQuadraticLoadModel.GetHashCode(); hashCode = (hashCode * 397) ^ BankWidth.GetHashCode(); hashCode = (hashCode * 397) ^ InsideWaterLevelFailureConstruction.GetHashCode(); hashCode = (hashCode * 397) ^ EvaluationLevel.GetHashCode(); hashCode = (hashCode * 397) ^ LevelCrestStructure.GetHashCode(); hashCode = (hashCode * 397) ^ VerticalDistance.GetHashCode(); hashCode = (hashCode * 397) ^ FailureProbabilityRepairClosure.GetHashCode(); hashCode = (hashCode * 397) ^ FailureCollisionEnergy.GetHashCode(); hashCode = (hashCode * 397) ^ ShipMass.GetHashCode(); hashCode = (hashCode * 397) ^ ShipVelocity.GetHashCode(); hashCode = (hashCode * 397) ^ LevellingCount.GetHashCode(); hashCode = (hashCode * 397) ^ ProbabilityCollisionSecondaryStructure.GetHashCode(); hashCode = (hashCode * 397) ^ FlowVelocityStructureClosable.GetHashCode(); hashCode = (hashCode * 397) ^ StabilityLinearLoadModel.GetHashCode(); hashCode = (hashCode * 397) ^ StabilityQuadraticLoadModel.GetHashCode(); hashCode = (hashCode * 397) ^ AreaFlowApertures.GetHashCode(); hashCode = (hashCode * 397) ^ InflowModelType.GetHashCode(); return hashCode; } } private bool Equals(StabilityPointStructure other) { return StorageStructureArea.Equals(other.StorageStructureArea) && AllowedLevelIncreaseStorage.Equals(other.AllowedLevelIncreaseStorage) && WidthFlowApertures.Equals(other.WidthFlowApertures) && InsideWaterLevel.Equals(other.InsideWaterLevel) && ThresholdHeightOpenWeir.Equals(other.ThresholdHeightOpenWeir) && CriticalOvertoppingDischarge.Equals(other.CriticalOvertoppingDischarge) && FlowWidthAtBottomProtection.Equals(other.FlowWidthAtBottomProtection) && ConstructiveStrengthLinearLoadModel.Equals(other.ConstructiveStrengthLinearLoadModel) && ConstructiveStrengthQuadraticLoadModel.Equals(other.ConstructiveStrengthQuadraticLoadModel) && BankWidth.Equals(other.BankWidth) && InsideWaterLevelFailureConstruction.Equals(other.InsideWaterLevelFailureConstruction) && EvaluationLevel.Equals(other.EvaluationLevel) && LevelCrestStructure.Equals(other.LevelCrestStructure) && VerticalDistance.Equals(other.VerticalDistance) && FailureProbabilityRepairClosure.Equals(other.FailureProbabilityRepairClosure) && FailureCollisionEnergy.Equals(other.FailureCollisionEnergy) && ShipMass.Equals(other.ShipMass) && ShipVelocity.Equals(other.ShipVelocity) && LevellingCount.Equals(other.LevellingCount) && ProbabilityCollisionSecondaryStructure.Equals(other.ProbabilityCollisionSecondaryStructure) && FlowVelocityStructureClosable.Equals(other.FlowVelocityStructureClosable) && StabilityLinearLoadModel.Equals(other.StabilityLinearLoadModel) && StabilityQuadraticLoadModel.Equals(other.StabilityQuadraticLoadModel) && AreaFlowApertures.Equals(other.AreaFlowApertures) && InflowModelType.Equals(other.InflowModelType); } /// /// 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) { Mean = RoundedDouble.NaN, CoefficientOfVariation = (RoundedDouble) 0.1 }; AllowedLevelIncreaseStorage = new LogNormalDistribution(2) { Mean = RoundedDouble.NaN, StandardDeviation = (RoundedDouble) 0.1 }; WidthFlowApertures = new NormalDistribution(2) { Mean = RoundedDouble.NaN, StandardDeviation = (RoundedDouble) 0.2 }; InsideWaterLevel = new NormalDistribution(2) { Mean = RoundedDouble.NaN, StandardDeviation = (RoundedDouble) 0.1 }; ThresholdHeightOpenWeir = new NormalDistribution(2) { Mean = RoundedDouble.NaN, StandardDeviation = (RoundedDouble) 0.1 }; CriticalOvertoppingDischarge = new VariationCoefficientLogNormalDistribution(2) { Mean = RoundedDouble.NaN, CoefficientOfVariation = (RoundedDouble) 0.15 }; FlowWidthAtBottomProtection = new LogNormalDistribution(2) { Mean = RoundedDouble.NaN, StandardDeviation = (RoundedDouble) 0.05 }; ConstructiveStrengthLinearLoadModel = new VariationCoefficientLogNormalDistribution(2) { Mean = RoundedDouble.NaN, CoefficientOfVariation = (RoundedDouble) 0.1 }; ConstructiveStrengthQuadraticLoadModel = new VariationCoefficientLogNormalDistribution(2) { Mean = RoundedDouble.NaN, CoefficientOfVariation = (RoundedDouble) 0.1 }; BankWidth = new NormalDistribution(2) { Mean = RoundedDouble.NaN, StandardDeviation = RoundedDouble.NaN }; InsideWaterLevelFailureConstruction = new NormalDistribution(2) { Mean = RoundedDouble.NaN, StandardDeviation = (RoundedDouble) 0.1 }; LevelCrestStructure = new NormalDistribution(2) { Mean = RoundedDouble.NaN, StandardDeviation = (RoundedDouble) 0.05 }; VerticalDistance = double.NaN; FailureProbabilityRepairClosure = 1; FailureCollisionEnergy = new VariationCoefficientLogNormalDistribution(2) { Mean = RoundedDouble.NaN, CoefficientOfVariation = (RoundedDouble) 0.3 }; ShipMass = new VariationCoefficientNormalDistribution(2) { Mean = RoundedDouble.NaN, CoefficientOfVariation = (RoundedDouble) 0.2 }; ShipVelocity = new VariationCoefficientNormalDistribution(2) { Mean = RoundedDouble.NaN, CoefficientOfVariation = (RoundedDouble) 0.2 }; LevellingCount = 1; ProbabilityCollisionSecondaryStructure = 1; FlowVelocityStructureClosable = new VariationCoefficientNormalDistribution(2) { Mean = RoundedDouble.NaN, CoefficientOfVariation = (RoundedDouble) 0.2 }; StabilityLinearLoadModel = new VariationCoefficientLogNormalDistribution(2) { Mean = RoundedDouble.NaN, CoefficientOfVariation = (RoundedDouble) 0.1 }; StabilityQuadraticLoadModel = new VariationCoefficientLogNormalDistribution(2) { Mean = RoundedDouble.NaN, CoefficientOfVariation = (RoundedDouble) 0.1 }; AreaFlowApertures = new LogNormalDistribution(2) { Mean = RoundedDouble.NaN, StandardDeviation = (RoundedDouble) 0.01 }; InflowModelType = StabilityPointStructureInflowModelType.LowSill; } /// /// Gets the storage area of the stability point structure. /// [m^2] /// public VariationCoefficientLogNormalDistribution StorageStructureArea { get; } /// /// Gets the allowed increase of level for storage of the stability point structure. /// [m] /// public LogNormalDistribution AllowedLevelIncreaseStorage { get; } /// /// Gets the width of the flow apertures of the stability point structure. /// [m] /// public NormalDistribution WidthFlowApertures { get; } /// /// Gets the interior water level of the stability point structure. /// [m+NAP] /// public NormalDistribution InsideWaterLevel { get; } /// /// Gets the threshold height of the opened stability point structure. /// [m+NAP] /// public NormalDistribution ThresholdHeightOpenWeir { get; } /// /// Gets the critical overtopping discharge per meter of the stability point structure. /// [m^3/s/m] /// public VariationCoefficientLogNormalDistribution CriticalOvertoppingDischarge { get; } /// /// Gets the flow width of the stability point structure at the bottom protection. /// [m] /// public LogNormalDistribution FlowWidthAtBottomProtection { get; } /// /// Gets the constructive strength of the linear load model of the stability point structure. /// [kN/m^2] /// public VariationCoefficientLogNormalDistribution ConstructiveStrengthLinearLoadModel { get; } /// /// Gets the constructive strength of the quadratic load model of the stability point structure. /// [kN/m] /// public VariationCoefficientLogNormalDistribution ConstructiveStrengthQuadraticLoadModel { get; } /// /// Gets the bank width of the stability point structure. /// [m] /// public NormalDistribution BankWidth { get; } /// /// Gets the inside water level failure construction of the stability point structure. /// [m+NAP] /// public NormalDistribution InsideWaterLevelFailureConstruction { get; } /// /// Gets or sets 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; } /// /// Gets or sets the vertical distance of the stability point structure. /// [m] /// public double VerticalDistance { get; set; } /// /// Gets or sets 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. /// [kN m] /// public VariationCoefficientLogNormalDistribution FailureCollisionEnergy { get; } /// /// Gets the mass of the ship. /// [ton] /// public VariationCoefficientNormalDistribution ShipMass { get; } /// /// Gets the velocity of the ship. /// [m/s] /// public VariationCoefficientNormalDistribution ShipVelocity { get; } /// /// Gets or sets the levelling count. /// [1/year] /// public int LevellingCount { get; set; } /// /// Gets or sets the probability of a secondary collision on the structure per levelling. /// [1/year/levelling] /// public double ProbabilityCollisionSecondaryStructure { get; set; } /// /// Gets the maximum flow velocity at which the structure is closable. /// [m/s] /// public VariationCoefficientNormalDistribution FlowVelocityStructureClosable { get; } /// /// Gets the stability properties of the linear load model of the stability point structure. /// [kN/m^2] /// public VariationCoefficientLogNormalDistribution StabilityLinearLoadModel { get; } /// /// Gets the stability properties of the quadratic load model of the stability point structure. /// [kN/m] /// public VariationCoefficientLogNormalDistribution StabilityQuadraticLoadModel { get; } /// /// Gets the area of the flow aperture of the stability point structure. /// [m^2] /// public LogNormalDistribution AreaFlowApertures { get; } /// /// Gets or sets the type of stability point structure inflow model. /// public StabilityPointStructureInflowModelType InflowModelType { get; set; } } } }