Index: Demo/Ringtoets/test/Demo.Ringtoets.Test/Commands/AddNewDemoDikeAssessmentSectionCommandTest.cs =================================================================== diff -u -r65ea41e01d41d77df1e30bf8e850a44de46e870f -r8ca454de1833ad8a8d63bcaefdfb5d886a187a01 --- Demo/Ringtoets/test/Demo.Ringtoets.Test/Commands/AddNewDemoDikeAssessmentSectionCommandTest.cs (.../AddNewDemoDikeAssessmentSectionCommandTest.cs) (revision 65ea41e01d41d77df1e30bf8e850a44de46e870f) +++ Demo/Ringtoets/test/Demo.Ringtoets.Test/Commands/AddNewDemoDikeAssessmentSectionCommandTest.cs (.../AddNewDemoDikeAssessmentSectionCommandTest.cs) (revision 8ca454de1833ad8a8d63bcaefdfb5d886a187a01) @@ -166,20 +166,20 @@ PipingCalculationService.Calculate(calculation); Assert.IsTrue(calculation.HasOutput); - Assert.AreEqual(0.108, calculation.Output.HeaveFactorOfSafety, 1e-3); - Assert.AreEqual(-2.489, calculation.Output.HeaveZValue, 1e-3); - Assert.AreEqual(0.267, calculation.Output.UpliftFactorOfSafety, 1e-3); - Assert.AreEqual(-11.870, calculation.Output.UpliftZValue, 1e-3); - Assert.AreEqual(0.400, calculation.Output.SellmeijerFactorOfSafety, 1e-3); - Assert.AreEqual(-1.609, calculation.Output.SellmeijerZValue, 1e-3); + Assert.AreEqual(0.563, calculation.Output.HeaveFactorOfSafety, 1e-3); + Assert.AreEqual(-0.233, calculation.Output.HeaveZValue, 1e-3); + Assert.AreEqual(3.377, calculation.Output.UpliftFactorOfSafety, 1e-3); + Assert.AreEqual(7.358, calculation.Output.UpliftZValue, 1e-3); + Assert.AreEqual(0.408, calculation.Output.SellmeijerFactorOfSafety, 1e-3); + Assert.AreEqual(-1.588, calculation.Output.SellmeijerZValue, 1e-3); } private static void AssertExpectedPipingInput(PipingInput inputParameters) { Assert.AreEqual(1.0, inputParameters.UpliftModelFactor, 1e-3); Assert.AreEqual(1.0, inputParameters.SellmeijerModelFactor, 1e-3); - Assert.AreEqual(10.0, inputParameters.WaterVolumetricWeight, 1e-3); + Assert.AreEqual(9.81, inputParameters.WaterVolumetricWeight, 1e-3); Assert.AreEqual(0.3, inputParameters.SellmeijerReductionFactor, 1e-3); Assert.AreEqual(16.5, inputParameters.SandParticlesVolumicWeight, 1e-3); Assert.AreEqual(0.25, inputParameters.WhitesDragCoefficient, 1e-3); @@ -193,7 +193,7 @@ Assert.AreEqual(1300001, inputParameters.HydraulicBoundaryLocation.Id); Assert.AreEqual(5.78, inputParameters.HydraulicBoundaryLocation.DesignWaterLevel, 1e-3); - Assert.AreEqual(3.661, PipingSemiProbabilisticDesignValueFactory.GetDampingFactorExit(inputParameters).GetDesignValue(), + Assert.AreEqual(0.7, PipingSemiProbabilisticDesignValueFactory.GetDampingFactorExit(inputParameters).GetDesignValue(), GetAccuracy(inputParameters.DampingFactorExit)); Assert.AreEqual(1.355, PipingSemiProbabilisticDesignValueFactory.GetPhreaticLevelExit(inputParameters).GetDesignValue(), GetAccuracy(inputParameters.PhreaticLevelExit)); Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/GeneralPipingInput.cs =================================================================== diff -u -rde18e9d8a0324e9345f412eb6c1ffeed4f86f2fb -r8ca454de1833ad8a8d63bcaefdfb5d886a187a01 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/GeneralPipingInput.cs (.../GeneralPipingInput.cs) (revision de18e9d8a0324e9345f412eb6c1ffeed4f86f2fb) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/GeneralPipingInput.cs (.../GeneralPipingInput.cs) (revision 8ca454de1833ad8a8d63bcaefdfb5d886a187a01) @@ -34,7 +34,7 @@ { UpliftModelFactor = 1.0; SellmeijerModelFactor = 1.0; - WaterVolumetricWeight = 10.0; + WaterVolumetricWeight = 9.81; CriticalHeaveGradient = 0.3; SandParticlesVolumicWeight = 16.5; WhitesDragCoefficient = 0.25; Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingInput.cs =================================================================== diff -u -r89488cc05b12fd5720cd28a4eeeb001dc9b1456d -r8ca454de1833ad8a8d63bcaefdfb5d886a187a01 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingInput.cs (.../PipingInput.cs) (revision 89488cc05b12fd5720cd28a4eeeb001dc9b1456d) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingInput.cs (.../PipingInput.cs) (revision 8ca454de1833ad8a8d63bcaefdfb5d886a187a01) @@ -42,6 +42,14 @@ private RoundedDouble entryPointL; private RoundedDouble piezometricHeadExit; private RingtoetsPipingSurfaceLine surfaceLine; + private readonly NormalDistribution phreaticLevelExit; + private readonly LognormalDistribution dampingFactorExit; + private readonly LognormalDistribution thicknessCoverageLayer; + private readonly ShiftedLognormalDistribution saturatedVolumicWeightOfCoverageLayer; + private readonly LognormalDistribution thicknessAquiferLayer; + private readonly LognormalDistribution darcyPermeability; + private readonly LognormalDistribution diameter70; + private readonly LognormalDistribution seepageLength; /// /// Initializes a new instance of the class. @@ -64,30 +72,31 @@ assessmentLevel = new RoundedDouble(2, double.NaN); piezometricHeadExit = new RoundedDouble(2, double.NaN); - PhreaticLevelExit = new NormalDistribution(3); - DampingFactorExit = new LognormalDistribution(3) + phreaticLevelExit = new NormalDistribution(3); + dampingFactorExit = new LognormalDistribution(3) { - Mean = (RoundedDouble)1.0 + Mean = (RoundedDouble)0.7, + StandardDeviation = (RoundedDouble)0.0 }; - ThicknessCoverageLayer = new LognormalDistribution(2) + thicknessCoverageLayer = new LognormalDistribution(2) { Mean = (RoundedDouble)double.NaN, StandardDeviation = (RoundedDouble)0.5 }; - SaturatedVolumicWeightOfCoverageLayer = new ShiftedLognormalDistribution(2) + saturatedVolumicWeightOfCoverageLayer = new ShiftedLognormalDistribution(2) { Shift = (RoundedDouble) 10, Mean = (RoundedDouble) 17.5, StandardDeviation = (RoundedDouble)0 }; - SeepageLength = new LognormalDistribution(2) + seepageLength = new LognormalDistribution(2) { Mean = (RoundedDouble)double.NaN, StandardDeviation = (RoundedDouble)double.NaN }; - Diameter70 = new LognormalDistribution(2); - DarcyPermeability = new LognormalDistribution(3); - ThicknessAquiferLayer = new LognormalDistribution(2) + diameter70 = new LognormalDistribution(2); + darcyPermeability = new LognormalDistribution(3); + thicknessAquiferLayer = new LognormalDistribution(2) { Mean = (RoundedDouble)double.NaN, StandardDeviation = (RoundedDouble)0.5 @@ -335,47 +344,136 @@ /// Gets or sets the phreatic level at the exit point. /// [m] /// - public NormalDistribution PhreaticLevelExit { get; set; } + public NormalDistribution PhreaticLevelExit + { + get + { + return phreaticLevelExit; + } + set + { + phreaticLevelExit.Mean = value.Mean; + phreaticLevelExit.StandardDeviation = value.StandardDeviation; + } + } /// /// Gets or sets the horizontal distance between entry and exit point. /// [m] /// - public LognormalDistribution SeepageLength { get; set; } + public LognormalDistribution SeepageLength + { + get + { + return seepageLength; + } + set + { + seepageLength.Mean = value.Mean; + seepageLength.StandardDeviation = value.StandardDeviation; + } + } /// /// 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; } + public LognormalDistribution Diameter70 + { + get + { + return diameter70; + } + set + { + diameter70.Mean = value.Mean; + diameter70.StandardDeviation = value.StandardDeviation; + } + } /// /// Gets or sets the Darcy-speed with which water flows through the aquifer layer. /// [m/s] /// - public LognormalDistribution DarcyPermeability { get; set; } + public LognormalDistribution DarcyPermeability + { + get + { + return darcyPermeability; + } + set + { + darcyPermeability.Mean = value.Mean; + darcyPermeability.StandardDeviation = value.StandardDeviation; + } + } /// /// Gets or sets the thickness of the aquifer layer. /// [m] /// - public LognormalDistribution ThicknessAquiferLayer { get; set; } + public LognormalDistribution ThicknessAquiferLayer + { + get + { + return thicknessAquiferLayer; + } + set + { + thicknessAquiferLayer.Mean = value.Mean; + thicknessAquiferLayer.StandardDeviation = value.StandardDeviation; + } + } /// /// Gets or sets the total thickness of the coverage layer at the exit point. /// [m] /// - public LognormalDistribution ThicknessCoverageLayer { get; set; } + public LognormalDistribution ThicknessCoverageLayer + { + get + { + return thicknessCoverageLayer; + } + set + { + thicknessCoverageLayer.Mean = value.Mean; + thicknessCoverageLayer.StandardDeviation = value.StandardDeviation; + } + } /// /// Gets or sets the damping factor at the exit point. /// - public LognormalDistribution DampingFactorExit { get; set; } + public LognormalDistribution DampingFactorExit + { + get + { + return dampingFactorExit; + } + set + { + dampingFactorExit.Mean = value.Mean; + dampingFactorExit.StandardDeviation = value.StandardDeviation; + } + } /// /// Gets or sets the volumic weight of the saturated coverage layer. /// - public ShiftedLognormalDistribution SaturatedVolumicWeightOfCoverageLayer { get; set; } + public ShiftedLognormalDistribution SaturatedVolumicWeightOfCoverageLayer + { + get + { + return saturatedVolumicWeightOfCoverageLayer; + } + set + { + saturatedVolumicWeightOfCoverageLayer.Mean = value.Mean; + saturatedVolumicWeightOfCoverageLayer.StandardDeviation = value.StandardDeviation; + saturatedVolumicWeightOfCoverageLayer.Shift = value.Shift; + } + } #endregion Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -ra9c4c3b9c62339476e2e901bd2b402ed22ac772b -r8ca454de1833ad8a8d63bcaefdfb5d886a187a01 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision a9c4c3b9c62339476e2e901bd2b402ed22ac772b) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 8ca454de1833ad8a8d63bcaefdfb5d886a187a01) @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.34209 +// Runtime Version:4.0.30319.18444 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -975,6 +975,24 @@ } /// + /// Looks up a localized string similar to Verzadigd gewicht deklaag.. + /// + public static string PipingInput_SaturatedVolumicWeightOfCoverageLayer_Description { + get { + return ResourceManager.GetString("PipingInput_SaturatedVolumicWeightOfCoverageLayer_Description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Verzadigd gewicht deklaag [kN/m³]. + /// + public static string PipingInput_SaturatedVolumicWeightOfCoverageLayer_DisplayName { + get { + return ResourceManager.GetString("PipingInput_SaturatedVolumicWeightOfCoverageLayer_DisplayName", resourceCulture); + } + } + + /// /// Looks up a localized string similar to De horizontale afstand tussen intrede- en uittredepunt die het kwelwater ondergronds aflegt voordat het weer aan de oppervlakte komt.. /// public static string PipingInput_SeepageLength_Description { Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx =================================================================== diff -u -ra9c4c3b9c62339476e2e901bd2b402ed22ac772b -r8ca454de1833ad8a8d63bcaefdfb5d886a187a01 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx (.../Resources.resx) (revision a9c4c3b9c62339476e2e901bd2b402ed22ac772b) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Properties/Resources.resx (.../Resources.resx) (revision 8ca454de1833ad8a8d63bcaefdfb5d886a187a01) @@ -661,4 +661,10 @@ Opbarsten + + Verzadigd gewicht deklaag. + + + Verzadigd gewicht deklaag [kN/m³] + \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingInputContextProperties.cs =================================================================== diff -u -r89488cc05b12fd5720cd28a4eeeb001dc9b1456d -r8ca454de1833ad8a8d63bcaefdfb5d886a187a01 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingInputContextProperties.cs (.../PipingInputContextProperties.cs) (revision 89488cc05b12fd5720cd28a4eeeb001dc9b1456d) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingInputContextProperties.cs (.../PipingInputContextProperties.cs) (revision 8ca454de1833ad8a8d63bcaefdfb5d886a187a01) @@ -330,7 +330,22 @@ } } - // TODO: Verzadigd gewicht deklaag + [TypeConverter(typeof(ShiftedLognormalDistributionDesignVariableTypeConverter))] + [ResourcesCategory(typeof(Resources), "Categories_SoilProperties")] + [ResourcesDisplayName(typeof(Resources), "PipingInput_SaturatedVolumicWeightOfCoverageLayer_DisplayName")] + [ResourcesDescription(typeof(Resources), "PipingInput_SaturatedVolumicWeightOfCoverageLayer_Description")] + public DesignVariable SaturatedVolumicWeightOfCoverageLayer + { + get + { + return PipingSemiProbabilisticDesignValueFactory.GetSaturatedVolumicWeightOfCoverageLayer(data.WrappedData); + } + set + { + data.WrappedData.SaturatedVolumicWeightOfCoverageLayer = value.Distribution; + data.WrappedData.NotifyObservers(); + } + } #endregion } Index: Ringtoets/Piping/src/Ringtoets.Piping.KernelWrapper/PipingSemiProbabilisticDesignValueFactory.cs =================================================================== diff -u -rc2fe76d04e1517a4e0aaf62184bccd413de0e472 -r8ca454de1833ad8a8d63bcaefdfb5d886a187a01 --- Ringtoets/Piping/src/Ringtoets.Piping.KernelWrapper/PipingSemiProbabilisticDesignValueFactory.cs (.../PipingSemiProbabilisticDesignValueFactory.cs) (revision c2fe76d04e1517a4e0aaf62184bccd413de0e472) +++ Ringtoets/Piping/src/Ringtoets.Piping.KernelWrapper/PipingSemiProbabilisticDesignValueFactory.cs (.../PipingSemiProbabilisticDesignValueFactory.cs) (revision 8ca454de1833ad8a8d63bcaefdfb5d886a187a01) @@ -34,7 +34,7 @@ /// /// Creates the design variable for . /// - public static DesignVariable GetSaturatedVolumicWeightOfCoverageLayer(PipingInput parameters) + public static DesignVariable GetSaturatedVolumicWeightOfCoverageLayer(PipingInput parameters) { return CreateDesignVariable(parameters.SaturatedVolumicWeightOfCoverageLayer, 0.05); } @@ -116,5 +116,13 @@ Percentile = percentile }; } + + private static DesignVariable CreateDesignVariable(ShiftedLognormalDistribution distribution, double percentile) + { + return new ShiftedLognormalDistributionDesignVariable(distribution) + { + Percentile = percentile + }; + } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/GeneralPipingInputTest.cs =================================================================== diff -u -rde18e9d8a0324e9345f412eb6c1ffeed4f86f2fb -r8ca454de1833ad8a8d63bcaefdfb5d886a187a01 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/GeneralPipingInputTest.cs (.../GeneralPipingInputTest.cs) (revision de18e9d8a0324e9345f412eb6c1ffeed4f86f2fb) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/GeneralPipingInputTest.cs (.../GeneralPipingInputTest.cs) (revision 8ca454de1833ad8a8d63bcaefdfb5d886a187a01) @@ -15,7 +15,7 @@ Assert.AreEqual(1.0, inputParameters.UpliftModelFactor); Assert.AreEqual(1.0, inputParameters.SellmeijerModelFactor); - Assert.AreEqual(10.0, inputParameters.WaterVolumetricWeight); + Assert.AreEqual(9.81, inputParameters.WaterVolumetricWeight); Assert.AreEqual(0.3, inputParameters.CriticalHeaveGradient); Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingInputTest.cs =================================================================== diff -u -rc0a3ced404197fd781c6fcbcfc21c6676592be57 -r8ca454de1833ad8a8d63bcaefdfb5d886a187a01 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingInputTest.cs (.../PipingInputTest.cs) (revision c0a3ced404197fd781c6fcbcfc21c6676592be57) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingInputTest.cs (.../PipingInputTest.cs) (revision 8ca454de1833ad8a8d63bcaefdfb5d886a187a01) @@ -5,7 +5,6 @@ using Core.Common.Base.Geometry; using Core.Common.TestUtil; using NUnit.Framework; -using Ringtoets.HydraRing.Data; using Ringtoets.Piping.Data.Probabilistics; using Ringtoets.Piping.Data.Properties; @@ -32,15 +31,16 @@ Assert.AreEqual(1, inputParameters.PhreaticLevelExit.StandardDeviation.Value); Assert.AreEqual(3, inputParameters.PhreaticLevelExit.StandardDeviation.NumberOfDecimalPlaces); - double defaultLogNormalMean = Math.Exp(-0.5); - double defaultLogNormalStandardDev = Math.Sqrt((Math.Exp(1) - 1) * Math.Exp(1)); Assert.IsInstanceOf(inputParameters.DampingFactorExit); - Assert.AreEqual(1, inputParameters.DampingFactorExit.Mean.Value); + Assert.AreEqual(0.7, inputParameters.DampingFactorExit.Mean.Value); Assert.AreEqual(3, inputParameters.DampingFactorExit.Mean.NumberOfDecimalPlaces); - Assert.AreEqual(defaultLogNormalStandardDev, inputParameters.DampingFactorExit.StandardDeviation, + Assert.AreEqual(0.0, inputParameters.DampingFactorExit.StandardDeviation, GetErrorTolerance(inputParameters.DampingFactorExit.StandardDeviation)); Assert.AreEqual(3, inputParameters.DampingFactorExit.StandardDeviation.NumberOfDecimalPlaces); + double defaultLogNormalMean = Math.Exp(-0.5); + double defaultLogNormalStandardDev = Math.Sqrt((Math.Exp(1) - 1) * Math.Exp(1)); + Assert.IsInstanceOf(inputParameters.Diameter70); Assert.AreEqual(defaultLogNormalMean, inputParameters.Diameter70.Mean, GetErrorTolerance(inputParameters.Diameter70.Mean)); @@ -212,5 +212,208 @@ Assert.AreEqual(new RoundedDouble(2, 1), input.EntryPointL); Assert.AreEqual(new RoundedDouble(2, 2), input.ExitPointL); } + + [Test] + public void PhreaticLevelExit_SetNewValue_UpdateMeanAndStandardDeviation() + { + // Setup + var inputs = new PipingInput(new GeneralPipingInput()); + NormalDistribution originalPhreaticLevelExit = inputs.PhreaticLevelExit; + + var newValue = new NormalDistribution(5) + { + Mean = (RoundedDouble)1.23456, + StandardDeviation = (RoundedDouble)7.89123 + }; + + // Call + inputs.PhreaticLevelExit = newValue; + + // Assert + Assert.AreSame(originalPhreaticLevelExit, inputs.PhreaticLevelExit, + "Stochast instance hasn't changed to 'newValue'."); + Assert.AreEqual(3, originalPhreaticLevelExit.Mean.NumberOfDecimalPlaces); + Assert.AreEqual(1.235, originalPhreaticLevelExit.Mean.Value); + Assert.AreEqual(3, originalPhreaticLevelExit.StandardDeviation.NumberOfDecimalPlaces); + Assert.AreEqual(7.891, originalPhreaticLevelExit.StandardDeviation.Value); + } + + [Test] + public void DampingFactorExit_SetNewValue_UpdateMeanAndStandardDeviation() + { + // Setup + var inputs = new PipingInput(new GeneralPipingInput()); + LognormalDistribution originalDampingFactorExit = inputs.DampingFactorExit; + + var newValue = new LognormalDistribution(5) + { + Mean = (RoundedDouble)4.56789, + StandardDeviation = (RoundedDouble)1.23456 + }; + + // Call + inputs.DampingFactorExit = newValue; + + // Assert + Assert.AreSame(originalDampingFactorExit, inputs.DampingFactorExit, + "Stochast instance hasn't changed to 'newValue'."); + Assert.AreEqual(3, originalDampingFactorExit.Mean.NumberOfDecimalPlaces); + Assert.AreEqual(4.568, originalDampingFactorExit.Mean.Value); + Assert.AreEqual(3, originalDampingFactorExit.StandardDeviation.NumberOfDecimalPlaces); + Assert.AreEqual(1.235, originalDampingFactorExit.StandardDeviation.Value); + } + + [Test] + public void ThicknessCoverageLayer_SetNewValue_UpdateMeanAndStandardDeviation() + { + // Setup + var inputs = new PipingInput(new GeneralPipingInput()); + LognormalDistribution originalThicknessCoverageLayer = inputs.ThicknessCoverageLayer; + + var newValue = new LognormalDistribution(5) + { + Mean = (RoundedDouble)1.23456, + StandardDeviation = (RoundedDouble)7.89123 + }; + + // Call + inputs.ThicknessCoverageLayer = newValue; + + // Assert + Assert.AreSame(originalThicknessCoverageLayer, inputs.ThicknessCoverageLayer, + "Stochast instance hasn't changed to 'newValue'."); + Assert.AreEqual(2, originalThicknessCoverageLayer.Mean.NumberOfDecimalPlaces); + Assert.AreEqual(1.23, originalThicknessCoverageLayer.Mean.Value); + Assert.AreEqual(2, originalThicknessCoverageLayer.StandardDeviation.NumberOfDecimalPlaces); + Assert.AreEqual(7.89, originalThicknessCoverageLayer.StandardDeviation.Value); + } + + [Test] + public void SaturatedVolumicWeightOfCoverageLayer_SetNewValue_UpdateMeanAndStandardDeviation() + { + // Setup + var inputs = new PipingInput(new GeneralPipingInput()); + ShiftedLognormalDistribution originalSaturatedVolumicWeightOfCoverageLayer = inputs.SaturatedVolumicWeightOfCoverageLayer; + + var newValue = new ShiftedLognormalDistribution(5) + { + Mean = (RoundedDouble)1.11111, + StandardDeviation = (RoundedDouble)2.22222, + Shift = (RoundedDouble)(-3.33333) + }; + + // Call + inputs.SaturatedVolumicWeightOfCoverageLayer = newValue; + + // Assert + Assert.AreSame(originalSaturatedVolumicWeightOfCoverageLayer, inputs.SaturatedVolumicWeightOfCoverageLayer, + "Stochast instance hasn't changed to 'newValue'."); + Assert.AreEqual(2, originalSaturatedVolumicWeightOfCoverageLayer.Mean.NumberOfDecimalPlaces); + Assert.AreEqual(1.11, originalSaturatedVolumicWeightOfCoverageLayer.Mean.Value); + Assert.AreEqual(2, originalSaturatedVolumicWeightOfCoverageLayer.StandardDeviation.NumberOfDecimalPlaces); + Assert.AreEqual(2.22, originalSaturatedVolumicWeightOfCoverageLayer.StandardDeviation.Value); + Assert.AreEqual(2, originalSaturatedVolumicWeightOfCoverageLayer.Shift.NumberOfDecimalPlaces); + Assert.AreEqual(-3.33, originalSaturatedVolumicWeightOfCoverageLayer.Shift.Value); + } + + [Test] + public void SeepageLength_SetNewValue_UpdateMeanAndStandardDeviation() + { + // Setup + var inputs = new PipingInput(new GeneralPipingInput()); + LognormalDistribution originalSeepageLength = inputs.SeepageLength; + + var newValue = new LognormalDistribution(5) + { + Mean = (RoundedDouble)5.55555, + StandardDeviation = (RoundedDouble)6.66666 + }; + + // Call + inputs.SeepageLength = newValue; + + // Assert + Assert.AreSame(originalSeepageLength, inputs.SeepageLength, + "Stochast instance hasn't changed to 'newValue'."); + Assert.AreEqual(2, originalSeepageLength.Mean.NumberOfDecimalPlaces); + Assert.AreEqual(5.56, originalSeepageLength.Mean.Value); + Assert.AreEqual(2, originalSeepageLength.StandardDeviation.NumberOfDecimalPlaces); + Assert.AreEqual(6.67, originalSeepageLength.StandardDeviation.Value); + } + + [Test] + public void Diameter70_SetNewValue_UpdateMeanAndStandardDeviation() + { + // Setup + var inputs = new PipingInput(new GeneralPipingInput()); + LognormalDistribution originalDiameter70 = inputs.Diameter70; + + var newValue = new LognormalDistribution(5) + { + Mean = (RoundedDouble)8.8888, + StandardDeviation = (RoundedDouble)9.14363 + }; + + // Call + inputs.Diameter70 = newValue; + + // Assert + Assert.AreSame(originalDiameter70, inputs.Diameter70, + "Stochast instance hasn't changed to 'newValue'."); + Assert.AreEqual(2, originalDiameter70.Mean.NumberOfDecimalPlaces); + Assert.AreEqual(8.89, originalDiameter70.Mean.Value); + Assert.AreEqual(2, originalDiameter70.StandardDeviation.NumberOfDecimalPlaces); + Assert.AreEqual(9.14, originalDiameter70.StandardDeviation.Value); + } + + [Test] + public void DarcyPermeability_SetNewValue_UpdateMeanAndStandardDeviation() + { + // Setup + var inputs = new PipingInput(new GeneralPipingInput()); + LognormalDistribution originalDarcyPermeability = inputs.DarcyPermeability; + + var newValue = new LognormalDistribution(5) + { + Mean = (RoundedDouble)1.93753, + StandardDeviation = (RoundedDouble)859.49028 + }; + + // Call + inputs.DarcyPermeability = newValue; + + // Assert + Assert.AreSame(originalDarcyPermeability, inputs.DarcyPermeability, + "Stochast instance hasn't changed to 'newValue'."); + Assert.AreEqual(3, originalDarcyPermeability.Mean.NumberOfDecimalPlaces); + Assert.AreEqual(1.938, originalDarcyPermeability.Mean.Value); + Assert.AreEqual(3, originalDarcyPermeability.StandardDeviation.NumberOfDecimalPlaces); + Assert.AreEqual(859.490, originalDarcyPermeability.StandardDeviation.Value); + } + + [Test] + public void ThicknessAquiferLayer_SetNewValue_UpdateMeanAndStandardDeviation() + { + // Setup + var inputs = new PipingInput(new GeneralPipingInput()); + LognormalDistribution originalThicknessAquiferLayer = inputs.ThicknessAquiferLayer; + + var newValue = new LognormalDistribution(5) + { + Mean = (RoundedDouble)12.34567, + StandardDeviation = (RoundedDouble)89.12345 + }; + + // Call + inputs.ThicknessAquiferLayer = newValue; + + // Assert + Assert.AreSame(originalThicknessAquiferLayer, inputs.ThicknessAquiferLayer, + "Stochast instance hasn't changed to 'newValue'."); + Assert.AreEqual(2, originalThicknessAquiferLayer.Mean.NumberOfDecimalPlaces); + Assert.AreEqual(12.35, originalThicknessAquiferLayer.Mean.Value); + Assert.AreEqual(2, originalThicknessAquiferLayer.StandardDeviation.NumberOfDecimalPlaces); + Assert.AreEqual(89.12, originalThicknessAquiferLayer.StandardDeviation.Value); + } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs =================================================================== diff -u -ra9c4c3b9c62339476e2e901bd2b402ed22ac772b -r8ca454de1833ad8a8d63bcaefdfb5d886a187a01 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs (.../PipingInputContextPropertiesTest.cs) (revision a9c4c3b9c62339476e2e901bd2b402ed22ac772b) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs (.../PipingInputContextPropertiesTest.cs) (revision 8ca454de1833ad8a8d63bcaefdfb5d886a187a01) @@ -74,6 +74,7 @@ Assert.AreSame(inputParameters.Diameter70, properties.Diameter70.Distribution); Assert.AreSame(inputParameters.DarcyPermeability, properties.DarcyPermeability.Distribution); Assert.AreSame(inputParameters.ThicknessAquiferLayer, properties.ThicknessAquiferLayer.Distribution); + Assert.AreSame(inputParameters.SaturatedVolumicWeightOfCoverageLayer, properties.SaturatedVolumicWeightOfCoverageLayer.Distribution); Assert.AreEqual(inputParameters.AssessmentLevel, properties.AssessmentLevel); Assert.AreEqual(inputParameters.PiezometricHeadExit, properties.PiezometricHeadExit); @@ -127,7 +128,7 @@ var mocks = new MockRepository(); var assessmentSectionMock = mocks.StrictMock(); var projectObserver = mocks.StrictMock(); - int numberProperties = 7; + int numberProperties = 8; projectObserver.Expect(o => o.UpdateObserver()).Repeat.Times(numberProperties); mocks.ReplayAll(); @@ -142,6 +143,7 @@ var phreaticLevelExit = new NormalDistribution(2); var diameter70 = new LognormalDistribution(2); var darcyPermeability = new LognormalDistribution(3); + var saturatedVolumicWeightOfCoverageLoayer = new ShiftedLognormalDistribution(2); var surfaceLine = ValidSurfaceLine(0.0, 4.0); PipingSoilProfile soilProfile = new TestPipingSoilProfile(); @@ -157,17 +159,42 @@ PhreaticLevelExit = new NormalDistributionDesignVariable(phreaticLevelExit), Diameter70 = new LognormalDistributionDesignVariable(diameter70), DarcyPermeability = new LognormalDistributionDesignVariable(darcyPermeability), + SaturatedVolumicWeightOfCoverageLayer = new ShiftedLognormalDistributionDesignVariable(saturatedVolumicWeightOfCoverageLoayer), SurfaceLine = surfaceLine, SoilProfile = soilProfile, HydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(assessmentLevel) }; // Assert - Assert.AreEqual(assessmentLevel, inputParameters.AssessmentLevel, 1e-2); - Assert.AreEqual(dampingFactorExit, inputParameters.DampingFactorExit); - Assert.AreEqual(phreaticLevelExit, inputParameters.PhreaticLevelExit); - Assert.AreEqual(diameter70, inputParameters.Diameter70); - Assert.AreEqual(darcyPermeability, inputParameters.DarcyPermeability); + Assert.AreEqual(assessmentLevel, inputParameters.AssessmentLevel, GetAccuracy(inputParameters.AssessmentLevel)); + + Assert.AreEqual(dampingFactorExit.Mean.Value, inputParameters.DampingFactorExit.Mean.Value, + GetAccuracy(inputParameters.DampingFactorExit)); + Assert.AreEqual(dampingFactorExit.StandardDeviation.Value, inputParameters.DampingFactorExit.StandardDeviation.Value, + GetAccuracy(inputParameters.DampingFactorExit)); + + Assert.AreEqual(phreaticLevelExit.Mean, inputParameters.PhreaticLevelExit.Mean, + GetAccuracy(inputParameters.PhreaticLevelExit)); + Assert.AreEqual(phreaticLevelExit.StandardDeviation, inputParameters.PhreaticLevelExit.StandardDeviation, + GetAccuracy(inputParameters.PhreaticLevelExit)); + + Assert.AreEqual(diameter70.Mean, inputParameters.Diameter70.Mean, + GetAccuracy(inputParameters.Diameter70)); + Assert.AreEqual(diameter70.StandardDeviation, inputParameters.Diameter70.StandardDeviation, + GetAccuracy(inputParameters.Diameter70)); + + Assert.AreEqual(darcyPermeability.Mean, inputParameters.DarcyPermeability.Mean, + GetAccuracy(inputParameters.DarcyPermeability)); + Assert.AreEqual(darcyPermeability.StandardDeviation, inputParameters.DarcyPermeability.StandardDeviation, + GetAccuracy(inputParameters.DarcyPermeability)); + + Assert.AreEqual(saturatedVolumicWeightOfCoverageLoayer.Mean, inputParameters.SaturatedVolumicWeightOfCoverageLayer.Mean, + GetAccuracy(inputParameters.SaturatedVolumicWeightOfCoverageLayer)); + Assert.AreEqual(saturatedVolumicWeightOfCoverageLoayer.StandardDeviation, inputParameters.SaturatedVolumicWeightOfCoverageLayer.StandardDeviation, + GetAccuracy(inputParameters.SaturatedVolumicWeightOfCoverageLayer)); + Assert.AreEqual(saturatedVolumicWeightOfCoverageLoayer.Shift, inputParameters.SaturatedVolumicWeightOfCoverageLayer.Shift, + GetAccuracy(inputParameters.SaturatedVolumicWeightOfCoverageLayer)); + Assert.AreEqual(surfaceLine, inputParameters.SurfaceLine); Assert.AreEqual(soilProfile, inputParameters.SoilProfile); @@ -443,6 +470,16 @@ mocks.VerifyAll(); } + private double GetAccuracy(RoundedDouble roundedDouble) + { + return Math.Pow(10.0, -roundedDouble.NumberOfDecimalPlaces); + } + + private double GetAccuracy(IDistribution distribution) + { + return Math.Pow(10.0, -distribution.Mean.NumberOfDecimalPlaces); + } + private static RingtoetsPipingSurfaceLine ValidSurfaceLine(double xMin, double xMax) { var surfaceLine = new RingtoetsPipingSurfaceLine();