// 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.Probabilistics; namespace Ringtoets.MacroStabilityInwards.Primitives { /// /// Soil layer properties. /// public class MacroStabilityInwardsSoilLayerPropertiesUnderSurfaceLine { /// /// Creates a new instance of . /// /// The object containing the values for the properties /// of the new . /// Thrown when is null. public MacroStabilityInwardsSoilLayerPropertiesUnderSurfaceLine(ConstructionProperties properties) { if (properties == null) { throw new ArgumentNullException(nameof(properties)); } AbovePhreaticLevel = new VariationCoefficientLogNormalDistribution(2) { Mean = (RoundedDouble) properties.AbovePhreaticLevelMean, CoefficientOfVariation = (RoundedDouble) properties.AbovePhreaticLevelCoefficientOfVariation }; BelowPhreaticLevel = new VariationCoefficientLogNormalDistribution(2) { Mean = (RoundedDouble) properties.BelowPhreaticLevelMean, CoefficientOfVariation = (RoundedDouble) properties.BelowPhreaticLevelCoefficientOfVariation }; Cohesion = new VariationCoefficientLogNormalDistribution(2) { Mean = (RoundedDouble) properties.CohesionMean, CoefficientOfVariation = (RoundedDouble) properties.CohesionCoefficientOfVariation }; FrictionAngle = new VariationCoefficientLogNormalDistribution(2) { Mean = (RoundedDouble) properties.FrictionAngleMean, CoefficientOfVariation = (RoundedDouble) properties.FrictionAngleCoefficientOfVariation }; StrengthIncreaseExponent = new VariationCoefficientLogNormalDistribution(2) { Mean = (RoundedDouble) properties.StrengthIncreaseExponentMean, CoefficientOfVariation = (RoundedDouble) properties.StrengthIncreaseExponentCoefficientOfVariation }; ShearStrengthRatio = new VariationCoefficientLogNormalDistribution(2) { Mean = (RoundedDouble) properties.ShearStrengthRatioMean, CoefficientOfVariation = (RoundedDouble) properties.ShearStrengthRatioCoefficientOfVariation }; Pop = new VariationCoefficientLogNormalDistribution(2) { Mean = (RoundedDouble) properties.PopMean, CoefficientOfVariation = (RoundedDouble) properties.PopCoefficientOfVariation }; IsAquifer = properties.IsAquifer; UsePop = properties.UsePop; ShearStrengthModel = properties.ShearStrengthModel; MaterialName = properties.MaterialName; } /// /// Gets a value indicating whether the layer is an aquifer. /// public bool IsAquifer { get; } /// /// Gets a value indicating whether to use POP for the layer. /// public bool UsePop { get; } /// /// Gets the shear strength model to use for the layer. /// public MacroStabilityInwardsShearStrengthModel ShearStrengthModel { get; } /// /// Gets the name of the material that was assigned to the layer. /// public string MaterialName { get; } #region distributions /// /// Gets the distribution for the volumic weight of the layer above the phreatic level. /// [kN/m³] /// public VariationCoefficientLogNormalDistribution AbovePhreaticLevel { get; } /// /// Gets the distribution for the volumic weight of the layer below the phreatic level. /// [kN/m³] /// public VariationCoefficientLogNormalDistribution BelowPhreaticLevel { get; } /// /// Gets the distribution for the cohesion. /// [kN/m³] /// public VariationCoefficientLogNormalDistribution Cohesion { get; } /// /// Gets the friction angle. /// [°] /// public VariationCoefficientLogNormalDistribution FrictionAngle { get; } /// /// Gets the strength increase component. /// [-] /// public VariationCoefficientLogNormalDistribution StrengthIncreaseExponent { get; set; } /// /// Gets the shear strength ratio. /// [-] /// public VariationCoefficientLogNormalDistribution ShearStrengthRatio { get; } /// /// Gets the Pop. /// [kN/m²] /// public VariationCoefficientLogNormalDistribution Pop { get; } #endregion #region Design variables /// /// Gets or sets the design variable of the distribution for the volumic weight of the layer above the phreatic level. /// public RoundedDouble AbovePhreaticLevelDesignVariable { get; set; } /// /// Gets or sets the design variable of the distribution for the volumic weight of the layer below the phreatic level. /// public RoundedDouble BelowPhreaticLevelDesignVariable { get; set; } /// /// Gets or sets the design variable of the distribution for the cohesion. /// public RoundedDouble CohesionDesignVariable { get; set; } /// /// Gets or sets the design variable of the distribution for the friction angle. /// public RoundedDouble FrictionAngleDesignVariable { get; set; } /// /// Gets or sets the design variable of the distribution for the strength increase exponent. /// public RoundedDouble StrengthIncreaseExponentDesignVariable { get; set; } /// /// Gets or sets the design variable of the distribution for the shear strength ratio. /// public RoundedDouble ShearStrengthRatioDesignVariable { get; set; } /// /// Gets or sets the design variable of the distribution for the Pop. /// public RoundedDouble PopDesignVariable { get; set; } #endregion #region ConstructionProperties public class ConstructionProperties { /// /// Creates a new instance of . /// public ConstructionProperties() { AbovePhreaticLevelMean = double.NaN; AbovePhreaticLevelCoefficientOfVariation = double.NaN; BelowPhreaticLevelMean = double.NaN; BelowPhreaticLevelCoefficientOfVariation = double.NaN; CohesionMean = double.NaN; CohesionCoefficientOfVariation = double.NaN; FrictionAngleMean = double.NaN; FrictionAngleCoefficientOfVariation = double.NaN; StrengthIncreaseExponentMean = double.NaN; StrengthIncreaseExponentCoefficientOfVariation = double.NaN; ShearStrengthRatioMean = double.NaN; ShearStrengthRatioCoefficientOfVariation = double.NaN; PopMean = double.NaN; PopCoefficientOfVariation = double.NaN; ShearStrengthModel = MacroStabilityInwardsShearStrengthModel.CPhi; MaterialName = string.Empty; } /// /// Gets or sets the mean of the distribution for the volumic weight of the layer above the phreatic level. /// [kN/m³] /// public double AbovePhreaticLevelMean { internal get; set; } /// /// Gets or sets the coefficient of variation of the distribution for the volumic weight of the layer above the phreatic level. /// [kN/m³] /// public double AbovePhreaticLevelCoefficientOfVariation { internal get; set; } /// /// Gets or sets the mean of the distribution for the volumic weight of the layer below the phreatic level. /// [kN/m³] /// public double BelowPhreaticLevelMean { internal get; set; } /// /// Gets or sets the coefficient of variation of the distribution for the volumic weight of the layer below the phreatic level. /// [kN/m³] /// public double BelowPhreaticLevelCoefficientOfVariation { internal get; set; } /// /// Gets or sets the mean of the distribution for the cohesion. /// [kN/m³] /// public double CohesionMean { internal get; set; } /// /// Gets or sets the coefficient of variation of the distribution for the cohesion. /// [kN/m³] /// public double CohesionCoefficientOfVariation { internal get; set; } /// /// Gets or sets the mean of the distribution for the friction angle. /// [°] /// public double FrictionAngleMean { internal get; set; } /// /// Gets or sets the coefficient of variation of the distribution for the friction angle. /// [°] /// public double FrictionAngleCoefficientOfVariation { internal get; set; } /// /// Gets or sets the mean of the distribution for the strength increase exponent. /// [-] /// public double StrengthIncreaseExponentMean { internal get; set; } /// /// Gets or sets the coefficient of variation of the distribution for the strength increase exponent. /// [-] /// public double StrengthIncreaseExponentCoefficientOfVariation { internal get; set; } /// /// Gets or sets the mean of the distribution for the shear strength ratio. /// [-] /// public double ShearStrengthRatioMean { internal get; set; } /// /// Gets or sets the coefficient of variation of the distribution for the shear strength ratio. /// [-] /// public double ShearStrengthRatioCoefficientOfVariation { internal get; set; } /// /// Gets or sets the mean of the distribution for the pop. /// [kN/m²] /// public double PopMean { internal get; set; } /// /// Gets or sets the coefficient of variation of the distribution for the pop. /// [kN/m²] /// public double PopCoefficientOfVariation { internal get; set; } /// /// Gets or sets a value indicating whether the layer is an aquifer. /// public bool IsAquifer { internal get; set; } /// /// Gets or sets a value indicating whether to use POP for the layer. /// public bool UsePop { internal get; set; } /// /// Gets or sets the shear strength model to use for the layer. /// public MacroStabilityInwardsShearStrengthModel ShearStrengthModel { internal get; set; } /// /// Gets or sets the name of the material that was assigned to the layer. /// public string MaterialName { internal get; set; } } #endregion } }