using System; using Core.Common.Base.Data; using Core.Common.Base.Geometry; using Ringtoets.Piping.Data; namespace Ringtoets.Piping.Calculation.TestUtil { public class TestPipingInput { public double WaterVolumetricWeight; public double SaturatedVolumicWeightOfCoverageLayer; public double UpliftModelFactor; public RoundedDouble AssessmentLevel; public RoundedDouble PiezometricHeadExit; public double DampingFactorExit; public double PhreaticLevelExit; public double CriticalHeaveGradient; public double ThicknessCoverageLayer; public double SellmeijerModelFactor; public double SellmeijerReductionFactor; public double SeepageLength; public double SandParticlesVolumicWeight; public double WhitesDragCoefficient; public double Diameter70; public double DarcyPermeability; public double WaterKinematicViscosity; public double Gravity; public RoundedDouble ExitPointXCoordinate; public double BeddingAngle; public double MeanDiameter70; public double ThicknessAquiferLayer; public RingtoetsPipingSurfaceLine SurfaceLine; public PipingSoilProfile SoilProfile; private readonly Random random = new Random(22); private double last; public TestPipingInput() { WaterVolumetricWeight = NextIncrementalDouble(); SaturatedVolumicWeightOfCoverageLayer = NextIncrementalDouble(); UpliftModelFactor = NextIncrementalDouble(); AssessmentLevel = (RoundedDouble)NextIncrementalDouble(); PiezometricHeadExit = (RoundedDouble)NextIncrementalDouble(); PhreaticLevelExit = NextIncrementalDouble(); DampingFactorExit = NextIncrementalDouble(); CriticalHeaveGradient = NextIncrementalDouble(); ThicknessCoverageLayer = NextIncrementalDouble(); SellmeijerModelFactor = NextIncrementalDouble(); SellmeijerReductionFactor = NextIncrementalDouble(); SeepageLength = NextIncrementalDouble(); SandParticlesVolumicWeight = NextIncrementalDouble(); WhitesDragCoefficient = NextIncrementalDouble(); Diameter70 = NextIncrementalDouble(); DarcyPermeability = NextIncrementalDouble(); WaterKinematicViscosity = NextIncrementalDouble(); Gravity = NextIncrementalDouble(); ExitPointXCoordinate = (RoundedDouble) 0.5; BeddingAngle = NextIncrementalDouble(); MeanDiameter70 = NextIncrementalDouble(); ThicknessAquiferLayer = NextIncrementalDouble(); SurfaceLine = CreateValidSurfaceLine(); SoilProfile = CreateValidSoilProfile(); } private PipingSoilProfile CreateValidSoilProfile() { return new PipingSoilProfile(String.Empty, -2, new [] { new PipingSoilLayer(9), new PipingSoilLayer(4) { IsAquifer = true }, new PipingSoilLayer(2), new PipingSoilLayer(-1), }); } private RingtoetsPipingSurfaceLine CreateValidSurfaceLine() { var ringtoetsPipingSurfaceLine = new RingtoetsPipingSurfaceLine(); ringtoetsPipingSurfaceLine.SetGeometry(new[] { new Point3D (0, 0, 2), new Point3D (1, 0, 8), new Point3D (2, 0, -1) }); return ringtoetsPipingSurfaceLine; } /// /// The returned double is sure to be different from the last time it was called. /// private double NextIncrementalDouble() { return last += random.NextDouble() + 1e-6; } /// /// Returns the current set value as a /// public PipingCalculatorInput AsRealInput() { return new PipingCalculatorInput( WaterVolumetricWeight, SaturatedVolumicWeightOfCoverageLayer, UpliftModelFactor, AssessmentLevel, PiezometricHeadExit, DampingFactorExit, PhreaticLevelExit, CriticalHeaveGradient, ThicknessCoverageLayer, SellmeijerModelFactor, SellmeijerReductionFactor, SeepageLength, SandParticlesVolumicWeight, WhitesDragCoefficient, Diameter70, DarcyPermeability, WaterKinematicViscosity, Gravity, ThicknessAquiferLayer, MeanDiameter70, BeddingAngle, ExitPointXCoordinate, SurfaceLine, SoilProfile); } } }