Index: Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDikeAssessmentSectionCommand.cs =================================================================== diff -u -rbbfd376aee76613b471f70d2b1214d7e7b08fb1f -r0c2ba533bc2cf8f4693c468e07f73737e2cc6644 --- Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDikeAssessmentSectionCommand.cs (.../AddNewDemoDikeAssessmentSectionCommand.cs) (revision bbfd376aee76613b471f70d2b1214d7e7b08fb1f) +++ Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoDikeAssessmentSectionCommand.cs (.../AddNewDemoDikeAssessmentSectionCommand.cs) (revision 0c2ba533bc2cf8f4693c468e07f73737e2cc6644) @@ -7,6 +7,7 @@ using Ringtoets.Integration.Forms.PresentationObjects; using Ringtoets.Integration.Plugin.FileImporters; using Ringtoets.Piping.Data; +using Ringtoets.Piping.Data.Probabilistics; using Ringtoets.Piping.Forms.Extensions; using Ringtoets.Piping.Plugin.FileImporter; @@ -116,7 +117,9 @@ calculation.InputParameters.SetSurfaceLine(pipingFailureMechanism.SurfaceLines.First(sl => sl.Name == "PK001_0001")); calculation.InputParameters.SoilProfile = pipingFailureMechanism.SoilProfiles.First(sl => sl.Name == "AD640M00_Segment_36005_1D2"); calculation.InputParameters.PhreaticLevelExit.Mean = 3; - calculation.InputParameters.ThicknessCoverageLayer.Mean = Math.Exp(-0.5); + calculation.InputParameters.AssessmentLevel = 0.0; + calculation.InputParameters.ThicknessCoverageLayer = new LognormalDistribution(); + calculation.InputParameters.ThicknessAquiferLayer = new LognormalDistribution(); } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingInput.cs =================================================================== diff -u -r67fc75b9da1684eb22a425825f63354146f908f5 -r0c2ba533bc2cf8f4693c468e07f73737e2cc6644 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingInput.cs (.../PipingInput.cs) (revision 67fc75b9da1684eb22a425825f63354146f908f5) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingInput.cs (.../PipingInput.cs) (revision 0c2ba533bc2cf8f4693c468e07f73737e2cc6644) @@ -34,6 +34,7 @@ public class PipingInput : Observable { private double assessmentLevel; + private double exitPointL; public const double SeepageLengthStandardDeviationFraction = 0.1; /// @@ -54,20 +55,30 @@ SellmeijerReductionFactor = 0.3; CriticalHeaveGradient = 0.3; + ExitPointL = double.NaN; PhreaticLevelExit = new NormalDistribution(); DampingFactorExit = new LognormalDistribution { Mean = 1.0 }; ThicknessCoverageLayer = new LognormalDistribution { - Mean = double.NaN + Mean = double.NaN, + StandardDeviation = 0.5 }; - SeepageLength = new LognormalDistribution(); - SeepageLength.StandardDeviation = SeepageLength.Mean * SeepageLengthStandardDeviationFraction; + SeepageLength = new LognormalDistribution + { + Mean = double.NaN, + StandardDeviation = double.NaN + }; Diameter70 = new LognormalDistribution(); DarcyPermeability = new LognormalDistribution(); - ThicknessAquiferLayer = new LognormalDistribution(); + ThicknessAquiferLayer = new LognormalDistribution + { + Mean = double.NaN, + StandardDeviation = 0.5 + }; + assessmentLevel = double.NaN; } /// @@ -163,7 +174,22 @@ /// Gets or sets the L-coordinate of the exit point. /// [m] /// - public double ExitPointL { get; set; } + /// is less or equal to 0. + public double ExitPointL + { + get + { + return exitPointL; + } + set + { + if (value <= 0) + { + throw new ArgumentOutOfRangeException("value", Resources.PipingInput_ExitPointL_Value_must_be_greater_than_zero); + } + exitPointL = value; + } + } #region Constants Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs =================================================================== diff -u -r80aeb6fb275f0d7ea3f470bb8ba0ef0fc5caa113 -r0c2ba533bc2cf8f4693c468e07f73737e2cc6644 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 80aeb6fb275f0d7ea3f470bb8ba0ef0fc5caa113) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 0c2ba533bc2cf8f4693c468e07f73737e2cc6644) @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18444 +// Runtime Version:4.0.30319.34209 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -232,6 +232,15 @@ } /// + /// Looks up a localized string similar to De waarde voor het L-coördinaat van het uittredepunt moet groter zijn dan 0.. + /// + public static string PipingInput_ExitPointL_Value_must_be_greater_than_zero { + get { + return ResourceManager.GetString("PipingInput_ExitPointL_Value_must_be_greater_than_zero", resourceCulture); + } + } + + /// /// Looks up a localized string similar to {0} L moet in het bereik van [{1}, {2}] liggen.. /// public static string RingtoetsPipingSurfaceLine_0_L_needs_to_be_in_1_2_range { Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx =================================================================== diff -u -r80aeb6fb275f0d7ea3f470bb8ba0ef0fc5caa113 -r0c2ba533bc2cf8f4693c468e07f73737e2cc6644 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx (.../Resources.resx) (revision 80aeb6fb275f0d7ea3f470bb8ba0ef0fc5caa113) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/Properties/Resources.resx (.../Resources.resx) (revision 0c2ba533bc2cf8f4693c468e07f73737e2cc6644) @@ -198,4 +198,7 @@ Dijken - Piping + + De waarde voor het L-coördinaat van het uittredepunt moet groter zijn dan 0. + \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Extensions/PipingInputExtensions.cs =================================================================== diff -u -rbbfd376aee76613b471f70d2b1214d7e7b08fb1f -r0c2ba533bc2cf8f4693c468e07f73737e2cc6644 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Extensions/PipingInputExtensions.cs (.../PipingInputExtensions.cs) (revision bbfd376aee76613b471f70d2b1214d7e7b08fb1f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Extensions/PipingInputExtensions.cs (.../PipingInputExtensions.cs) (revision 0c2ba533bc2cf8f4693c468e07f73737e2cc6644) @@ -15,7 +15,7 @@ /// public static class PipingInputExtensions { - private static ILog logger = LogManager.GetLogger(typeof(PipingInput)); + private static readonly ILog logger = LogManager.GetLogger(typeof(PipingInput)); /// /// Updates the property and propagates changes to dependent Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingInputTest.cs =================================================================== diff -u -r67fc75b9da1684eb22a425825f63354146f908f5 -r0c2ba533bc2cf8f4693c468e07f73737e2cc6644 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingInputTest.cs (.../PipingInputTest.cs) (revision 67fc75b9da1684eb22a425825f63354146f908f5) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingInputTest.cs (.../PipingInputTest.cs) (revision 0c2ba533bc2cf8f4693c468e07f73737e2cc6644) @@ -5,6 +5,7 @@ using NUnit.Framework; using Ringtoets.Piping.Data.Probabilistics; +using Ringtoets.Piping.Data.Properties; namespace Ringtoets.Piping.Data.Test { @@ -29,25 +30,15 @@ Assert.IsInstanceOf(inputParameters.DampingFactorExit); Assert.AreEqual(1, inputParameters.DampingFactorExit.Mean); Assert.AreEqual(defaultLogNormalStandardDev, inputParameters.DampingFactorExit.StandardDeviation); - Assert.IsInstanceOf(inputParameters.ThicknessCoverageLayer); - Assert.IsNaN(inputParameters.ThicknessCoverageLayer.Mean); - Assert.AreEqual(defaultLogNormalStandardDev, inputParameters.ThicknessCoverageLayer.StandardDeviation); - Assert.IsInstanceOf(inputParameters.SeepageLength); - Assert.AreEqual(defaultLogNormalMean, inputParameters.SeepageLength.Mean); - Assert.AreEqual(defaultLogNormalMean * 0.1, inputParameters.SeepageLength.StandardDeviation); Assert.IsInstanceOf(inputParameters.Diameter70); Assert.AreEqual(defaultLogNormalMean, inputParameters.Diameter70.Mean); Assert.AreEqual(defaultLogNormalStandardDev, inputParameters.Diameter70.StandardDeviation); Assert.IsInstanceOf(inputParameters.DarcyPermeability); Assert.AreEqual(defaultLogNormalMean, inputParameters.DarcyPermeability.Mean); Assert.AreEqual(defaultLogNormalStandardDev, inputParameters.DarcyPermeability.StandardDeviation); - Assert.IsInstanceOf(inputParameters.ThicknessAquiferLayer); - Assert.AreEqual(defaultLogNormalMean, inputParameters.ThicknessAquiferLayer.Mean); - Assert.AreEqual(defaultLogNormalStandardDev, inputParameters.ThicknessAquiferLayer.StandardDeviation); Assert.AreEqual(0, inputParameters.PiezometricHeadExit); Assert.AreEqual(0, inputParameters.PiezometricHeadPolder); - Assert.AreEqual(0, inputParameters.AssessmentLevel); Assert.IsNull(inputParameters.SurfaceLine); Assert.IsNull(inputParameters.SoilProfile); Assert.IsNull(inputParameters.HydraulicBoundaryLocation); @@ -63,6 +54,21 @@ Assert.AreEqual(0.25, inputParameters.WhitesDragCoefficient); Assert.AreEqual(37, inputParameters.BeddingAngle); Assert.AreEqual(2.08e-4, inputParameters.MeanDiameter70); + + Assert.IsInstanceOf(inputParameters.ThicknessCoverageLayer); + Assert.IsNaN(inputParameters.ThicknessCoverageLayer.Mean); + Assert.AreEqual(0.5, inputParameters.ThicknessCoverageLayer.StandardDeviation); + + Assert.IsInstanceOf(inputParameters.ThicknessAquiferLayer); + Assert.IsNaN(inputParameters.ThicknessAquiferLayer.Mean); + Assert.AreEqual(0.5, inputParameters.ThicknessAquiferLayer.StandardDeviation); + + Assert.IsInstanceOf(inputParameters.SeepageLength); + Assert.IsNaN(inputParameters.SeepageLength.Mean); + Assert.IsNaN(inputParameters.SeepageLength.StandardDeviation); + + Assert.IsNaN(inputParameters.ExitPointL); + Assert.IsNaN(inputParameters.AssessmentLevel); } [Test] @@ -75,7 +81,23 @@ TestDelegate test = () => pipingInput.AssessmentLevel = double.NaN; // Assert - TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, Properties.Resources.PipingInput_AssessmentLevel_Cannot_set_to_NaN); + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, Resources.PipingInput_AssessmentLevel_Cannot_set_to_NaN); } + + [Test] + [TestCase(0)] + [TestCase(-1e-6)] + [TestCase(-21)] + public void ExitPointL_ValueLessOrEqualToZero_ThrowsArgumentOutOfRangeException(double value) + { + // Setup + var pipingInput = new PipingInput(); + + // Call + TestDelegate test = () => pipingInput.ExitPointL = value; + + // Assert + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, Resources.PipingInput_ExitPointL_Value_must_be_greater_than_zero); + } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Extensions/PipingInputExtensionsTest.cs =================================================================== diff -u -rbbfd376aee76613b471f70d2b1214d7e7b08fb1f -r0c2ba533bc2cf8f4693c468e07f73737e2cc6644 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Extensions/PipingInputExtensionsTest.cs (.../PipingInputExtensionsTest.cs) (revision bbfd376aee76613b471f70d2b1214d7e7b08fb1f) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Extensions/PipingInputExtensionsTest.cs (.../PipingInputExtensionsTest.cs) (revision 0c2ba533bc2cf8f4693c468e07f73737e2cc6644) @@ -182,63 +182,38 @@ } [Test] - [TestCase(2, 2, 4)] - [TestCase(4, 2, 6)] - [TestCase(4, 0.5, 4.5)] - [TestCase(1e-6, 4, 4 + 1e-6)] - [TestCase(0.5, 0.1 + 1e-6, 0.6 + 1e-6)] + [TestCase(3, 2, 1)] + [TestCase(4, 2, 2)] + [TestCase(4, 0.5, 0.5)] + [TestCase(1 + 1e-6, 3, 1e-6)] + [TestCase(3.5, 0.5 + 1e-6, 1e-6)] public void SetExitPointL_ExitPointAndSeepageLengthSet_UpdatesSeepageLength(double seepageLength, double exitPoint, double newSeepageLength) { // Setup var surfaceLine = ValidSurfaceLine(0.0, 4.0); - var soilProfile = new PipingSoilProfile(String.Empty, -2, new[] - { - new PipingSoilLayer(0.0) - { - IsAquifer = true - }, - new PipingSoilLayer(1.0) - { - IsAquifer = false - } - }); - var input = new PipingInput - { - SurfaceLine = surfaceLine, - SoilProfile = soilProfile, - SeepageLength = - { - Mean = seepageLength - } - }; + var input = new PipingInput(); + input.SetSurfaceLine(surfaceLine); + input.SeepageLength.Mean = seepageLength; // L-coordinate of entry point at 4.0 - seepageLength + + // Call input.SetExitPointL(exitPoint); - // Call & Assert + // Assert Assert.AreEqual(exitPoint, input.ExitPointL); - Assert.AreEqual(newSeepageLength, input.SeepageLength.Mean); + Assert.AreEqual(newSeepageLength, input.SeepageLength.Mean, 1e-6); } [Test] public void SetEntryPointL_SetResultInInvalidSeePage_ThrowsArgumentException() { // Setup - var random = new Random(22); - var surfaceLine = ValidSurfaceLine(0.0, 4.0); - var soilProfile = new PipingSoilProfile(String.Empty, random.NextDouble(), new[] - { - new PipingSoilLayer(random.NextDouble()) - { - IsAquifer = true - } - }); var l = 2.0; var input = new PipingInput { SurfaceLine = surfaceLine, - SoilProfile = soilProfile, ExitPointL = l }; @@ -254,33 +229,22 @@ public void SetExitPointL_SetResultInInvalidSeePage_ThrowsArgumentException() { // Setup - var random = new Random(22); + var exitPointOld = 4.0; + var seepageLength = 3.0; + var surfaceLine = ValidSurfaceLine(0.0, exitPointOld); + var input = new PipingInput(); + input.SetSurfaceLine(surfaceLine); + input.SeepageLength.Mean = seepageLength; + var entryPointL = exitPointOld - seepageLength; - var surfaceLine = ValidSurfaceLine(0.0, 4.0); - var soilProfile = new PipingSoilProfile(String.Empty, random.NextDouble(), new[] + // Call + TestDelegate test = () => { - new PipingSoilLayer(random.NextDouble()) - { - IsAquifer = true - } - }); - var l = -2.0; - var input = new PipingInput - { - SurfaceLine = surfaceLine, - SoilProfile = soilProfile, - SeepageLength = - { - Mean = -l - } + input.SetExitPointL(entryPointL); }; - - // Call - TestDelegate test = () => input.SetExitPointL(l); - // Assert - var message = string.Format(Resources.PipingInputContextProperties_ExitPointL_Value_0_results_in_invalid_seepage_length, l); + var message = string.Format(Resources.PipingInputContextProperties_ExitPointL_Value_0_results_in_invalid_seepage_length, entryPointL); TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, message); } Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs =================================================================== diff -u -r847f6b97f0a6e007a89364ad12d0541bc0d84d1e -r0c2ba533bc2cf8f4693c468e07f73737e2cc6644 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs (.../PipingInputContextPropertiesTest.cs) (revision 847f6b97f0a6e007a89364ad12d0541bc0d84d1e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs (.../PipingInputContextPropertiesTest.cs) (revision 0c2ba533bc2cf8f4693c468e07f73737e2cc6644) @@ -11,6 +11,7 @@ using Ringtoets.Piping.Calculation.TestUtil; using Ringtoets.Piping.Data; using Ringtoets.Piping.Data.Probabilistics; +using Ringtoets.Piping.Forms.Extensions; using Ringtoets.Piping.Forms.PresentationObjects; using Ringtoets.Piping.Forms.Properties; using Ringtoets.Piping.Forms.PropertyClasses; @@ -251,21 +252,9 @@ mocks.ReplayAll(); var surfaceLine = ValidSurfaceLine(0.0, 4.0); - var soilProfile = new PipingSoilProfile(String.Empty, -1, new[] - { - new PipingSoilLayer(0) - { - IsAquifer = true - }, - new PipingSoilLayer(1) - { - IsAquifer = false - } - }); var inputParameters = new PipingInput { - SurfaceLine = surfaceLine, - SoilProfile = soilProfile + SurfaceLine = surfaceLine }; inputParameters.Attach(inputObserver); @@ -274,10 +263,10 @@ Data = new PipingInputContext(inputParameters, Enumerable.Empty(), Enumerable.Empty(), - assessmentSectionMock) + assessmentSectionMock), + ExitPointL = exitPoint }; - properties.ExitPointL = exitPoint; properties.SeepageLength.Distribution.Mean = seepageLength; // Call & Assert @@ -305,21 +294,9 @@ mocks.ReplayAll(); var surfaceLine = ValidSurfaceLine(0.0, 4.0); - var soilProfile = new PipingSoilProfile(String.Empty, -1, new[] - { - new PipingSoilLayer(0) - { - IsAquifer = true - }, - new PipingSoilLayer(1) - { - IsAquifer = false - } - }); var inputParameters = new PipingInput { - SurfaceLine = surfaceLine, - SoilProfile = soilProfile + SurfaceLine = surfaceLine }; inputParameters.Attach(inputObserver); @@ -328,11 +305,11 @@ Data = new PipingInputContext(inputParameters, Enumerable.Empty(), Enumerable.Empty(), - assessmentSectionMock) + assessmentSectionMock), + ExitPointL = exitPoint, + EntryPointL = entryPoint }; - properties.ExitPointL = exitPoint; - properties.EntryPointL = entryPoint; // Call & Assert Assert.AreEqual(seepageLength, properties.SeepageLength.Distribution.Mean, 1e-6); @@ -354,37 +331,23 @@ mocks.ReplayAll(); var surfaceLine = ValidSurfaceLine(0.0, 4.0); - var soilProfile = new PipingSoilProfile(String.Empty, -1, new[] - { - new PipingSoilLayer(0) - { - IsAquifer = true - }, - new PipingSoilLayer(1) - { - IsAquifer = false - } - }); - var inputParameters = new PipingInput - { - SurfaceLine = surfaceLine, - SoilProfile = soilProfile - }; + var inputParameters = new PipingInput(); + inputParameters.SetSurfaceLine(surfaceLine); inputParameters.Attach(inputObserver); var properties = new PipingInputContextProperties { Data = new PipingInputContext(inputParameters, Enumerable.Empty(), Enumerable.Empty(), - assessmentSectionMock) + assessmentSectionMock), + EntryPointL = 0.5, + ExitPointL = 2 }; - properties.EntryPointL = -1; - properties.ExitPointL = 2; // Call & Assert - Assert.AreEqual(3, properties.SeepageLength.Distribution.Mean); + Assert.AreEqual(1.5, properties.SeepageLength.Distribution.Mean); Assert.AreEqual(properties.ExitPointL, inputParameters.ExitPointL); Assert.AreEqual(properties.SeepageLength.Distribution.Mean, inputParameters.SeepageLength.Mean); @@ -401,21 +364,9 @@ mocks.ReplayAll(); var surfaceLine = ValidSurfaceLine(0.0, 4.0); - var soilProfile = new PipingSoilProfile(String.Empty, -1, new[] - { - new PipingSoilLayer(0) - { - IsAquifer = true - }, - new PipingSoilLayer(1) - { - IsAquifer = false - } - }); var inputParameters = new PipingInput { - SurfaceLine = surfaceLine, - SoilProfile = soilProfile + SurfaceLine = surfaceLine }; var properties = new PipingInputContextProperties @@ -426,7 +377,7 @@ assessmentSectionMock) }; - var l = 2.0; + const double l = 2.0; properties.ExitPointL = l; inputParameters.Attach(inputObserver); @@ -450,21 +401,9 @@ var inputObserver = mocks.StrictMock(); mocks.ReplayAll(); - var random = new Random(22); - var surfaceLine = ValidSurfaceLine(0.0, 4.0); - var soilProfile = new PipingSoilProfile(String.Empty, random.NextDouble(), new[] - { - new PipingSoilLayer(random.NextDouble()) - { - IsAquifer = true - } - }); - var inputParameters = new PipingInput - { - SurfaceLine = surfaceLine, - SoilProfile = soilProfile - }; + var inputParameters = new PipingInput(); + inputParameters.SetSurfaceLine(surfaceLine); var properties = new PipingInputContextProperties { @@ -474,7 +413,7 @@ assessmentSectionMock) }; - var l = -2.0; + const double l = 2.0; properties.EntryPointL = l; inputParameters.Attach(inputObserver); @@ -498,7 +437,11 @@ var projectObserver = mocks.StrictMock(); mocks.ReplayAll(); - var inputParameters = new PipingInput(); + double assessmentLevel = new Random(21).NextDouble(); + var inputParameters = new PipingInput + { + AssessmentLevel = assessmentLevel + }; inputParameters.Attach(projectObserver); var properties = new PipingInputContextProperties @@ -522,8 +465,8 @@ var message = string.Format("Kan locatie '{0}' niet gebruiken als invoer. Toetspeil moet een geldige waarde hebben.", testName); TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, message); - Assert.AreEqual(0, properties.AssessmentLevelSellmeijer); - Assert.AreEqual(0, properties.AssessmentLevelUplift); + Assert.AreEqual(assessmentLevel, properties.AssessmentLevelSellmeijer); + Assert.AreEqual(assessmentLevel, properties.AssessmentLevelUplift); mocks.VerifyAll(); }