Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.Sellmeijer4ForcesCalculator/PipingCalculatorSellmeijer4Forces.cs
===================================================================
diff -u
--- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.Sellmeijer4ForcesCalculator/PipingCalculatorSellmeijer4Forces.cs (revision 0)
+++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.Sellmeijer4ForcesCalculator/PipingCalculatorSellmeijer4Forces.cs (revision 351)
@@ -0,0 +1,138 @@
+//using Deltares.Geometry;
+//using Deltares.Geotechnics;
+//using Deltares.Geotechnics.Soils;
+//using Deltares.Geotechnics.SurfaceLines;
+//using Deltares.Standard;
+//using Deltares.Soilbase;
+using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+
+namespace Deltares.DamPiping.Sellmeijer4ForcesCalculator
+{
+
+ public class PipingCalculatorSellmeijer4Forces
+ {
+
+
+ ///
+ /// Start the calculation of all output parameters.
+ ///
+// public void Calculate()
+// {
+// hc = GetHc();
+// reducedFall = GetReducedFall();
+//// zp = (ModelFactorPiping * hc) - reducedFall;
+// DetermineFactorOfSafety();
+//// hcp = (ModelFactorPiping * hc) + HExit + (Rc * DTotal);
+// }
+
+ private const double cBligh = 18.0;
+
+// private double CalculatePipingFactorAtLevel(Location location, double waterLevel, double surfaceLevel)
+// {
+// PipingCalculatorInput pipingCalculatorInput = DefinePipingInputFromModel();
+//
+// var dCoverLayer = DetermineHeightCoverLayer(surfaceLevel);
+// var soilProfile1DAquiferLayerCombiner = new SoilProfile1DAquiferLayerCombiner(SoilProfile);
+// AquiferLayerWithParameters aquiferLayerWithParameters = soilProfile1DAquiferLayerCombiner.CombineLayers(UpliftLocationAndResult.LayerWhereUpliftOccuresId);
+//
+// this.HCritical = CalculateHCritical(
+// pipingCalculatorInput.WhitesConstant,
+// pipingCalculatorInput.BeddingAngle,
+// Physics.FactorMeterToMicroMeter * aquiferLayerWithParameters.D70,
+// pipingCalculatorInput.Length,
+// aquiferLayerWithParameters.PermeabilityKx,
+// aquiferLayerWithParameters.Height,
+// pipingCalculatorInput.WaterViscosity);
+//
+// // Reference level is highest value of surfaceLevel or PolderLevel
+// // Uit TR Zandmeevoerende wellen (1999): "Het verval dH is gelijk aan het verschil tussen buitenwaterstand (het ontwerppeil(OP))
+// // bij zeedijken en de maatgevende hoogwaterstand (MHW bij rivierdijken) en de waterstand binnendijks ter plaatse van het uittredepunt,
+// // rekening houdend met zeespiegelrijzing etc.(zie paragraaf 3.7.2). In dien ter plaatse van het uittreepunt of de opbarstlocatie
+// // geen vrije waterstand heerst kan gerekend worden met het maaiveldniveau, rekening houdend met eventuele maaiveld daling (zie paragraaf 3.7.2)."
+// double referenceLevel = Math.Max(location.PolderLevel, surfaceLevel);
+//
+// // After consulting Erik Vastenburg, Jan Blinde, Andre Koelewijn, Alexander van Duinen en Huub de Bruijn
+// // it was decided that the fluidisation correction shopuld be applied on the hActual and not the hCritical.
+// double hActual = waterLevel - referenceLevel - (CDefaultFluidisationGradient * dCoverLayer);
+// double pipingFactor = DeterminePipingFactorWithUpperLimit(hActual, HCritical);
+// return pipingFactor;
+// }
+
+
+
+
+
+ // static public double TermLnC(double whitesConstant, double beddingAngle, double d70, double length, double permeability, double waterViscosity)
+ // {
+ // double result = 0.68 - 0.1 * Math.Log(TermC(whitesConstant, beddingAngle, d70, length, permeability, waterViscosity), Math.E);
+ // return result;
+ // }
+ // static public double TermC(double whitesConstant, double beddingAngle, double d70, double length, double permeability, double waterViscosity)
+ // {
+ // double kIntrinsic = KIntrinisc(permeability, waterViscosity);
+ // double term = Math.Pow((1 / (kIntrinsic * length)), (1.0 / 3.0));
+ // double result = whitesConstant * (d70 * 1.0e-6) * term;
+ // return result;
+ // }
+ //
+ // static public double TermAlpha(double length, double dSandlayer)
+ // {
+ // double result = Math.Pow((dSandlayer / length), 0.28 / ((Math.Pow(dSandlayer / length, 2.8)) - 1));
+ // return result;
+ // }
+ //
+ // static private double HcDividedByLNew(double whitesConstant, double beddingAngle, double d70, double length, double permeability, double dSandlayer, double waterViscosity)
+ // {
+ // return TermAlpha(length, dSandlayer) * TermC(whitesConstant, beddingAngle, d70, length, permeability, waterViscosity) *
+ // CGammaPDividedByGammaW * Math.Tan(cDegreeToRadian * beddingAngle) *
+ // TermLnC(whitesConstant, beddingAngle, d70, length, permeability, waterViscosity);
+ //
+ // }
+ //
+ // static public double CalculateHCritical(double whitesConstant, double beddingAngle, double d70, double length, double permeability, double dSandlayer, double waterViscosity)
+ // {
+ // double result = HcDividedByLNew(whitesConstant, beddingAngle, d70, length, permeability, dSandlayer,
+ // waterViscosity) * length;
+ // return result;
+ // }
+ //
+ //
+ //
+ //
+ // ///
+ // /// Determines the required shoulder (height and length as seen from the original dike toe)
+ // ///
+ // ///
+ // ///
+ // ///
+ // ///
+ // ///
+ // /// The required dimensions when needed else null
+ // public override PipingDesign CalculateDesignAtPoint(Location location, SurfaceLine2 surfaceLine, SoilProfile1D soilProfile, double waterLevel, GeometryPoint point)
+ // {
+ // // call base class for initializations, this will also calculate the uplift
+ // var pipingDesign = base.CalculateDesignAtPoint(location, surfaceLine, soilProfile, waterLevel, point);
+ // // if there is nu uplift, then there is no piping so return null
+ // if (UpliftLocationAndResult != null)
+ // {
+ // // Calculate the piping safety factor using the level of the given point
+ // var sp = CalculatePipingFactorAtLevel(location, waterLevel, point.Z);
+ //
+ // // If too low, then determine required height and length (from uplift)
+ // if (sp < requiredSafetyFactor)
+ // {
+ // // Finally, determine the required shoulderheight
+ // double currentShoulderHeight = UpliftLocationAndResult.Z -
+ // surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z;
+ // pipingDesign.ShoulderHeightFromToe = currentShoulderHeight + CalculateExtraShoulderHeight();
+ // pipingDesign.PipingLengthFromToe = UpliftLocationAndResult.X - surfaceLine.GetDikeToeInward().X;
+ // return pipingDesign;
+ // }
+ // }
+ // return null;
+ // }
+
+ }
+}
\ No newline at end of file
Fisheye: Tag 351 refers to a dead (removed) revision in file `dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.Sellmeijer4ForcesCalculator/Class1.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Index: dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests/PipingCalculatorSellmeijer4ForcesTest.cs
===================================================================
diff -u
--- dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests/PipingCalculatorSellmeijer4ForcesTest.cs (revision 0)
+++ dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests/PipingCalculatorSellmeijer4ForcesTest.cs (revision 351)
@@ -0,0 +1,108 @@
+//using Deltares.Geotechnics.TestUtils;
+//using Deltares.Standard;
+using NUnit.Framework;
+
+namespace Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests
+{
+
+ [TestFixture]
+ public class PipingCalculatorSellmeijer4ForcesTest
+ {
+// [Test]
+// public void CanCalculateThePipingFactorUsingSellmeijer4ForcesNoUplift()
+// {
+// using (var surfaceLine = FactoryForSurfaceLineTests.CreateSurfaceLineTutorial1())
+// using(var dike = new Dike())
+// using (var location = new Location())
+// {
+// var soilProfile = FactoryForSoilProfileTests.CreatePipingSellmeijerProfileWithOneSandlayer();
+// soilProfile.Layers[0].Soil.AbovePhreaticLevel = 20.0;
+// soilProfile.Layers[0].Soil.BelowPhreaticLevel = 22.0;
+// var modelParametersForPLLines = new ModelParametersForPLLines();//are the values initialized correctly?
+//
+// var calculator = new PipingCalculatorSellmeijer4Forces(modelParametersForPLLines, 1.0, dike.GaugePLLines, dike.Gauges, 1.0);
+// location.HeadPl3 = -1.0;
+// location.PolderLevel = -1.0;
+//
+// var actual = calculator.CalculatePipingFactor(location, surfaceLine, soilProfile, 1.0);
+//
+// // Calculation at toe of dike
+// // Phreatic level in profile = 0
+// // PL3 = waterlevel = -1 m
+// // Mass of soil volume above
+// // wet 1 m x 22 kN/m3 = 22
+// // wet 1 m x 20 kN/m3 = 20
+// // Total: 22 + 20 = 42
+// // Phreatic pressure
+// // 1 m x 9.81 kN/m3 = 9.81
+// // UpliftFactor = 42/9.81 = 4.281
+// // UpliftFactor > 1.0, so no piping, so returns cDefaultMaxReturnValue
+//
+// var expected = PipingCalculatorSellmeijer4Forces.cDefaultMaxReturnValue;
+// Assert.AreEqual(expected, actual);
+// }
+// }
+//
+// ///
+// /// These results are documented in the document
+// /// ".\documents\DAM\Evaluation Piping\Nieuwe rekenregel bligh Sellmeijeruli.xls"
+// ///
+// [Test]
+// public void CanCalculateThePipingFactorUsingSellmeijer4Forces()
+// {
+// using (var surfaceLine = FactoryForSurfaceLineTests.CreateSurfaceLineTutorial1())
+// using(var dike = new Dike())
+// using (var location = new Location())
+// {
+// var soilProfile = FactoryForSoilProfileTests.CreatePipingSellmeijerProfileWithOneSandlayer();
+// var modelParametersForPLLines = new ModelParametersForPLLines();
+// modelParametersForPLLines.DampingFactorPL4 = 0.0;
+//
+// var calculator = new PipingCalculatorSellmeijer4Forces(modelParametersForPLLines,
+// 1.0, dike.GaugePLLines, dike.Gauges, 1.0);
+//
+// var actual = calculator.CalculatePipingFactor(location, surfaceLine, soilProfile, 1.0);
+//
+// // Phreatic level in profile
+// // Mass of soil volume above
+// // material above bottom sandlayer: 0 to -5 m
+// // dry/wet 5 m x 1 kN/m3 = 5
+// // Phreatic pressure (Head PLLine 4 is ca. 1.0
+// // 6.0 m x 10 kN/m3 = 60,0
+// // UpliftFactor = 5/60.0 = 0.0833
+// // UpliftFactor < 1.0, so piping will occur in toe of dike
+// //
+//
+// const double cTolerance = 0.000001;
+// const double expected = 11.899117458988471; // Value is taken from the actual calculation itself and not manual calculated
+// Assert.IsNotNull(actual);
+// Assert.AreEqual(expected, actual.Value, cTolerance);
+// }
+// }
+// [Test]
+//
+// public void CanCalculateHCritical()
+// {
+// const double cTolerance = 0.000001;
+// const double cwhitesConstant = 0.25;
+// const double cbeddingAngle = 41.0;
+//
+// double hCritical = PipingCalculatorSellmeijer4Forces.CalculateHCritical(cwhitesConstant, cbeddingAngle, 180, 15.00, 7.00e-05, 3, Physics.WaterViscosity);
+// Assert.AreEqual(2.757966400, hCritical, cTolerance);
+// hCritical = PipingCalculatorSellmeijer4Forces.CalculateHCritical(cwhitesConstant, cbeddingAngle, 260, 15.00, 1.30e-04, 3, Physics.WaterViscosity);
+// Assert.AreEqual(3.184432652, hCritical, cTolerance);
+// hCritical = PipingCalculatorSellmeijer4Forces.CalculateHCritical(cwhitesConstant, cbeddingAngle, 180, 20.00, 7.00e-05, 3, Physics.WaterViscosity);
+// Assert.AreEqual(3.650076587, hCritical, cTolerance);
+// hCritical = PipingCalculatorSellmeijer4Forces.CalculateHCritical(cwhitesConstant, cbeddingAngle, 260, 20.00, 1.30e-04, 3, Physics.WaterViscosity);
+// Assert.AreEqual(4.215258070, hCritical, cTolerance);
+// hCritical = PipingCalculatorSellmeijer4Forces.CalculateHCritical(cwhitesConstant, cbeddingAngle, 180, 60.00, 7.00e-05, 3, Physics.WaterViscosity);
+// Assert.AreEqual(10.705479854, hCritical, cTolerance);
+// }
+ }
+}
+
+
+
+
+
+
Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.Sellmeijer4ForcesCalculator/Deltares.DamPiping.Sellmeijer4ForcesCalculator.csproj
===================================================================
diff -u -r336 -r351
--- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.Sellmeijer4ForcesCalculator/Deltares.DamPiping.Sellmeijer4ForcesCalculator.csproj (.../Deltares.DamPiping.Sellmeijer4ForcesCalculator.csproj) (revision 336)
+++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.Sellmeijer4ForcesCalculator/Deltares.DamPiping.Sellmeijer4ForcesCalculator.csproj (.../Deltares.DamPiping.Sellmeijer4ForcesCalculator.csproj) (revision 351)
@@ -37,7 +37,7 @@
Properties\GlobalAssemblyInfo.cs
-
+
Index: dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests/Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests.csproj
===================================================================
diff -u -r336 -r351
--- dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests/Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests.csproj (.../Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests.csproj) (revision 336)
+++ dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests/Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests.csproj (.../Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests.csproj) (revision 351)
@@ -37,7 +37,7 @@
-
+
Fisheye: Tag 351 refers to a dead (removed) revision in file `dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.Sellmeijer4ForcesCalculatorTests/Class1.cs'.
Fisheye: No comparison available. Pass `N' to diff?