Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Deltares.DamEngine.Calculators.Tests.csproj
===================================================================
diff -u -r1255 -r1256
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Deltares.DamEngine.Calculators.Tests.csproj (.../Deltares.DamEngine.Calculators.Tests.csproj) (revision 1255)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Deltares.DamEngine.Calculators.Tests.csproj (.../Deltares.DamEngine.Calculators.Tests.csproj) (revision 1256)
@@ -70,6 +70,7 @@
+
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Uplift/SoilVolumeMassCalculatorEffectiveStressTest.cs
===================================================================
diff -u
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Uplift/SoilVolumeMassCalculatorEffectiveStressTest.cs (revision 0)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Uplift/SoilVolumeMassCalculatorEffectiveStressTest.cs (revision 1256)
@@ -0,0 +1,222 @@
+using Deltares.DamEngine.Calculators.Uplift;
+using Deltares.DamEngine.Data.Geotechnics;
+using NUnit.Framework;
+
+namespace Deltares.Uplift.Tests
+{
+ [TestFixture]
+ internal class SoilVolumeMassCalculatorEffectiveStressTest
+ {
+ [Test]
+ public void CalculateWithExceedingMinimumThicknessCoverLayerAndLowSurfaceLevelFullySubmerged()
+ {
+ const double expectedResult = 109.000;
+ var soilVolumeMassCalculator = new SoilVolumicMassCalculator();
+ soilVolumeMassCalculator.MinimumThicknessCoverLayer = 9.5;
+ soilVolumeMassCalculator.PhreaticLevel = 0;
+ soilVolumeMassCalculator.SurfaceLevel = -1.5;
+ soilVolumeMassCalculator.TopOfLayerToBeEvaluated = -10;
+ soilVolumeMassCalculator.VolumicWeightOfWater = 10;
+ soilVolumeMassCalculator.SoilProfile = CreateTestProfile();
+ var result = soilVolumeMassCalculator.CalculateEffectiveStress();
+ Assert.AreEqual(expectedResult, result, 0.001);
+ }
+
+ [Test]
+ public void CalculateWithExceedingMinimumThicknessCoverLayerAndLowSurfaceLevelPartlySubmerged()
+ {
+ const double expectedResult = 121.000;
+ var soilVolumeMassCalculator = new SoilVolumicMassCalculator();
+ soilVolumeMassCalculator.MinimumThicknessCoverLayer = 9.5;
+ soilVolumeMassCalculator.PhreaticLevel = -2;
+ soilVolumeMassCalculator.SurfaceLevel = -1.5;
+ soilVolumeMassCalculator.TopOfLayerToBeEvaluated = -10;
+ soilVolumeMassCalculator.VolumicWeightOfWater = 10;
+ soilVolumeMassCalculator.SoilProfile = CreateTestProfile();
+ var result = soilVolumeMassCalculator.CalculateEffectiveStress();
+ Assert.AreEqual(expectedResult, result, 0.001);
+ }
+
+ [Test]
+ public void CalculateWithExceedingMinimumThicknessCoverLayerFullySubmerged()
+ {
+ const double expectedResult = 134.000;
+ var soilVolumeMassCalculator = new SoilVolumicMassCalculator();
+ soilVolumeMassCalculator.MinimumThicknessCoverLayer = 12;
+ soilVolumeMassCalculator.PhreaticLevel = 5;
+ soilVolumeMassCalculator.SurfaceLevel = 0;
+ soilVolumeMassCalculator.TopOfLayerToBeEvaluated = -10;
+ soilVolumeMassCalculator.VolumicWeightOfWater = 10;
+ soilVolumeMassCalculator.SoilProfile = CreateTestProfile();
+ var result = soilVolumeMassCalculator.CalculateEffectiveStress();
+ Assert.AreEqual(expectedResult, result, 0.001);
+ }
+
+ [Test]
+ public void CalculateWithExceedingMinimumThicknessCoverLayerPartlySubmerged()
+ {
+ const double expectedResult = 166.000;
+ var soilVolumeMassCalculator = new SoilVolumicMassCalculator();
+ soilVolumeMassCalculator.MinimumThicknessCoverLayer = 12;
+ soilVolumeMassCalculator.PhreaticLevel = -2;
+ soilVolumeMassCalculator.SurfaceLevel = 0;
+ soilVolumeMassCalculator.TopOfLayerToBeEvaluated = -10;
+ soilVolumeMassCalculator.VolumicWeightOfWater = 10;
+ soilVolumeMassCalculator.SoilProfile = CreateTestProfile();
+ var result = soilVolumeMassCalculator.CalculateEffectiveStress();
+ Assert.AreEqual(expectedResult, result, 0.001);
+ }
+
+ [Test]
+ public void CalculateWithoutExceedingMinimumThicknessCoverLayerAndLowSurfaceLevelFullySubmerged()
+ {
+ const double expectedResult = 99.000;
+ var soilVolumeMassCalculator = new SoilVolumicMassCalculator();
+ soilVolumeMassCalculator.MinimumThicknessCoverLayer = 5;
+ soilVolumeMassCalculator.PhreaticLevel = 0;
+ soilVolumeMassCalculator.SurfaceLevel = -1.5;
+ soilVolumeMassCalculator.TopOfLayerToBeEvaluated = -10;
+ soilVolumeMassCalculator.VolumicWeightOfWater = 10;
+ soilVolumeMassCalculator.SoilProfile = CreateTestProfile();
+ var result = soilVolumeMassCalculator.CalculateEffectiveStress();
+ Assert.AreEqual(expectedResult, result, 0.001);
+ }
+
+ [Test]
+ public void CalculateWithoutExceedingMinimumThicknessCoverLayerAndLowSurfaceLevelPartlySubmerged()
+ {
+ const double expectedResult = 103.000;
+ var soilVolumeMassCalculator = new SoilVolumicMassCalculator();
+ soilVolumeMassCalculator.MinimumThicknessCoverLayer = 5;
+ soilVolumeMassCalculator.PhreaticLevel = -2;
+ soilVolumeMassCalculator.SurfaceLevel = -1.5;
+ soilVolumeMassCalculator.TopOfLayerToBeEvaluated = -10;
+ soilVolumeMassCalculator.VolumicWeightOfWater = 10;
+ soilVolumeMassCalculator.SoilProfile = CreateTestProfile();
+ var result = soilVolumeMassCalculator.CalculateEffectiveStress();
+ Assert.AreEqual(expectedResult, result, 0.001);
+ }
+
+ [Test]
+ public void CalculateWithoutExceedingMinimumThicknessCoverLayerFullySubmerged()
+ {
+ const double expectedResult = 114.000;
+ var soilVolumeMassCalculator = new SoilVolumicMassCalculator();
+ soilVolumeMassCalculator.MinimumThicknessCoverLayer = 10;
+ soilVolumeMassCalculator.SurfaceLevel = 0;
+ soilVolumeMassCalculator.TopOfLayerToBeEvaluated = -10;
+ soilVolumeMassCalculator.VolumicWeightOfWater = 10;
+ soilVolumeMassCalculator.SoilProfile = CreateTestProfile();
+ var result = soilVolumeMassCalculator.CalculateEffectiveStress();
+ Assert.AreEqual(expectedResult, result, 0.001);
+ }
+
+ [Test]
+ public void CalculateWithoutExceedingMinimumThicknessCoverLayerPartlySubmerged()
+ {
+ const double expectedResult = 130.000;
+ var soilVolumeMassCalculator = new SoilVolumicMassCalculator();
+ soilVolumeMassCalculator.MinimumThicknessCoverLayer = 10;
+ soilVolumeMassCalculator.PhreaticLevel = -2;
+ soilVolumeMassCalculator.SurfaceLevel = 0;
+ soilVolumeMassCalculator.TopOfLayerToBeEvaluated = -10;
+ soilVolumeMassCalculator.VolumicWeightOfWater = 10;
+ soilVolumeMassCalculator.SoilProfile = CreateTestProfile();
+ var result = soilVolumeMassCalculator.CalculateEffectiveStress();
+ Assert.AreEqual(expectedResult, result, 0.001);
+ }
+
+ [Test]
+ [ExpectedException(typeof(SoilVolumicMassCalculatorException))]
+ public void ThrowsExceptionIfSoilProfileHasNoLayers()
+ {
+ var soilVolumeMassCalculator = new SoilVolumicMassCalculator();
+ soilVolumeMassCalculator.MinimumThicknessCoverLayer = 10;
+ soilVolumeMassCalculator.SurfaceLevel = 2;
+ soilVolumeMassCalculator.TopOfLayerToBeEvaluated = -1;
+ soilVolumeMassCalculator.SoilProfile = new SoilProfile1D();
+ soilVolumeMassCalculator.CalculateEffectiveStress();
+ }
+
+ [Test]
+ [ExpectedException(typeof(SoilVolumicMassCalculatorException))]
+ public void ThrowsExceptionIfSoilProfileNotAssignedInSoilVolumeMassCalculator()
+ {
+ var soilVolumeMassCalculator = new SoilVolumicMassCalculator();
+ soilVolumeMassCalculator.MinimumThicknessCoverLayer = 10;
+ soilVolumeMassCalculator.SurfaceLevel = 2;
+ soilVolumeMassCalculator.TopOfLayerToBeEvaluated = -1;
+ soilVolumeMassCalculator.CalculateEffectiveStress();
+ }
+
+ [Test]
+ [ExpectedException(typeof(SoilVolumicMassCalculatorException))]
+ public void ThrowsExceptionIfSurfaceLevelNotInsideProfile()
+ {
+ var soilVolumeMassCalculator = new SoilVolumicMassCalculator();
+ soilVolumeMassCalculator.MinimumThicknessCoverLayer = 10;
+ soilVolumeMassCalculator.PhreaticLevel = 0;
+ soilVolumeMassCalculator.SurfaceLevel = 2;
+ soilVolumeMassCalculator.TopOfLayerToBeEvaluated = -1;
+ soilVolumeMassCalculator.SoilProfile = CreateTestProfile();
+ soilVolumeMassCalculator.CalculateEffectiveStress();
+ }
+
+ [Test]
+ [ExpectedException(typeof(SoilVolumicMassCalculatorException))]
+ public void ThrowsExceptionIfTopLayerToBeEvaluatedNotInsideProfile()
+ {
+ var soilVolumeMassCalculator = new SoilVolumicMassCalculator();
+ soilVolumeMassCalculator.MinimumThicknessCoverLayer = 10;
+ soilVolumeMassCalculator.PhreaticLevel = 0;
+ soilVolumeMassCalculator.SurfaceLevel = 0;
+ soilVolumeMassCalculator.TopOfLayerToBeEvaluated = 10;
+ soilVolumeMassCalculator.SoilProfile = CreateTestProfile();
+ soilVolumeMassCalculator.CalculateEffectiveStress();
+ }
+
+ public SoilProfile1D CreateTestProfile()
+ {
+ var sand = new Soil();
+ sand.Name = "zand";
+ sand.AbovePhreaticLevel = 15;
+ sand.BelowPhreaticLevel = 17;
+ sand.SoilType = SoilType.Sand;
+
+ var clay = new Soil();
+ clay.Name = "klei";
+ clay.AbovePhreaticLevel = 18;
+ clay.BelowPhreaticLevel = 20;
+ clay.SoilType = SoilType.Clay;
+
+ var clay2 = new Soil();
+ clay2.Name = "klei2";
+ clay2.AbovePhreaticLevel = 20;
+ clay2.BelowPhreaticLevel = 22;
+ clay2.SoilType = SoilType.Clay;
+
+ var soilProfile = new SoilProfile1D();
+ soilProfile.Name = "TestProf";
+
+ var layer1 = new SoilLayer1D();
+ layer1.Name = "layer1";
+ layer1.TopLevel = 0;
+ layer1.Soil = clay;
+ soilProfile.Layers.Add(layer1);
+
+ var layer2 = new SoilLayer1D();
+ layer2.Name = "layer2";
+ layer2.TopLevel = -3;
+ layer2.Soil = clay2;
+ soilProfile.Layers.Add(layer2);
+
+ var layer3 = new SoilLayer1D();
+ layer3.Name = "layer3";
+ layer3.TopLevel = -10;
+ layer3.Soil = clay2;
+ soilProfile.Layers.Add(layer3);
+
+ return soilProfile;
+ }
+ }
+}
\ No newline at end of file