// 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 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 PipingSurfaceLine 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 PipingSurfaceLine 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
}
}
}