Index: src/Plugins/Wti/Wti.Forms/NodePresenters/PipingDataNodePresenter.cs =================================================================== diff -u -r325410362b50750d3c291d19c1526799c9b1c583 -r82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 --- src/Plugins/Wti/Wti.Forms/NodePresenters/PipingDataNodePresenter.cs (.../PipingDataNodePresenter.cs) (revision 325410362b50750d3c291d19c1526799c9b1c583) +++ src/Plugins/Wti/Wti.Forms/NodePresenters/PipingDataNodePresenter.cs (.../PipingDataNodePresenter.cs) (revision 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9) @@ -4,6 +4,8 @@ using DelftTools.Controls; using DelftTools.Controls.Swf; using DelftTools.Utils.Collections; +using log4net; +using Wti.Calculation.Piping; using Wti.Data; using Wti.Forms.Properties; using Wti.Service; @@ -86,7 +88,14 @@ private void PerformPipingCalculation(PipingData pipingData) { - PipingCalculationService.Calculate(pipingData); + try + { + PipingCalculationService.Calculate(pipingData); + } + catch (PipingCalculationException e) + { + LogManager.GetLogger(typeof(PipingCalculationService)).Error(String.Format(Resources.ErrorInPipingCalculation_0, e.Message)); + } pipingData.NotifyObservers(); } Index: src/Plugins/Wti/Wti.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -rd6424435444e760d052fe6d8c8786e01bddf9d2b -r82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 --- src/Plugins/Wti/Wti.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision d6424435444e760d052fe6d8c8786e01bddf9d2b) +++ src/Plugins/Wti/Wti.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9) @@ -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. @@ -79,6 +79,15 @@ } /// + /// Looks up a localized string similar to Piping berekening niet gelukt: {0}. + /// + public static string ErrorInPipingCalculation_0 { + get { + return ResourceManager.GetString("ErrorInPipingCalculation_0", resourceCulture); + } + } + + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// public static System.Drawing.Bitmap FolderIcon { Index: src/Plugins/Wti/Wti.Forms/Properties/Resources.resx =================================================================== diff -u -rd6424435444e760d052fe6d8c8786e01bddf9d2b -r82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 --- src/Plugins/Wti/Wti.Forms/Properties/Resources.resx (.../Resources.resx) (revision d6424435444e760d052fe6d8c8786e01bddf9d2b) +++ src/Plugins/Wti/Wti.Forms/Properties/Resources.resx (.../Resources.resx) (revision 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9) @@ -334,4 +334,7 @@ Voeg piping faalmechanisme toe + + Piping berekening niet gelukt: {0} + \ No newline at end of file Index: src/Plugins/Wti/Wti.Forms/Wti.Forms.csproj =================================================================== diff -u -r6dbce7d02bbc8849c767bf7963df7127a98c2897 -r82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 --- src/Plugins/Wti/Wti.Forms/Wti.Forms.csproj (.../Wti.Forms.csproj) (revision 6dbce7d02bbc8849c767bf7963df7127a98c2897) +++ src/Plugins/Wti/Wti.Forms/Wti.Forms.csproj (.../Wti.Forms.csproj) (revision 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9) @@ -35,6 +35,10 @@ bin\Release\Wti.Forms.XML + + False + ..\..\..\..\lib\log4net.dll + @@ -87,6 +91,7 @@ {c90b77da-e421-43cc-b82e-529651bc21ac} Wti.Base + True {D64E4F0E-E341-496F-82B2-941AD202B4E3} Index: src/Plugins/Wti/Wti.Service/PipingCalculationService.cs =================================================================== diff -u -ra0b4632c9d4f89335cbb7e0de45e525481586392 -r82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 --- src/Plugins/Wti/Wti.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision a0b4632c9d4f89335cbb7e0de45e525481586392) +++ src/Plugins/Wti/Wti.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9) @@ -1,8 +1,6 @@ -using System; -using log4net; +using System.Collections.Generic; using Wti.Calculation.Piping; using Wti.Data; -using Wti.Service.Properties; namespace Wti.Service { @@ -12,52 +10,49 @@ /// public static class PipingCalculationService { - private static readonly ILog Logger = LogManager.GetLogger(typeof(PipingCalculationService)); - /// /// Performs a piping calculation based on the supplied and sets /// to the if the calculation was successful. /// /// The to base the input for the calculation upon. + /// Thrown when calling would return a non empty . public static void Calculate(PipingData pipingData) { - try - { - var input = new PipingCalculationInput( - pipingData.WaterVolumetricWeight, - pipingData.UpliftModelFactor, - pipingData.AssessmentLevel, - pipingData.PiezometricHeadExit, - pipingData.DampingFactorExit, - pipingData.PhreaticLevelExit, - pipingData.PiezometricHeadPolder, - pipingData.CriticalHeaveGradient, - pipingData.ThicknessCoverageLayer, - pipingData.SellmeijerModelFactor, - pipingData.SellmeijerReductionFactor, - pipingData.SeepageLength, - pipingData.SandParticlesVolumicWeight, - pipingData.WhitesDragCoefficient, - pipingData.Diameter70, - pipingData.DarcyPermeability, - pipingData.WaterKinematicViscosity, - pipingData.Gravity, - pipingData.ThicknessAquiferLayer, - pipingData.MeanDiameter70, - pipingData.BeddingAngle, - pipingData.ExitPointXCoordinate - ); - var pipingCalculation = new PipingCalculation(input); - var pipingResult = pipingCalculation.Calculate(); + var input = new PipingCalculationInput( + pipingData.WaterVolumetricWeight, + pipingData.UpliftModelFactor, + pipingData.AssessmentLevel, + pipingData.PiezometricHeadExit, + pipingData.DampingFactorExit, + pipingData.PhreaticLevelExit, + pipingData.PiezometricHeadPolder, + pipingData.CriticalHeaveGradient, + pipingData.ThicknessCoverageLayer, + pipingData.SellmeijerModelFactor, + pipingData.SellmeijerReductionFactor, + pipingData.SeepageLength, + pipingData.SandParticlesVolumicWeight, + pipingData.WhitesDragCoefficient, + pipingData.Diameter70, + pipingData.DarcyPermeability, + pipingData.WaterKinematicViscosity, + pipingData.Gravity, + pipingData.ThicknessAquiferLayer, + pipingData.MeanDiameter70, + pipingData.BeddingAngle, + pipingData.ExitPointXCoordinate + ); + var pipingCalculation = new PipingCalculation(input); + var pipingResult = pipingCalculation.Calculate(); - pipingData.Output = new PipingOutput(pipingResult.UpliftZValue, - pipingResult.UpliftFactorOfSafety, - pipingResult.HeaveZValue, pipingResult.HeaveFactorOfSafety, pipingResult.SellmeijerZValue, pipingResult.SellmeijerFactorOfSafety); - } - catch (PipingCalculationException e) - { - Logger.Error(String.Format(Resources.ErrorInPipingCalculation_0, e.Message)); - } + pipingData.Output = new PipingOutput(pipingResult.UpliftZValue, + pipingResult.UpliftFactorOfSafety, + pipingResult.HeaveZValue, pipingResult.HeaveFactorOfSafety, pipingResult.SellmeijerZValue, pipingResult.SellmeijerFactorOfSafety); } + + public static List Validate(PipingData pipingData) + { + return null; + } } } \ No newline at end of file Fisheye: Tag 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Service/Properties/Resources.Designer.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 refers to a dead (removed) revision in file `src/Plugins/Wti/Wti.Service/Properties/Resources.resx'. Fisheye: No comparison available. Pass `N' to diff? Index: src/Plugins/Wti/Wti.Service/Wti.Service.csproj =================================================================== diff -u -r6dbce7d02bbc8849c767bf7963df7127a98c2897 -r82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 --- src/Plugins/Wti/Wti.Service/Wti.Service.csproj (.../Wti.Service.csproj) (revision 6dbce7d02bbc8849c767bf7963df7127a98c2897) +++ src/Plugins/Wti/Wti.Service/Wti.Service.csproj (.../Wti.Service.csproj) (revision 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9) @@ -55,11 +55,6 @@ - - True - True - Resources.resx - @@ -87,12 +82,6 @@ Wti.Data - - - ResXFileCodeGenerator - Resources.Designer.cs - - Index: test/Plugins/Wti/Wti.Calculation.Test/Piping/PipingCalculationTest.cs =================================================================== diff -u -r56799a04d6d49cdcb6706d8ada0f1d1e5d7d08dc -r82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 --- test/Plugins/Wti/Wti.Calculation.Test/Piping/PipingCalculationTest.cs (.../PipingCalculationTest.cs) (revision 56799a04d6d49cdcb6706d8ada0f1d1e5d7d08dc) +++ test/Plugins/Wti/Wti.Calculation.Test/Piping/PipingCalculationTest.cs (.../PipingCalculationTest.cs) (revision 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9) @@ -112,6 +112,131 @@ Assert.IsTrue(validationMessages.Any(message => message.Contains("phiExit - hExit"))); } + [Test] + public void Validate_PhreaticLevelExitZero_TwoValidationMessageForRExit() + { + // Setup + PipingCalculationInput input = new TestPipingInput + { + DampingFactorExit = 0 + }.AsRealInput(); + + var calculation = new PipingCalculation(input); + + // Call + List validationMessages = calculation.Validate(); + + // Assert + Assert.AreEqual(2, validationMessages.Count); + Assert.AreEqual(2, validationMessages.Count(message => message.Contains("Rexit"))); + } + + [Test] + public void Validate_ThicknessCoverageLayerZero_ValidationMessageForDTotal() + { + // Setup + PipingCalculationInput input = new TestPipingInput + { + ThicknessCoverageLayer = 0 + }.AsRealInput(); + + var calculation = new PipingCalculation(input); + + // Call + List validationMessages = calculation.Validate(); + + // Assert + Assert.AreEqual(1, validationMessages.Count); + Assert.IsTrue(validationMessages.Any(message => message.Contains("Dtotal"))); + } + + [Test] + public void Validate_ThicknessAquiferLayerZero_ValidationMessageForDAquifer() + { + // Setup + PipingCalculationInput input = new TestPipingInput + { + ThicknessAquiferLayer = 0 + }.AsRealInput(); + + var calculation = new PipingCalculation(input); + + // Call + List validationMessages = calculation.Validate(); + + // Assert + Assert.AreEqual(1, validationMessages.Count); + Assert.IsTrue(validationMessages.Any(message => message.Contains("DAquifer"))); + } + + [Test] + public void Validate_VolumetricWeightWaterZero_ValidationMessageForVolumetricWeightWater() + { + // Setup + PipingCalculationInput input = new TestPipingInput + { + WaterVolumetricWeight = 0 + }.AsRealInput(); + + var calculation = new PipingCalculation(input); + + // Call + List validationMessages = calculation.Validate(); + + // Assert + Assert.AreEqual(1, validationMessages.Count); + Assert.IsTrue(validationMessages.Any(message => message.Contains("Volumetric weight water"))); + } + + [Test] + [TestCase(2, 1, 2, 0.5)] + [TestCase(1, 1, 0, 2)] + [TestCase(8, 4, 2, 2)] + public void Validate_DifferenceAssessmentLevelAndPhreaticLevelExitEqualToSellmeijerReductionFactorTimesThicknessCoverageLayer_ValidationMessageForHRiverHExitRcDTotal( + double assessmentLevel, double phreaticLevelExit, double sellmeijerReductionFactor, double thicknessCoverageLayer) + { + // Setup + PipingCalculationInput input = new TestPipingInput + { + AssessmentLevel = assessmentLevel, + PhreaticLevelExit = phreaticLevelExit, + SellmeijerReductionFactor = sellmeijerReductionFactor, + ThicknessCoverageLayer = thicknessCoverageLayer + }.AsRealInput(); + + var calculation = new PipingCalculation(input); + + // Call + List validationMessages = calculation.Validate(); + + // Assert + Assert.AreEqual(1, validationMessages.Count); + Assert.IsTrue(validationMessages.Any(message => message.Contains("HRiver - HExit - (Rc*DTotal)"))); + } + + [Test] + public void Validate_AssessmentLevelPhreaticLevelExitSellmeijerReductionFactorThicknessCoverageLayerZero_ValidationMessageForHRiverHExitRcDTotalAndDTotal() + { + // Setup + PipingCalculationInput input = new TestPipingInput + { + AssessmentLevel = 0, + PhreaticLevelExit = 0, + SellmeijerReductionFactor = 0, + ThicknessCoverageLayer = 0 + }.AsRealInput(); + + var calculation = new PipingCalculation(input); + + // Call + List validationMessages = calculation.Validate(); + + // Assert + Assert.AreEqual(2, validationMessages.Count); + Assert.IsTrue(validationMessages.Any(message => message.Contains("HRiver - HExit - (Rc*DTotal)"))); + Assert.IsTrue(validationMessages.Any(message => message.Contains("Dtotal"))); + } + class TestPipingInput { public double WaterVolumetricWeight; @@ -142,35 +267,35 @@ public TestPipingInput() { - WaterVolumetricWeight = NextDouble(); - UpliftModelFactor = NextDouble(); - AssessmentLevel = NextDouble(); - PiezometricHeadExit = NextDouble(); - PhreaticLevelExit = NextDouble(); - DampingFactorExit = NextDouble(); - PiezometricHeadPolder = NextDouble(); - CriticalHeaveGradient = NextDouble(); - ThicknessCoverageLayer = NextDouble(); - SellmeijerModelFactor = NextDouble(); - SellmeijerReductionFactor = NextDouble(); - SeepageLength = NextDouble(); - SandParticlesVolumicWeight = NextDouble(); - WhitesDragCoefficient = NextDouble(); - Diameter70 = NextDouble(); - DarcyPermeability = NextDouble(); - WaterKinematicViscosity = NextDouble(); - Gravity = NextDouble(); - ExitPointXCoordinate = NextDouble(); - BeddingAngle = NextDouble(); - MeanDiameter70 = NextDouble(); - ThicknessAquiferLayer = NextDouble(); + WaterVolumetricWeight = NextIncrementalDouble(); + UpliftModelFactor = NextIncrementalDouble(); + AssessmentLevel = NextIncrementalDouble(); + PiezometricHeadExit = NextIncrementalDouble(); + PhreaticLevelExit = NextIncrementalDouble(); + DampingFactorExit = NextIncrementalDouble(); + PiezometricHeadPolder = NextIncrementalDouble(); + CriticalHeaveGradient = NextIncrementalDouble(); + ThicknessCoverageLayer = NextIncrementalDouble(); + SellmeijerModelFactor = NextIncrementalDouble(); + SellmeijerReductionFactor = NextIncrementalDouble(); + SeepageLength = NextIncrementalDouble(); + SandParticlesVolumicWeight = NextIncrementalDouble(); + WhitesDragCoefficient = NextIncrementalDouble(); + Diameter70 = NextIncrementalDouble(); + DarcyPermeability = NextIncrementalDouble(); + WaterKinematicViscosity = NextIncrementalDouble(); + Gravity = NextIncrementalDouble(); + ExitPointXCoordinate = NextIncrementalDouble(); + BeddingAngle = NextIncrementalDouble(); + MeanDiameter70 = NextIncrementalDouble(); + ThicknessAquiferLayer = NextIncrementalDouble(); } /// /// The returned double is sure to be different from the last time it was called. /// /// - private double NextDouble() + private double NextIncrementalDouble() { return last += random.NextDouble() + 1e-6; }