// 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;
using Ringtoets.HydraRing.Data;
using Ringtoets.Piping.Data.Probabilistics;
using Ringtoets.Piping.Data.Properties;
namespace Ringtoets.Piping.Data
{
///
/// Class that holds all piping calculation input parameters.
///
public class PipingInput : Observable
{
private double assessmentLevel;
public const double SeepageLengthStandardDeviationFraction = 0.1;
///
/// Initializes a new instance of the class.
///
public PipingInput()
{
// Defaults as they have been defined in 'functional design semi-probabilistic assessments 1209431-008-ZWS-0009 Version 2 Final'
UpliftModelFactor = 1.0;
SellmeijerModelFactor = 1.0;
WaterVolumetricWeight = 10.0;
WhitesDragCoefficient = 0.25;
SandParticlesVolumicWeight = 16.5;
WaterKinematicViscosity = 1.33e-6;
Gravity = 9.81;
MeanDiameter70 = 2.08e-4;
BeddingAngle = 37.0;
SellmeijerReductionFactor = 0.3;
CriticalHeaveGradient = 0.3;
PhreaticLevelExit = new NormalDistribution();
DampingFactorExit = new LognormalDistribution
{
Mean = 1.0
};
ThicknessCoverageLayer = new LognormalDistribution();
SeepageLength = new LognormalDistribution();
SeepageLength.StandardDeviation = SeepageLength.Mean * SeepageLengthStandardDeviationFraction;
Diameter70 = new LognormalDistribution();
DarcyPermeability = new LognormalDistribution();
ThicknessAquiferLayer = new LognormalDistribution();
}
///
/// Gets or sets the reduction factor Sellmeijer.
///
public double SellmeijerReductionFactor { get; set; }
///
/// Gets or sets the volumetric weight of water.
/// [kN/m³]
///
public double WaterVolumetricWeight { get; set; }
///
/// Gets or sets the (lowerbound) volumic weight of sand grain material of a sand layer under water.
/// [kN/m³]
///
public double SandParticlesVolumicWeight { get; set; }
///
/// Gets or sets the White's drag coefficient.
///
public double WhitesDragCoefficient { get; set; }
///
/// Gets or sets the kinematic viscosity of water at 10 degrees Celsius.
/// [m²/s]
///
public double WaterKinematicViscosity { get; set; }
///
/// Gets or sets the gravitational acceleration.
/// [m/s²]
///
public double Gravity { get; set; }
///
/// Gets or sets 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; set; }
///
/// Gets or sets the angle of the force balance representing the amount in which sand grains resist rolling.
/// [°]
///
public double BeddingAngle { get; set; }
///
/// Gets or sets the calculation value used to account for uncertainty in the model for uplift.
///
public double UpliftModelFactor { get; set; }
///
/// Gets or sets the outside high water level.
/// [m]
///
/// is .
public double AssessmentLevel
{
get
{
return assessmentLevel;
}
set
{
if (double.IsNaN(value))
{
throw new ArgumentException(Resources.PipingInput_AssessmentLevel_Cannot_set_to_NaN);
}
assessmentLevel = value;
}
}
///
/// Gets or sets the piezometric head at the exit point.
/// [m]
///
public double PiezometricHeadExit { get; set; }
///
/// Gets or sets the piezometric head in the hinterland.
/// [m]
///
public double PiezometricHeadPolder { get; set; }
///
/// Gets or sets the calculation value used to account for uncertainty in the model for Sellmeijer.
///
public double SellmeijerModelFactor { get; set; }
///
/// Gets or sets the L-coordinate of the exit point.
/// [m]
///
public double ExitPointL { get; set; }
#region Constants
///
/// Gets or sets the critical exit gradient for heave.
///
public double CriticalHeaveGradient { get; private set; }
#endregion
///
/// Gets or sets the surface line.
///
public RingtoetsPipingSurfaceLine SurfaceLine { get; set; }
///
/// Gets or sets the profile which contains a 1 dimensional definition of soil layers with properties.
///
public PipingSoilProfile SoilProfile { get; set; }
///
/// Gets or set the hydraulic boundary location from which to use the assessment level.
///
public HydraulicBoundaryLocation HydraulicBoundaryLocation { get; set; }
#region Probabilistic parameters
///
/// Gets or sets the phreatic level at the exit point.
/// [m]
///
public NormalDistribution PhreaticLevelExit { get; set; }
///
/// Gets or sets the horizontal distance between entree and exit point.
/// [m]
///
public LognormalDistribution SeepageLength { get; set; }
///
/// Gets or sets the sieve size through which 70% fraction of the grains of the top part of the aquifer passes.
/// [m]
///
public LognormalDistribution Diameter70 { get; set; }
///
/// Gets or sets the Darcy-speed with which water flows through the aquifer layer.
/// [m/s]
///
public LognormalDistribution DarcyPermeability { get; set; }
///
/// Gets or sets the thickness of the aquifer layer.
/// [m]
///
public LognormalDistribution ThicknessAquiferLayer { get; set; }
///
/// Gets or sets the total thickness of the coverage layer at the exit point.
/// [m]
///
public LognormalDistribution ThicknessCoverageLayer { get; set; }
///
/// Gets or sets the damping factor at the exit point.
///
public LognormalDistribution DampingFactorExit { get; set; }
#endregion
}
}