Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationService.cs =================================================================== diff -u -r3a89e41054c6cfe6babdc150e8282cbe4a6dc672 -r7ee19b11cabfc6cb2ba1ab895462b024a621294b --- Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 3a89e41054c6cfe6babdc150e8282cbe4a6dc672) +++ Ringtoets/Piping/src/Ringtoets.Piping.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 7ee19b11cabfc6cb2ba1ab895462b024a621294b) @@ -229,6 +229,14 @@ { warnings.Add(Resources.PipingCalculationService_GetInputWarnings_Multiple_coverage_layers_Attempt_to_determine_value_from_combination); } + if (!double.IsNaN(inputParameters.Diameter70.Mean) && !double.IsNaN(inputParameters.Diameter70.StandardDeviation)) + { + var diameter70Value = PipingSemiProbabilisticDesignValueFactory.GetDiameter70(inputParameters).GetDesignValue(); + if (diameter70Value < 6.3e-5|| diameter70Value > 0.5e-3) + { + warnings.Add(string.Format(Resources.PipingCalculationService_GetInputWarnings_Specified_DiameterD70_value_0_not_in_valid_range_of_model, diameter70Value)); + } + } } return warnings; Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/Properties/Resources.Designer.cs =================================================================== diff -u -re12f4d3c8a659d72f0550416b85df98bb0e6f7dd -r7ee19b11cabfc6cb2ba1ab895462b024a621294b --- Ringtoets/Piping/src/Ringtoets.Piping.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision e12f4d3c8a659d72f0550416b85df98bb0e6f7dd) +++ Ringtoets/Piping/src/Ringtoets.Piping.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 7ee19b11cabfc6cb2ba1ab895462b024a621294b) @@ -22,7 +22,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Runtime Version:4.0.30319.17929 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -111,6 +111,16 @@ } /// + /// Looks up a localized string similar to Gespecificeerde waarde voor d70 ({0} m) ligt buiten het geldigheidsbereik van dit model. Geldige waarden liggen tussen 0.000063 m en 0.0005 m.. + /// + internal static string PipingCalculationService_GetInputWarnings_Specified_DiameterD70_value_0_not_in_valid_range_of_model { + get { + return ResourceManager.GetString("PipingCalculationService_GetInputWarnings_Specified_DiameterD70_value_0_not_in_va" + + "lid_range_of_model", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Kan de definitie voor de doorlatendheid van de watervoerende laag niet (volledig) afleiden.. /// internal static string PipingCalculationService_ValidateInput_Cannot_derive_DarcyPermeability { Index: Ringtoets/Piping/src/Ringtoets.Piping.Service/Properties/Resources.resx =================================================================== diff -u -re12f4d3c8a659d72f0550416b85df98bb0e6f7dd -r7ee19b11cabfc6cb2ba1ab895462b024a621294b --- Ringtoets/Piping/src/Ringtoets.Piping.Service/Properties/Resources.resx (.../Resources.resx) (revision e12f4d3c8a659d72f0550416b85df98bb0e6f7dd) +++ Ringtoets/Piping/src/Ringtoets.Piping.Service/Properties/Resources.resx (.../Resources.resx) (revision 7ee19b11cabfc6cb2ba1ab895462b024a621294b) @@ -171,4 +171,7 @@ Kan de definitie voor het verzadigd gewicht van de deklaag niet (volledig) afleiden. + + Gespecificeerde waarde voor d70 ({0} m) ligt buiten het geldigheidsbereik van dit model. Geldige waarden liggen tussen 0.000063 m en 0.0005 m. + \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/PipingCalculationScenarioFactory.cs =================================================================== diff -u -r4ce321e0acec2ea04fe99f4e855d319b0ac17298 -r7ee19b11cabfc6cb2ba1ab895462b024a621294b --- Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/PipingCalculationScenarioFactory.cs (.../PipingCalculationScenarioFactory.cs) (revision 4ce321e0acec2ea04fe99f4e855d319b0ac17298) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.TestUtil/PipingCalculationScenarioFactory.cs (.../PipingCalculationScenarioFactory.cs) (revision 7ee19b11cabfc6cb2ba1ab895462b024a621294b) @@ -160,7 +160,7 @@ { IsAquifer = true, DiameterD70Deviation = 0, - DiameterD70Mean = 1.0, + DiameterD70Mean = 4.0e-4, PermeabilityDeviation = 0, PermeabilityMean = 1.0 } Index: Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingCalculationServiceTest.cs =================================================================== diff -u -r4ce321e0acec2ea04fe99f4e855d319b0ac17298 -r7ee19b11cabfc6cb2ba1ab895462b024a621294b --- Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingCalculationServiceTest.cs (.../PipingCalculationServiceTest.cs) (revision 4ce321e0acec2ea04fe99f4e855d319b0ac17298) +++ Ringtoets/Piping/test/Ringtoets.Piping.Service.Test/PipingCalculationServiceTest.cs (.../PipingCalculationServiceTest.cs) (revision 7ee19b11cabfc6cb2ba1ab895462b024a621294b) @@ -318,8 +318,8 @@ new PipingSoilLayer(2.0) { IsAquifer = true, - DiameterD70Deviation = random.NextDouble(), - DiameterD70Mean = 0.1 + random.NextDouble(), + DiameterD70Deviation = 0, + DiameterD70Mean = 0.1e-3, PermeabilityDeviation = random.NextDouble(), PermeabilityMean = 0.1 + random.NextDouble() } @@ -365,8 +365,8 @@ new PipingSoilLayer(11.0) { IsAquifer = true, - DiameterD70Deviation = random.NextDouble(), - DiameterD70Mean = 0.1 + random.NextDouble(), + DiameterD70Deviation = 0, + DiameterD70Mean = 0.1e-3, PermeabilityDeviation = random.NextDouble(), PermeabilityMean = 0.1 + random.NextDouble() } @@ -468,8 +468,8 @@ var incompletePipingSoilLayer = new PipingSoilLayer(5.0) { IsAquifer = true, - DiameterD70Deviation = random.NextDouble(), - DiameterD70Mean = 0.1 + random.NextDouble() + DiameterD70Deviation = 0, + DiameterD70Mean = 0.1e-3 }; if (meanSet) { @@ -552,8 +552,8 @@ IsAquifer = true, PermeabilityDeviation = random.NextDouble(), PermeabilityMean = 0.1 + random.NextDouble(), - DiameterD70Deviation = random.NextDouble(), - DiameterD70Mean = 0.1 + random.NextDouble() + DiameterD70Deviation = 0, + DiameterD70Mean = 0.1e-3 } }, SoilProfileType.SoilProfile1D, -1); @@ -610,8 +610,8 @@ IsAquifer = true, PermeabilityDeviation = random.NextDouble(), PermeabilityMean = 0.1 + random.NextDouble(), - DiameterD70Deviation = random.NextDouble(), - DiameterD70Mean = 0.1 + random.NextDouble() + DiameterD70Deviation = 0, + DiameterD70Mean = 0.1e-3 } }, SoilProfileType.SoilProfile1D, -1); @@ -638,6 +638,57 @@ } [Test] + [TestCase(6.2e-5)] + [TestCase(5.1e-3)] + public void Validate_CalculationWithInvalidDiameterD70Value_LogsWarningAndReturnsTrue(double diameter70Value) + { + // Setup + const string name = ""; + + var random = new Random(21); + var soilLayer = new PipingSoilLayer(5.0) + { + IsAquifer = true, + PermeabilityDeviation = random.NextDouble(), + PermeabilityMean = 0.1 + random.NextDouble(), + DiameterD70Mean = diameter70Value, + DiameterD70Deviation = 0 + }; + + var profile = new PipingSoilProfile(string.Empty, 0.0, + new[] + { + new PipingSoilLayer(10.5) + { + IsAquifer = false, + BelowPhreaticLevelDeviation = random.GetFromRange(1e-6, 999.999), + BelowPhreaticLevelMean = random.GetFromRange(10.0, 999.999), + BelowPhreaticLevelShift = random.GetFromRange(1e-6, 10.0) + }, + soilLayer + }, + SoilProfileType.SoilProfile1D, -1); + + PipingCalculation pipingCalculation = PipingCalculationScenarioFactory.CreatePipingCalculationScenarioWithValidInput(); + pipingCalculation.Name = name; + pipingCalculation.InputParameters.StochasticSoilProfile.SoilProfile = profile; + + // Call + Action call = () => PipingCalculationService.Validate(pipingCalculation); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(3, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", name), msgs.First()); + Assert.AreEqual(string.Format("Gespecificeerde waarde voor d70 ({0} m) ligt buiten het geldigheidsbereik van dit model. Geldige waarden liggen tussen 0.000063 m en 0.0005 m.", + new RoundedDouble(6, diameter70Value)), msgs[1]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beƫindigd om: ", name), msgs.Last()); + }); + } + + [Test] public void Calculate_ValidPipingCalculation_LogStartAndEndOfValidatingInputsAndCalculation() { // Setup