Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/Properties/Resources.Designer.cs =================================================================== diff -u -r376 -r797 --- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 376) +++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 797) @@ -61,6 +61,33 @@ } /// + /// Looks up a localized string similar to Parameter {0} is not a number (NaN).. + /// + internal static string PipingCalculatorSellmeijerVNK_LogParameterIsNaN_NaNParameterError { + get { + return ResourceManager.GetString("PipingCalculatorSellmeijerVNK_LogParameterIsNaN_NaNParameterError", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to HRiver - HExit may not be 0.. + /// + internal static string PipingCalculatorSellmeijerVNK_PerformValidate_HRiver_HExit_Zero { + get { + return ResourceManager.GetString("PipingCalculatorSellmeijerVNK_PerformValidate_HRiver_HExit_Zero", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Rc may not be less than 0.. + /// + internal static string PipingCalculatorSellmeijerVNK_PerformValidate_RcLessThan0 { + get { + return ResourceManager.GetString("PipingCalculatorSellmeijerVNK_PerformValidate_RcLessThan0", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Error in Piping DLL. /// internal static string PipingModel2Calculation_CalculateHeadDropPC2_Error_in_Piping_DLL { Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/Properties/Resources.nl-NL.resx =================================================================== diff -u -r376 -r797 --- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/Properties/Resources.nl-NL.resx (.../Resources.nl-NL.resx) (revision 376) +++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/Properties/Resources.nl-NL.resx (.../Resources.nl-NL.resx) (revision 797) @@ -117,6 +117,15 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Parameter {0} heeft geen waarde (NaN). + + + De term HRiver - HExit mag niet nul zijn. + + + De waarde voor de dempingsfactor mag niet lager dan 0 zijn. + Er is een fout opgetreden in PipingCalc2.dll Index: dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.SellmeijerVNKCalculatorTests/PipingCalculatorSellmeijerVNKTest.cs =================================================================== diff -u -r391 -r797 --- dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.SellmeijerVNKCalculatorTests/PipingCalculatorSellmeijerVNKTest.cs (.../PipingCalculatorSellmeijerVNKTest.cs) (revision 391) +++ dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.SellmeijerVNKCalculatorTests/PipingCalculatorSellmeijerVNKTest.cs (.../PipingCalculatorSellmeijerVNKTest.cs) (revision 797) @@ -161,6 +161,8 @@ reducedFall = calculator.GetReducedFall(); Assert.AreEqual(2.00, reducedFall, cTolerance); } + + [Test] public void TestDetermineFactorOfSafety() { // foSp = hc / reducedFall @@ -207,5 +209,131 @@ calculator.Calculate(); } + [Test] + public void TestValidateNaNParameter() + { + var calculator = new PipingCalculatorSellmeijerVNK + { + HRiver = 1.0, + HExit = 0.0, + PolderLevel = 0.0, + SurfaceLevel = 0.0, + Rc = 0.3, + DTotal = 2.0, + DInBetweenAquiferlayer = 2.0, + DBottomAquiferlayer = 6.0, + PermeabilityInBetweenAquiferlayer = 0.0001, + PermeabilityBottomAquiferlayer = 0.0002, + SeepageLength = 40.5, + D70 = 200.0, + WhitesConstant = 0.25, + BeddingAngle = 37.0, + WaterViscosity = 1.33E-06, + }; + var originalErrors = calculator.Validate(); + + calculator.HRiver = double.NaN; + calculator.HExit = double.NaN; + calculator.PolderLevel = double.NaN; + calculator.SurfaceLevel = double.NaN; + calculator.Rc = double.NaN; + calculator.DTotal = double.NaN; + calculator.DInBetweenAquiferlayer = double.NaN; + calculator.DBottomAquiferlayer = double.NaN; + calculator.PermeabilityInBetweenAquiferlayer = double.NaN; + calculator.PermeabilityBottomAquiferlayer = double.NaN; + calculator.SeepageLength = double.NaN; + calculator.D70 = double.NaN; + calculator.WhitesConstant = double.NaN; + calculator.BeddingAngle = double.NaN; + calculator.WaterViscosity = double.NaN; + var nanErrors = calculator.Validate(); + Assert.AreEqual(originalErrors.Count + 15, nanErrors.Count); + } + + [Test] + [SetUICulture("en-US")] + public void TestValidateRcLessThan0En() + { + var calculator = new PipingCalculatorSellmeijerVNK + { + HRiver = 1.0, + HExit = 0.0, + PolderLevel = 0.0, + SurfaceLevel = 0.0, + Rc = -1e-6, + DTotal = 2.0, + DInBetweenAquiferlayer = 2.0, + DBottomAquiferlayer = 6.0, + PermeabilityInBetweenAquiferlayer = 0.0001, + PermeabilityBottomAquiferlayer = 0.0002, + SeepageLength = 40.5, + D70 = 200.0, + WhitesConstant = 0.25, + BeddingAngle = 37.0, + WaterViscosity = 1.33E-06, + }; + var errors = calculator.Validate(); + Assert.AreEqual(1, errors.Count); + var expectedMessageEN = "Rc may not be less than 0."; + CollectionAssert.AreEqual(new[] { expectedMessageEN }, errors); + } + + [Test] + [SetUICulture("nl-NL")] + public void TestValidateRcLessThan0Nl() + { + var calculator = new PipingCalculatorSellmeijerVNK + { + HRiver = 1.0, + HExit = 0.0, + PolderLevel = 0.0, + SurfaceLevel = 0.0, + Rc = -1e-6, + DTotal = 2.0, + DInBetweenAquiferlayer = 2.0, + DBottomAquiferlayer = 6.0, + PermeabilityInBetweenAquiferlayer = 0.0001, + PermeabilityBottomAquiferlayer = 0.0002, + SeepageLength = 40.5, + D70 = 200.0, + WhitesConstant = 0.25, + BeddingAngle = 37.0, + WaterViscosity = 1.33E-06, + }; + var errors = calculator.Validate(); + Assert.AreEqual(1, errors.Count); + var expectedMessageNL = "De waarde voor de dempingsfactor mag niet lager dan 0 zijn."; + CollectionAssert.AreEqual(new[] { expectedMessageNL }, errors); + } + + [Test] + [SetUICulture("nl-NL")] + public void TestValidateReducedFall() + { + var calculator = new PipingCalculatorSellmeijerVNK + { + HRiver = 1.0, + HExit = 1.0, + PolderLevel = 0.0, + SurfaceLevel = 0.0, + Rc = 0, + DTotal = 2.0, + DInBetweenAquiferlayer = 2.0, + DBottomAquiferlayer = 6.0, + PermeabilityInBetweenAquiferlayer = 0.0001, + PermeabilityBottomAquiferlayer = 0.0002, + SeepageLength = 40.5, + D70 = 200.0, + WhitesConstant = 0.25, + BeddingAngle = 37.0, + WaterViscosity = 1.33E-06, + }; + var errors = calculator.Validate(); + Assert.AreEqual(1, errors.Count); + var expectedMessageEN = "De term HRiver - HExit mag niet nul zijn."; + CollectionAssert.AreEqual(new[] { expectedMessageEN }, errors); + } + } } Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCalculatorSellmeijerVNK.cs =================================================================== diff -u -r397 -r797 --- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCalculatorSellmeijerVNK.cs (.../PipingCalculatorSellmeijerVNK.cs) (revision 397) +++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/PipingCalculatorSellmeijerVNK.cs (.../PipingCalculatorSellmeijerVNK.cs) (revision 797) @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; +using Deltares.DamPiping.SellmeijerVNKCalculator.Properties; namespace Deltares.DamPiping.SellmeijerVNKCalculator { @@ -193,5 +194,96 @@ // Kx or Ky: Sel: Use Kx } + /// + /// Validates the input + /// + /// a filled list when errors are found else an empty list + public List Validate() + { + var errors = new List(); + errors.AddRange(PerformValidate()); + return errors; + } + + private List PerformValidate() + { + var errors = new List(); + if (Math.Abs(GetReducedFall()) < double.Epsilon) + { + errors.Add(Resources.PipingCalculatorSellmeijerVNK_PerformValidate_HRiver_HExit_Zero); + } + + if (double.IsNaN(SeepageLength)) + { + LogParameterIsNaN(errors, "SeepageLength"); + } + if (double.IsNaN(HRiver)) + { + LogParameterIsNaN(errors, "HRiver"); + } + if (double.IsNaN(PolderLevel)) + { + LogParameterIsNaN(errors, "PolderLevel"); + } + if (double.IsNaN(SurfaceLevel)) + { + LogParameterIsNaN(errors, "SurfaceLevel"); + } + if (double.IsNaN(Rc)) + { + LogParameterIsNaN(errors, "Rc"); + } + if (Rc < 0) + { + errors.Add(Resources.PipingCalculatorSellmeijerVNK_PerformValidate_RcLessThan0); + } + if (double.IsNaN(DTotal)) + { + LogParameterIsNaN(errors, "DTotal"); + } + if (double.IsNaN(DInBetweenAquiferlayer)) + { + LogParameterIsNaN(errors, "DInBetweenAquiferlayer"); + } + if (double.IsNaN(DBottomAquiferlayer)) + { + LogParameterIsNaN(errors, "DBottomAquiferlayer"); + } + if (double.IsNaN(PermeabilityInBetweenAquiferlayer)) + { + LogParameterIsNaN(errors, "PermeabilityInBetweenAquiferlayer"); + } + if (double.IsNaN(PermeabilityBottomAquiferlayer)) + { + LogParameterIsNaN(errors, "PermeabilityBottomAquiferlayer"); + } + if (double.IsNaN(HExit)) + { + LogParameterIsNaN(errors, "HExit"); + } + if (double.IsNaN(D70)) + { + LogParameterIsNaN(errors, "D70"); + } + if (double.IsNaN(WhitesConstant)) + { + LogParameterIsNaN(errors, "WhitesConstant"); + } + if (double.IsNaN(BeddingAngle)) + { + LogParameterIsNaN(errors, "BeddingAngle"); + } + if (double.IsNaN(WaterViscosity)) + { + LogParameterIsNaN(errors, "WaterViscosity"); + } + return errors; + } + + private void LogParameterIsNaN(IList list, string paramName) + { + var msg = string.Format(Resources.PipingCalculatorSellmeijerVNK_LogParameterIsNaN_NaNParameterError, paramName); + list.Add(msg); + } } } Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/Properties/Resources.resx =================================================================== diff -u -r376 -r797 --- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/Properties/Resources.resx (.../Resources.resx) (revision 376) +++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.SellmeijerVNKCalculator/Properties/Resources.resx (.../Resources.resx) (revision 797) @@ -101,4 +101,13 @@ Error in Piping DLL + + HRiver - HExit may not be 0. + + + Rc may not be less than 0. + + + Parameter {0} is not a number (NaN). + \ No newline at end of file