using System.Collections.Generic; using DelftTools.Shell.Core; namespace Wti.Data { public class PipingData : IObservable { private readonly IList observers = new List(); public PipingData() { // Defaults as they have been defined in the DikesPiping Kernel's Technical Documentation of 07 Oct 15 BeddingAngle = 37.0; MeanDiameter70 = 2.08e-4; Gravity = 9.81; WaterKinematicViscosity = 1.33e-6; WhitesDragCoefficient = 0.25; SandParticlesVolumicWeight = 16.5; WaterVolumetricWeight = 9.81; SellmeijerReductionFactor = 0.3; DampingFactorExit = 1.0; } /// /// Gets or sets the damping factor at the exit point. /// public double DampingFactorExit { 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 phreatic level at the exit point. /// [m] /// public double PhreaticLevelExit { get; set; } /// /// Gets or sets the piezometric head in the hinterland. /// [m] /// public double PiezometricHeadPolder { get; set; } /// /// Gets or sets the critical exit gradient for heave. /// public double CriticalHeaveGradient { get; set; } /// /// Gets or sets the total thickness of the coverage layer at the exit point. /// [m] /// public double ThicknessCoverageLayer { 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 horizontal distance between entree and exit point. /// [m] /// public double 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 double Diameter70 { get; set; } /// /// Gets or sets the Darcy-speed with which water flows through the aquifer layer. /// [m/s] /// public double DarcyPermeability { get; set; } /// /// Gets or sets the thickness of the aquifer layer. /// [m] /// public double ThicknessAquiferLayer { get; set; } /// /// Gets or sets the x coordinate of the exit point. /// [m] /// public double ExitPointXCoordinate { get; set; } /// /// Gets or sets , which contains the results of a Piping calculation. /// public PipingOutput Output { get; set; } 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(); } } } }