Index: DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/Deltares.Dam.TestHelper.csproj
===================================================================
diff -u -r3450 -r3823
--- DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/Deltares.Dam.TestHelper.csproj (.../Deltares.Dam.TestHelper.csproj) (revision 3450)
+++ DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/Deltares.Dam.TestHelper.csproj (.../Deltares.Dam.TestHelper.csproj) (revision 3823)
@@ -71,6 +71,9 @@
False..\..\..\..\lib\DSL-Core\Deltares.Standard.dll
+
+ ..\..\..\packages\NUnit.2.6.2\lib\nunit.framework.dll
+
@@ -81,6 +84,11 @@
+
+
+
+
+
Index: DamClients/DamUI/trunk/src/Dam/Tests/Deltares.Dam.Tests.csproj
===================================================================
diff -u -r3822 -r3823
--- DamClients/DamUI/trunk/src/Dam/Tests/Deltares.Dam.Tests.csproj (.../Deltares.Dam.Tests.csproj) (revision 3822)
+++ DamClients/DamUI/trunk/src/Dam/Tests/Deltares.Dam.Tests.csproj (.../Deltares.Dam.Tests.csproj) (revision 3823)
@@ -154,9 +154,6 @@
-
-
-
Index: DamClients/DamUI/trunk/src/Dam/Tests/CsvExportSurfaceLineTest.cs
===================================================================
diff -u -r3527 -r3823
--- DamClients/DamUI/trunk/src/Dam/Tests/CsvExportSurfaceLineTest.cs (.../CsvExportSurfaceLineTest.cs) (revision 3527)
+++ DamClients/DamUI/trunk/src/Dam/Tests/CsvExportSurfaceLineTest.cs (.../CsvExportSurfaceLineTest.cs) (revision 3823)
@@ -20,15 +20,13 @@
// All rights reserved.
using Deltares.Dam.Data.CsvImporters;
-using Deltares.Geotechnics;
using Deltares.Geotechnics.GeotechnicalGeometry;
using System.Collections.Generic;
using System.IO;
-
using NUnit.Framework;
using Deltares.Dam.Data;
+using Deltares.Dam.TestHelper.TestUtils;
using Deltares.Geotechnics.SurfaceLines;
-using Deltares.Geotechnics.TestUtils;
namespace Deltares.Dam.Tests
{
Index: DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/MemoryLeakTestBase.cs
===================================================================
diff -u
--- DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/MemoryLeakTestBase.cs (revision 0)
+++ DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/MemoryLeakTestBase.cs (revision 3823)
@@ -0,0 +1,134 @@
+// Copyright (C) Stichting Deltares 2019. All rights reserved.
+//
+// This file is part of the Delta Shell Light Library.
+//
+// The Delta Shell Light Library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Deltares.Dam.Tests.TestUtils;
+using NUnit.Framework;
+
+namespace Deltares.Dam.TestHelper.TestUtils
+{
+ ///
+ /// A base class providing template methods to be used for performing
+ /// memory leak tests.
+ ///
+ /// This class is working purely on non-GUI level.
+ [TestFixture]
+ public abstract class MemoryLeakTestBase
+ {
+ [TearDown]
+ public void TearDown()
+ {
+ objectLeakMonitor = null;
+ directCompositeChildrenLeakMonitors = null;
+ }
+
+ private ObjectLeakMonitor objectLeakMonitor;
+ private ObjectLeakMonitor[] directCompositeChildrenLeakMonitors;
+
+ ///
+ /// Clear all static caches that should be cleared at end of application
+ ///
+ protected virtual void ClearStaticCaches()
+ {
+ // Clear all static, non-GUI caches here
+ }
+
+ protected void MonitorMemoryLeakage(Func createMonitoredObject, Func> getMonitoredChildren) where T : class, IDisposable
+ {
+ PerformMemoryMeasurements(createMonitoredObject, getMonitoredChildren);
+
+ string report;
+ var isLeaking = CreateMemoryLeakReport(objectLeakMonitor, directCompositeChildrenLeakMonitors, out report);
+ if (!isLeaking)
+ {
+ Console.WriteLine(report);
+ }
+ Assert.IsFalse(isLeaking, report);
+ }
+
+ protected void MonitorMemoryLeakage(Func> getMonitoredChildren) where T : class, IDisposable, new()
+ {
+ PerformMemoryMeasurements(() => new T(), getMonitoredChildren);
+
+ string report;
+ var isLeaking = CreateMemoryLeakReport(objectLeakMonitor, directCompositeChildrenLeakMonitors, out report);
+ if (!isLeaking)
+ {
+ Console.WriteLine(report);
+ }
+ Assert.IsFalse(isLeaking, report);
+ }
+
+ ///
+ /// Performs the memory measurements.
+ ///
+ /// The object type to be monitored. It's default constructor will be used.
+ /// The object creation method.
+ /// The get monitored children.
+ ///
+ ///
The creation is performed in a separate method than where the are checked to ensure the objects will be garbage collected.
+ ///
+ private void PerformMemoryMeasurements(Func createMonitoredObject, Func> getMonitoredChildren) where T : class, IDisposable
+ {
+ using (var objectToMonitor = createMonitoredObject())
+ {
+ objectLeakMonitor = new ObjectLeakMonitor(objectToMonitor);
+ directCompositeChildrenLeakMonitors = getMonitoredChildren != null
+ ? getMonitoredChildren(objectToMonitor)
+ .Select(mc => new ObjectLeakMonitor(mc))
+ .ToArray()
+ : null;
+ }
+
+ ClearStaticCaches();
+ }
+
+ ///
+ /// Creates the memory leak report.
+ ///
+ /// The monitor for the object under test.
+ /// The composite children leak monitors.
+ /// Output: The memory leak report.
+ /// True if a memory or object leak has been detected; False otherwise.
+ private bool CreateMemoryLeakReport(ObjectLeakMonitor monitor, ObjectLeakMonitor[] compositeChildrenLeakMonitors, out string report)
+ {
+ report = Environment.NewLine + "=================================================================" + Environment.NewLine;
+ report += "Memory leak report for " + monitor.MonitoredObjectType + Environment.NewLine;
+ report += "Object garbage collected: " + !monitor.ObjectIsAlive() + Environment.NewLine;
+
+ if (compositeChildrenLeakMonitors != null && compositeChildrenLeakMonitors.Any())
+ {
+ report += "All monitored composite children garbage collected: " + compositeChildrenLeakMonitors.All(c => !c.ObjectIsAlive()) + Environment.NewLine;
+
+ foreach (var compositeChildrenLeakMonitor in compositeChildrenLeakMonitors)
+ {
+ report += "\tChild (" + compositeChildrenLeakMonitor.MonitoredObjectType + ") garbage collected: " + !compositeChildrenLeakMonitor.ObjectIsAlive() + Environment.NewLine;
+ }
+ }
+
+ report += "=================================================================";
+
+ return monitor.ObjectIsAlive() || (compositeChildrenLeakMonitors != null && compositeChildrenLeakMonitors.Any(c => c.ObjectIsAlive()));
+ }
+ }
+}
\ No newline at end of file
Index: DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/FactoryForStabilityTests.cs
===================================================================
diff -u -r3527 -r3823
--- DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/FactoryForStabilityTests.cs (.../FactoryForStabilityTests.cs) (revision 3527)
+++ DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/FactoryForStabilityTests.cs (.../FactoryForStabilityTests.cs) (revision 3823)
@@ -20,13 +20,11 @@
// All rights reserved.
using Deltares.Geometry;
-using Deltares.Geotechnics;
using System.IO;
using Deltares.Dam.Data;
+using Deltares.Dam.TestHelper.TestUtils;
using Deltares.Geotechnics.Soils;
using Deltares.Geotechnics.SurfaceLines;
-using Deltares.Geotechnics.TestUtils;
-using Segment = Deltares.Dam.Data.Segment;
namespace Deltares.Dam.TestHelper
{
@@ -66,7 +64,7 @@
///
/// The instance to be set on .
///
- public static Location CreateLocation(SurfaceLine2 surfaceLine)
+ private static Location CreateLocation(SurfaceLine2 surfaceLine)
{
Location location = new Location();
location.Name = "LocationName";
@@ -108,7 +106,7 @@
/// Create standard 4 layer soilprofile for tests
///
///
- public static SoilProfile1D CreateSoilProfile()
+ private static SoilProfile1D CreateSoilProfile()
{
SoilProfile1D soilProfile = FactoryForSoilProfileTests.CreateClaySandClaySandProfile();
Index: DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/ObjectLeakMonitorTest.cs
===================================================================
diff -u
--- DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/ObjectLeakMonitorTest.cs (revision 0)
+++ DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/ObjectLeakMonitorTest.cs (revision 3823)
@@ -0,0 +1,78 @@
+// Copyright (C) Stichting Deltares 2019. All rights reserved.
+//
+// This file is part of the Delta Shell Light Library.
+//
+// The Delta Shell Light Library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using Deltares.Dam.Tests.TestUtils;
+using NUnit.Framework;
+
+namespace Deltares.Dam.TestHelper.TestUtils
+{
+ [TestFixture]
+ public class ObjectLeakMonitorTest
+ {
+ [Test]
+ public void IsAlive_ObjectStillInScope_True()
+ {
+ // setup
+ var objectToMonitor = new object();
+ var monitor = new ObjectLeakMonitor(objectToMonitor);
+
+ // call
+ var isAlive = monitor.ObjectIsAlive();
+
+ // assert
+ var text = objectToMonitor.ToString(); // To ensure it stays in scope
+ Assert.IsTrue(isAlive, text);
+ }
+
+ [Test]
+ public void MonitoredObjectType_ShouldBeTypeOfMonitoredObject()
+ {
+ // setup
+ var objectToMonitor = new object();
+ var monitor = new ObjectLeakMonitor(objectToMonitor);
+
+ // call
+ var type = monitor.MonitoredObjectType;
+
+ // assert
+ Assert.AreEqual(objectToMonitor.GetType(), type);
+ }
+
+ [Test]
+ public void ObjectIsAlive_ObjectOutOfScope_False()
+ {
+ // setup
+ var monitor = CreateObjectAndAssignToObjectLeakMonitor();
+
+ // call
+ var isAlive = monitor.ObjectIsAlive();
+
+ // assert
+ Assert.IsFalse(isAlive);
+ }
+
+ private ObjectLeakMonitor CreateObjectAndAssignToObjectLeakMonitor()
+ {
+ var objectToMonitor = new object(); // This object goes out of scope when the method returns, and will be garbage collectable
+ return new ObjectLeakMonitor(objectToMonitor);
+ }
+ }
+}
\ No newline at end of file
Index: DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/ObjectLeakMonitor.cs
===================================================================
diff -u
--- DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/ObjectLeakMonitor.cs (revision 0)
+++ DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/ObjectLeakMonitor.cs (revision 3823)
@@ -0,0 +1,66 @@
+// Copyright (C) Stichting Deltares 2019. All rights reserved.
+//
+// This file is part of the Delta Shell Light Library.
+//
+// The Delta Shell Light Library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+
+namespace Deltares.Dam.Tests.TestUtils
+{
+ ///
+ /// Class used to detecting if an object is alive or not.
+ /// Used to prevent keeping the object
+ /// from being garbage collected.
+ ///
+ /// http://geekswithblogs.net/HouseOfBilz/archive/2008/11/11/writing-tests-to-catch-memory-leaks-in-.net.aspx
+ ///
+ public class ObjectLeakMonitor
+ {
+ private readonly WeakReference refereceToObject;
+ private readonly Type referencedObjectType;
+
+ ///
+ /// Initializes a new instance of the class,
+ /// creating a to the monitored object.
+ ///
+ /// The object to monitor.
+ public ObjectLeakMonitor(object objectToMonitor)
+ {
+ refereceToObject = new WeakReference(objectToMonitor);
+ referencedObjectType = objectToMonitor.GetType();
+ }
+
+ ///
+ /// Gets the of the monitored object.
+ ///
+ public Type MonitoredObjectType => referencedObjectType;
+
+ ///
+ /// Performs garbage collection and checks if the object still exists.
+ ///
+ /// True if the monitored object exists, false otherwise.
+ public bool ObjectIsAlive()
+ {
+ GC.Collect();
+ GC.WaitForPendingFinalizers();
+
+ return refereceToObject.IsAlive;
+ }
+ }
+}
\ No newline at end of file
Index: DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/FactoryForSoilProfileTests.cs
===================================================================
diff -u
--- DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/FactoryForSoilProfileTests.cs (revision 0)
+++ DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/FactoryForSoilProfileTests.cs (revision 3823)
@@ -0,0 +1,2332 @@
+// Copyright (C) Stichting Deltares 2019. All rights reserved.
+//
+// This file is part of the Delta Shell Light Library.
+//
+// The Delta Shell Light Library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using Deltares.Geometry;
+using Deltares.Geotechnics.GeotechnicalGeometry;
+using Deltares.Geotechnics.Soils;
+using Deltares.Geotechnics.SurfaceLines;
+using Deltares.Standard;
+
+namespace Deltares.Dam.TestHelper.TestUtils
+{
+ public class FactoryForSoilProfileTests
+ {
+ ///
+ /// Create simple soil profile
+ ///
+ /// soil profile
+ public static SoilProfile1D CreateSimpleProfile()
+ {
+ var soilProfile = new SoilProfile1D();
+
+ var layer = new SoilLayer1D();
+ layer.TopLevel = 10.0;
+ layer.Soil = new Soil("Clay", 16.0, 12.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ soilProfile.BottomLevel = -20.0;
+
+ return soilProfile;
+ }
+
+ ///
+ /// Create twolayer soilprofile
+ ///
+ /// soil profile
+ public static SoilProfile1D CreateTwoLayerProfile()
+ {
+ var soilProfile = new SoilProfile1D();
+
+ var layer = new SoilLayer1D();
+ layer.TopLevel = 10.0;
+ layer.Soil = new Soil("HW-OBO", 12.0, 10.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ layer.WaterpressureInterpolationModel = WaterpressureInterpolationModel.Automatic;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D();
+ layer.TopLevel = 2.0;
+ layer.Soil = new Soil("Alg-zand (0-30)", 22.0, 20.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = true;
+ layer.WaterpressureInterpolationModel = WaterpressureInterpolationModel.Hydrostatic;
+ soilProfile.Layers.Add(layer);
+
+ soilProfile.BottomLevel = -10.0;
+
+ return soilProfile;
+ }
+
+ ///
+ /// Create two layer soil profile with pleistocene sand layer only
+ ///
+ /// soil profile
+ public static SoilProfile1D CreateHeavyClaySandProfileForHydraulicShortcutEvaluator()
+ {
+ SoilProfile1D soilProfile = CreateClaySandProfile();
+ soilProfile.Layers[0].Soil.BelowPhreaticLevel = 22.0;
+ soilProfile.Layers[0].Soil.AbovePhreaticLevel = 20.0;
+ foreach (var layer in soilProfile.Layers)
+ {
+ layer.Soil.DryUnitWeight = layer.Soil.AbovePhreaticLevel - 2;
+ }
+ return soilProfile;
+ }
+
+ ///
+ /// Create two layer soil profile with pleistocene sand layer only
+ ///
+ /// soil profile
+ public static SoilProfile1D CreateClaySandProfile()
+ {
+ var soilProfile = new SoilProfile1D();
+
+ var layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = 10.0;
+ layer.Soil = new Soil("HW-OBO", 12.0, 10.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ layer.Soil.SoilType = SoilType.Clay;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -5.0;
+ layer.Soil = new Soil("Alg-zand (0-30)", 22.0, 20.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = true;
+ soilProfile.Layers.Add(layer);
+
+ soilProfile.BottomLevel = -10.0;
+
+ return soilProfile;
+ }
+
+ ///
+ /// Gammadry and Gammywet are both set to 1 for testing purposes
+ ///
+ ///
+ public static SoilProfile1D CreateClaySandClaySandProfileForPipingBligh()
+ {
+ SoilProfile1D soilProfile = CreateClaySandClaySandProfile();
+ foreach (var layer in soilProfile.Layers)
+ {
+ layer.Soil.BelowPhreaticLevel = 1;
+ layer.Soil.AbovePhreaticLevel = 1;
+ layer.Soil.DiameterD70 = 0.00018;
+ }
+ return soilProfile;
+ }
+
+ public static SoilProfile1D CreateClaySandProfileForPipingBligh()
+ {
+ SoilProfile1D soilProfile = CreateClaySandProfile();
+ foreach (var layer in soilProfile.Layers)
+ {
+ layer.Soil.BelowPhreaticLevel = 1;
+ layer.Soil.AbovePhreaticLevel = 1;
+ layer.Soil.DiameterD70 = 0.00018;
+ }
+ return soilProfile;
+ }
+
+ ///
+ /// Create four layer soil profile with pleistocene and intermediate sand layer
+ ///
+ /// soil profile
+ public static SoilProfile1D CreateClaySandClaySandProfile()
+ {
+ var soilProfile = new SoilProfile1D();
+
+ var layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = 10.0;
+ layer.Soil = new Soil("HW-OBO", 12.0, 10.0);
+ layer.Soil.DryUnitWeight = 0.01;
+
+ layer.IsAquifer = false;
+ layer.Soil.SoilType = SoilType.Clay;
+ layer.Soil.DryUnitWeight = layer.Soil.AbovePhreaticLevel - 1.0;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = 1.0;
+ layer.Soil = new Soil("Alg-zand (0-30)", 22.0, 20.0);
+ layer.Soil.DryUnitWeight = 0.01;
+
+ layer.IsAquifer = true;
+ layer.Soil.SoilType = SoilType.Sand;
+ layer.Soil.DryUnitWeight = layer.Soil.AbovePhreaticLevel - 1.0;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -1.5;
+ layer.Soil = new Soil("HW-DUN", 16.8, 15.8);
+ layer.Soil.DryUnitWeight = 0.01;
+
+ layer.IsAquifer = false;
+ layer.Soil.SoilType = SoilType.Clay;
+ layer.Soil.DryUnitWeight = layer.Soil.AbovePhreaticLevel - 1.0;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -5.0;
+ layer.Soil = new Soil("Alg-zand (0-30)", 22.0, 20.0);
+ layer.Soil.DryUnitWeight = 0.01;
+
+ layer.IsAquifer = true;
+ layer.Soil.SoilType = SoilType.Sand;
+ layer.Soil.DryUnitWeight = layer.Soil.AbovePhreaticLevel - 1.0;
+ soilProfile.Layers.Add(layer);
+ soilProfile.BottomLevel = -10.0;
+ return soilProfile;
+ }
+
+ ///
+ /// Create six layer soil profile with 3 aquifers
+ ///
+ /// soil profile
+ public static SoilProfile1D CreateClaySandClaySandClaySandProfile()
+ {
+ var soilProfile = new SoilProfile1D();
+
+ var layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = 10.0;
+ layer.Soil = new Soil("HW-OBO", 12.0, 10.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = 1.0;
+ layer.Soil = new Soil("Alg-zand (0-30)", 22.0, 20.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = true;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -1.5;
+ layer.Soil = new Soil("HW-DUN", 16.8, 15.8);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -5.0;
+ layer.Soil = new Soil("Alg-zand (0-30)", 22.0, 20.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = true;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -7.0;
+ layer.Soil = new Soil("HW-DUN", 16.8, 15.8);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -9.0;
+ layer.Soil = new Soil("Alg-zand (0-30)", 22.0, 20.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = true;
+ soilProfile.Layers.Add(layer);
+
+ soilProfile.BottomLevel = -10.0;
+
+ return soilProfile;
+ }
+
+ ///
+ /// Create five layer soil profile with 1 aquifer
+ ///
+ /// soil profile
+ public static SoilProfile1D Create5LayerProfileWith1Aquifer()
+ {
+ var soilProfile = new SoilProfile1D();
+
+ var layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = 10.0;
+ layer.Soil = new Soil("HW-OBO", 12.0, 10.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ layer.Soil.SoilType = SoilType.Clay;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = 1.0;
+ layer.Soil = new Soil("Alg-zand (0-30)", 10.0, 20.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ layer.Soil.SoilType = SoilType.Clay;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -1.5;
+ layer.Soil = new Soil("HW-DUN", 16.8, 15.8);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ layer.Soil.SoilType = SoilType.Clay;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -5.0;
+ layer.Soil = new Soil("Alg-zand (0-30)", 22.0, 20.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = true;
+ layer.Soil.SoilType = SoilType.Clay;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -7.0;
+ layer.Soil = new Soil("HW-DUN", 16.8, 15.8);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ layer.Soil.SoilType = SoilType.Clay;
+ soilProfile.Layers.Add(layer);
+
+ soilProfile.BottomLevel = -10.0;
+
+ return soilProfile;
+ }
+
+ ///
+ /// Create four layer soil profile with pleistocene and intermediate sand layer with multiple infiltration layers
+ ///
+ /// soil profile
+ public static SoilProfile1D CreateMultiInfiltrationLayerProfile()
+ {
+ var soilProfile = new SoilProfile1D();
+
+ var layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = 10.0;
+ layer.Soil = new Soil("HW-OBO", 12.0, 10.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = 1.0;
+ layer.Soil = new Soil("Alg-zand (0-30)", 22.0, 20.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = true;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -1.5;
+ layer.Soil = new Soil("HW-DUN", 16.8, 15.8);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -2.3;
+ layer.Soil = new Soil("HW-OBO", 12.0, 10.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -3.2;
+ layer.Soil = new Soil("HW-DUN", 16.8, 15.8);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -4.1;
+ layer.Soil = new Soil("HW-OBO", 12.0, 10.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -5.0;
+ layer.Soil = new Soil("Alg-zand (0-30)", 22.0, 20.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = true;
+ soilProfile.Layers.Add(layer);
+
+ soilProfile.BottomLevel = -10.0;
+
+ return soilProfile;
+ }
+
+ ///
+ /// Create complex soilprofile
+ ///
+ /// soil profile
+ public static SoilProfile1D CreateComplexProfile()
+ {
+ var soilProfile = new SoilProfile1D();
+
+ var layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = 10.0;
+ layer.Soil = new Soil("HW-OBO", 16.8, 15.8);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -0.6;
+ layer.Soil = new Soil("HW-DUN", 16.8, 15.8);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -1.8;
+ layer.Soil = new Soil("HW-DUOzand", 18.7, 17.7);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = true;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -2.8;
+ layer.Soil = new Soil("HW-HVN", 11.4, 10.4);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -4.0;
+ layer.Soil = new Soil("HW-HVN", 11.40, 10.40);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -5.0;
+ layer.Soil = new Soil("Alg-zand (0-30)", 19.0, 18.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = true;
+ soilProfile.Layers.Add(layer);
+
+ soilProfile.BottomLevel = -10.0;
+ return soilProfile;
+ }
+
+ ///
+ /// Create three layer soil profile with pleistocene and intermediate sand layer
+ ///
+ /// soil profile
+ public static SoilProfile1D CreatePipingSellmeijerProfileWithTwoSandlayers()
+ {
+ var soilProfile = new SoilProfile1D();
+
+ var layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = 10.0;
+ layer.Soil = new Soil("Topmaterial", 1.0, 1.0, 0.0003, Physics.FactorMicroMeterToMeter*300.0, 0.5, 57.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -2.0;
+ layer.Soil = new Soil("Sand upper", 22.0, 20.0, 0.0001, Physics.FactorMicroMeterToMeter*200.0, 0.25, 37.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = true;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -3.99;
+ layer.Soil = new Soil("Clay", 22.0, 20.0, 0.0001, Physics.FactorMicroMeterToMeter*200.0, 0.25, 37.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -4.0;
+ layer.Soil = new Soil("Sand lower", 22.0, 20.0, 0.0002, Physics.FactorMicroMeterToMeter*300.0, 0.35, 47.0);
+ layer.Soil.DryUnitWeight = 0.01;
+ layer.IsAquifer = true;
+ soilProfile.Layers.Add(layer);
+
+ soilProfile.BottomLevel = -10.0;
+
+ return soilProfile;
+ }
+
+ ///
+ /// Create two layer soil profile with pleistocene sand layer (no intermediate layer
+ ///
+ /// soil profile
+ public static SoilProfile1D CreatePipingSellmeijerProfileWithOneSandlayer()
+ {
+ var soilProfile = new SoilProfile1D();
+
+ var layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = 10.0;
+ layer.Soil = new Soil("Topmaterial", 1.0, 1.0, 0.0003, Physics.FactorMicroMeterToMeter*300.0, 0.5, 57.0);
+ layer.IsAquifer = false;
+ soilProfile.Layers.Add(layer);
+
+ layer = new SoilLayer1D()
+ {
+ Id = soilProfile.GetNewUniqueLayerId()
+ };
+ layer.TopLevel = -2.0;
+ layer.Soil = new Soil("Sand", 22.0, 20.0, 0.0001, Physics.FactorMicroMeterToMeter*200.0, 0.25, 37.0);
+ layer.IsAquifer = true;
+ soilProfile.Layers.Add(layer);
+
+ soilProfile.BottomLevel = -10.0;
+
+ return soilProfile;
+ }
+
+ ///
+ /// Gammadry and Gammywet are both set to 10.0 for testing purposes
+ ///
+ ///
+ public static SoilProfile1D CreatePipingDesignSellmeijerDesign()
+ {
+ SoilProfile1D soilProfile = CreatePipingSellmeijerProfileWithTwoSandlayers();
+ foreach (var layer in soilProfile.Layers)
+ {
+ layer.Soil.BelowPhreaticLevel = 5.0;
+ layer.Soil.AbovePhreaticLevel = 5.0;
+ }
+ return soilProfile;
+ }
+
+ ///
+ /// Create a soil profile containing 5 layers with pleistocene and intermediate sand layer
+ /// (2 top aquitards + 1 in between aquifer + 1 aquitard + 1 deep aquifer)
+ ///
+ /// soil profile
+ public static SoilProfile2D Create2DProfileBenchmark4_01a()
+ {
+ var newProfile = new SoilProfile2D();
+ var geometryModel = new GeometryData();
+ newProfile.Geometry.Right = 45;
+ newProfile.Geometry.Left = 0;
+
+ var layer2DPleistocene = new SoilLayer2D();
+ layer2DPleistocene.Soil = new Soil()
+ {
+ Name = "Pleistocene", SoilType = SoilType.Sand, BelowPhreaticLevel = 20, AbovePhreaticLevel = 18
+ };
+ layer2DPleistocene.IsAquifer = true;
+ CreateGeometryCurves0ForBm4_01(layer2DPleistocene, geometryModel);
+ newProfile.Surfaces.Add(layer2DPleistocene);
+
+ var layer2DPeat = new SoilLayer2D();
+ layer2DPeat.Soil = new Soil()
+ {
+ Name = "Peat", SoilType = SoilType.Peat, BelowPhreaticLevel = 12, AbovePhreaticLevel = 12
+ };
+ layer2DPeat.IsAquifer = false;
+ CreateGeometryCurves1ForBm4_01(layer2DPeat, geometryModel);
+ newProfile.Surfaces.Add(layer2DPeat);
+
+ var layer2DSand = new SoilLayer2D();
+ layer2DSand.Soil = new Soil()
+ {
+ Name = "Sand", SoilType = SoilType.Sand, BelowPhreaticLevel = 17, AbovePhreaticLevel = 17
+ };
+ layer2DSand.IsAquifer = true;
+ CreateGeometryCurves2ForBm4_01(layer2DSand, geometryModel);
+ newProfile.Surfaces.Add(layer2DSand);
+
+ var layer2DClay = new SoilLayer2D();
+ layer2DClay.Soil = new Soil()
+ {
+ Name = "Clay", SoilType = SoilType.Clay, BelowPhreaticLevel = 15, AbovePhreaticLevel = 15
+ };
+ layer2DClay.IsAquifer = false;
+ CreateGeometryCurves3ForBm4_01(layer2DClay, geometryModel);
+ newProfile.Surfaces.Add(layer2DClay);
+
+ var layer2DClayDike = new SoilLayer2D();
+ layer2DClayDike.Soil = new Soil()
+ {
+ Name = "Clay dike", SoilType = SoilType.Clay, BelowPhreaticLevel = 15, AbovePhreaticLevel = 15
+ };
+ layer2DClayDike.IsAquifer = false;
+ CreateGeometryCurves4ForBm4_01(layer2DClayDike, geometryModel);
+ newProfile.Surfaces.Add(layer2DClayDike);
+
+ return newProfile;
+ }
+
+ ///
+ /// Create a soil profile containing 5 layers with 2 deep aquifers
+ /// (1 top aquifer + 2 aquitards + 2 deep aquifers)
+ ///
+ /// soil profile
+ public static SoilProfile2D Create2DProfileBenchmark4_01b()
+ {
+ var newProfile = new SoilProfile2D();
+ var geometryModel = new GeometryData();
+
+ var layer2DPleistocene = new SoilLayer2D();
+ layer2DPleistocene.Soil = new Soil()
+ {
+ Name = "Pleistocene", SoilType = SoilType.Sand, BelowPhreaticLevel = 20, AbovePhreaticLevel = 18
+ };
+ layer2DPleistocene.IsAquifer = true;
+ CreateGeometryCurves0ForBm4_01(layer2DPleistocene, geometryModel);
+ newProfile.Surfaces.Add(layer2DPleistocene);
+
+ var layer2DSand = new SoilLayer2D();
+ layer2DSand.Soil = new Soil()
+ {
+ Name = "Sand", SoilType = SoilType.Sand, BelowPhreaticLevel = 17, AbovePhreaticLevel = 17
+ };
+ layer2DSand.IsAquifer = true;
+ CreateGeometryCurves1ForBm4_01(layer2DSand, geometryModel);
+ newProfile.Surfaces.Add(layer2DSand);
+
+ var layer2DPeat = new SoilLayer2D();
+ layer2DPeat.Soil = new Soil()
+ {
+ Name = "Peat", SoilType = SoilType.Peat, BelowPhreaticLevel = 12, AbovePhreaticLevel = 12
+ };
+ layer2DPeat.IsAquifer = false;
+ CreateGeometryCurves2ForBm4_01(layer2DPeat, geometryModel);
+ newProfile.Surfaces.Add(layer2DPeat);
+
+ var layer2DClay = new SoilLayer2D();
+ layer2DClay.Soil = new Soil()
+ {
+ Name = "Clay", SoilType = SoilType.Clay, BelowPhreaticLevel = 15, AbovePhreaticLevel = 15
+ };
+ layer2DClay.IsAquifer = false;
+ CreateGeometryCurves3ForBm4_01(layer2DClay, geometryModel);
+ newProfile.Surfaces.Add(layer2DClay);
+
+ var layer2DSandDike = new SoilLayer2D();
+ layer2DSandDike.Soil = new Soil()
+ {
+ Name = "Sand dike", SoilType = SoilType.Sand, BelowPhreaticLevel = 17, AbovePhreaticLevel = 17
+ };
+ layer2DSandDike.IsAquifer = true;
+ CreateGeometryCurves1ForBm4_01(layer2DSandDike, geometryModel);
+ newProfile.Surfaces.Add(layer2DSandDike);
+
+ return newProfile;
+ }
+
+ ///
+ /// Create a soil profile containing 5 layers with 2 consecutive intermediate sand layers
+ /// (1 top aquitard + 2 in between aquifers + 1 aquitard + 1 deep aquifer)
+ ///
+ /// soil profile
+ public static SoilProfile2D Create2DProfileBenchmark4_01c()
+ {
+ var newProfile = new SoilProfile2D();
+ var geometryModel = new GeometryData();
+
+ var layer2DPleistocene = new SoilLayer2D();
+ layer2DPleistocene.Soil = new Soil()
+ {
+ Name = "Pleistocene", SoilType = SoilType.Sand, BelowPhreaticLevel = 20, AbovePhreaticLevel = 18, Cohesion = 30, FrictionAngle = 35
+ };
+ layer2DPleistocene.IsAquifer = true;
+ CreateGeometryCurves0ForBm4_01(layer2DPleistocene, geometryModel);
+ newProfile.Surfaces.Add(layer2DPleistocene);
+
+ var layer2DPeat = new SoilLayer2D();
+ layer2DPeat.Soil = new Soil()
+ {
+ Name = "Peat", SoilType = SoilType.Peat, BelowPhreaticLevel = 12, AbovePhreaticLevel = 12, Cohesion = 0, FrictionAngle = 15
+ };
+ layer2DPeat.IsAquifer = false;
+ CreateGeometryCurves1ForBm4_01(layer2DPeat, geometryModel);
+ newProfile.Surfaces.Add(layer2DPeat);
+
+ var layer2DSand1 = new SoilLayer2D();
+ layer2DSand1.Soil = new Soil()
+ {
+ Name = "Sand 1", SoilType = SoilType.Sand, BelowPhreaticLevel = 17, AbovePhreaticLevel = 17, Cohesion = 20, FrictionAngle = 30
+ };
+ layer2DSand1.IsAquifer = true;
+ CreateGeometryCurves2ForBm4_01(layer2DSand1, geometryModel);
+ newProfile.Surfaces.Add(layer2DSand1);
+
+ var layer2DSand2 = new SoilLayer2D();
+ layer2DSand2.Soil = new Soil()
+ {
+ Name = "Sand 2", SoilType = SoilType.Sand, BelowPhreaticLevel = 17, AbovePhreaticLevel = 17, Cohesion = 20, FrictionAngle = 30
+ };
+ layer2DSand2.IsAquifer = true;
+ CreateGeometryCurves3ForBm4_01(layer2DSand2, geometryModel);
+ newProfile.Surfaces.Add(layer2DSand2);
+
+ var layer2DClayDike = new SoilLayer2D();
+ layer2DClayDike.Soil = new Soil()
+ {
+ Name = "Clay dike", SoilType = SoilType.Clay, BelowPhreaticLevel = 15, AbovePhreaticLevel = 15, Cohesion = 2, FrictionAngle = 25
+ };
+ layer2DClayDike.IsAquifer = false;
+ CreateGeometryCurves4ForBm4_01(layer2DClayDike, geometryModel);
+ newProfile.Surfaces.Add(layer2DClayDike);
+
+ return newProfile;
+ }
+
+ public static SoilProfile2D Create2DProfileBenchMark4_02()
+ {
+ var newProfile = new SoilProfile2D();
+ var geometryModel = new GeometryData();
+ var layer2DPleistoceneForBm402 = new SoilLayer2D();
+ layer2DPleistoceneForBm402.Soil = new Soil()
+ {
+ Name = "Pleistocene", SoilType = SoilType.Sand
+ };
+ layer2DPleistoceneForBm402.IsAquifer = true;
+ CreateGeometryCurves0ForBm402(layer2DPleistoceneForBm402, geometryModel);
+ newProfile.Surfaces.Add(layer2DPleistoceneForBm402);
+
+ var layer2DPeatForBm401a = new SoilLayer2D();
+ layer2DPeatForBm401a.Soil = new Soil()
+ {
+ Name = "Peat", SoilType = SoilType.Peat
+ };
+ layer2DPeatForBm401a.IsAquifer = false;
+ CreateGeometryCurves1ForBm402(layer2DPeatForBm401a, geometryModel);
+ newProfile.Surfaces.Add(layer2DPeatForBm401a);
+
+ var layer2DSandForBm401a = new SoilLayer2D();
+ layer2DSandForBm401a.Soil = new Soil()
+ {
+ Name = "Sand", SoilType = SoilType.Sand
+ };
+ layer2DSandForBm401a.IsAquifer = true;
+ CreateGeometryCurves2ForBm402(layer2DSandForBm401a, geometryModel);
+ newProfile.Surfaces.Add(layer2DSandForBm401a);
+
+ var layer2DClayForBm401a = new SoilLayer2D();
+ layer2DClayForBm401a.Soil = new Soil()
+ {
+ Name = "Clay", SoilType = SoilType.Clay
+ };
+ layer2DClayForBm401a.IsAquifer = false;
+ CreateGeometryCurves3ForBm402(layer2DClayForBm401a, geometryModel);
+ newProfile.Surfaces.Add(layer2DClayForBm401a);
+ geometryModel.Rebox();
+ newProfile.Geometry = geometryModel;
+ return newProfile;
+ //return geometryModel;
+ }
+
+ public static SoilProfile2D CreateSoilProfile2DBenchMark2_4()
+ {
+ var newProfile = new SoilProfile2D();
+ var geometryModel = new GeometryData();
+
+ var layer2Dklei = new SoilLayer2D();
+ layer2Dklei.Soil = new Soil()
+ {
+ Name = "klei", SoilType = SoilType.Clay, FrictionAngle = 10.0, Cohesion = 0.0
+ };
+ layer2Dklei.IsAquifer = false;
+ CreateGeometryCurves0(layer2Dklei, geometryModel);
+ newProfile.Surfaces.Add(layer2Dklei);
+
+ var layer2Dzand = new SoilLayer2D();
+ layer2Dzand.Soil = new Soil()
+ {
+ Name = "zand 2", SoilType = SoilType.Sand
+ };
+ layer2Dzand.IsAquifer = true;
+ CreateGeometryCurves1(layer2Dzand, geometryModel);
+ newProfile.Surfaces.Add(layer2Dzand);
+
+ var layer2Dkzand3 = new SoilLayer2D();
+ layer2Dkzand3.Soil = new Soil()
+ {
+ Name = "zand 3", SoilType = SoilType.Sand
+ };
+ layer2Dkzand3.IsAquifer = true;
+ CreateGeometryCurves2(layer2Dkzand3, geometryModel);
+ newProfile.Surfaces.Add(layer2Dkzand3);
+
+ return newProfile;
+ }
+
+ public static SurfaceLine2 CreateSurfacelineSimpleDike()
+ {
+ var surfaceLine = new SurfaceLine2
+ {
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ },
+ Geometry = new LocalizedGeometryPointString()
+ };
+ surfaceLine.EnsurePointOfType(0.0, 2.0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(1.0, 2.0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4.0, 5.0, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(7.0, 5.0, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(10.0, 1.0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(12.0, 1.0, CharacteristicPointType.SurfaceLevelInside);
+ return surfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSchematizedSurfaceLineSimpleDike()
+ {
+ var schematizedSurfaceLine = new SurfaceLine2
+ {
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = false
+ },
+ Geometry = new LocalizedGeometryPointString()
+ };
+
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(0.0, 0.0, 2.0));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(1.0, 0.0, 2.0));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(4.0, 0.0, 5.0));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(7.0, 0.0, 5.0));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(10.0, 0.0, 1.0));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(12.0, 0.0, 1.0));
+
+ schematizedSurfaceLine.AddCharacteristicPoint(new GeometryPoint(0.0, 0.0, 2.0), CharacteristicPointType.SurfaceLevelOutside);
+ schematizedSurfaceLine.AddCharacteristicPoint(new GeometryPoint(1.0, 0.0, 2.0), CharacteristicPointType.DikeToeAtRiver);
+ schematizedSurfaceLine.AddCharacteristicPoint(new GeometryPoint(4.0, 0.0, 5.0), CharacteristicPointType.DikeTopAtRiver);
+ schematizedSurfaceLine.AddCharacteristicPoint(new GeometryPoint(7.0, 0.0, 5.0), CharacteristicPointType.DikeTopAtPolder);
+ schematizedSurfaceLine.AddCharacteristicPoint(new GeometryPoint(10.0, 0.0, 1.0), CharacteristicPointType.DikeToeAtPolder);
+ schematizedSurfaceLine.AddCharacteristicPoint(new GeometryPoint(12.0, 0.0, 1.0), CharacteristicPointType.SurfaceLevelInside);
+ return schematizedSurfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSchematizedSurfaceLineWithDepressions()
+ {
+ var schematizedSurfaceLine = new SurfaceLine2
+ {
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = false
+ },
+ Geometry = new LocalizedGeometryPointString()
+ };
+
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(0.0, 0.0, 2.0));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(1.0, 0.0, 2.0));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(4.0, 0.0, 5.0));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(7.0, 0.0, 5.0));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(8.0, 0.0, 3.0));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(9.0, 0.0, 1.5));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(10.0, 0.0, 1.0));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(10.5, 0.0, 0.72));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(12.0, 0.0, 0.7));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(13, 0.0, 0.2));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(14, 0.0, 0.2));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(15, 0.0, 0.7));
+ schematizedSurfaceLine.Geometry.Points.Add(new GeometryPoint(20, 0.0, 1.0));
+
+ schematizedSurfaceLine.AddCharacteristicPoint(new GeometryPoint(0.0, 0.0, 2.0), CharacteristicPointType.SurfaceLevelOutside);
+ schematizedSurfaceLine.AddCharacteristicPoint(new GeometryPoint(1.0, 0.0, 2.0), CharacteristicPointType.DikeToeAtRiver);
+ schematizedSurfaceLine.AddCharacteristicPoint(new GeometryPoint(4.0, 0.0, 5.0), CharacteristicPointType.DikeTopAtRiver);
+ schematizedSurfaceLine.AddCharacteristicPoint(new GeometryPoint(7.0, 0.0, 5.0), CharacteristicPointType.DikeTopAtPolder);
+ schematizedSurfaceLine.AddCharacteristicPoint(new GeometryPoint(10.0, 0.0, 1.0), CharacteristicPointType.DikeToeAtPolder);
+ schematizedSurfaceLine.AddCharacteristicPoint(new GeometryPoint(20.0, 0.0, 1), CharacteristicPointType.SurfaceLevelInside);
+ return schematizedSurfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSurfacelineBenchMark1_05()
+ {
+ var surfaceLine = new SurfaceLine2
+ {
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ },
+ Geometry = new LocalizedGeometryPointString()
+ };
+ surfaceLine.EnsurePointOfType(0.0, 0.0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(40.0, 0.0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(55.0, 12.0, CharacteristicPointType.ShoulderTopOutside);
+ surfaceLine.EnsurePointOfType(56.0, 12.0, CharacteristicPointType.ShoulderBaseOutside);
+ surfaceLine.EnsurePointOfType(80.0, 30.0, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(85.0, 30.0, CharacteristicPointType.TrafficLoadOutside);
+ surfaceLine.EnsurePointOfType(85.001, 30.0, CharacteristicPointType.TrafficLoadInside);
+ surfaceLine.EnsurePointOfType(130.0, 30.0, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(145.0, 12.0, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(158.0, 12.0, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(170.0, 0.0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(185.0, 0.0, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(195.0, -5.0, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(205.0, -5.0, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(215.0, 0.0, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(250.0, 0.0, CharacteristicPointType.SurfaceLevelInside);
+ return surfaceLine;
+ }
+
+ public static SoilProfile2D CreateSoilProfile2D()
+ {
+ var newProfile = new SoilProfile2D();
+ var geometryModel = newProfile.Geometry;
+
+ var layer2Dklei = new SoilLayer2D();
+ layer2Dklei.Soil = new Soil()
+ {
+ Name = "klei", SoilType = SoilType.Clay, FrictionAngle = 10.0, Cohesion = 0.0
+ };
+ layer2Dklei.IsAquifer = false;
+ CreateGeometryCurves0(layer2Dklei, geometryModel);
+
+ var layer2Dzand = new SoilLayer2D();
+ layer2Dzand.Soil = new Soil()
+ {
+ Name = "zand 2", SoilType = SoilType.Sand
+ };
+ layer2Dzand.IsAquifer = true;
+ CreateGeometryCurves1(layer2Dzand, geometryModel);
+
+ var layer2Dkzand3 = new SoilLayer2D();
+ layer2Dkzand3.Soil = new Soil()
+ {
+ Name = "zand 3", SoilType = SoilType.Sand
+ };
+ layer2Dkzand3.IsAquifer = true;
+ CreateGeometryCurves2(layer2Dkzand3, geometryModel);
+
+ newProfile.Surfaces.Clear();
+ newProfile.Surfaces.Add(layer2Dklei);
+ newProfile.Surfaces.Add(layer2Dzand);
+ newProfile.Surfaces.Add(layer2Dkzand3);
+
+ newProfile.Geometry.Rebox();
+
+ return newProfile;
+ }
+
+ public static SoilProfile2D CreateSoilProfile2DClayDikeOnSand()
+ {
+ var newProfile = new SoilProfile2D();
+ var geometryModel = newProfile.Geometry;
+
+ var point1 = new GeometryPoint(0, 0, 1);
+ var point2 = new GeometryPoint(1, 0, 1);
+ var point3 = new GeometryPoint(4, 0, 5);
+ var point4 = new GeometryPoint(7, 0, 5);
+ var point5 = new GeometryPoint(10, 0, 2);
+ var point6 = new GeometryPoint(12, 0, 2);
+ var point7 = new GeometryPoint(0, 0, 0);
+ var point8 = new GeometryPoint(12, 0, 0);
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(point5);
+ geometryModel.Create(point6);
+ geometryModel.Create(point7);
+ geometryModel.Create(point8);
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point3, point4);
+ var curve4 = new GeometryCurve(point4, point5);
+ var curve5 = new GeometryCurve(point5, point6);
+ var curve6 = new GeometryCurve(point2, point5);
+ var curve7= new GeometryCurve(point6, point8);
+ var curve8 = new GeometryCurve(point7, point8);
+ var curve9 = new GeometryCurve(point1, point7);
+
+
+ var layer2Dklei = new SoilLayer2D();
+ layer2Dklei.Soil = new Soil()
+ {
+ Name = "Clay dike",
+ SoilType = SoilType.Clay
+ };
+ layer2Dklei.IsAquifer = false;
+
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+ geometryModel.Create(curve6);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2Dklei, geometryModel);
+
+ var layer2Dzand = new SoilLayer2D();
+ layer2Dzand.Soil = new Soil()
+ {
+ Name = "Sand",
+ SoilType = SoilType.Sand
+ };
+ layer2Dzand.IsAquifer = true;
+
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve6);
+ geometryModel.Create(curve5);
+ geometryModel.Create(curve7);
+ geometryModel.Create(curve8);
+ geometryModel.Create(curve9);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2Dzand, geometryModel);
+
+ newProfile.Surfaces.Clear();
+ newProfile.Surfaces.Add(layer2Dklei);
+ newProfile.Surfaces.Add(layer2Dzand);
+
+ newProfile.Geometry.Rebox();
+
+ return newProfile;
+ }
+
+ public static SurfaceLine2 CreateSurfaceLineBm2_7()
+ {
+ //Surface line tutorial 1
+ var surfaceLine = new SurfaceLine2
+ {
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ },
+ Geometry = new LocalizedGeometryPointString(),
+ Name = "bench mark 2_7"
+ };
+
+ // Next point adjusted so create PL line can be tested better
+ surfaceLine.EnsurePointOfType(0.0, 0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(20.0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(35.0, 7.5, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(45.0, 7.5, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(67.5, 0.0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(75.5, 0.0, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(78.0, -1.5, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(88.0, -1.5, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(91.0, 0.0, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(120.0, 0.0, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ /*private static void CreateGeometryCurves0(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0, 0, 6);
+ var point2 = new GeometryPoint(20, 0, 8);
+ var point3 = new GeometryPoint(20, 0, 0);
+ var point4 = new GeometryPoint(0, 0, 0);
+ GeometryCurve curve1 = new GeometryCurve(point1, point2);
+ GeometryCurve curve2 = new GeometryCurve(point2, point3);
+ GeometryCurve curve3 = new GeometryCurve(point4, point3);
+ GeometryCurve curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves1(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0, 0, 9);
+ var point2 = new GeometryPoint(10, 0, 9);
+ var point3 = new GeometryPoint(20, 0, 9);
+ var point4 = new GeometryPoint(20, 0, 8);
+ var point5 = new GeometryPoint(0, 0, 6);
+ GeometryCurve curve1 = new GeometryCurve(point1, point2);
+ GeometryCurve curve2 = new GeometryCurve(point2, point3);
+ GeometryCurve curve3 = new GeometryCurve(point3, point4);
+ GeometryCurve curve4 = new GeometryCurve(point5, point4);
+ GeometryCurve curve5 = new GeometryCurve(point5, point1);
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(point5);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+ geometryModel.Create(curve5);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves2(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(10, 0, 9);
+ var point2 = new GeometryPoint(13, 0, 11);
+ var point3 = new GeometryPoint(20, 0, 11);
+ var point4 = new GeometryPoint(20, 0, 9);
+ GeometryCurve curve1 = new GeometryCurve(point1, point2);
+ GeometryCurve curve2 = new GeometryCurve(point2, point3);
+ GeometryCurve curve3 = new GeometryCurve(point3, point4);
+ GeometryCurve curve4 = new GeometryCurve(point1, point4);
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void AddCurvesToLayer2DGeometrySurface(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ int index = geometryModel.Surfaces.Count - 1;
+ layer2D.GeometrySurface = geometryModel.Surfaces[index];
+ layer2D.GeometrySurface.Name = "surface " + index;
+ }*/
+
+ public static SoilProfile2D CreateSoilProfile2Dbm2_7()
+ {
+ var newProfile = new SoilProfile2D();
+ var geometryModel = new GeometryData();
+
+ //
+ // Layer "zand1": SoilCohesion=3.00, SoilPhi=33.00
+ //
+ var layer2DZand1 = new SoilLayer2D();
+ layer2DZand1.Soil = new Soil()
+ {
+ Name = "zand1",
+ SoilType = SoilType.Sand,
+ FrictionAngle = 33.0,
+ Cohesion = 3.0
+ };
+ layer2DZand1.IsAquifer = true;
+ CreateGeometryCurvesZand1(layer2DZand1, geometryModel);
+ newProfile.Surfaces.Add(layer2DZand1);
+
+ //
+ // Layer "klei2": SoilCohesion=9.00, SoilPhi=22.00
+ //
+ var layer2DKlei2 = new SoilLayer2D();
+ layer2DKlei2.Soil = new Soil()
+ {
+ Name = "klei2",
+ SoilType = SoilType.Clay,
+ FrictionAngle = 22.0,
+ Cohesion = 9.0
+ };
+ layer2DKlei2.IsAquifer = false;
+ CreateGeometryCurvesKlei2(layer2DKlei2, geometryModel);
+ newProfile.Surfaces.Add(layer2DKlei2);
+
+ //
+ // Layer "veen3": SoilCohesion=10.00, SoilPhi=25.00
+ //
+ var layer2DVeen3 = new SoilLayer2D();
+ layer2DVeen3.Soil = new Soil()
+ {
+ Name = "veen3",
+ SoilType = SoilType.Peat,
+ FrictionAngle = 25.00,
+ Cohesion = 10.00
+ };
+ layer2DVeen3.IsAquifer = true; //for testing purposes sake
+ CreateGeometryCurvesVeen3(layer2DVeen3, geometryModel);
+ newProfile.Surfaces.Add(layer2DVeen3);
+
+ //
+ // Layer "klei4": SoilCohesion=9.00, SoilPhi=22.00
+ //
+ var layer2DKlei4 = new SoilLayer2D();
+ layer2DKlei4.Soil = new Soil()
+ {
+ Name = "klei4",
+ SoilType = SoilType.Clay,
+ FrictionAngle = 22.00,
+ Cohesion = 9.00
+ };
+ layer2DKlei4.IsAquifer = false;
+ CreateGeometryCurvesKlei4(layer2DKlei4, geometryModel);
+ newProfile.Surfaces.Add(layer2DKlei4);
+
+ //
+ // Layer "klei5": SoilCohesion=9.00, SoilPhi=22.00
+ //
+ var layer2DKlei5 = new SoilLayer2D();
+ layer2DKlei5.Soil = new Soil()
+ {
+ Name = "klei5",
+ SoilType = SoilType.Clay,
+ FrictionAngle = 22.00,
+ Cohesion = 9.00
+ };
+ layer2DKlei5.IsAquifer = false;
+ CreateGeometryCurvesKlei5(layer2DKlei5, geometryModel);
+ //GeometryRegenerator generator = new GeometryRegenerator(geometryModel);
+ //generator.SetUpGeometryLoopDirections();
+ newProfile.Surfaces.Add(layer2DKlei5);
+ return newProfile;
+ }
+
+ public static SoilProfile2D CreateTwoLayerProfile2D()
+ {
+ var profile2D = new SoilProfile2D();
+ var geometryModel = new GeometryData();
+
+ var pleistSand = new SoilLayer2D();
+ pleistSand.Soil = new Soil()
+ {
+ Name = "Pleistocene",
+ SoilType = SoilType.Sand,
+ ShearStrengthModel = ShearStrengthModel.CPhi,
+ UseDefaultShearStrengthInput = true
+ };
+ pleistSand.IsAquifer = true;
+ //CreateGeometryCurves0ForBm401a(layer2DPleistoceneForBm401a, geometryModel);
+ profile2D.Surfaces.Add(pleistSand);
+ var clay = new SoilLayer2D();
+ clay.Soil = new Soil()
+ {
+ Name = "Clay",
+ SoilType = SoilType.Clay,
+ ShearStrengthModel = ShearStrengthModel.CuGradient,
+ UseDefaultShearStrengthInput = true
+ };
+ pleistSand.IsAquifer = false;
+ //CreateGeometryCurves0ForBm401a(layer2DPleistoceneForBm401a, geometryModel);
+ profile2D.Surfaces.Add(clay);
+
+ return profile2D;
+ }
+
+ public static SoilProfile2D CreateSoilProfile2DNew2DProfileTest()
+ {
+ var newProfile = new SoilProfile2D();
+ var geometryModel = newProfile.Geometry;
+
+ var point1 = new GeometryPoint(0, 0, -10);
+ var point2 = new GeometryPoint(50, 0, -10);
+ var point3 = new GeometryPoint(50, 0, -6);
+ var point4 = new GeometryPoint(30, 0, -6);
+ var point5 = new GeometryPoint(27, 0, -9);
+ var point6 = new GeometryPoint(15, 0, -9);
+ var point7 = new GeometryPoint(12, 0, -6);
+ var point8 = new GeometryPoint(0, 0, -6);
+ var point9 = new GeometryPoint(0, 0, 0);
+ var point10 = new GeometryPoint(12, 0, 0);
+ var point11= new GeometryPoint(18, 0, 6);
+ var point12 = new GeometryPoint(24, 0, 6);
+ var point13 = new GeometryPoint(30, 0, 0);
+ var point14 = new GeometryPoint(33, 0, 0);
+ var point15 = new GeometryPoint(36, 0, -3);
+ var point16 = new GeometryPoint(39, 0, -3);
+ var point17 = new GeometryPoint(42, 0, 0);
+ var point18 = new GeometryPoint(50, 0, 0);
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(point5);
+ geometryModel.Create(point6);
+ geometryModel.Create(point7);
+ geometryModel.Create(point8);
+ geometryModel.Create(point9);
+ geometryModel.Create(point10);
+ geometryModel.Create(point11);
+ geometryModel.Create(point12);
+ geometryModel.Create(point13);
+ geometryModel.Create(point14);
+ geometryModel.Create(point15);
+ geometryModel.Create(point16);
+ geometryModel.Create(point17);
+ geometryModel.Create(point18);
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point3, point4);
+ var curve4 = new GeometryCurve(point4, point5);
+ var curve5 = new GeometryCurve(point5, point6);
+ var curve6 = new GeometryCurve(point6, point7);
+ var curve7 = new GeometryCurve(point7, point8);
+ var curve8 = new GeometryCurve(point8, point1);
+
+ var curve9 = new GeometryCurve(point8, point9);
+ var curve10 = new GeometryCurve(point9, point10);
+ var curve11 = new GeometryCurve(point10, point11);
+ var curve12 = new GeometryCurve(point11, point12);
+ var curve13 = new GeometryCurve(point12, point13);
+ var curve14 = new GeometryCurve(point13, point14);
+ var curve15 = new GeometryCurve(point14, point15);
+ var curve16 = new GeometryCurve(point15, point16);
+ var curve17 = new GeometryCurve(point16, point17);
+ var curve18 = new GeometryCurve(point17, point18);
+ var curve19 = new GeometryCurve(point18, point3);
+
+ var layer2Dklei = new SoilLayer2D();
+ layer2Dklei.Soil = new Soil()
+ {
+ Name = "mat2",
+ SoilType = SoilType.Peat
+ };
+ layer2Dklei.IsAquifer = false;
+
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+ geometryModel.Create(curve5);
+ geometryModel.Create(curve6);
+ geometryModel.Create(curve7);
+ geometryModel.Create(curve8);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2Dklei, geometryModel);
+
+ var layer2Dzand = new SoilLayer2D();
+ layer2Dzand.Soil = new Soil()
+ {
+ Name = "mat1",
+ SoilType = SoilType.Sand
+ };
+ layer2Dzand.IsAquifer = true;
+
+ geometryModel.Create(curve9);
+ geometryModel.Create(curve10);
+ geometryModel.Create(curve11);
+ geometryModel.Create(curve12);
+ geometryModel.Create(curve13);
+ geometryModel.Create(curve14);
+ geometryModel.Create(curve15);
+ geometryModel.Create(curve16);
+ geometryModel.Create(curve17);
+ geometryModel.Create(curve18);
+ geometryModel.Create(curve19);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2Dzand, geometryModel);
+
+ newProfile.Surfaces.Clear();
+ newProfile.Surfaces.Add(layer2Dklei);
+ newProfile.Surfaces.Add(layer2Dzand);
+
+ newProfile.Geometry.Rebox();
+
+ var preConsPoint = new PreConsolidationStress
+ {
+ X = 10,
+ Y = 5,
+ StressValue = 15
+ };
+ newProfile.PreconsolidationStresses.Add(preConsPoint);
+ return newProfile;
+ }
+
+ public static SurfaceLine2 CreateSurfaceLineForNew2DProfileTest()
+ {
+ //Surface line tutorial 1
+ var surfaceLine = new SurfaceLine2
+ {
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ },
+ Geometry = new LocalizedGeometryPointString(),
+ Name = "SurfaceLineAt3m"
+ };
+
+ // Next point adjusted so create PL line can be tested better
+ surfaceLine.EnsurePointOfType(80.0, 3.0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(87.0, 3.0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(95.0, 3.0, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(107.0, 3.0, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(170.0, 3.0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(250.0, 3.0, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ private static void CreateGeometryCurves0(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0, 0, 6);
+ var point2 = new GeometryPoint(20, 0, 8);
+ var point3 = new GeometryPoint(20, 0, 0);
+ var point4 = new GeometryPoint(0, 0, 0);
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point4, point3);
+ var curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves1(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0, 0, 9);
+ var point2 = new GeometryPoint(10, 0, 9);
+ var point3 = new GeometryPoint(20, 0, 9);
+ var point4 = new GeometryPoint(20, 0, 8);
+ var point5 = new GeometryPoint(0, 0, 6);
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point3, point4);
+ var curve4 = new GeometryCurve(point5, point4);
+ var curve5 = new GeometryCurve(point5, point1);
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(point5);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+ geometryModel.Create(curve5);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves2(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(10, 0, 9);
+ var point2 = new GeometryPoint(13, 0, 11);
+ var point3 = new GeometryPoint(20, 0, 11);
+ var point4 = new GeometryPoint(20, 0, 9);
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point3, point4);
+ var curve4 = new GeometryCurve(point1, point4);
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves0ForBm4_01(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0, 0, -3.7);
+ var point2 = new GeometryPoint(45, 0, -4.0);
+ var point3 = new GeometryPoint(45, 0, -8);
+ var point4 = new GeometryPoint(0, 0, -8);
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point4, point3);
+ var curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves1ForBm4_01(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0, 0, -2.5);
+ var point2 = new GeometryPoint(45, 0, -2.4);
+ var point3 = new GeometryPoint(45, 0, -4.0);
+ var point4 = new GeometryPoint(0, 0, -3.7);
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point4, point3);
+ var curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves2ForBm4_01(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0, 0, -0.9);
+ var point2 = new GeometryPoint(45, 0, -1.5);
+ var point3 = new GeometryPoint(45, 0, -2.4);
+ var point4 = new GeometryPoint(0, 0, -2.5);
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point4, point3);
+ var curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves3ForBm4_01(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0, 0, 0.1);
+ var point2 = new GeometryPoint(4, 0, 0);
+ var point3 = new GeometryPoint(18.6, 0, 0.2);
+ var point4 = new GeometryPoint(23, 0, 0.1);
+ var point5 = new GeometryPoint(26, 0, -0.45);
+ var point6 = new GeometryPoint(28.5, 0, -0.48);
+ var point7 = new GeometryPoint(31, 0, 0);
+ var point8 = new GeometryPoint(45, 0, 0.1);
+ var point9 = new GeometryPoint(45, 0, -1.5);
+ var point10 = new GeometryPoint(0, 0, -0.9);
+
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point3, point4);
+ var curve4 = new GeometryCurve(point4, point5);
+ var curve5 = new GeometryCurve(point5, point6);
+ var curve6 = new GeometryCurve(point6, point7);
+ var curve7 = new GeometryCurve(point7, point8);
+ var curve8 = new GeometryCurve(point8, point9);
+ var curve9 = new GeometryCurve(point9, point10);
+ var curve10 = new GeometryCurve(point10, point1);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(point5);
+ geometryModel.Create(point6);
+ geometryModel.Create(point7);
+ geometryModel.Create(point8);
+ geometryModel.Create(point9);
+ geometryModel.Create(point10);
+
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+ geometryModel.Create(curve5);
+ geometryModel.Create(curve6);
+ geometryModel.Create(curve7);
+ geometryModel.Create(curve8);
+ geometryModel.Create(curve9);
+ geometryModel.Create(curve10);
+
+ geometryModel.RegenerateGeometry();
+
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves4ForBm4_01(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point0 = new GeometryPoint(0, 0, 0.1);
+ var point1 = new GeometryPoint(4, 0, 0);
+ var point2 = new GeometryPoint(6.4, 0, 1.3);
+ var point3 = new GeometryPoint(7.9, 0, 1.5);
+ var point4 = new GeometryPoint(10, 0, 3);
+ var point5 = new GeometryPoint(13, 0, 3.2);
+ var point6 = new GeometryPoint(15.6, 0, 1.2);
+ var point7 = new GeometryPoint(17, 0, 1);
+ var point8 = new GeometryPoint(18.6, 0, 0.2);
+ var point9 = new GeometryPoint(23, 0, 0.1);
+ var point10 = new GeometryPoint(26, 0, -0.45);
+ var point11 = new GeometryPoint(28.5, 0, -0.48);
+ var point12 = new GeometryPoint(31, 0, 0);
+ var point13 = new GeometryPoint(45, 0, 0.1);
+ var point14 = new GeometryPoint(45, 0, -1.5);
+ var point15 = new GeometryPoint(0, 0, -0.9);
+
+ var curve0 = new GeometryCurve(point0, point1);
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point3, point4);
+ var curve4 = new GeometryCurve(point4, point5);
+ var curve5 = new GeometryCurve(point5, point6);
+ var curve6 = new GeometryCurve(point6, point7);
+ var curve7 = new GeometryCurve(point7, point8);
+ var curve8 = new GeometryCurve(point8, point9);
+ var curve9 = new GeometryCurve(point9, point10);
+ var curve10 = new GeometryCurve(point10, point11);
+ var curve11 = new GeometryCurve(point11, point12);
+ var curve12 = new GeometryCurve(point12, point13);
+ var curve13 = new GeometryCurve(point13, point14);
+ var curve14 = new GeometryCurve(point14, point15);
+ var curve15 = new GeometryCurve(point15, point0);
+
+ geometryModel.Create(point0);
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(point5);
+ geometryModel.Create(point6);
+ geometryModel.Create(point7);
+ geometryModel.Create(point8);
+ geometryModel.Create(point9);
+ geometryModel.Create(point10);
+ geometryModel.Create(point11);
+ geometryModel.Create(point12);
+ geometryModel.Create(point13);
+ geometryModel.Create(point14);
+ geometryModel.Create(point15);
+
+ geometryModel.Create(curve0);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+ geometryModel.Create(curve5);
+ geometryModel.Create(curve6);
+ geometryModel.Create(curve7);
+ geometryModel.Create(curve8);
+ geometryModel.Create(curve9);
+ geometryModel.Create(curve10);
+ geometryModel.Create(curve11);
+ geometryModel.Create(curve12);
+ geometryModel.Create(curve13);
+ geometryModel.Create(curve14);
+ geometryModel.Create(curve15);
+
+ geometryModel.RegenerateGeometry();
+
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves0ForBm402(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0, 0, -13);
+ var point2 = new GeometryPoint(220, 0, -15);
+ var point3 = new GeometryPoint(220, 0, -20);
+ var point4 = new GeometryPoint(0, 0, -20);
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point4, point3);
+ var curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves1ForBm402(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0, 0, -10);
+ var point2 = new GeometryPoint(220, 0, -9);
+ var point3 = new GeometryPoint(220, 0, -13);
+ var point4 = new GeometryPoint(0, 0, -15);
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point4, point3);
+ var curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves2ForBm402(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0, 0, -6);
+ var point2 = new GeometryPoint(250, 0, -8);
+ var point3 = new GeometryPoint(250, 0, -9);
+ var point4 = new GeometryPoint(0, 0, -10);
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point4, point3);
+ var curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurves3ForBm402(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0, 0, 50);
+ var point2 = new GeometryPoint(250, 0, 50);
+ var point3 = new GeometryPoint(250, 0, -8);
+ var point4 = new GeometryPoint(0, 0, -6);
+
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point4, point3);
+ var curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void AddCurvesToLayer2DGeometrySurface(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ int index = geometryModel.Surfaces.Count - 1;
+ layer2D.GeometrySurface = geometryModel.Surfaces[index];
+ layer2D.GeometrySurface.Name = "surface " + index;
+ }
+
+ private static void CreateGeometryCurvesZand1(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0.000, 0, -14.000);
+ var point2 = new GeometryPoint(120.000, 0, -14.000);
+ var point3 = new GeometryPoint(120.000, 0, -20.000);
+ var point4 = new GeometryPoint(0.000, 0, -20.000);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point3, point4);
+ var curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurvesKlei2(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0.000, 0, -8.000);
+ var point2 = new GeometryPoint(120.000, 0, -8.000);
+ var point3 = new GeometryPoint(120.000, 0, -14.000);
+ var point4 = new GeometryPoint(0.000, 0, -14.000);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point3, point4);
+ var curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurvesVeen3(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0.000, 0, -5.000);
+ var point2 = new GeometryPoint(120.000, 0, -5.000);
+ var point3 = new GeometryPoint(120.000, 0, -8.000);
+ var point4 = new GeometryPoint(0.000, 0, -8.000);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point3, point4);
+ var curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurvesKlei4(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(0.000, 0, 0.000);
+ var point2 = new GeometryPoint(20.000, 0, 0.000);
+ var point3 = new GeometryPoint(67.500, 0, 0.000);
+ var point4 = new GeometryPoint(75.000, 0, 0.000);
+ var point5 = new GeometryPoint(78.000, 0, -1.500);
+ var point6 = new GeometryPoint(88.000, 0, -1.500);
+ var point7 = new GeometryPoint(91.000, 0, 0.000);
+ var point8 = new GeometryPoint(120.000, 0, 0.000);
+ var point9 = new GeometryPoint(120.000, 0, -5.000);
+ var point10 = new GeometryPoint(0.000, 0, -5.000);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+ geometryModel.Create(point5);
+ geometryModel.Create(point6);
+ geometryModel.Create(point7);
+ geometryModel.Create(point8);
+ geometryModel.Create(point9);
+ geometryModel.Create(point10);
+
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point3, point4);
+ var curve4 = new GeometryCurve(point4, point5);
+ var curve5 = new GeometryCurve(point5, point6);
+ var curve6 = new GeometryCurve(point6, point7);
+ var curve7 = new GeometryCurve(point7, point8);
+ var curve8 = new GeometryCurve(point8, point9);
+ var curve9 = new GeometryCurve(point9, point10);
+ var curve10 = new GeometryCurve(point10, point1);
+
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+ geometryModel.Create(curve5);
+ geometryModel.Create(curve6);
+ geometryModel.Create(curve7);
+ geometryModel.Create(curve8);
+ geometryModel.Create(curve9);
+ geometryModel.Create(curve10);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ private static void CreateGeometryCurvesKlei5(SoilLayer2D layer2D, GeometryData geometryModel)
+ {
+ var point1 = new GeometryPoint(20.000, 0, 0.000);
+ var point2 = new GeometryPoint(35.000, 0, 7.500);
+ var point3 = new GeometryPoint(45.000, 0, 7.500);
+ var point4 = new GeometryPoint(67.500, 0, 0.000);
+
+ geometryModel.Create(point1);
+ geometryModel.Create(point2);
+ geometryModel.Create(point3);
+ geometryModel.Create(point4);
+
+ var curve1 = new GeometryCurve(point1, point2);
+ var curve2 = new GeometryCurve(point2, point3);
+ var curve3 = new GeometryCurve(point3, point4);
+ var curve4 = new GeometryCurve(point4, point1);
+
+ geometryModel.Create(curve1);
+ geometryModel.Create(curve2);
+ geometryModel.Create(curve3);
+ geometryModel.Create(curve4);
+
+ geometryModel.RegenerateGeometry();
+ AddCurvesToLayer2DGeometrySurface(layer2D, geometryModel);
+ }
+
+ public static 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 = 10;
+ layer1.Soil = clay;
+ layer1.IsAquifer = false;
+ soilProfile.Layers.Add(layer1);
+
+ var layer2 = new SoilLayer1D();
+ layer2.Name = "layer2";
+ layer2.TopLevel = -3;
+ layer2.Soil = clay2;
+ layer2.IsAquifer = false;
+ soilProfile.Layers.Add(layer2);
+
+ var layer3 = new SoilLayer1D();
+ layer3.Name = "layer3";
+ layer3.TopLevel = -10;
+ layer3.Soil = sand;
+ layer3.IsAquifer = true;
+ soilProfile.Layers.Add(layer3);
+
+ return soilProfile;
+ }
+
+ public static SoilProfile1D CreateSimpleTestProfile()
+ {
+ 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 soilProfile = new SoilProfile1D();
+ soilProfile.Name = "TestProf";
+
+ var layer1 = new SoilLayer1D();
+ layer1.Name = "layer1";
+ layer1.TopLevel = 10;
+ layer1.Soil = clay;
+ layer1.IsAquifer = false;
+ soilProfile.Layers.Add(layer1);
+
+ var layer2 = new SoilLayer1D();
+ layer2.Name = "layer2";
+ layer2.TopLevel = -3;
+ layer2.Soil = sand;
+ layer2.IsAquifer = true;
+ soilProfile.Layers.Add(layer2);
+
+ return soilProfile;
+ }
+
+ public static SoilProfile1D CreateTestProfileTwoAquifers()
+ {
+ var sandTop = new Soil();
+ sandTop.Name = "zandtop";
+ sandTop.AbovePhreaticLevel = 18;
+ sandTop.BelowPhreaticLevel = 20;
+ sandTop.SoilType = SoilType.Sand;
+
+ var clay = new Soil();
+ clay.Name = "klei";
+ clay.AbovePhreaticLevel = 18;
+ clay.BelowPhreaticLevel = 20;
+ clay.SoilType = SoilType.Clay;
+
+ var sandBottom = new Soil();
+ sandBottom.Name = "zandbottom";
+ sandBottom.AbovePhreaticLevel = 15;
+ sandBottom.BelowPhreaticLevel = 17;
+ sandBottom.SoilType = SoilType.Sand;
+
+ var peat = new Soil();
+ peat.Name = "veen";
+ peat.AbovePhreaticLevel = 5;
+ peat.BelowPhreaticLevel = 10.5;
+ peat.SoilType = SoilType.Peat;
+
+ var soilProfile = new SoilProfile1D();
+ soilProfile.Name = "TestProf";
+
+ var layer1 = new SoilLayer1D();
+ layer1.Name = "layer1";
+ layer1.TopLevel = 10;
+ layer1.Soil = clay;
+ layer1.IsAquifer = false;
+ soilProfile.Layers.Add(layer1);
+
+ var layer2 = new SoilLayer1D();
+ layer2.Name = "layer2";
+ layer2.TopLevel = -5;
+ layer2.Soil = sandTop;
+ layer2.IsAquifer = true;
+ soilProfile.Layers.Add(layer2);
+
+ var layer3 = new SoilLayer1D();
+ layer3.Name = "layer3";
+ layer3.TopLevel = -6;
+ layer3.Soil = peat;
+ layer3.IsAquifer = false;
+ soilProfile.Layers.Add(layer3);
+
+ var layer4 = new SoilLayer1D();
+ layer4.Name = "layer4";
+ layer4.TopLevel = -10;
+ layer4.Soil = sandBottom;
+ layer4.IsAquifer = true;
+ soilProfile.Layers.Add(layer4);
+
+ var layer5 = new SoilLayer1D();
+ layer5.Name = "layer5";
+ layer5.TopLevel = -13;
+ layer5.Soil = clay;
+ layer5.IsAquifer = false;
+ soilProfile.Layers.Add(layer5);
+
+ return soilProfile;
+ }
+
+ public static SoilProfile1D CreateTestProfileThreeCoverSublayersOneAquifer()
+ {
+ var coverSublayer1 = new Soil();
+ coverSublayer1.Name = "cover sublayer 1";
+ coverSublayer1.AbovePhreaticLevel = 15;
+ coverSublayer1.BelowPhreaticLevel = 17;
+ coverSublayer1.SoilType = SoilType.Clay;
+
+ var coverSublayer2 = new Soil();
+ coverSublayer2.Name = "cover sublayer 2";
+ coverSublayer2.AbovePhreaticLevel = 12;
+ coverSublayer2.BelowPhreaticLevel = 14;
+ coverSublayer2.SoilType = SoilType.Clay;
+
+ var coverSublayer3 = new Soil();
+ coverSublayer3.Name = "cover sublayer 3";
+ coverSublayer3.AbovePhreaticLevel = 10;
+ coverSublayer3.BelowPhreaticLevel = 10.5;
+ coverSublayer3.SoilType = SoilType.Peat;
+
+ var pleistocene = new Soil();
+ pleistocene.Name = "pleistocene";
+ pleistocene.AbovePhreaticLevel = 18;
+ pleistocene.BelowPhreaticLevel = 20;
+ pleistocene.SoilType = SoilType.Sand;
+
+ var soilProfile = new SoilProfile1D();
+ soilProfile.Name = "TestProfileWithThreeCoverSublayersOneAquifer";
+
+ var layer1 = new SoilLayer1D();
+ layer1.Name = "layer1";
+ layer1.TopLevel = 100;
+ layer1.Soil = coverSublayer1;
+ layer1.IsAquifer = false;
+ soilProfile.Layers.Add(layer1);
+
+ var layer2 = new SoilLayer1D();
+ layer2.Name = "layer2";
+ layer2.TopLevel = -1.9;
+ layer2.Soil = coverSublayer2;
+ layer2.IsAquifer = false;
+ soilProfile.Layers.Add(layer2);
+
+ var layer3 = new SoilLayer1D();
+ layer3.Name = "layer3";
+ layer3.TopLevel = -2.5;
+ layer3.Soil = coverSublayer3;
+ layer3.IsAquifer = false;
+ soilProfile.Layers.Add(layer3);
+
+ var layer4 = new SoilLayer1D();
+ layer4.Name = "layer4";
+ layer4.TopLevel = -3.1;
+ layer4.Soil = pleistocene;
+ layer4.IsAquifer = true;
+ soilProfile.Layers.Add(layer4);
+
+ return soilProfile;
+ }
+
+ public static SoilProfile1D CreateTestProfileTwoCoverSublayersTwoAquifers()
+ {
+ var coverSublayer1 = new Soil();
+ coverSublayer1.Name = "cover sublayer 1";
+ coverSublayer1.AbovePhreaticLevel = 15;
+ coverSublayer1.BelowPhreaticLevel = 17;
+ coverSublayer1.SoilType = SoilType.Clay;
+
+ var coverSublayer2 = new Soil();
+ coverSublayer2.Name = "cover sublayer 2";
+ coverSublayer2.AbovePhreaticLevel = 12;
+ coverSublayer2.BelowPhreaticLevel = 14;
+ coverSublayer2.SoilType = SoilType.Clay;
+
+ var aquifer1 = new Soil();
+ aquifer1.Name = "aquifer 1";
+ aquifer1.AbovePhreaticLevel = 10;
+ aquifer1.BelowPhreaticLevel = 10.5;
+ aquifer1.SoilType = SoilType.Peat;
+
+ var aquifer2 = new Soil();
+ aquifer2.Name = "aquifer 2";
+ aquifer2.AbovePhreaticLevel = 18;
+ aquifer2.BelowPhreaticLevel = 20;
+ aquifer2.SoilType = SoilType.Sand;
+
+ var soilProfile = new SoilProfile1D();
+ soilProfile.Name = "TestProfileWithTwoCoverSublayersTwoAquifers";
+
+ var layer1 = new SoilLayer1D();
+ layer1.Name = "layer1";
+ layer1.TopLevel = 100;
+ layer1.Soil = coverSublayer1;
+ layer1.IsAquifer = false;
+ soilProfile.Layers.Add(layer1);
+
+ var layer2 = new SoilLayer1D();
+ layer2.Name = "layer2";
+ layer2.TopLevel = -1.9;
+ layer2.Soil = coverSublayer2;
+ layer2.IsAquifer = false;
+ soilProfile.Layers.Add(layer2);
+
+ var layer3 = new SoilLayer1D();
+ layer3.Name = "layer3";
+ layer3.TopLevel = -2.5;
+ layer3.Soil = aquifer1;
+ layer3.IsAquifer = true;
+ soilProfile.Layers.Add(layer3);
+
+ var layer4 = new SoilLayer1D();
+ layer4.Name = "layer4";
+ layer4.TopLevel = -3.1;
+ layer4.Soil = aquifer2;
+ layer4.IsAquifer = true;
+ soilProfile.Layers.Add(layer4);
+
+ return soilProfile;
+ }
+
+ public static SoilProfile1D CreateTestProfileOneCoverLayerOneInBetweenAquifer()
+ {
+ var coverLayer = new Soil();
+ coverLayer.Name = "cover layer";
+ coverLayer.AbovePhreaticLevel = 15;
+ coverLayer.BelowPhreaticLevel = 17;
+ coverLayer.SoilType = SoilType.Clay;
+
+ var inBetweenAquifer = new Soil();
+ inBetweenAquifer.Name = "in between aquifer";
+ inBetweenAquifer.AbovePhreaticLevel = 12;
+ inBetweenAquifer.BelowPhreaticLevel = 14;
+ inBetweenAquifer.SoilType = SoilType.Clay;
+
+ var deepAquitard = new Soil();
+ deepAquitard.Name = "deep aquitard";
+ deepAquitard.AbovePhreaticLevel = 10;
+ deepAquitard.BelowPhreaticLevel = 10.5;
+ deepAquitard.SoilType = SoilType.Peat;
+
+ var deepAquifer = new Soil();
+ deepAquifer.Name = "deep aquifer";
+ deepAquifer.AbovePhreaticLevel = 18;
+ deepAquifer.BelowPhreaticLevel = 20;
+ deepAquifer.SoilType = SoilType.Sand;
+
+ var soilProfile = new SoilProfile1D();
+ soilProfile.Name = "TestProfileWithOneCoverLayerOneInBetweenAquifer";
+
+ var layer1 = new SoilLayer1D();
+ layer1.Name = "layer1";
+ layer1.TopLevel = 100;
+ layer1.Soil = coverLayer;
+ layer1.IsAquifer = false;
+ soilProfile.Layers.Add(layer1);
+
+ var layer2 = new SoilLayer1D();
+ layer2.Name = "layer2";
+ layer2.TopLevel = -1.9;
+ layer2.Soil = inBetweenAquifer;
+ layer2.IsAquifer = true;
+ soilProfile.Layers.Add(layer2);
+
+ var layer3 = new SoilLayer1D();
+ layer3.Name = "layer3";
+ layer3.TopLevel = -2.5;
+ layer3.Soil = deepAquitard;
+ layer3.IsAquifer = false;
+ soilProfile.Layers.Add(layer3);
+
+ var layer4 = new SoilLayer1D();
+ layer4.Name = "layer4";
+ layer4.TopLevel = -3.1;
+ layer4.Soil = deepAquifer;
+ layer4.IsAquifer = true;
+ soilProfile.Layers.Add(layer4);
+
+ return soilProfile;
+ }
+ }
+}
\ No newline at end of file
Index: DamClients/DamUI/trunk/src/Dam/Tests/CsvExportCharacteristicPointsTest.cs
===================================================================
diff -u -r3527 -r3823
--- DamClients/DamUI/trunk/src/Dam/Tests/CsvExportCharacteristicPointsTest.cs (.../CsvExportCharacteristicPointsTest.cs) (revision 3527)
+++ DamClients/DamUI/trunk/src/Dam/Tests/CsvExportCharacteristicPointsTest.cs (.../CsvExportCharacteristicPointsTest.cs) (revision 3823)
@@ -19,25 +19,19 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
+using System;
+using System.Collections.Generic;
+using System.IO;
+using NUnit.Framework;
+using Deltares.Dam.Data;
using Deltares.Dam.Data.CsvImporters;
-using Deltares.Dam.TestHelper;
+using Deltares.Dam.TestHelper.TestUtils;
+using Deltares.Dam.Tests.TestUtils;
using Deltares.Geometry;
-using Deltares.Geotechnics;
using Deltares.Geotechnics.SurfaceLines;
-using Deltares.Geotechnics.TestUtils;
namespace Deltares.Dam.Tests
{
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using NUnit.Framework;
- using Deltares.Dam.Data;
- using Deltares.Dam.Data.Importers;
-
-
[TestFixture]
public class CsvExportCharacteristicPointsTest
{
Index: DamClients/DamUI/trunk/src/Dam/Tests/Memoryleaks/DamMemoryLeakTests.cs
===================================================================
diff -u -r3822 -r3823
--- DamClients/DamUI/trunk/src/Dam/Tests/Memoryleaks/DamMemoryLeakTests.cs (.../DamMemoryLeakTests.cs) (revision 3822)
+++ DamClients/DamUI/trunk/src/Dam/Tests/Memoryleaks/DamMemoryLeakTests.cs (.../DamMemoryLeakTests.cs) (revision 3823)
@@ -21,6 +21,7 @@
using System.Collections.Generic;
using Deltares.Dam.Data;
+using Deltares.Dam.TestHelper.TestUtils;
using Deltares.Dam.Tests.TestUtils;
using Deltares.Geometry;
using Deltares.Geotechnics.GeotechnicalGeometry;
Index: DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/FactoryForSurfaceLineTests.cs
===================================================================
diff -u
--- DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/FactoryForSurfaceLineTests.cs (revision 0)
+++ DamClients/DamUI/trunk/src/Dam/Tests/TestHelper/TestUtils/FactoryForSurfaceLineTests.cs (revision 3823)
@@ -0,0 +1,535 @@
+// Copyright (C) Stichting Deltares 2019. All rights reserved.
+//
+// This file is part of the Delta Shell Light Library.
+//
+// The Delta Shell Light Library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using Deltares.Geometry;
+using Deltares.Geotechnics.GeotechnicalGeometry;
+using Deltares.Geotechnics.SurfaceLines;
+
+namespace Deltares.Dam.TestHelper.TestUtils
+{
+ public class FactoryForSurfaceLineTests
+ {
+ ///
+ /// Create simple soil profile, that is almost the same as Tutorial 1
+ ///
+ /// soil profile
+ public static SurfaceLine2 CreateSurfaceLineTutorial1(bool includingTraffic = false)
+ {
+ //Surface line tutorial 1
+ var surfaceLine = new SurfaceLine2
+ {
+ Name = "Tutorial1",
+ Geometry = new LocalizedGeometryPointString(),
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ }
+ };
+
+ // Next point adjusted so create PL line can be tested better
+ surfaceLine.EnsurePointOfType(0.0, 0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(10.0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(34.5, 5, CharacteristicPointType.DikeTopAtRiver);
+ if (includingTraffic)
+ {
+ surfaceLine.EnsurePointOfType(35.0, 5, CharacteristicPointType.TrafficLoadOutside);
+ surfaceLine.EnsurePointOfType(38.5, 5, CharacteristicPointType.TrafficLoadInside);
+ }
+ surfaceLine.EnsurePointOfType(40.5, 5, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(50.5, 0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(58.5, 0, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(59.5, -2, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(61.5, -2, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(61.5, 0, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(75.0, 0, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine CreateSurfaceLineTutorial2()
+ {
+ //Surface line tutorial 1
+ var surfaceLine = new SurfaceLine
+ {
+ Name = "Tutorial1"
+ };
+
+ // Next point adjusted so create PL line can be tested better
+ surfaceLine.EnsurePointOfType(0.0, 0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(10.0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(34.5, 5, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(40.5, 5, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(50.5, 0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(58.5, 0, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(59.5, -2, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(61.5, -2, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(61.5, 0, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(75.0, 0, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSurfaceLineTutorial1WithOutsideShoulder()
+ {
+ //Surface line tutorial 1
+ var surfaceLine = new SurfaceLine2
+ {
+ Name = "Tutorial1",
+ Geometry = new LocalizedGeometryPointString(),
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ }
+ };
+
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(10, 0, CharacteristicPointType.DikeToeAtRiver);
+ //Berm
+ surfaceLine.EnsurePointOfType(10, 2, CharacteristicPointType.ShoulderTopOutside);
+ surfaceLine.EnsurePointOfType(27.5, 3, CharacteristicPointType.ShoulderBaseInside);
+ //End Berm
+ surfaceLine.EnsurePointOfType(34.5, 5, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(40.5, 5, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(50.5, 0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(58.5, 0, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(59.5, -2, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(61.5, -2, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(61.5, 0, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(75.00, 0, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSurfaceLineTutorial1MissingCharacteristicPointDikeTopAtRiver()
+ {
+ //Surface line tutorial 1
+ var surfaceLine = new SurfaceLine2
+ {
+ Geometry = new LocalizedGeometryPointString(),
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ }
+ };
+
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(17, 0, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(34.5, 5, CharacteristicPointType.DikeToeAtPolder);
+ return surfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSurfaceLineTutorial1MissingCharacteristicPointDikeTopAtPolder()
+ {
+ //Surface line tutorial 1
+ var surfaceLine = new SurfaceLine2
+ {
+ Geometry = new LocalizedGeometryPointString(),
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ }
+ };
+
+ surfaceLine.EnsurePoint(0, 0);
+ surfaceLine.EnsurePointOfType(17, 0, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(34.5, 5, CharacteristicPointType.DikeToeAtPolder);
+ return surfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSurfaceLineTutorial1MissingCharacteristicPointDikeToeAtPolder()
+ {
+ //Surface line tutorial 1
+ var surfaceLine = new SurfaceLine2
+ {
+ Geometry = new LocalizedGeometryPointString(),
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ }
+ };
+
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(17, 0, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(34.5, 5, CharacteristicPointType.DikeTopAtPolder);
+ return surfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSurfaceLineTutorial1PhreaticLowerPolderWaterLevel()
+ {
+ //Surface line tutorial 1
+ var surfaceLine = new SurfaceLine2
+ {
+ Geometry = new LocalizedGeometryPointString(),
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ }
+ };
+
+ surfaceLine.EnsurePointOfType(0, -1, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(17, -1, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(34.5, 5, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(40.5, 5, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(50.5, 0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(58.5, 0, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(59.5, -2, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(61.5, -2, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(61.5, 0, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(75.0, 0, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSurfaceLineTutorial1PhreaticAboveSurface()
+ {
+ //Surface line tutorial 1
+ var surfaceLine = new SurfaceLine2
+ {
+ Geometry = new LocalizedGeometryPointString(),
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ }
+ };
+
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(17, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(34.5, 5, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(40.5, 5, CharacteristicPointType.DikeTopAtPolder);
+ //Evil point (phreatic above surface)
+ surfaceLine.EnsurePoint(46, 0.250);
+ surfaceLine.EnsurePointOfType(50.5, 0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(58.5, 0, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(59.5, -2, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(60.5, -2, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(61.5, 0, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(75.0, 0, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSurfaceLineTutorial1WithShoulder()
+ {
+ //Surface line tutorial 1
+ var surfaceLine = new SurfaceLine2
+ {
+ Geometry = new LocalizedGeometryPointString(),
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ }
+ };
+
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(17, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(34.5, 5, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(40.5, 5, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(48.25, 1.25, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(52.25, 1.25, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(54.75, 0.0, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(58.5, 0, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(59.5, -2, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(61.5, -2, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(61.5, 0, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(75.0, 0, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSurfaceLineForPipingBligh()
+ {
+ //Surface line tutorial 1
+ var surfaceLine = new SurfaceLine2
+ {
+ Geometry = new LocalizedGeometryPointString(),
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ }
+ };
+
+ surfaceLine.EnsurePoint(0, 2.5);
+ surfaceLine.EnsurePoint(2, 2.5);
+ surfaceLine.EnsurePointOfType(3.5, 4, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePoint(5.5, 4);
+ surfaceLine.EnsurePointOfType(7.5, 2, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePoint(9.5, 2);
+ surfaceLine.EnsurePoint(10, 1.5);
+ surfaceLine.EnsurePoint(11, 2);
+ surfaceLine.EnsurePoint(13, 2);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine2 CreateRealisticSurfaceLineForHeightAdapter()
+ {
+ var surfaceLine = new SurfaceLine2
+ {
+ Geometry = new LocalizedGeometryPointString(),
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ }
+ };
+ var pointSurfaceLevelOutside = new GeometryPoint
+ {
+ X = -27.0, Z = 12.4
+ };
+ var pointDikeToeAtRiver = new GeometryPoint
+ {
+ X = -17.4, Z = 12.4
+ };
+ var pointDikeTopAtRiver = new GeometryPoint
+ {
+ X = 0, Z = 18.2
+ };
+ var pointTrafficLoadOutside = new GeometryPoint
+ {
+ X = 1.0, Z = 18.2
+ };
+ var pointTrafficLoadInside = new GeometryPoint
+ {
+ X = 6.0, Z = 18.2
+ };
+ var pointDikeTopAtPolder = new GeometryPoint
+ {
+ X = 7.0, Z = 18.2
+ };
+ var pointInsteekShoulderInside = new GeometryPoint
+ {
+ X = 26.520, Z = 12.10
+ };
+ var pointTopShoulderInside = new GeometryPoint
+ {
+ X = 26.620, Z = 12.10
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 26.840, Z = 12.0
+ };
+ var pointDitchDikeSide = new GeometryPoint
+ {
+ X = 29.840, Z = 12.0
+ };
+ var pointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = 30.840, Z = 11.0
+ };
+ var pointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = 38.840, Z = 11.0
+ };
+ var pointDitchPolderSide = new GeometryPoint
+ {
+ X = 39.840, Z = 12
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 140, Z = 12
+ };
+
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelOutside.X, pointSurfaceLevelOutside.Z, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtRiver.X, pointDikeToeAtRiver.Z, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(pointDikeTopAtRiver.X, pointDikeTopAtRiver.Z, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside);
+ surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside);
+ surfaceLine.EnsurePointOfType(pointDikeTopAtPolder.X, pointDikeTopAtPolder.Z, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointInsteekShoulderInside.X, pointInsteekShoulderInside.Z, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(pointTopShoulderInside.X, pointTopShoulderInside.Z, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSurfaceLineBm4_01()
+ {
+ var surfaceLine = new SurfaceLine2
+ {
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ },
+ Geometry = new LocalizedGeometryPointString()
+ };
+ surfaceLine.EnsurePointOfType(0.0, 0.1, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(4.0, 0.0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(6.4, 1.3, CharacteristicPointType.ShoulderTopOutside);
+ surfaceLine.EnsurePointOfType(7.9, 1.5, CharacteristicPointType.ShoulderBaseOutside);
+ surfaceLine.EnsurePointOfType(10.0, 3.0, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(13, 3.2, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(15.6, 1.2, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(17, 1.0, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(18.6, 0.2, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(23, 0.1, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(26, -0.45, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(28.5, -0.48, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(31, 0.0, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(45, 0.1, CharacteristicPointType.SurfaceLevelInside);
+ return surfaceLine;
+ }
+
+ public static SurfaceLine2 CreateSurfaceLineBm4_02()
+ {
+ var surfaceLine = new SurfaceLine2
+ {
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ },
+ Geometry = new LocalizedGeometryPointString()
+ };
+ surfaceLine.EnsurePointOfType(0.0, 1.0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(30.0, 0.0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(45.0, 6.0, CharacteristicPointType.ShoulderTopOutside);
+ surfaceLine.EnsurePointOfType(55.0, 7.0, CharacteristicPointType.ShoulderBaseOutside);
+ surfaceLine.EnsurePointOfType(80.0, 16.0, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(85.0, 16.3, CharacteristicPointType.TrafficLoadOutside);
+ surfaceLine.EnsurePointOfType(90.0, 16.6, CharacteristicPointType.TrafficLoadInside);
+ surfaceLine.EnsurePointOfType(95.0, 16.9, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(120.0, 5.5, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(127.0, 4.8, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(140.0, 0.5, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(165.0, 0.0, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(175.0, -3.4, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(188.0, -3.0, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(200.0, 0.0, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(220.0, -0.5, CharacteristicPointType.SurfaceLevelInside);
+ return surfaceLine;
+ }
+
+ public static SurfaceLine CreateSimpleSurfaceLineForExitPointTest()
+ {
+ var surfaceLine = new SurfaceLine
+ {
+ Name = "SimpleExitPoint"
+ };
+
+ surfaceLine.EnsurePointOfType(0.0, 0, CharacteristicPointType.SurfaceLevelOutside);
+ surfaceLine.EnsurePointOfType(10.0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(34.5, 5, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(40.5, 5, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(50.5, 0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePoint(60.5, -1);
+ surfaceLine.EnsurePointOfType(75.0, 0, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine CreateHorizontalSurfaceLineForBenchmark1()
+ {
+ var surfaceLine = new SurfaceLine
+ {
+ Name = "HorizontalLine"
+ };
+
+ surfaceLine.EnsurePointOfType(30, -0.2, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(70, -0.2, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine CreateDescendingSurfaceLineForBenchmark2()
+ {
+ var surfaceLine = new SurfaceLine
+ {
+ Name = "NonHorizontalLine"
+ };
+
+ surfaceLine.EnsurePointOfType(30, -0.2, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(70, -1.8, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine CreateHorizontalSurfaceLineWithSymmetricalDitchForBenchmark5()
+ {
+ var surfaceLine = new SurfaceLine
+ {
+ Name = "HorizontalLineWithSymmetricalDitch"
+ };
+
+ surfaceLine.EnsurePointOfType(30, 0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(35, 0, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(36, -1.2, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(37, -1.2, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(38, 0, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(70, 0, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine CreateNonHorizontalLineWithAsymmetricalDitchForBenchmark6()
+ {
+ var surfaceLine = new SurfaceLine
+ {
+ Name = "NonHorizontalLineWithAsymmetricalDitch"
+ };
+
+ surfaceLine.EnsurePointOfType(30, 0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(35.2, -0.208, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(36, -1.2, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(37, -1.3, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(38, -0.5, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(70, -0.8, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine CreateSurfaceLineWithAsymmetricalDitchHighPolderSide()
+ {
+ var surfaceLine = new SurfaceLine
+ {
+ Name = "AsymmetricalDitchHighPolderSide"
+ };
+
+ surfaceLine.EnsurePointOfType(30, 0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(35, 0, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(36, -1, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(37, -1, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(38, 1, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(70, 0, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+
+ public static SurfaceLine CreateSurfaceLineWithAsymmetricalDitchHighDikeSide()
+ {
+ var surfaceLine = new SurfaceLine
+ {
+ Name = "AsymmetricalDitchHighPolderSide"
+ };
+
+ surfaceLine.EnsurePointOfType(30, 0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(35, 3, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(36, -1, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(37, -1, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(38, 0, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(70, 0, CharacteristicPointType.SurfaceLevelInside);
+
+ return surfaceLine;
+ }
+ }
+}
\ No newline at end of file
Index: DamClients/DamUI/trunk/src/Dam/Tests/EntityFactoryTest.cs
===================================================================
diff -u -r3527 -r3823
--- DamClients/DamUI/trunk/src/Dam/Tests/EntityFactoryTest.cs (.../EntityFactoryTest.cs) (revision 3527)
+++ DamClients/DamUI/trunk/src/Dam/Tests/EntityFactoryTest.cs (.../EntityFactoryTest.cs) (revision 3823)
@@ -19,15 +19,15 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
-using Deltares.Geometry;
-using Deltares.Geotechnics.GeotechnicalGeometry;
using System;
using System.Collections.Generic;
using System.Linq;
using Deltares.Dam.Data;
+using Deltares.Dam.TestHelper.TestUtils;
+using Deltares.Geometry;
+using Deltares.Geotechnics.GeotechnicalGeometry;
using Deltares.Geotechnics.Soils;
using Deltares.Geotechnics.SurfaceLines;
-using Deltares.Geotechnics.TestUtils;
using NUnit.Framework;
namespace Deltares.Dam.Tests
@@ -41,8 +41,8 @@
[TestFixtureSetUp]
public void FixtureSetup()
{
- this.soilProfile = FactoryForSoilProfileTests.CreateSimpleProfile();
- this.soilProfile.Name = "1";
+ soilProfile = FactoryForSoilProfileTests.CreateSimpleProfile();
+ soilProfile.Name = "1";
}
[SetUp]
@@ -82,50 +82,50 @@
[Test]
public void DoesntThrowExceptionWhenCollectionsAreEmpty()
{
- factory = new EntityFactory(new List { }, new List { soilProfile }, new List { });
+ factory = new EntityFactory(new List(), new List { soilProfile }, new List());
var segment = factory.CreateSegment("1", "1", 0, FailureMechanismSystemType.StabilityInside, null);
Assert.IsNotNull(segment);
}
[Test]
public void DoesntThrowExceptionWhenSegmentCollectionIsNull()
{
- factory = new EntityFactory(new List { }, new List { soilProfile }, null);
+ factory = new EntityFactory(new List(), new List { soilProfile }, null);
var segment = factory.CreateSegment("1", "1", 0, FailureMechanismSystemType.StabilityInside, null);
Assert.IsNotNull(segment);
}
[Test]
public void DoesntThrowExceptionWhenSegmentCollectionsContainsNullItems()
{
- factory = new EntityFactory(new List { }, new List { soilProfile }, new List { null });
+ factory = new EntityFactory(new List(), new List { soilProfile }, new List { null });
var segment = factory.CreateSegment("1", "1", 0, FailureMechanismSystemType.StabilityInside, null);
Assert.IsNotNull(segment);
}
[Test]
public void DoesntThrowExceptionWhenLocationCollectionIsNull()
{
- factory = new EntityFactory(null, new List { soilProfile }, new List { });
+ factory = new EntityFactory(null, new List { soilProfile }, new List());
var segment = factory.CreateSegment("1", "1", 0, FailureMechanismSystemType.StabilityInside, null);
Assert.IsNotNull(segment);
}
[Test]
public void DoesntThrowExceptionWhenLocationCollectionContainsNullItems()
{
- factory = new EntityFactory(new List { null }, new List { soilProfile }, new List { });
+ factory = new EntityFactory(new List { null }, new List { soilProfile }, new List());
var segment = factory.CreateSegment("1", "1", 0, FailureMechanismSystemType.StabilityInside, null);
Assert.IsNotNull(segment);
}
[Test]
public void CanCreateSegment()
{
- factory = new EntityFactory(new List { }, new List { soilProfile }, new List { });
+ factory = new EntityFactory(new List(), new List { soilProfile }, new List());
var segment = factory.CreateSegment("1", "1", 20, FailureMechanismSystemType.StabilityInside, null);
Assert.AreEqual("1", segment.Name);
- Assert.AreEqual(20, segment.GetSoilProfileProbability(this.soilProfile, FailureMechanismSystemType.StabilityInside));
+ Assert.AreEqual(20, segment.GetSoilProfileProbability(soilProfile, FailureMechanismSystemType.StabilityInside));
Assert.AreEqual("1", segment.GetMostProbableProfile(FailureMechanismSystemType.StabilityInside).Name);
Assert.AreEqual(1, factory.SoilProfiles.Count());
}
@@ -217,15 +217,15 @@
public void DoesntThrowExceptionWhenSegmentAlreadyExist()
{
const string segmentId = "1";
- var segment = new Dam.Data.Segment()
- {
+ var segment = new Segment
+ {
Name = segmentId
};
factory = new EntityFactory(
null,
new List { soilProfile },
- new List
+ new List
{
segment
});
@@ -239,7 +239,7 @@
const string exptectedLocationName = "SomeLocation";
using (var location = new Location
{
- Segment = new Dam.Data.Segment { Name = "1" },
+ Segment = new Segment { Name = "1" },
Name = exptectedLocationName
})
{
@@ -251,7 +251,7 @@
Assert.AreEqual("1", segment.Name);
Assert.AreEqual(1, factory.Locations.Count());
Assert.AreEqual(exptectedLocationName, factory.Locations[0].Name);
- Assert.AreEqual(20, segment.GetSoilProfileProbability(this.soilProfile, FailureMechanismSystemType.StabilityInside));
+ Assert.AreEqual(20, segment.GetSoilProfileProbability(soilProfile, FailureMechanismSystemType.StabilityInside));
Assert.AreEqual("1", segment.GetMostProbableProfile(FailureMechanismSystemType.StabilityInside).Name);
}
}
@@ -264,8 +264,8 @@
null,
new List
{
- new SoilProfile1D()
- {
+ new SoilProfile1D
+ {
Name = exptectedName
}
},