Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/WtiPipingSellmeijerRevised/WtiPipingSellmeijerRevisedKernelWrapperTests.cs =================================================================== diff -u -r6191 -r6213 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/WtiPipingSellmeijerRevised/WtiPipingSellmeijerRevisedKernelWrapperTests.cs (.../WtiPipingSellmeijerRevisedKernelWrapperTests.cs) (revision 6191) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/WtiPipingSellmeijerRevised/WtiPipingSellmeijerRevisedKernelWrapperTests.cs (.../WtiPipingSellmeijerRevisedKernelWrapperTests.cs) (revision 6213) @@ -45,13 +45,13 @@ var kernelWrapper = new WtiPipingSellmeijerRevisedKernelWrapper(); // Validate without setting values. Expected error messages. - var damPipingInput = new WtiPipingSellmeijerRevisedInput(); - var damPipingOutput = new WtiPipingSellmeijerRevisedOutput(); - kernelWrapper.Validate(damPipingInput, damPipingOutput, out List messages); + var pipingInput = new WtiPipingSellmeijerRevisedInput(); + var pipingOutput = new WtiPipingSellmeijerRevisedOutput(); + kernelWrapper.Validate(pipingInput, pipingOutput, out List messages); Assert.That(messages, Is.Not.Empty); // Validate the input when valid input is provided. Expected no messages. - damPipingInput = new WtiPipingSellmeijerRevisedInput + pipingInput = new WtiPipingSellmeijerRevisedInput { HRiver = 1.0, HExit = 0.0, @@ -65,7 +65,7 @@ RExit = 0.25 }; messages.Clear(); - kernelWrapper.Validate(damPipingInput, damPipingOutput, out messages); + kernelWrapper.Validate(pipingInput, pipingOutput, out messages); Assert.That(messages, Is.Empty); } @@ -406,39 +406,37 @@ var kernelWrapper = new WtiPipingSellmeijerRevisedKernelWrapper(); // Prepare the wrapper. Result is input for the calculation dll - IKernelDataInput damPipingInput; - IKernelDataOutput kernelDataOutput; - kernelWrapper.Prepare(damKernelInput, 0, out damPipingInput, out kernelDataOutput); + kernelWrapper.Prepare(damKernelInput, 0, out IKernelDataInput pipingInput, out IKernelDataOutput kernelDataOutput); // The factory used here in the Engine to create the soilprofile uses Physics.FactorMicroMeterToMeter in setting the D70. // The original test in WTI piping kernel uses the D70 without this factor so in order to get the same results here, // correct the D70 for this here. - (damPipingInput as WtiPipingSellmeijerRevisedInput).D70 = (damPipingInput as WtiPipingSellmeijerRevisedInput).D70 * (1 / Physics.FactorMicroMeterToMeter); + (pipingInput as WtiPipingSellmeijerRevisedInput).D70 = (pipingInput as WtiPipingSellmeijerRevisedInput).D70 * (1 / Physics.FactorMicroMeterToMeter); // Validate the input List messages; - kernelWrapper.Validate(damPipingInput, kernelDataOutput, out messages); + kernelWrapper.Validate(pipingInput, kernelDataOutput, out messages); Assert.That(messages, Is.Empty); // Run the dll. All expected results are from calculation by hand. - kernelWrapper.Execute(damPipingInput, kernelDataOutput, out messages); - var damPipingOutput = (WtiPipingSellmeijerRevisedOutput) kernelDataOutput; + kernelWrapper.Execute(pipingInput, kernelDataOutput, out messages); + var pipingOutput = (WtiPipingSellmeijerRevisedOutput) kernelDataOutput; Assert.Multiple(() => { Assert.That(messages, Is.Empty); - Assert.That(damPipingOutput.FoSbe, Is.EqualTo(expectedFoSbe).Within(diff)); - Assert.That(damPipingOutput.Hcbe, Is.EqualTo(expectedHcbe).Within(diff)); - Assert.That(damPipingOutput.DeltaPhiCbe, Is.EqualTo(expectedDeltaPhiCbe).Within(diff)); - Assert.That(damPipingOutput.FoSu, Is.EqualTo(0.56948691811077123).Within(diff)); - Assert.That(damPipingOutput.Hcu, Is.EqualTo(0.56948691811077123).Within(diff)); - Assert.That(damPipingOutput.DeltaPhiCu, Is.EqualTo(0.4271151885830784).Within(diff)); - Assert.That(damPipingOutput.EffectiveStress, Is.EqualTo(4.19).Within(diff)); - Assert.That(damPipingOutput.SeepageLength, Is.EqualTo(expectedSeepageLength).Within(diff)); + Assert.That(pipingOutput.FoSbe, Is.EqualTo(expectedFoSbe).Within(diff)); + Assert.That(pipingOutput.Hcbe, Is.EqualTo(expectedHcbe).Within(diff)); + Assert.That(pipingOutput.DeltaPhiCbe, Is.EqualTo(expectedDeltaPhiCbe).Within(diff)); + Assert.That(pipingOutput.FoSu, Is.EqualTo(0.56948691811077123).Within(diff)); + Assert.That(pipingOutput.Hcu, Is.EqualTo(0.56948691811077123).Within(diff)); + Assert.That(pipingOutput.DeltaPhiCu, Is.EqualTo(0.4271151885830784).Within(diff)); + Assert.That(pipingOutput.EffectiveStress, Is.EqualTo(4.19).Within(diff)); + Assert.That(pipingOutput.SeepageLength, Is.EqualTo(expectedSeepageLength).Within(diff)); }); // Fill the design results List results; - kernelWrapper.PostProcess(damKernelInput, damPipingOutput, designScenario, "", out results); + kernelWrapper.PostProcess(damKernelInput, pipingOutput, designScenario, "", out results); foreach (DesignResult result in results) { Assert.Multiple(() => @@ -517,31 +515,31 @@ IKernelDataInput kernelDataInput; IKernelDataOutput kernelDataOutput; kernelWrapper.Prepare(damKernelInput, 0, out kernelDataInput, out kernelDataOutput); - var damPipingInput = (WtiPipingSellmeijerRevisedInput) kernelDataInput; - var damPipingOutput = (WtiPipingSellmeijerRevisedOutput) kernelDataOutput; + var pipingInput = (WtiPipingSellmeijerRevisedInput) kernelDataInput; + var pipingOutput = (WtiPipingSellmeijerRevisedOutput) kernelDataOutput; Assert.Multiple(() => { - Assert.That(damPipingInput.HRiver, Is.EqualTo(1.0).Within(diff)); - Assert.That(damPipingInput.HExit, Is.EqualTo(0.0).Within(diff)); - Assert.That(damPipingInput.Rc, Is.EqualTo(0.3).Within(diff)); - Assert.That(damPipingInput.DTotal, Is.EqualTo(1.0).Within(diff)); - Assert.That(damPipingInput.DAquifer, Is.EqualTo(8.0).Within(diff)); - Assert.That(damPipingInput.SeepageLength, Is.EqualTo(expectedSeepageLength).Within(diff)); - Assert.That(damPipingInput.D70, Is.EqualTo(0.000200).Within(diff)); - Assert.That(damPipingInput.WhitesDragCoefficient, Is.EqualTo(0.25).Within(diff)); - Assert.That(damPipingInput.BeddingAngle, Is.EqualTo(37.0).Within(diff)); - Assert.That(damPipingInput.KinematicViscosityWater, Is.EqualTo(1.33E-06).Within(diff)); - Assert.That(damPipingInput.DarcyPermeability, Is.EqualTo(0.0001).Within(diff)); - Assert.That(damPipingInput.ModelFactorUplift, Is.EqualTo(1.000).Within(diff)); - Assert.That(damPipingInput.EffectiveStress, Is.EqualTo(4.19).Within(diff)); - Assert.That(damPipingInput.PhiExit, Is.EqualTo(0.75).Within(diff)); - Assert.That(damPipingInput.RExit, Is.EqualTo(0.75).Within(diff)); - Assert.That(damPipingInput.PhiPolder, Is.EqualTo(0.00).Within(diff)); + Assert.That(pipingInput.HRiver, Is.EqualTo(1.0).Within(diff)); + Assert.That(pipingInput.HExit, Is.EqualTo(0.0).Within(diff)); + Assert.That(pipingInput.Rc, Is.EqualTo(0.3).Within(diff)); + Assert.That(pipingInput.DTotal, Is.EqualTo(1.0).Within(diff)); + Assert.That(pipingInput.DAquifer, Is.EqualTo(8.0).Within(diff)); + Assert.That(pipingInput.SeepageLength, Is.EqualTo(expectedSeepageLength).Within(diff)); + Assert.That(pipingInput.D70, Is.EqualTo(0.000200).Within(diff)); + Assert.That(pipingInput.WhitesDragCoefficient, Is.EqualTo(0.25).Within(diff)); + Assert.That(pipingInput.BeddingAngle, Is.EqualTo(37.0).Within(diff)); + Assert.That(pipingInput.KinematicViscosityWater, Is.EqualTo(1.33E-06).Within(diff)); + Assert.That(pipingInput.DarcyPermeability, Is.EqualTo(0.0001).Within(diff)); + Assert.That(pipingInput.ModelFactorUplift, Is.EqualTo(1.000).Within(diff)); + Assert.That(pipingInput.EffectiveStress, Is.EqualTo(4.19).Within(diff)); + Assert.That(pipingInput.PhiExit, Is.EqualTo(0.75).Within(diff)); + Assert.That(pipingInput.RExit, Is.EqualTo(0.75).Within(diff)); + Assert.That(pipingInput.PhiPolder, Is.EqualTo(0.00).Within(diff)); // All expected results are from calculation by hand. - Assert.That(damPipingOutput.EffectiveStress, Is.EqualTo(4.19).Within(diff)); - Assert.That(damPipingOutput.ExitPointX, Is.EqualTo(59.50).Within(diff)); - Assert.That(damPipingOutput.UpliftFactor, Is.EqualTo(0.88258734130293759).Within(diff)); - Assert.That(damPipingOutput.UpliftSituation.IsUplift, Is.EqualTo(true)); + Assert.That(pipingOutput.EffectiveStress, Is.EqualTo(4.19).Within(diff)); + Assert.That(pipingOutput.ExitPointX, Is.EqualTo(59.50).Within(diff)); + Assert.That(pipingOutput.UpliftFactor, Is.EqualTo(0.88258734130293759).Within(diff)); + Assert.That(pipingOutput.UpliftSituation.IsUplift, Is.EqualTo(true)); }); } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WtiPipingSellmeijerRevised/WtiPipingSellmeijerRevisedKernelWrapper.cs =================================================================== diff -u -r6191 -r6213 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WtiPipingSellmeijerRevised/WtiPipingSellmeijerRevisedKernelWrapper.cs (.../WtiPipingSellmeijerRevisedKernelWrapper.cs) (revision 6191) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WtiPipingSellmeijerRevised/WtiPipingSellmeijerRevisedKernelWrapper.cs (.../WtiPipingSellmeijerRevisedKernelWrapper.cs) (revision 6213) @@ -62,13 +62,13 @@ /// public PrepareResult Prepare(DamKernelInput damKernelInput, int iterationIndex, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput) { - var damPipingOutput = new WtiPipingSellmeijerRevisedOutput + var pipingOutput = new WtiPipingSellmeijerRevisedOutput { FoSbe = defaultMaxReturnValue, FoSu = defaultMaxReturnValue, FoSh = defaultMaxReturnValue }; - kernelDataOutput = damPipingOutput; + kernelDataOutput = pipingOutput; if (damKernelInput.SubSoilScenario != null) { if (damKernelInput.SubSoilScenario.SegmentFailureMechanismType.Value.In( @@ -84,7 +84,7 @@ PlLines plLines = PlLinesHelper.CreatePlLinesForPiping(damKernelInput.TimeStepDateTime, location, soilProfile1D, waterLevel); - if (EvaluateUpliftSituation(damKernelInput, out kernelDataInput, plLines, waterLevel, damPipingOutput)) + if (EvaluateUpliftSituation(damKernelInput, out kernelDataInput, plLines, waterLevel, pipingOutput)) { return PrepareResult.Successful; } @@ -229,50 +229,50 @@ /// The design results public void PostProcess(DamKernelInput damKernelInput, IKernelDataOutput kernelDataOutput, DesignScenario designScenario, string resultMessage, out List designResults) { - var damPipingOutput = kernelDataOutput as WtiPipingSellmeijerRevisedOutput; + var pipingOutput = kernelDataOutput as WtiPipingSellmeijerRevisedOutput; ThrowWhenDamKernelInputNull(damKernelInput); - ThrowWhenKernelOutputNull(damPipingOutput); + ThrowWhenKernelOutputNull(pipingOutput); designResults = new List(); var designResult = new DesignResult(damKernelInput.DamFailureMechanismeCalculationSpecification, designScenario, damKernelInput.SubSoilScenario.SoilProfile1D, null) { - CalculationResult = damPipingOutput.CalculationResult + CalculationResult = pipingOutput.CalculationResult }; var pipingDesignResults = new PipingDesignResults(PipingModelType.Wti2017); designResult.PipingDesignResults = pipingDesignResults; pipingDesignResults.ResultMessage = resultMessage; pipingDesignResults.RedesignedSurfaceLine = damKernelInput.Location.SurfaceLine; // Make sure defaultMaxReturnValue is limit. - pipingDesignResults.Wti2017BackwardErosionSafetyFactor = Math.Min(damPipingOutput.FoSbe, defaultMaxReturnValue); - pipingDesignResults.Wti2017BackwardErosionHcritical = damPipingOutput.Hcbe; - pipingDesignResults.Wti2017BackwardErosionDeltaPhiC = damPipingOutput.DeltaPhiCbe; - pipingDesignResults.LocalExitPointX = damPipingOutput.ExitPointX; - pipingDesignResults.UpliftFactor = damPipingOutput.UpliftFactor; - pipingDesignResults.UpliftSituation = damPipingOutput.UpliftSituation; + pipingDesignResults.Wti2017BackwardErosionSafetyFactor = Math.Min(pipingOutput.FoSbe, defaultMaxReturnValue); + pipingDesignResults.Wti2017BackwardErosionHcritical = pipingOutput.Hcbe; + pipingDesignResults.Wti2017BackwardErosionDeltaPhiC = pipingOutput.DeltaPhiCbe; + pipingDesignResults.LocalExitPointX = pipingOutput.ExitPointX; + pipingDesignResults.UpliftFactor = pipingOutput.UpliftFactor; + pipingDesignResults.UpliftSituation = pipingOutput.UpliftSituation; // Add results of the wti-uplift calculation - pipingDesignResults.Wti2017UpliftSafetyFactor = Math.Min(damPipingOutput.FoSu, defaultMaxReturnValue); - pipingDesignResults.Wti2017UpliftHcritical = damPipingOutput.Hcu; - pipingDesignResults.Wti2017UpliftDeltaPhiC = damPipingOutput.DeltaPhiCu; + pipingDesignResults.Wti2017UpliftSafetyFactor = Math.Min(pipingOutput.FoSu, defaultMaxReturnValue); + pipingDesignResults.Wti2017UpliftHcritical = pipingOutput.Hcu; + pipingDesignResults.Wti2017UpliftDeltaPhiC = pipingOutput.DeltaPhiCu; // Add results of the wti-heave calculation - pipingDesignResults.Wti2017HeaveSafetyFactor = Math.Min(damPipingOutput.FoSh, defaultMaxReturnValue); - pipingDesignResults.Wti2017HeaveHcritical = damPipingOutput.Hch; - pipingDesignResults.Wti2017Gradient = damPipingOutput.Gradient; - pipingDesignResults.EffectiveStress = damPipingOutput.EffectiveStress; + pipingDesignResults.Wti2017HeaveSafetyFactor = Math.Min(pipingOutput.FoSh, defaultMaxReturnValue); + pipingDesignResults.Wti2017HeaveHcritical = pipingOutput.Hch; + pipingDesignResults.Wti2017Gradient = pipingOutput.Gradient; + pipingDesignResults.EffectiveStress = pipingOutput.EffectiveStress; // Add the overall results for WTI piping kernel (FoS = highest value of FoSh, FoSu and FoSbe; HcO is Hcbe belonging to FoS), see MWDAM-1370 - double maxFoS = damPipingOutput.FoSbe; - double overallHc = damPipingOutput.Hcbe; - if (damPipingOutput.FoSu > maxFoS) + double maxFoS = pipingOutput.FoSbe; + double overallHc = pipingOutput.Hcbe; + if (pipingOutput.FoSu > maxFoS) { - maxFoS = damPipingOutput.FoSu; - overallHc = damPipingOutput.Hcu; + maxFoS = pipingOutput.FoSu; + overallHc = pipingOutput.Hcu; } - if (damPipingOutput.FoSh > maxFoS) + if (pipingOutput.FoSh > maxFoS) { - maxFoS = damPipingOutput.FoSh; - overallHc = damPipingOutput.Hch; + maxFoS = pipingOutput.FoSh; + overallHc = pipingOutput.Hch; } // Make sure defaultMaxReturnValue is limit. @@ -282,8 +282,8 @@ pipingDesignResults.Wti2017HcriticalOverall = overallHc; // Determine the values for the additional output parameters as requested in MWDAM-1370 - pipingDesignResults.Wti2017BackwardErosionDeltaPhiReduced = damPipingOutput.DeltaPhibe; - pipingDesignResults.CCreep = damPipingOutput.SeepageLength / damPipingOutput.DeltaPhiCbe; + pipingDesignResults.Wti2017BackwardErosionDeltaPhiReduced = pipingOutput.DeltaPhibe; + pipingDesignResults.CCreep = pipingOutput.SeepageLength / pipingOutput.DeltaPhiCbe; designResults.Add(designResult); } @@ -299,10 +299,10 @@ public ShoulderDesign CalculateDesignAtPoint(DamKernelInput damKernelInput, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, Point2D point, out List messages) { messages = new List(); - var damPipingInput = kernelDataInput as WtiPipingSellmeijerRevisedInput; - var damPipingOutput = (WtiPipingSellmeijerRevisedOutput) kernelDataOutput; + var pipingInput = kernelDataInput as WtiPipingSellmeijerRevisedInput; + var pipingOutput = (WtiPipingSellmeijerRevisedOutput) kernelDataOutput; ThrowWhenDamKernelInputNull(damKernelInput); - ThrowWhenKernelOutputNull(damPipingOutput); + ThrowWhenKernelOutputNull(pipingOutput); Location location = damKernelInput.Location; SoilProfile1D soilProfile = damKernelInput.SubSoilScenario.SoilProfile1D; SurfaceLine2 surfaceLine = damKernelInput.Location.SurfaceLine; @@ -318,33 +318,33 @@ { double xEntry = surfaceLine.CharacteristicPoints.GetPoint2D(CharacteristicPointType.DikeToeAtRiver).X; double xExit = upliftLocationAndResult.X; - damPipingInput.SeepageLength = (xExit - xEntry) + damKernelInput.Location.DistanceToEntryPoint; - damPipingOutput.SeepageLength = damPipingInput.SeepageLength; + pipingInput.SeepageLength = (xExit - xEntry) + damKernelInput.Location.DistanceToEntryPoint; + pipingOutput.SeepageLength = pipingInput.SeepageLength; double topLevelAquifer = soilProfile.GetLayerWithName(upliftLocationAndResult.LayerWhereUpliftOccuresId).TopLevel; // The following 2 parameters are dependent on the position of the point and have to be recalculated for the current point double dCoverLayer = WtiPipingHelper.DetermineHeightCoverLayer(topLevelAquifer, point.Z); // point.Z is surfacelevel - damPipingInput.DTotal = dCoverLayer; + pipingInput.DTotal = dCoverLayer; double referenceLevel = Math.Max(location.CurrentScenario.PolderLevel, point.Z); // point.Z is surfacelevel - damPipingInput.HExit = referenceLevel; + pipingInput.HExit = referenceLevel; // Initialize result as no run. - damPipingOutput.CalculationResult = CalculationResult.NoRun; + pipingOutput.CalculationResult = CalculationResult.NoRun; // Calculate the piping safety factor using the level of the given point List upliftMessages; - PerformSingleCalculationWtiUplift(out upliftMessages, damPipingOutput, damPipingInput); + PerformSingleCalculationWtiUplift(out upliftMessages, pipingOutput, pipingInput); messages.AddRange(upliftMessages); List heaveMessages; - PerformSingleCalculationWtiHeave(out heaveMessages, damPipingOutput, damPipingInput); + PerformSingleCalculationWtiHeave(out heaveMessages, pipingOutput, pipingInput); messages.AddRange(heaveMessages); List pipingMessages; - PerformSingleCalculationWtiSellmeijerRevised(out pipingMessages, damPipingOutput, damPipingInput); + PerformSingleCalculationWtiSellmeijerRevised(out pipingMessages, pipingOutput, pipingInput); messages.AddRange(pipingMessages); // If too low, then determine required height and length (from uplift) - if (damPipingOutput.FoSbe < requiredFoS) + if (pipingOutput.FoSbe < requiredFoS) { // Finally, determine the required shoulderheight double currentShoulderHeight = upliftLocationAndResult.Z - @@ -372,13 +372,13 @@ /// public bool EvaluateDesign(DamKernelInput damKernelInput, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out DesignAdvise designAdvise, out string evaluationMessage) { - var damPipingInput = kernelDataInput as WtiPipingSellmeijerRevisedInput; - var damPipingOutput = (WtiPipingSellmeijerRevisedOutput) kernelDataOutput; - ThrowWhenKernelInputNull(damPipingInput); + var pipingInput = kernelDataInput as WtiPipingSellmeijerRevisedInput; + var pipingOutput = (WtiPipingSellmeijerRevisedOutput) kernelDataOutput; + ThrowWhenKernelInputNull(pipingInput); ThrowWhenDamKernelInputNull(damKernelInput); - ThrowWhenKernelOutputNull(damPipingOutput); + ThrowWhenKernelOutputNull(pipingOutput); double fosRequired = damKernelInput.Location.CurrentScenario.RequiredSafetyFactorPiping; - double fosAchieved = damPipingOutput.FoSbe; + double fosAchieved = pipingOutput.FoSbe; evaluationMessage = String.Format(Resources.FactorAchievedVsFactorRequired, fosAchieved, fosRequired); designAdvise = DesignAdvise.None; return (fosAchieved >= fosRequired); @@ -503,10 +503,10 @@ /// The kernel data input. /// The pl lines. /// The water level. - /// The dam piping output. + /// The WTI piping output. private bool EvaluateUpliftSituation(DamKernelInput damKernelInput, out IKernelDataInput kernelDataInput, PlLines plLines, double waterLevel, - WtiPipingSellmeijerRevisedOutput damPipingOutput) + WtiPipingSellmeijerRevisedOutput pipingOutput) { const double upliftCriterionTolerance = 0.000000001; SoilProfile1D soilProfile1D = damKernelInput.SubSoilScenario.SoilProfile1D; @@ -581,12 +581,12 @@ RExit = rExit, PhiPolder = phiPolder }; - damPipingOutput.EffectiveStress = effectiveStress; - damPipingOutput.ExitPointX = xExit; - damPipingOutput.UpliftFactor = upliftFactor; - damPipingOutput.UpliftSituation = upliftSituation; - damPipingOutput.DeltaPhibe = waterLevel - referenceLevel - defaultFluidisationGradient * dCoverLayer; - damPipingOutput.SeepageLength = seepageLength; + pipingOutput.EffectiveStress = effectiveStress; + pipingOutput.ExitPointX = xExit; + pipingOutput.UpliftFactor = upliftFactor; + pipingOutput.UpliftSituation = upliftSituation; + pipingOutput.DeltaPhibe = waterLevel - referenceLevel - defaultFluidisationGradient * dCoverLayer; + pipingOutput.SeepageLength = seepageLength; return true; }