Index: dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.BlighCalculatorTests/PipingCalculatorBlighTests.cs
===================================================================
diff -u -r269 -r270
--- dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.BlighCalculatorTests/PipingCalculatorBlighTests.cs (.../PipingCalculatorBlighTests.cs) (revision 269)
+++ dam failuremechanisms/damPiping/trunk/src/Tests/Deltares.DamPiping.BlighCalculatorTests/PipingCalculatorBlighTests.cs (.../PipingCalculatorBlighTests.cs) (revision 270)
@@ -12,9 +12,8 @@
{
[Test]
- public void TestCalculation()
+ public void TestCalculationDefault()
{
- const double diff = 0.0001;
var bc = new PipingCalculatorBligh
{
HRiver = 1
@@ -24,74 +23,81 @@
Assert.AreEqual(0, bc.FoSp);
Assert.AreEqual(0, bc.Hcp);
Assert.AreEqual(0, bc.Hc);
-
+ }
+ [Test]
+ public void TestCalculation()
+ {
+ const double diff = 0.0001;
+ var bc = new PipingCalculatorBligh();
bc.HRiver = 7;
bc.ModelFactorPiping = 0.5;
bc.HExit = 2;
bc.Rc = 0.8;
bc.DTotal = 3;
bc.SeepageLength = 18;
- bc.D50 = 2.5e-3;
+ bc.D50 = 2.5e-3; // WTI Test succeeds with CreepFactorWTI
+ bc.D70 = 3086; // Dam: set D70 instead of D50
bc.Calculate();
Assert.AreEqual(-1.6, bc.Zp, diff);
Assert.AreEqual(1 / 2.6, bc.FoSp, diff);
Assert.AreEqual(5.4, bc.Hcp, diff);
Assert.AreEqual(2, bc.Hc, diff);
}
-// [Test]
-// public void CanCalculateThePipingFactorUsingBlighNoUplift()
-// {
-// var calculator = new PipingCalculatorBligh();
-// const double upliftCriterion = 1.0;
-// var actual = calculator.CalculatePipingFactor(upliftCriterion);
-//
-// // Phreatic level in profile
-// // Mass of soil volume above
-// // dry 6 m x 12 kN/m3 = 72
-// // wet 9 m x 16 kN/m3 = 144
-// // Total: 72 + 144 = 216
-// // Phreatic pressure
-// // 20 m x 10 kN/m3 = 200
-// // UpliftFactor = 216/200 = 1.08
-// // UpliftFactor > 1.0, so no piping, so returns cDefaultMaxReturnValue
-// var expected = PipingCalculatorBligh.cDefaultMaxReturnValue;
-//
-// Assert.AreEqual(expected, actual);
-// }
-//
-// [Test]
-// public void CanCalculateThePipingFactorUsingBlighNoUplift()
-// {
-// using (var surfaceLine = FactoryForSurfaceLineTests.CreateSurfaceLineTutorial1())
-// using (var dike = new Dike())
-// {
-// var soilProfile = FactoryForSoilProfileTests.CreateClaySandClaySandProfile();
-//
-// var calculator = new PipingCalculatorBligh(new ModelParametersForPLLines(),
-// 1.0, dike.GaugePLLines, dike.Gauges, 1.0);
-// using (var location = new Location())
-// {
-// var actual = calculator.CalculatePipingFactor(location, surfaceLine, soilProfile, 0.0);
-//
-//
-// // Phreatic level in profile
-// // Mass of soil volume above
-// // dry 6 m x 12 kN/m3 = 72
-// // wet 9 m x 16 kN/m3 = 144
-// // Total: 72 + 144 = 216
-// // Phreatic pressure
-// // 20 m x 10 kN/m3 = 200
-// // UpliftFactor = 216/200 = 1.08
-// // UpliftFactor > 1.0, so no piping, so returns cDefaultMaxReturnValue
-// var expected = PipingCalculatorBligh.cDefaultMaxReturnValue;
-//
-// Assert.AreEqual(expected, actual);
-// }
-// }
-// }
// [Test]
+ // public void CanCalculateThePipingFactorUsingBlighNoUplift()
+ // {
+ // var calculator = new PipingCalculatorBligh();
+ // const double upliftCriterion = 1.0;
+ // var actual = calculator.CalculatePipingFactor(upliftCriterion);
+ //
+ // // Phreatic level in profile
+ // // Mass of soil volume above
+ // // dry 6 m x 12 kN/m3 = 72
+ // // wet 9 m x 16 kN/m3 = 144
+ // // Total: 72 + 144 = 216
+ // // Phreatic pressure
+ // // 20 m x 10 kN/m3 = 200
+ // // UpliftFactor = 216/200 = 1.08
+ // // UpliftFactor > 1.0, so no piping, so returns cDefaultMaxReturnValue
+ // var expected = PipingCalculatorBligh.cDefaultMaxReturnValue;
+ //
+ // Assert.AreEqual(expected, actual);
+ // }
+ //
+ // [Test]
+ // public void CanCalculateThePipingFactorUsingBlighNoUplift()
+ // {
+ // using (var surfaceLine = FactoryForSurfaceLineTests.CreateSurfaceLineTutorial1())
+ // using (var dike = new Dike())
+ // {
+ // var soilProfile = FactoryForSoilProfileTests.CreateClaySandClaySandProfile();
+ //
+ // var calculator = new PipingCalculatorBligh(new ModelParametersForPLLines(),
+ // 1.0, dike.GaugePLLines, dike.Gauges, 1.0);
+ // using (var location = new Location())
+ // {
+ // var actual = calculator.CalculatePipingFactor(location, surfaceLine, soilProfile, 0.0);
+ //
+ //
+ // // Phreatic level in profile
+ // // Mass of soil volume above
+ // // dry 6 m x 12 kN/m3 = 72
+ // // wet 9 m x 16 kN/m3 = 144
+ // // Total: 72 + 144 = 216
+ // // Phreatic pressure
+ // // 20 m x 10 kN/m3 = 200
+ // // UpliftFactor = 216/200 = 1.08
+ // // UpliftFactor > 1.0, so no piping, so returns cDefaultMaxReturnValue
+ // var expected = PipingCalculatorBligh.cDefaultMaxReturnValue;
+ //
+ // Assert.AreEqual(expected, actual);
+ // }
+ // }
+ // }
+
+ // [Test]
// public void CanCalculateThePipingFactorUsingBligh()
// {
// using (var surfaceLine = FactoryForSurfaceLineTests.CreateSurfaceLineTutorial1())
Index: dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.BlighCalculator/PipingCalculatorBligh.cs
===================================================================
diff -u -r269 -r270
--- dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.BlighCalculator/PipingCalculatorBligh.cs (.../PipingCalculatorBligh.cs) (revision 269)
+++ dam failuremechanisms/damPiping/trunk/src/Deltares.DamPiping.BlighCalculator/PipingCalculatorBligh.cs (.../PipingCalculatorBligh.cs) (revision 270)
@@ -12,6 +12,7 @@
{
public const double RcDefault = 0.3;
public const double Epsilon = 1e-8;
+ public const double D50DividedByD70 = 0.81;
private double foSp;
private double hc;
@@ -68,6 +69,11 @@
public double D50 { get; set; }
///
+ /// Median grainsize D70 as input
+ ///
+ public double? D70 { get; set; }
+
+ ///
/// Limit state function as result
///
public double Zp
@@ -164,14 +170,15 @@
/// the proper value of Hc according to Bligh
private double GetHc()
{
- return SeepageLength/CCreep();
+// return SeepageLength/CreepFactorWTI();
+ return SeepageLength / CreepFactor();
}
///
- /// Determine creep factor for Bligh
+ /// Determine creep factor for Bligh according to WTI
///
/// creep factor
- private double CCreep()
+ private double CreepFactorWTI()
{
// d50 is in meters; the table for Bligh is in micro meters so convert locally
var ld50 = D50*1e6;
@@ -199,6 +206,41 @@
return 4.0;
}
+ ///
+ /// Determine creep factor for Bligh
+ ///
+ private double CreepFactor()
+ {
+ const double cBligh = 18.0;
+ if (D70 != null)
+ {
+
+ double d50 = D50DividedByD70 * D70.Value;
+ if (d50 < 150.0)
+ {
+ // according to specs: d50 < 150
+ return 18.0;
+ }
+ else
+ {
+ if (d50 < 300.0)
+ {
+ // according to specs: 150 < d50 < 300
+ return 15.0;
+ }
+ else
+ {
+ // according to specs: 300 < d50 < 2000
+ return 12.0;
+ }
+ }
+ }
+ else
+ {
+ return cBligh;
+ }
+ }
+
private double GetReducedFall()
{
return HRiver - HExit - (Rc*DTotal);