using System.Collections.Generic;
using Core.Common.Base;
using Ringtoets.Piping.Data.Probabilistics;
namespace Ringtoets.Piping.Data
{
///
/// This class holds the information which can be made visible in the graphical interface of the application.
///
public class PipingData : IObservable
{
private readonly IList observers = new List();
///
/// Constructs a new instance of with default values set for some of the parameters.
///
public PipingData()
{
Name = "Piping";
// 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();
Diameter70 = new LognormalDistribution();
DarcyPermeability = new LognormalDistribution();
ThicknessAquiferLayer = new LognormalDistribution();
}
///
/// Gets or sets the name the user gave this this calculation object.
///
public string Name { get; set; }
///
/// 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]
///
public double AssessmentLevel { get; set; }
///
/// 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 x coordinate of the exit point.
/// [m]
///
public double ExitPointXCoordinate { 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
#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 sets , which contains the results of a Piping calculation.
///
public PipingOutput Output { get; set; }
///
/// Gets a value indicating whether the has .
///
public bool HasOutput
{
get
{
return Output != null;
}
}
///
/// Clears the .
///
public void ClearOutput()
{
Output = null;
}
public void Attach(IObserver observer)
{
observers.Add(observer);
}
public void Detach(IObserver observer)
{
observers.Remove(observer);
}
public void NotifyObservers()
{
foreach (var observer in observers)
{
observer.UpdateObserver();
}
}
}
}