Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/PlLinesCreator/PlLinesCreatorTest.cs
===================================================================
diff -u -r5227 -r5235
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/PlLinesCreator/PlLinesCreatorTest.cs (.../PlLinesCreatorTest.cs) (revision 5227)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/PlLinesCreator/PlLinesCreatorTest.cs (.../PlLinesCreatorTest.cs) (revision 5235)
@@ -1463,73 +1463,84 @@
{
const double cDampingFactor = 0.3;
SurfaceLine2 surfaceLineTutorial1 = FactoryForSurfaceLines.CreateSurfaceLineTutorial1();
+ var plLineCreator = new Calculators.PlLinesCreator.PlLinesCreator
{
- var plLineCreator = new Calculators.PlLinesCreator.PlLinesCreator
+ SoilProfile = FactoryForSoilProfiles.CreateClaySandProfile(),
+ SurfaceLine = surfaceLineTutorial1,
+ WaterLevelRiverHigh = 4.0,
+ WaterLevelPolder = -0.5,
+ ModelParametersForPlLines =
{
- SoilProfile = FactoryForSoilProfiles.CreateClaySandProfile(),
- SurfaceLine = surfaceLineTutorial1,
- WaterLevelRiverHigh = 4.0,
- WaterLevelPolder = -0.5,
- ModelParametersForPlLines =
- {
- DampingFactorPl4 = cDampingFactor
- }
- };
+ DampingFactorPl4 = cDampingFactor
+ }
+ };
- PlLine plLine = plLineCreator.CreatePlLineByExpertKnowledge(PlLineType.Pl4, 0.02);
+ PlLine plLine = plLineCreator.CreatePlLineByExpertKnowledge(PlLineType.Pl4, 0.02);
- Assert.That(plLine.Exists(), Is.False);
- }
+ Assert.That(plLine.Exists(), Is.False);
}
- /////
- ///// This test evaluates the same stuation as CreatePL3For1DGeometryWithExpertKnowledgeRRD()
- ///// The difference is that here the geometry is entered as a 2d-geometry
- /////
- //[Test]
- //public void CreatePL3For2DGeometryWithExpertKnowledgeRRD()
- //{
- // string soilGeometry2DName = @"TestData\PLLineCreation.sti";
- // string soilDatabaseName = @"TestData\PLLineCreation.mdb";
- // string cDikeMaterial = "HW-OBO";
- // const double cDampingFactor = 0.3;
- // var surfaceLineTutorial1 = FactoryForSurfaceLines.CreateSurfaceLineTutorial1();
- // {
- // PLLinesCreator plLineCreator = new PLLinesCreator();
- // plLineCreator.SoilGeometryType = SoilGeometryType.SoilGeometry2D;
- // plLineCreator.SoilProfile = null;
- // plLineCreator.SoilGeometry2DName = soilGeometry2DName;
- // plLineCreator.SoilBaseDB = SoilbaseDB.Create(soilDatabaseName);
- // plLineCreator.SoilList = plLineCreator.SoilBaseDB.CreateSoilList();
- // plLineCreator.DikeEmbankmentMaterial = plLineCreator.SoilBaseDB.GetSoil(cDikeMaterial);
- // plLineCreator.SurfaceLine = surfaceLineTutorial1;
- // plLineCreator.WaterLevelRiverHigh = 4.0;
- // plLineCreator.WaterLevelPolder = -0.5;
+ ///
+ /// This test evaluates the same situation as CreatePL3For1DGeometryWithExpertKnowledgeRRD()
+ /// The difference is that here the geometry is entered as a 2D-geometry
+ ///
+ [Test, Ignore("the expected results are wrong (uplift expected but no uplift), this will be solved in MWDAM-2356")]
+ public void CreatePL3For2DGeometryWithExpertKnowledgeRRD()
+ {
+ const double cDampingFactor = 0.3;
+ SurfaceLine2 surfaceLineTutorial1 = FactoryForSurfaceLines.CreateSurfaceLineTutorial1();
+ SoilProfile1D soilProfile1D = FactoryForSoilProfiles.CreateClaySandClaySandProfile();
+
+ var soilSurfaceProfile = new SoilSurfaceProfile
+ {
+ SoilProfile = soilProfile1D,
+ SurfaceLine2 = surfaceLineTutorial1,
+ DikeEmbankmentMaterial = new Soil("HW-OBO", 12.0, 10.0)
+ };
+ SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D();
+
+ var plLineCreator = new Calculators.PlLinesCreator.PlLinesCreator
+ {
+ SoilProfile2D = soilProfile2D,
+ SoilProfileType = SoilProfileType.ProfileType2D,
+ SurfaceLine = surfaceLineTutorial1,
+ WaterLevelRiverHigh = 4.0,
+ WaterLevelPolder = -0.5,
+ ModelParametersForPlLines =
+ {
+ DampingFactorPl3 = cDampingFactor
+ }
+ };
- // plLineCreator.ModelParametersForPlLines.DampingFactorPL3 = cDampingFactor;
- // PLLine plLine = plLineCreator.CreatePLLineByExpertKnowledge(PLLineType.PL3, 0.02);
+ // In this case no HeadInPlLine3 is specified, then the head of PL3 will be equal to WaterLevelRiverHigh
+ PlLine plLine = plLineCreator.CreatePlLineByExpertKnowledge(PlLineType.Pl3, 0.02);
+ CheckPl3For1DGeometryWithExpertKnowledgeRrd(plLine);
- // //double headAtDikeToe = plLineCreator.WaterLevelRiver - (plLineCreator.WaterLevelRiver - plLineCreator.WaterLevelPolder) * 0.01 * cDampingFactor;
+ // In this case HeadInPlLine3 is specified (with same value as WaterLevelRiverHigh above, so result should be the same)
+ // Change WaterLevelRiverHigh to be sure the value of HeadInPlLine3 is really used
+ plLineCreator.WaterLevelRiverHigh = 3.0;
+ plLineCreator.HeadInPlLine3 = 4.0;
+ plLine = plLineCreator.CreatePlLineByExpertKnowledge(PlLineType.Pl3, 0.02);
+ CheckPl3For1DGeometryWithExpertKnowledgeRrd(plLine);
- // // PLLine is supposed to have adjusted points at both banks of the ditch
+ // Specify Head PL2, so it is used for damping, but give it the same value as WaterLevelPolder.
+ // This will give the same result as when Head PL2 is not specified, because in that case, WaterLevelPolder ius used for damping.
+ plLineCreator.HeadInPlLine2 = -0.5;
+ plLine = plLineCreator.CreatePlLineByExpertKnowledge(PlLineType.Pl3, 0.02);
+ CheckPl3For1DGeometryWithExpertKnowledgeRrd(plLine);
- // Assert.AreEqual(4, plLine.Points.Count);
+ // Specify Head PL2, so it is used for damping, but now use different value as WaterLevelPolder to force different result.
+ plLineCreator.HeadInPlLine2 = -5.0;
+ plLine = plLineCreator.CreatePlLineByExpertKnowledge(PlLineType.Pl3, 0.02);
+ CheckPl3For1DGeometryWithExpertKnowledgeRrdWithHeadPl2Specified(plLine);
+
+
+
+
+ }
- // Assert.AreEqual(0.0, plLine.Points[0].X, Tolerance); // start
- // Assert.AreEqual(4.0, plLine.Points[0].Z, Tolerance); // water level at river
- // Assert.AreEqual(10.0, plLine.Points[1].X, Tolerance); // entry point
- // Assert.AreEqual(4.0, plLine.Points[1].Z, Tolerance); // water level at river
- // Assert.AreEqual(61.5, plLine.Points[2].X, Tolerance); // left ditch bank
- // Assert.AreEqual(1.6376, plLine.Points[2].Z, Tolerance); //
- // Assert.AreEqual(75.0, plLine.Points[3].X, Tolerance); // end
- // Assert.AreEqual(1.3676, plLine.Points[3].Z, Tolerance); // headAtDikeEnd
-
- // //Assert.AreEqual(?, plLine.ZFromX(plLineCreator.SurfaceLine.GetDikeToeInward().X), Tolerance); // headAtDikeToe
- // }
- //}
-
///
- /// This test evaluates the same situation as CreatePL3For1DGeometryWithExpertKnowledgeRRD()
+ /// This test evaluates the same situation as CreatePL3For2DGeometryWithExpertKnowledgeRRD()
/// The difference is that here the geometry is entered as a 1d-geometry
///
[Test]
@@ -1561,12 +1572,12 @@
CheckPl3For1DGeometryWithExpertKnowledgeRrd(plLine);
// Specify Head PL2, so it is used for damping, but give it the same value as WaterLevelPolder.
- // This will give the same result as when Head PL2 is not specified, because in that case, WaterLevelPolder ius used for damping.
+ // This will give the same result as when Head PL2 is not specified, because in that case, WaterLevelPolder is used for damping.
plLineCreator.HeadInPlLine2 = -0.5;
plLine = plLineCreator.CreatePlLineByExpertKnowledge(PlLineType.Pl3, 0.02);
CheckPl3For1DGeometryWithExpertKnowledgeRrd(plLine);
- // Specify Head PL2, so it is used for damping, but now use diffeent value as WaterLevelPolder to force different result.
+ // Specify Head PL2, so it is used for damping, but now use different value as WaterLevelPolder to force different result.
plLineCreator.HeadInPlLine2 = -5.0;
plLine = plLineCreator.CreatePlLineByExpertKnowledge(PlLineType.Pl3, 0.02);
CheckPl3For1DGeometryWithExpertKnowledgeRrdWithHeadPl2Specified(plLine);
@@ -2195,55 +2206,43 @@
});
}
- /////
- ///// Define input based on 2d geometry for PLLine creator
- /////
- /////
- /////
- //private static PLLinesCreator DefinePLLineCreatorFor2DGeometry(SurfaceLine2 surfaceline)
- //{
- // string soilGeometry2DName = @"TestData\1D1.sti";
- // string soilDatabaseName = @"TestData\soilmaterials.mdb";
- // string cDikeMaterial = "OA";
- // PLLinesCreator plLineCreator = new PLLinesCreator();
- // Assert.IsNotNull(plLineCreator);
- // plLineCreator.SoilGeometryType = SoilGeometryType.SoilGeometry2D;
- // plLineCreator.SoilProfile = null;
- // plLineCreator.SoilGeometry2DName = soilGeometry2DName;
- // plLineCreator.SoilBaseDB = SoilbaseDB.Create(soilDatabaseName);
- // plLineCreator.DikeEmbankmentMaterial = plLineCreator.SoilBaseDB.GetSoil(cDikeMaterial);
- // plLineCreator.WaterLevelRiverHigh = 4.0;
- // plLineCreator.ModelParametersForPlLines.PenetrationLength = 1.0;
- // plLineCreator.HeadInPLLine2 = 0.0;
- // plLineCreator.ModelParametersForPlLines.DampingFactorPL3 = 0.3;
- // plLineCreator.ModelParametersForPlLines.DampingFactorPL4 = 0.4;
- // plLineCreator.ModelParametersForPlLines.PLLineCreationMethod = PLLineCreationMethod.ExpertKnowledgeRRD;
- // plLineCreator.SurfaceLine = surfaceline;
- // plLineCreator.WaterLevelPolder = plLineCreator.SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z - 1.0;
- // return plLineCreator;
- //}
-
- //[Test]
- //public void CreatePL1For2DGeometryWithExpertKnowledgeRRD()
- //{
- // const double tolerance = 0.0001;
- // var surfacelineSimpleDike = FactoryForSurfaceLines.CreateSurfacelineSimpleDike();
- // {
- // PLLinesCreator plLineCreator = DefinePLLineCreatorFor2DGeometry(surfacelineSimpleDike);
- // PLLine plLine = plLineCreator.CreatePLLineByExpertKnowledge(PLLineType.PL1, 0.02);
- // Assert.AreEqual(6, plLine.Points.Count);
- // Assert.AreEqual(0.0, plLine.Points[0].X, tolerance);
- // Assert.AreEqual(4.0, plLine.Points[0].Z, tolerance);
- // Assert.AreEqual(3.0, plLine.Points[1].X, tolerance);
- // Assert.AreEqual(4.0, plLine.Points[1].Z, tolerance);
- // Assert.AreEqual(4, plLine.Points[2].X, tolerance);
- // Assert.AreEqual(3.5, plLine.Points[2].Z, tolerance);
- // Assert.AreEqual(7, plLine.Points[3].X, tolerance);
- // Assert.AreEqual(2.5, plLine.Points[3].Z, tolerance);
- // Assert.AreEqual(10, plLine.Points[4].X, tolerance);
- // Assert.AreEqual(0.9, plLine.Points[4].Z, tolerance);
- // Assert.AreEqual(12, plLine.Points[5].X, tolerance);
- // Assert.AreEqual(0.9, plLine.Points[5].Z, tolerance);
- // }
- //}
+ [Test]
+ public void CreatePL1For2DGeometryWithExpertKnowledgeRRD()
+ {
+ var plLineCreator = new Calculators.PlLinesCreator.PlLinesCreator
+ {
+ SoilProfileType = SoilProfileType.ProfileType2D,
+ SoilProfile = null,
+ WaterLevelRiverHigh = 4.0,
+ ModelParametersForPlLines =
+ {
+ PenetrationLength = 1.0,
+ DampingFactorPl3 = 0.3,
+ DampingFactorPl4 = 0.4,
+ PlLineCreationMethod = PlLineCreationMethod.ExpertKnowledgeRRD
+ },
+ HeadInPlLine2 = 0.0,
+ SurfaceLine = FactoryForSurfaceLines.CreateSurfacelineSimpleDike()
+ };
+ plLineCreator.WaterLevelPolder = plLineCreator.SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z - 1.0;
+
+ PlLine plLine = plLineCreator.CreatePlLineByExpertKnowledge(PlLineType.Pl1, 0.02);
+
+ Assert.That(plLine.Points, Has.Count.EqualTo(6));
+ Assert.Multiple(() =>
+ {
+ Assert.That(plLine.Points[0].X, Is.EqualTo(0.0).Within(tolerance4Decimals));
+ Assert.That(plLine.Points[0].Z, Is.EqualTo(4.0).Within(tolerance4Decimals));
+ Assert.That(plLine.Points[1].X, Is.EqualTo(3.0).Within(tolerance4Decimals));
+ Assert.That(plLine.Points[1].Z, Is.EqualTo(4.0).Within(tolerance4Decimals));
+ Assert.That(plLine.Points[2].X, Is.EqualTo(4.0).Within(tolerance4Decimals));
+ Assert.That(plLine.Points[2].Z, Is.EqualTo(3.5).Within(tolerance4Decimals));
+ Assert.That(plLine.Points[3].X, Is.EqualTo(7.0).Within(tolerance4Decimals));
+ Assert.That(plLine.Points[3].Z, Is.EqualTo(2.5).Within(tolerance4Decimals));
+ Assert.That(plLine.Points[4].X, Is.EqualTo(10.0).Within(tolerance4Decimals));
+ Assert.That(plLine.Points[4].Z, Is.EqualTo(0.9).Within(tolerance4Decimals));
+ Assert.That(plLine.Points[5].X, Is.EqualTo(12.0).Within(tolerance4Decimals));
+ Assert.That(plLine.Points[5].Z, Is.EqualTo(0.9).Within(tolerance4Decimals));
+ });
+ }
}
\ No newline at end of file
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/PlLinesCreator/PlLinesCreator.cs
===================================================================
diff -u -r4934 -r5235
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators/PlLinesCreator/PlLinesCreator.cs (.../PlLinesCreator.cs) (revision 4934)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/PlLinesCreator/PlLinesCreator.cs (.../PlLinesCreator.cs) (revision 5235)
@@ -474,8 +474,8 @@
ThrowIfInsufficientSoilGeometryData();
ThrowIfNoSurfaceLine();
ThrowIfSurfaceLineContainsNoPoints();
- // Soilprofile is used to check if there is really an aquifer below toe of dike at river.
- // The assumption is made that if there is an aquifer at the riverside and at the the polderside,
+ // Soil profile is used to check if there is really an aquifer below toe of dike at river.
+ // The assumption is made that if there is an aquifer at the riverside and at the polderside,
// that there is a connection between these aquifers.
// In the uplift calculation there will also be a check on the existence of an aquifer.
SoilProfile1D actualSoilProfile = GetSoilProfileBelowPoint(SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver).X + offset);
@@ -498,7 +498,7 @@
plLine.Points.Add(new PlLinePoint(SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver).X, headValue));
plLine.Points.Add(new PlLinePoint(SurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).X, headAtPolderDikeToe));
- // Now continue PlLine to the end with a slope of slopegradient
+ // Now continue PlLine to the end with a slope of slope gradient
AddTailOfPl3OrPl4WithSlopeGradient(slopeGradient, plLine);
if (IsAdjustPL3AndPL4SoNoUpliftWillOccurEnabled)
@@ -792,8 +792,8 @@
where point.X >= startSurfacePoint.X
orderby point.X
select point;
- // Adjustment will only be applied if the value to adjust to is smaller than the previous adjusted value (to avoid that the PL3/PL4 will be adjusted to the
- // polderside of the ditch i.s.o. the dikeside of the ditch.
+ // Adjustment will only be applied if the value to adjust to is smaller than the previous adjusted value
+ // (to avoid that the PL3/PL4 will be adjusted to the polder side of the ditch i.s.o. the dike side of the ditch).
// So we remember which was the last adjusted value in lastAdjustedHeadOfPlLine.
var lastAdjustedHeadOfPlLine = Double.MaxValue;
Fisheye: Tag 5235 refers to a dead (removed) revision in file `DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/Common/TestFiles/1D1.sti'.
Fisheye: No comparison available. Pass `N' to diff?
Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/Common/TestFiles/soilmaterials.mdb
===================================================================
diff -u -r2893 -r5235
Binary files differ