// 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 Ringtoets.Piping.Primitives; namespace Ringtoets.Piping.KernelWrapper { /// /// This class contains all the parameters that are required to perform a piping assessment. /// public class PipingCalculatorInput { /// /// Constructs a new , which contains values for the parameters used /// in the piping sub calculations. /// /// The object containing the values for the properties /// of the new . /// Thrown when is null. public PipingCalculatorInput(ConstructionProperties properties) { if (properties == null) { throw new ArgumentNullException(nameof(properties)); } WaterVolumetricWeight = properties.WaterVolumetricWeight; SaturatedVolumicWeightOfCoverageLayer = properties.SaturatedVolumicWeightOfCoverageLayer; UpliftModelFactor = properties.UpliftModelFactor; AssessmentLevel = properties.AssessmentLevel; PiezometricHeadExit = properties.PiezometricHeadExit; DampingFactorExit = properties.DampingFactorExit; PhreaticLevelExit = properties.PhreaticLevelExit; CriticalHeaveGradient = properties.CriticalHeaveGradient; ThicknessCoverageLayer = properties.ThicknessCoverageLayer; EffectiveThicknessCoverageLayer = properties.EffectiveThicknessCoverageLayer; SellmeijerModelFactor = properties.SellmeijerModelFactor; SellmeijerReductionFactor = properties.SellmeijerReductionFactor; SeepageLength = properties.SeepageLength; SandParticlesVolumicWeight = properties.SandParticlesVolumicWeight; WhitesDragCoefficient = properties.WhitesDragCoefficient; Diameter70 = properties.Diameter70; DarcyPermeability = properties.DarcyPermeability; WaterKinematicViscosity = properties.WaterKinematicViscosity; Gravity = properties.Gravity; ThicknessAquiferLayer = properties.ThicknessAquiferLayer; MeanDiameter70 = properties.MeanDiameter70; BeddingAngle = properties.BeddingAngle; ExitPointXCoordinate = properties.ExitPointXCoordinate; SurfaceLine = properties.SurfaceLine; SoilProfile = properties.SoilProfile; } #region properties /// /// Gets the volumetric weight of water. /// [kN/m³] /// public double WaterVolumetricWeight { get; private set; } /// /// Gets the calculation value used to account for uncertainty in the model for uplift. /// public double UpliftModelFactor { get; private set; } /// /// Gets the outside high water level. /// [m] /// public double AssessmentLevel { get; private set; } /// /// Gets the piezometric head at the exit point. /// [m] /// public double PiezometricHeadExit { get; private set; } /// /// Gets the damping factor at the exit point. /// public double DampingFactorExit { get; private set; } /// /// Gets the phreatic level at the exit point. /// [m] /// public double PhreaticLevelExit { get; private set; } /// /// Gets the critical exit gradient for heave. /// public double CriticalHeaveGradient { get; private set; } /// /// Gets the total thickness of the coverage layer at the exit point. /// [m] /// public double ThicknessCoverageLayer { get; private set; } /// /// Gets the effective thickness of the coverage layer at the exit point. /// [m] /// public double EffectiveThicknessCoverageLayer { get; private set; } /// /// Gets the calculation value used to account for uncertainty in the model for Sellmeijer. /// public double SellmeijerModelFactor { get; private set; } /// /// Gets the reduction factor Sellmeijer. /// public double SellmeijerReductionFactor { get; private set; } /// /// Gets the horizontal distance between entry and exit point. /// [m] /// public double SeepageLength { get; private set; } /// /// Gets the (lowerbound) volumic weight of sand grain material of a sand layer under water. /// [kN/m³] /// public double SandParticlesVolumicWeight { get; private set; } /// /// Gets the White's drag coefficient. /// public double WhitesDragCoefficient { get; private set; } /// /// Gets the sieve size through which 70% of the grains of the top part of the aquifer pass. /// [m] /// public double Diameter70 { get; private set; } /// /// Gets the Darcy-speed with which water flows through the aquifer layer. /// [m/s] /// public double DarcyPermeability { get; private set; } /// /// Gets the kinematic viscosity of water at 10 °C. /// [m²/s] /// public double WaterKinematicViscosity { get; private set; } /// /// Gets the gravitational acceleration. /// [m/s²] /// public double Gravity { get; private set; } /// /// Gets the thickness of the aquifer layer. /// [m] /// public double ThicknessAquiferLayer { get; private set; } /// /// Gets the mean diameter of small scale tests applied to different kinds of sand, on which the formula of Sellmeijer has been fit. /// [m] /// public double MeanDiameter70 { get; private set; } /// /// Gets the angle of the force balance representing the amount in which sand grains resist rolling. /// [°] /// public double BeddingAngle { get; private set; } /// /// Gets the X-coordinate of the exit point. /// [m] /// public double ExitPointXCoordinate { get; private set; } /// /// Gets the surface line. /// public RingtoetsPipingSurfaceLine SurfaceLine { get; private set; } /// /// Gets the profile which contains a 1 dimensional definition of soil layers with properties. /// public PipingSoilProfile SoilProfile { get; private set; } /// /// Gets the volumic weight of the coverage layer when saturated. /// public double SaturatedVolumicWeightOfCoverageLayer { get; private set; } #endregion public class ConstructionProperties { /// /// Creates new instance of . /// public ConstructionProperties() { WaterVolumetricWeight = double.NaN; SaturatedVolumicWeightOfCoverageLayer = double.NaN; UpliftModelFactor = double.NaN; AssessmentLevel = double.NaN; PiezometricHeadExit = double.NaN; DampingFactorExit = double.NaN; PhreaticLevelExit = double.NaN; CriticalHeaveGradient = double.NaN; ThicknessCoverageLayer = double.NaN; EffectiveThicknessCoverageLayer = double.NaN; SellmeijerModelFactor = double.NaN; SellmeijerReductionFactor = double.NaN; SeepageLength = double.NaN; SandParticlesVolumicWeight = double.NaN; WhitesDragCoefficient = double.NaN; Diameter70 = double.NaN; DarcyPermeability = double.NaN; WaterKinematicViscosity = double.NaN; Gravity = double.NaN; ThicknessAquiferLayer = double.NaN; MeanDiameter70 = double.NaN; BeddingAngle = double.NaN; ExitPointXCoordinate = double.NaN; SurfaceLine = null; SoilProfile = null; } #region properties /// /// Gets the volumetric weight of water. /// [kN/m³] /// public double WaterVolumetricWeight { internal get; set; } /// /// Gets the calculation value used to account for uncertainty in the model for uplift. /// public double UpliftModelFactor { internal get; set; } /// /// Gets the outside high water level. /// [m] /// public double AssessmentLevel { internal get; set; } /// /// Gets the piezometric head at the exit point. /// [m] /// public double PiezometricHeadExit { internal get; set; } /// /// Gets the damping factor at the exit point. /// public double DampingFactorExit { internal get; set; } /// /// Gets the phreatic level at the exit point. /// [m] /// public double PhreaticLevelExit { internal get; set; } /// /// Gets the critical exit gradient for heave. /// public double CriticalHeaveGradient { internal get; set; } /// /// Gets the total thickness of the coverage layer at the exit point. /// [m] /// public double ThicknessCoverageLayer { internal get; set; } /// /// Gets the effective thickness of the coverage layer at the exit point. /// [m] /// public double EffectiveThicknessCoverageLayer { internal get; set; } /// /// Gets the calculation value used to account for uncertainty in the model for Sellmeijer. /// public double SellmeijerModelFactor { internal get; set; } /// /// Gets the reduction factor Sellmeijer. /// public double SellmeijerReductionFactor { internal get; set; } /// /// Gets the horizontal distance between entry and exit point. /// [m] /// public double SeepageLength { internal get; set; } /// /// Gets the (lowerbound) volumic weight of sand grain material of a sand layer under water. /// [kN/m³] /// public double SandParticlesVolumicWeight { internal get; set; } /// /// Gets the White's drag coefficient. /// public double WhitesDragCoefficient { internal get; set; } /// /// Gets the sieve size through which 70% of the grains of the top part of the aquifer pass. /// [m] /// public double Diameter70 { internal get; set; } /// /// Gets the Darcy-speed with which water flows through the aquifer layer. /// [m/s] /// public double DarcyPermeability { internal get; set; } /// /// Gets the kinematic viscosity of water at 10 °C. /// [m²/s] /// public double WaterKinematicViscosity { internal get; set; } /// /// Gets the gravitational acceleration. /// [m/s²] /// public double Gravity { internal get; set; } /// /// Gets the thickness of the aquifer layer. /// [m] /// public double ThicknessAquiferLayer { internal get; set; } /// /// Gets the mean diameter of small scale tests applied to different kinds of sand, on which the formula of Sellmeijer has been fit. /// [m] /// public double MeanDiameter70 { internal get; set; } /// /// Gets the angle of the force balance representing the amount in which sand grains resist rolling. /// [°] /// public double BeddingAngle { internal get; set; } /// /// Gets the X-coordinate of the exit point. /// [m] /// public double ExitPointXCoordinate { internal get; set; } /// /// Gets the surface line. /// public RingtoetsPipingSurfaceLine SurfaceLine { internal get; set; } /// /// Gets the profile which contains a 1 dimensional definition of soil layers with properties. /// public PipingSoilProfile SoilProfile { internal get; set; } /// /// Gets the volumic weight of the coverage layer when saturated. /// public double SaturatedVolumicWeightOfCoverageLayer { internal get; set; } #endregion } } }