Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs =================================================================== diff -u -r2575 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 2575) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingBligh/DamPipingBlighKernelWrapper.cs (.../DamPipingBlighKernelWrapper.cs) (revision 2791) @@ -125,7 +125,7 @@ // bij zeedijken en de maatgevende hoogwaterstand (MHW bij rivierdijken) en de waterstand binnendijks ter plaatse van het uittredepunt, // rekening houdend met zeespiegelrijzing etc.(zie paragraaf 3.7.2). In dien ter plaatse van het uittreepunt of de opbarstlocatie // geen vrije waterstand heerst kan gerekend worden met het maaiveldniveau, rekening houdend met eventuele maaiveld daling (zie paragraaf 3.7.2)." - var referenceLevel = Math.Max(location.PolderLevel, surfaceLevel); + var referenceLevel = Math.Max(location.Scenarios[0].PolderLevel, surfaceLevel); kernelDataInput = new DamPipingBlighInput() { HRiver = waterLevel, @@ -303,7 +303,7 @@ // The following 2 parameters are dependent on the position of the point and have to be recalculated for the current point double dCoverLayer = DamPipingHelper.DetermineHeightCoverLayer(topLevelAquifer, point.Z); // point.Z is surfacelevel damPipingBlighInput.DTotal = dCoverLayer; - double referenceLevel = Math.Max(location.PolderLevel, point.Z); // point.Z is surfacelevel + double referenceLevel = Math.Max(location.Scenarios[0].PolderLevel, point.Z); // point.Z is surfacelevel damPipingBlighInput.HExit = referenceLevel; // Calculate the piping safety factor using the level of the given point Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Sensors/SensorPLLineCreatorTest.cs =================================================================== diff -u -r2718 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Sensors/SensorPLLineCreatorTest.cs (.../SensorPLLineCreatorTest.cs) (revision 2718) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Sensors/SensorPLLineCreatorTest.cs (.../SensorPLLineCreatorTest.cs) (revision 2791) @@ -23,6 +23,7 @@ using System.Collections.Generic; using System.Linq; using Deltares.DamEngine.Calculators.PlLinesCreator; +using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.General.PlLines; using Deltares.DamEngine.Data.General.Sensors; @@ -122,11 +123,7 @@ CharacteristicPoints = { GeometryMustContainPoint = true }, Geometry = new GeometryPointString() }; - var location = new Location("test") - { - RiverLevel = 1, - PolderLevel = 1 - }; + var location = CreateProperLocation("test", 1, 1); location.AddSensorLocation(); location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.LocationData; location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.LocationData; @@ -231,11 +228,7 @@ }, Geometry = new GeometryPointString() }; - var location = new Location("test") - { - RiverLevel = 5, - PolderLevel = polderLevel - }; + var location = CreateProperLocation("test", 5, polderLevel); location.AddSensorLocation(); location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.LocationData; location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.LocationData; @@ -298,11 +291,7 @@ CharacteristicPoints = { GeometryMustContainPoint = true }, Geometry = new GeometryPointString() }; - var location = new Location("test") - { - RiverLevel = riverLevel, - PolderLevel = -1 - }; + var location = CreateProperLocation("test", riverLevel, -1); location.AddSensorLocation(); location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.LocationData; @@ -364,9 +353,9 @@ }; var location = new Location("test") { - RiverLevel = 5, - PolderLevel = -1 + RiverLevel = 5 }; + location.Scenarios[0].PolderLevel = -1; location.AddSensorLocation(); location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = DataSourceTypeSensors.LocationData; location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.LocationData; @@ -457,11 +446,7 @@ }, Geometry = new GeometryPointString() }; - var location = new Location("test") - { - RiverLevel = 1, - PolderLevel = 1 - }; + var location = CreateProperLocation("test", 1, 1); location.AddSensorLocation(); location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.Ignore; location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.Ignore; @@ -547,6 +532,17 @@ Assert.AreEqual(expectedZValueP4, p4.Z); } + private Location CreateProperLocation(string name, double riverLevel, double polderLevel) + { + var location = new Location(name) + { + RiverLevel = riverLevel + }; + var scenario = new DesignScenario {PolderLevel = polderLevel}; + location.Scenarios.Add(scenario); + return location; + } + [Test] public void CreatePlLinePl1_DikeHasDitch_ResultsAreAsExpected() { @@ -558,13 +554,10 @@ }, Geometry = new GeometryPointString() }; - var location = new Location("test") - { - RiverLevel = 1, PolderLevel = 1 - }; - #region Setup + var location = CreateProperLocation("test", 1, 1); + #region Setup - location.AddSensorLocation(); + location.AddSensorLocation(); location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.Ignore; location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.Ignore; location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = DataSourceTypeSensors.Ignore; @@ -656,13 +649,10 @@ }, Geometry = new GeometryPointString() }; - var location = new Location("test") - { - RiverLevel = waterLevel, PolderLevel = polderLevel - }; - #region Setup + var location = CreateProperLocation("test", 1, polderLevel); + #region Setup - location.AddSensorLocation(); + location.AddSensorLocation(); location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeToeAtPolder = DataSourceTypeSensors.Ignore; location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtPolder = DataSourceTypeSensors.Ignore; location.SensorLocation.SourceTypePl1PlLineOffsetBelowDikeTopAtRiver = DataSourceTypeSensors.Ignore; @@ -749,11 +739,8 @@ }, Geometry = new GeometryPointString() }; - var location = new Location("test") + var location = CreateProperLocation("test", waterLevel, waterLevel); { - RiverLevel = waterLevel, PolderLevel = waterLevel - }; - { location.AddSensorLocation(); location.SensorLocation.SourceTypePl3 = DataSourceTypeSensors.Sensor; location.SensorLocation.SourceTypePl1WaterLevelAtRiver = DataSourceTypeSensors.LocationData; @@ -825,11 +812,8 @@ }, Geometry = new GeometryPointString() }; - var location = new Location("test") + var location = CreateProperLocation("test", 1, 1); { - RiverLevel = 1.0, PolderLevel = 1.0 - }; - { location.AddSensorLocation(); location.SensorLocation.SourceTypePl3 = DataSourceTypeSensors.Sensor; location.SensorLocation.SourceTypePl1WaterLevelAtRiver = DataSourceTypeSensors.Sensor; Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Design/DesignScenario.cs =================================================================== diff -u -r2575 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Design/DesignScenario.cs (.../DesignScenario.cs) (revision 2575) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Design/DesignScenario.cs (.../DesignScenario.cs) (revision 2791) @@ -110,6 +110,15 @@ } } + /// + /// Gets or sets the polder level. + /// + /// + /// The polder level. + /// + public double PolderLevel { get; set; } + + [Browsable(false)] public StringCollection Errors { get; private set; } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/PlLinesHelper.cs =================================================================== diff -u -r2111 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/PlLinesHelper.cs (.../PlLinesHelper.cs) (revision 2111) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/Common/PlLinesHelper.cs (.../PlLinesHelper.cs) (revision 2791) @@ -115,7 +115,7 @@ IsUseLowWaterLevel = (waterLevelRiverLow != null), WaterLevelRiverHigh = waterLevel, SurfaceLine = location.SurfaceLine, - WaterLevelPolder = location.PolderLevel, + WaterLevelPolder = location.Scenarios[0].PolderLevel, HeadInPlLine2 = location.HeadPl2, HeadInPlLine3 = location.HeadPl3, HeadInPlLine4 = location.HeadPl4, @@ -164,7 +164,7 @@ { WaterLevelRiverHigh = waterLevel, SurfaceLine = location.SurfaceLine, - WaterLevelPolder = location.PolderLevel, + WaterLevelPolder = location.Scenarios[0].PolderLevel, HeadInPlLine2 = location.HeadPl2, HeadInPlLine3 = location.HeadPl3, HeadInPlLine4 = location.HeadPl4, Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineAdapterTest.cs =================================================================== diff -u -r1970 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineAdapterTest.cs (.../SurfaceLineAdapterTest.cs) (revision 1970) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineAdapterTest.cs (.../SurfaceLineAdapterTest.cs) (revision 2791) @@ -42,7 +42,7 @@ [ExpectedException(typeof(ArgumentNullException))] public void ThrowsAnExceptionWhenSurfaceLineIsNull() { - new StubSurfaceLineAdapter(null, location); + new StubSurfaceLineAdapter(null, location, 0); } [Test] @@ -61,7 +61,7 @@ surfaceLine.EnsurePoint(1, 0); surfaceLine.EnsurePoint(2, 0); surfaceLine.EnsurePoint(3, 0); - new StubSurfaceLineAdapter(surfaceLine, location); + new StubSurfaceLineAdapter(surfaceLine, location, 0); } [Test] @@ -80,7 +80,7 @@ surfaceLine1.EnsurePointOfType(0, 0, CharacteristicPointType.DikeTopAtRiver); surfaceLine1.EnsurePointOfType(0, 0, CharacteristicPointType.DikeTopAtPolder); surfaceLine1.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtPolder); - new StubSurfaceLineAdapter(surfaceLine1, location); + new StubSurfaceLineAdapter(surfaceLine1, location, 0); } [Test] @@ -102,7 +102,7 @@ surfaceLine1.EnsurePointOfType(p2.X, p2.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine1.EnsurePointOfType(p3.X, p3.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine1.EnsurePointOfType(p1.X, p1.Z, CharacteristicPointType.DikeToeAtPolder); - new StubSurfaceLineAdapter(surfaceLine1, location); + new StubSurfaceLineAdapter(surfaceLine1, location, 0); } [Test] @@ -128,13 +128,13 @@ surfaceLine1.EnsurePointOfType(p4.X, p4.Z, CharacteristicPointType.ShoulderBaseInside); surfaceLine1.EnsurePointOfType(p5.X, p5.Z, CharacteristicPointType.ShoulderTopInside); surfaceLine1.EnsurePointOfType(p1.X, p1.Z, CharacteristicPointType.DikeToeAtPolder); - new StubSurfaceLineAdapter(surfaceLine1, location); + new StubSurfaceLineAdapter(surfaceLine1, location, 0); } class StubSurfaceLineAdapter : SurfaceLineAdapter { - public StubSurfaceLineAdapter(SurfaceLine2 surfaceLine, Location location) - : base(surfaceLine, location) + public StubSurfaceLineAdapter(SurfaceLine2 surfaceLine, Location location, double scenarioPolderLevel) + : base(surfaceLine, location, scenarioPolderLevel) { } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Sensors/SensorLocationTests.cs =================================================================== diff -u -r1970 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Sensors/SensorLocationTests.cs (.../SensorLocationTests.cs) (revision 1970) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Sensors/SensorLocationTests.cs (.../SensorLocationTests.cs) (revision 2791) @@ -20,6 +20,7 @@ // All rights reserved. using System.Collections.Generic; +using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.General.Sensors; using NUnit.Framework; @@ -304,7 +305,7 @@ const double testValue = 1.1; var sensorValues = new Dictionary { { sensor, testValue } }; var sensorLocation = CreateValidSensorLocation(); - location.PolderLevel = testValue; + location.Scenarios[0].PolderLevel = testValue; sensorLocation.SourceTypePl1WaterLevelAtPolder = DataSourceTypeSensors.LocationData; @@ -512,7 +513,10 @@ /// private SensorLocation CreateValidSensorLocation() { - var factory = new SensorFactory(); + var factory = new SensorFactory(); + var scenario = new DesignScenario(); + + location.Scenarios.Add(scenario); var sensorLocation = factory.CreateSensorLocation(location); return sensorLocation; } Index: DamEngine/trunk/src/Deltares.DamEngine.Io/DamInput.cs =================================================================== diff -u -r2575 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Io/DamInput.cs (.../DamInput.cs) (revision 2575) +++ DamEngine/trunk/src/Deltares.DamEngine.Io/DamInput.cs (.../DamInput.cs) (revision 2791) @@ -3198,8 +3198,6 @@ private LocationWaternetOptionsPhreaticLineCreationMethod phreaticLineCreationMethodField; - private double polderLevelField; - private double headPl2Field; private bool headPl2FieldSpecified; @@ -3229,17 +3227,6 @@ /// [System.Xml.Serialization.XmlAttributeAttribute()] - public double PolderLevel { - get { - return this.polderLevelField; - } - set { - this.polderLevelField = value; - } - } - - /// - [System.Xml.Serialization.XmlAttributeAttribute()] public double HeadPl2 { get { return this.headPl2Field; @@ -3544,6 +3531,8 @@ private double requiredSafetyFactorPipingField; + private double polderLevelField; + /// [System.Xml.Serialization.XmlAttributeAttribute()] public string Id { @@ -3796,6 +3785,17 @@ this.requiredSafetyFactorPipingField = value; } } + + /// + [System.Xml.Serialization.XmlAttributeAttribute()] + public double PolderLevel { + get { + return this.polderLevelField; + } + set { + this.polderLevelField = value; + } + } } /// Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/SurfaceLineShoulderAdapter.cs =================================================================== diff -u -r1965 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/SurfaceLineShoulderAdapter.cs (.../SurfaceLineShoulderAdapter.cs) (revision 1965) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/SurfaceLineShoulderAdapter.cs (.../SurfaceLineShoulderAdapter.cs) (revision 2791) @@ -38,8 +38,9 @@ /// /// /// + /// /// - public SurfaceLineShoulderAdapter(SurfaceLine2 surfaceLine, Location location) : base(surfaceLine, location) + public SurfaceLineShoulderAdapter(SurfaceLine2 surfaceLine, Location location, double scenarioPolderLevel) : base(surfaceLine, location, scenarioPolderLevel) { if (!surfaceLine.HasAnnotation(CharacteristicPointType.SurfaceLevelInside)) throw new SurfaceLineAdapterException(); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityCommon/DamMacroStabilityTestHelper.cs =================================================================== diff -u -r2722 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityCommon/DamMacroStabilityTestHelper.cs (.../DamMacroStabilityTestHelper.cs) (revision 2722) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityCommon/DamMacroStabilityTestHelper.cs (.../DamMacroStabilityTestHelper.cs) (revision 2791) @@ -51,6 +51,8 @@ public static Location CreateLocation(SurfaceLine2 surfaceLine) { Location location = new Location(); + var scenario = new DesignScenario(); + location.Scenarios.Add(scenario); location.Name = "LocationName"; location.DikeEmbankmentMaterial = "OB1"; location.ShoulderEmbankmentMaterial = "OB2"; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs =================================================================== diff -u -r2575 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs (.../DamPipingSellmeijerVnkKernelWrapper.cs) (revision 2575) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijerVnk/DamPipingSellmeijerVnkKernelWrapper.cs (.../DamPipingSellmeijerVnkKernelWrapper.cs) (revision 2791) @@ -124,7 +124,7 @@ // bij zeedijken en de maatgevende hoogwaterstand (MHW bij rivierdijken) en de waterstand binnendijks ter plaatse van het uittredepunt, // rekening houdend met zeespiegelrijzing etc.(zie paragraaf 3.7.2). In dien ter plaatse van het uittreepunt of de opbarstlocatie // geen vrije waterstand heerst kan gerekend worden met het maaiveldniveau, rekening houdend met eventuele maaiveld daling (zie paragraaf 3.7.2)." - var referenceLevel = Math.Max(location.PolderLevel, surfaceLevel); + var referenceLevel = Math.Max(location.Scenarios[0].PolderLevel, surfaceLevel); Soil inBetweenAquiferlayerSoil = soilProfile1D.BottomAquiferLayer.Soil; double inBetweenAquiferlayerHeight; @@ -144,7 +144,7 @@ { HRiver = waterLevel, HExit = referenceLevel, - PolderLevel = location.PolderLevel, + PolderLevel = location.Scenarios[0].PolderLevel, Rc = defaultFluidisationGradient, DTotal = dCoverLayer, SeepageLength = seepageLength, @@ -304,7 +304,7 @@ // The following 2 parameters are dependent on the position of the point and have to be recalculated for the current point double dCoverLayer = DamPipingHelper.DetermineHeightCoverLayer(topLevelAquifer, point.Z); // point.Z is surfacelevel damPipingInput.DTotal = dCoverLayer; - double referenceLevel = Math.Max(location.PolderLevel, point.Z); // point.Z is surfacelevel + double referenceLevel = Math.Max(location.Scenarios[0].PolderLevel, point.Z); // point.Z is surfacelevel damPipingInput.HExit = referenceLevel; // Calculate the piping safety factor using the level of the given point Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineShoulderAdapterTest.cs =================================================================== diff -u -r1970 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineShoulderAdapterTest.cs (.../SurfaceLineShoulderAdapterTest.cs) (revision 1970) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineShoulderAdapterTest.cs (.../SurfaceLineShoulderAdapterTest.cs) (revision 2791) @@ -55,7 +55,7 @@ surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); } /// @@ -83,7 +83,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var constructNewSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(0, 0, false); Assert.IsNotNull(constructNewSurfaceLine); } @@ -117,7 +117,7 @@ surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); Assert.IsNull(surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside)); Assert.IsNull(surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside)); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); Assert.IsNotNull(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside)); Assert.IsNotNull(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside)); @@ -150,7 +150,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); surfaceLineAdapter.MaxShoulderLevel = 0.67; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); double expectedShoulderHeight = Math.Min(shoulderHeight, surfaceLineAdapter.MaxShoulderLevel - pointAtToePolder.Z); @@ -186,7 +186,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(3.5, 1); var actualPoint = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); @@ -220,7 +220,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); double expectedShoulderHeight = Math.Min(shoulderHeight, (surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z - surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z)); var expectedPoint = new GeometryPoint( @@ -256,7 +256,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedZ = pointAtTopPolder.Z; var actualZ = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside).Z; @@ -287,7 +287,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); double expectedShoulderHeight = Math.Min(shoulderHeight, (surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z - surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z)); double expectedShoulderBaseX = pointAtTopPolder.X + (1 - expectedShoulderHeight); @@ -321,7 +321,7 @@ surfaceLine.EnsurePointOfType(4, 0.5, CharacteristicPointType.ShoulderTopInside); surfaceLine.EnsurePointOfType(5, 0, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); surfaceLineAdapter.MaxShoulderLevel = 0.67; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(3.66, 0.67); @@ -351,7 +351,7 @@ surfaceLine.EnsurePointOfType(4, 1.5, CharacteristicPointType.ShoulderTopInside); surfaceLine.EnsurePointOfType(5, 1, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 1, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; surfaceLineAdapter.MaxShoulderLevel = 0.67 + surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(6.00, 1); @@ -390,7 +390,7 @@ surfaceLine.EnsurePointOfType(4, 0.5, CharacteristicPointType.ShoulderTopInside); surfaceLine.EnsurePointOfType(5, 0, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(10, 0, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(2.857, 1.0); var actualPoint = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); @@ -432,7 +432,7 @@ surfaceLine.EnsurePoint(extraPoint2.X, extraPoint2.Z); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelOutside.X, pointAtSurfaceLevelOutside.Z, CharacteristicPointType.SurfaceLevelOutside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); double xToePolder = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).X; double xSurfaceLevelInside = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside).X; @@ -497,7 +497,7 @@ const int shoulderHeight = 1; Assert.IsNull(surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside)); Assert.IsNull(surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside)); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); EvaluateAdaptedSurfaceLineWithSkewedSurfaceLevelInside(surfaceLine, adaptedSurfaceLine, shoulderHeight, shoulderLength); } @@ -513,7 +513,7 @@ surfaceLine.SortPoints(); Assert.IsNull(surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside)); Assert.IsNull(surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside)); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); Assert.AreEqual(7, surfaceLine.Geometry.Points.Count); Assert.AreEqual(8, adaptedSurfaceLine.Geometry.Points.Count); @@ -541,7 +541,7 @@ var location = new Location(); const int shoulderLength = 2; const int shoulderHeight = 1; - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); EvaluateAdaptedSurfaceLineWithSkewedSurfaceLevelInside(surfaceLine, adaptedSurfaceLine, shoulderHeight, shoulderLength); } @@ -558,7 +558,7 @@ surfaceLine.EnsurePoint(12, 0.5); surfaceLine.EnsurePoint(14, -0.5); surfaceLine.SortPoints(); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); Assert.AreEqual(12, surfaceLine.Geometry.Points.Count); Assert.AreEqual(9, adaptedSurfaceLine.Geometry.Points.Count); @@ -577,7 +577,7 @@ surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside); const int shoulderLength = 2; const int shoulderHeight = 1; - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPointTrafficLoadOutside = new GeometryPoint { X = 9.5, Z = 1.0 }; var expectedPointTrafficLoadInside = new GeometryPoint { X = 10.5, Z = 1.0 }; @@ -619,7 +619,7 @@ surfaceLine.EnsurePointOfType(ditchBottomAtPolderSide.X, ditchBottomAtPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide); surfaceLine.EnsurePointOfType(ditchTopAtPolderSide.X, ditchTopAtPolderSide.Z, CharacteristicPointType.DitchPolderSide); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(3.5, 1); var actualPoint = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); @@ -678,7 +678,7 @@ surfaceLine.EnsurePointOfType(ditchBottomAtPolderSide.X, ditchBottomAtPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide); surfaceLine.EnsurePointOfType(ditchTopAtPolderSide.X, ditchTopAtPolderSide.Z, CharacteristicPointType.DitchPolderSide); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(3.5, 1); var actualPoint = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); @@ -739,7 +739,7 @@ surfaceLine.EnsurePointOfType(ditchTopAtPolderSide.X, ditchTopAtPolderSide.Z, CharacteristicPointType.DitchPolderSide); surfaceLine.EnsurePoint(inBetweenPointAtSurfaceLevelInside.X, inBetweenPointAtSurfaceLevelInside.Z); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(3.5, 1); var actualPoint = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); @@ -790,7 +790,7 @@ surfaceLine.EnsurePointOfType(apoint.X, apoint.Z, null); surfaceLine.EnsurePointOfType(apoint2.X, apoint2.Z, null); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(3.5, 1); var actualPoint = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); @@ -856,7 +856,7 @@ surfaceLine.EnsurePointOfType(apoint3.X, apoint3.Z, null); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); Assert.AreEqual(12, surfaceLine.Geometry.Points.Count); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(3.5, 1); var actualPoint = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); @@ -928,7 +928,7 @@ surfaceLine.EnsurePointOfType(apoint3.X, apoint3.Z, null); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); Assert.AreEqual(12, surfaceLine.Geometry.Count); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(3.5, 1); var actualPoint = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); @@ -986,7 +986,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var line = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); } @@ -1016,7 +1016,7 @@ surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var line = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); } @@ -1059,7 +1059,7 @@ surfaceLine.EnsurePointOfType(apoint2.X, apoint2.Z, null); surfaceLine.EnsurePointOfType(apoint3.X, apoint3.Z, null); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var line = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); } @@ -1089,7 +1089,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); surfaceLineAdapter.MaxShoulderLevel = location.NewMaxHeightShoulderAsFraction * (surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z - surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z) + surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z; @@ -1126,7 +1126,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); double expectedShoulderHeight = Math.Min(shoulderHeight, (surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z - surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z)); var expectedPoint = new GeometryPoint(3, expectedShoulderHeight); @@ -1161,7 +1161,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); surfaceLineAdapter.MaxShoulderLevel = maxFractionOfDikeHeightForShoulderHeight * (surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z - surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z) + surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); @@ -1197,7 +1197,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); surfaceLineAdapter.MaxShoulderLevel = 0.8 * (surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z - surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z) + surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); @@ -1239,7 +1239,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); surfaceLineAdapter.MaxShoulderLevel = 0.5 * (surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z - surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z) + surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); @@ -1284,7 +1284,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); surfaceLineAdapter.MaxShoulderLevel = 0.5 * (surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z - surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z) + surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); @@ -1325,7 +1325,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); surfaceLineAdapter.MaxShoulderLevel = 0.5 * (surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z - surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z) + surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z; surfaceLineAdapter.SlopeOfNewShoulder = 2; @@ -1368,7 +1368,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0); surfaceLineAdapter.MaxShoulderLevel = 0.5 * (surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z - surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z) + surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder).Z; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); @@ -1412,7 +1412,7 @@ surfaceLine.EnsurePointOfType(apoint.X, apoint.Z, null); surfaceLine.EnsurePointOfType(apoint2.X, apoint2.Z, null); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(3.5, 1); var actualPoint = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); @@ -1477,7 +1477,7 @@ surfaceLine.EnsurePointOfType(apoint.X, apoint.Z, null); surfaceLine.EnsurePointOfType(apoint2.X, apoint2.Z, null); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(3.5, 1); var actualPoint = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); @@ -1543,7 +1543,7 @@ surfaceLine.EnsurePointOfType(apoint.X, apoint.Z, null); surfaceLine.EnsurePointOfType(apoint2.X, apoint2.Z, null); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, 0) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); } @@ -1564,7 +1564,7 @@ location.UseNewMinDistanceDikeToeStartDitch = true; location.NewMinDistanceDikeToeStartDitch = 1; location.UseNewDitchDefinition = true; - location.PolderLevel = -0.2; + var polderLevel = -0.2; location.NewSlopeAngleDitch = 1; location.NewDepthDitch = 1.8; location.NewWidthDitchBottom = 2; @@ -1590,7 +1590,7 @@ surfaceLine.EnsurePointOfType(apoint.X, apoint.Z, null); surfaceLine.EnsurePointOfType(apoint2.X, apoint2.Z, null); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, polderLevel) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); var expectedPoint = new GeometryPoint(3.5, 1); var actualPoint = adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); @@ -1635,7 +1635,7 @@ location.UseNewMinDistanceDikeToeStartDitch = true; location.NewMinDistanceDikeToeStartDitch = 1; location.UseNewDitchDefinition = true; - location.PolderLevel = 20.2; + var polderLevel = 20.2; location.NewSlopeAngleDitch = 1; location.NewDepthDitch = 1.8; location.NewWidthDitchBottom = 2; @@ -1661,7 +1661,7 @@ surfaceLine.EnsurePointOfType(apoint.X, apoint.Z, null); surfaceLine.EnsurePointOfType(apoint2.X, apoint2.Z, null); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location) { SlopeOfNewShoulder = 2 }; + var surfaceLineAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, polderLevel) { SlopeOfNewShoulder = 2 }; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); } } Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForDamProjectData.cs =================================================================== diff -u -r2523 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForDamProjectData.cs (.../FactoryForDamProjectData.cs) (revision 2523) +++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForDamProjectData.cs (.../FactoryForDamProjectData.cs) (revision 2791) @@ -22,6 +22,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.General.Sensors; @@ -347,7 +348,7 @@ location.ModelParametersForPlLines.PlLineCreationMethod = (PlLineCreationMethod)i; location.IntrusionVerticalWaterPressure = (IntrusionVerticalWaterPressureType)i; location.DistanceToEntryPoint = 1.2 * i + 0.56; - location.PolderLevel = 1.0 * i + 0.11; + location.Scenarios[0].PolderLevel = 1.0 * i + 0.11; location.ModelParametersForPlLines.DampingFactorPl4 = 1.0 * i + 0.12; location.ModelParametersForPlLines.DampingFactorPl3 = 1.0 * i + 0.13; location.ModelParametersForPlLines.PenetrationLength = 1.0 * i + 0.14; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorCombinedSlopeAndShoulderAdaption.cs =================================================================== diff -u -r1965 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorCombinedSlopeAndShoulderAdaption.cs (.../DesignCalculatorCombinedSlopeAndShoulderAdaption.cs) (revision 1965) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorCombinedSlopeAndShoulderAdaption.cs (.../DesignCalculatorCombinedSlopeAndShoulderAdaption.cs) (revision 2791) @@ -113,7 +113,7 @@ location.StabilityShoulderGrowSlope, surfaceLine, limitPointForShoulderDesign, out shoulderHeight, out shoulderLength); // Create new shoulder - var surfaceLineShoulderAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineShoulderAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, designScenario.PolderLevel); surfaceLineShoulderAdapter.MaxShoulderLevel = maxShoulderLevel; surfaceLine = surfaceLineShoulderAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); @@ -128,7 +128,7 @@ else if (designAdvise == DesignAdvise.SlopeInwards) { // If exit point of circle is in the slope (inward) of the dike or the top of the shoulder then adapt slope - var surfaceLineSlopeAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineSlopeAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, designScenario.PolderLevel); surfaceLine = surfaceLineSlopeAdapter.ConstructNewSurfaceLine(location.StabilitySlopeAdaptionDeltaX); var validationError = surfaceLine.Validate().FirstOrDefault(vr => vr.MessageType == ValidationResultType.Error); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/SurfaceLineHeightAdapter.cs =================================================================== diff -u -r1965 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/SurfaceLineHeightAdapter.cs (.../SurfaceLineHeightAdapter.cs) (revision 1965) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/SurfaceLineHeightAdapter.cs (.../SurfaceLineHeightAdapter.cs) (revision 2791) @@ -36,7 +36,8 @@ /// /// /// - public SurfaceLineHeightAdapter(SurfaceLine2 surfaceLine, Location location) : base(surfaceLine, location) + /// + public SurfaceLineHeightAdapter(SurfaceLine2 surfaceLine, Location location, double scenarioPolderLevel) : base(surfaceLine, location, scenarioPolderLevel) { } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorFirstSlopeAdaptionThenShoulderAdaption.cs =================================================================== diff -u -r1965 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorFirstSlopeAdaptionThenShoulderAdaption.cs (.../DesignCalculatorFirstSlopeAdaptionThenShoulderAdaption.cs) (revision 1965) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorFirstSlopeAdaptionThenShoulderAdaption.cs (.../DesignCalculatorFirstSlopeAdaptionThenShoulderAdaption.cs) (revision 2791) @@ -115,7 +115,7 @@ iterationIndex++; DesignCalculatorUtils.ThrowWhenMaxIterationsExceeded(iterationIndex, maxRedesignIterations); - var surfaceLineSlopeAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineSlopeAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, designScenario.PolderLevel); // The parameter for ConstructNewSurfaceLineBySlope is the tangent of the slope, so use reciproce value surfaceLine = surfaceLineSlopeAdapter.ConstructNewSurfaceLineBySlope(1 / coTangent); currentCoTangent = coTangent; @@ -154,7 +154,7 @@ out shoulderHeight, out shoulderLength); // Create new shoulder - var surfaceLineShoulderAdapter = new SurfaceLineShoulderAdapter(surfaceLine, designScenario.Location); + var surfaceLineShoulderAdapter = new SurfaceLineShoulderAdapter(surfaceLine, designScenario.Location, designScenario.PolderLevel); surfaceLineShoulderAdapter.MaxShoulderLevel = maxShoulderLevel; surfaceLineShoulderAdapter.SlopeOfNewShoulder = currentCoTangent; surfaceLine = surfaceLineShoulderAdapter.ConstructNewSurfaceLine(shoulderLength, shoulderHeight, false); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapperTests.cs =================================================================== diff -u -r2575 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapperTests.cs (.../DamMacroStabilityOutwardsKernelWrapperTests.cs) (revision 2575) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityOutwards/DamMacroStabilityOutwardsKernelWrapperTests.cs (.../DamMacroStabilityOutwardsKernelWrapperTests.cs) (revision 2791) @@ -246,7 +246,7 @@ { characteristicPoint.Z = characteristicPoint.Z - 3; } - location.PolderLevel = -11; + location.Scenarios[0].PolderLevel = -11; } location.StabilityOptions = new StabilityOptions { Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/SurfaceLineSlopeAdapter.cs =================================================================== diff -u -r1965 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/SurfaceLineSlopeAdapter.cs (.../SurfaceLineSlopeAdapter.cs) (revision 1965) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/SurfaceLineSlopeAdapter.cs (.../SurfaceLineSlopeAdapter.cs) (revision 2791) @@ -38,8 +38,9 @@ /// /// /// - public SurfaceLineSlopeAdapter(SurfaceLine2 surfaceLine, Location location) - : base(surfaceLine, location) + /// + public SurfaceLineSlopeAdapter(SurfaceLine2 surfaceLine, Location location, double scenarioPolderLevel) + : base(surfaceLine, location, scenarioPolderLevel) { } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WtiPipingSellmeijerRevised/WtiPipingSellmeijerRevisedKernelWrapper.cs =================================================================== diff -u -r2695 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WtiPipingSellmeijerRevised/WtiPipingSellmeijerRevisedKernelWrapper.cs (.../WtiPipingSellmeijerRevisedKernelWrapper.cs) (revision 2695) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/WtiPipingSellmeijerRevised/WtiPipingSellmeijerRevisedKernelWrapper.cs (.../WtiPipingSellmeijerRevisedKernelWrapper.cs) (revision 2791) @@ -301,7 +301,7 @@ // The following 2 parameters are dependent on the position of the point and have to be recalculated for the current point double dCoverLayer = DamPipingHelper.DetermineHeightCoverLayer(topLevelAquifer, point.Z); // point.Z is surfacelevel damPipingInput.DTotal = dCoverLayer; - double referenceLevel = Math.Max(location.PolderLevel, point.Z); // point.Z is surfacelevel + double referenceLevel = Math.Max(location.Scenarios[0].PolderLevel, point.Z); // point.Z is surfacelevel damPipingInput.HExit = referenceLevel; // Initialize result as no run. damPipingOutput.CalculationResult = CalculationResult.NoRun; @@ -441,7 +441,7 @@ // bij zeedijken en de maatgevende hoogwaterstand (MHW bij rivierdijken) en de waterstand binnendijks ter plaatse van het uittredepunt, // rekening houdend met zeespiegelrijzing etc.(zie paragraaf 3.7.2). In dien ter plaatse van het uittreepunt of de opbarstlocatie // geen vrije waterstand heerst kan gerekend worden met het maaiveldniveau, rekening houdend met eventuele maaiveld daling (zie paragraaf 3.7.2)." - var referenceLevel = Math.Max(location.PolderLevel, surfaceLevel); + var referenceLevel = Math.Max(location.Scenarios[0].PolderLevel, surfaceLevel); Soil inBetweenAquiferlayerSoil = soilProfile1D.BottomAquiferLayer.Soil; if (soilProfile1D.InBetweenAquiferLayer != null) @@ -456,7 +456,7 @@ { rExit = 1 - location.ModelParametersForPlLines.DampingFactorPl4; } - var effectiveThicknessCalculator = CreateEffectiveThicknessCalculator(soilProfile1D, surfaceLine, location.PolderLevel, + var effectiveThicknessCalculator = CreateEffectiveThicknessCalculator(soilProfile1D, surfaceLine, location.Scenarios[0].PolderLevel, Physics.UnitWeightOfwater, xExit); effectiveThicknessCalculator.Calculate(); var effectiveStress = effectiveThicknessCalculator.EffectiveStress; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorShoulderPerPoint.cs =================================================================== diff -u -r1965 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorShoulderPerPoint.cs (.../DesignCalculatorShoulderPerPoint.cs) (revision 1965) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculatorShoulderPerPoint.cs (.../DesignCalculatorShoulderPerPoint.cs) (revision 2791) @@ -120,7 +120,7 @@ { // Adapt the surfaceline for the finally required shoulder dimensions. double maxShoulderLevel = CalculateMaximumShoulderLevel(surfaceLine, 1.0); // no limit to height of shoulder - var surfaceLineShoulderAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location); + var surfaceLineShoulderAdapter = new SurfaceLineShoulderAdapter(surfaceLine, location, designScenario.PolderLevel); surfaceLineShoulderAdapter.MaxShoulderLevel = maxShoulderLevel; newSurfaceLine = surfaceLineShoulderAdapter.ConstructNewSurfaceLine(desiredShoulderLength, desiredShoulderHeight, true); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityHorizontalBalance/DamMacroStabilityHorizontalBalanceKernelWrapperTests.cs =================================================================== diff -u -r2723 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityHorizontalBalance/DamMacroStabilityHorizontalBalanceKernelWrapperTests.cs (.../DamMacroStabilityHorizontalBalanceKernelWrapperTests.cs) (revision 2723) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/DamMacroStabilityHorizontalBalance/DamMacroStabilityHorizontalBalanceKernelWrapperTests.cs (.../DamMacroStabilityHorizontalBalanceKernelWrapperTests.cs) (revision 2791) @@ -95,7 +95,7 @@ var location = DamMacroStabilityTestHelper.CreateLocation(line); var scenario = DamMacroStabilityTestHelper.CreateScenario(location); scenario.RiverLevel = 4.0; - scenario.Location.PolderLevel = -1.0; + scenario.Location.Scenarios[0].PolderLevel = -1.0; scenario.Location.StabilityOptions = new StabilityOptions { TrafficLoad = cTrafficLoad @@ -271,7 +271,7 @@ { characteristicPoint.Z = characteristicPoint.Z - 3; } - location.PolderLevel = -11; + location.Scenarios[0].PolderLevel = -11; } var scenario = DamMacroStabilityTestHelper.CreateScenario(location); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/SurfaceLineAdapter.cs =================================================================== diff -u -r1965 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/SurfaceLineAdapter.cs (.../SurfaceLineAdapter.cs) (revision 1965) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/SurfaceLineAdapter.cs (.../SurfaceLineAdapter.cs) (revision 2791) @@ -67,19 +67,22 @@ protected double trafficLoadWidth; protected bool hasTrafficLoad; protected bool isTrafficLoadOnCrest = false; + protected double polderLevel; const double offset = 100.0; /// /// Constructor /// /// /// - protected SurfaceLineAdapter(SurfaceLine2 surfaceLine, Location location) + /// + protected SurfaceLineAdapter(SurfaceLine2 surfaceLine, Location location, double scenarioPolderLevel) { ThrowWhenSurfaceLineIsNull(surfaceLine); ThrowWhenSurfaceLineDoesNotSatisfyToSpecification(surfaceLine); this.surfaceLine = surfaceLine.FullDeepClone(); - this.Location = location; + Location = location; + polderLevel = scenarioPolderLevel; RetainTrafficLoad(); } @@ -412,7 +415,7 @@ res.XAtDike = xDitchDike; res.ZAtDike = surfaceLine.Geometry.GetZatX(res.XAtDike); // Depth of the ditch is defined towards PolderLevel - res.ZBottom = Location.PolderLevel - Location.NewDepthDitch; + res.ZBottom = polderLevel - Location.NewDepthDitch; res.XBottomAtDike = xDitchDike + (res.ZAtDike - res.ZBottom)*Location.NewSlopeAngleDitch; res.XBottomAtPolder = res.XBottomAtDike + Location.NewWidthDitchBottom; var line = new Line Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs =================================================================== diff -u -r2575 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 2575) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 2791) @@ -496,7 +496,6 @@ var waternetOptions = new LocationWaternetOptions(); waternetOptions.PhreaticLineCreationMethod = ConversionHelper.ConvertToInputPhreaticLineCreationMethod(location.ModelParametersForPlLines.PlLineCreationMethod); waternetOptions.IntrusionVerticalWaterPressure = ConversionHelper.ConvertToInputIntrusionVerticalWaterPressure(location.IntrusionVerticalWaterPressure ?? IntrusionVerticalWaterPressureType.Standard); - waternetOptions.PolderLevel = location.PolderLevel; waternetOptions.DampingFactorPl3 = location.ModelParametersForPlLines.DampingFactorPl3; waternetOptions.DampingFactorPl4 = location.ModelParametersForPlLines.DampingFactorPl4; waternetOptions.PenetrationLength = location.ModelParametersForPlLines.PenetrationLength; @@ -550,8 +549,8 @@ var designScenario = location.Scenarios[j]; var inputDesignScenario = new LocationDesignScenario(); inputDesignScenario.RiverLevel = designScenario.RiverLevel; - inputDesignScenario.Id = designScenario.LocationScenarioID; + inputDesignScenario.PolderLevel = designScenario.PolderLevel; inputDesignScenario.RiverLevelLowSpecified = designScenario.RiverLevelLow.HasValue; inputDesignScenario.RiverLevelLow = designScenario.RiverLevelLow ?? 0.0; inputDesignScenario.DikeTableHeightSpecified = designScenario.DikeTableHeight.HasValue; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineHeightAdapterTest.cs =================================================================== diff -u -r1970 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineHeightAdapterTest.cs (.../SurfaceLineHeightAdapterTest.cs) (revision 1970) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineHeightAdapterTest.cs (.../SurfaceLineHeightAdapterTest.cs) (revision 2791) @@ -50,7 +50,7 @@ surfaceLine.EnsurePointOfType(2, 1, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(3, 0, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var constructNewSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1); Assert.IsNotNull(constructNewSurfaceLine); } @@ -79,7 +79,7 @@ surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); { var newPointAtToeRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver); @@ -112,7 +112,7 @@ surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); double oldSlope = TanSlopeInside(surfaceLine); double newSlope = TanSlopeInside(newSurfaceLine); @@ -141,7 +141,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); var expectedPoint = new GeometryPoint { X = 2, Z = 2 }; @@ -170,7 +170,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.IsFalse(newSurfaceLine.Geometry.Points.Any(p => p.LocationEquals(pointAtTopRiver))); } @@ -198,7 +198,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); var expectedPoint = new GeometryPoint { X = 3, Z = 2 }; @@ -227,7 +227,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.IsFalse(newSurfaceLine.Geometry.Points.Any(p => p.LocationEquals(pointAtTopPolder))); } @@ -254,7 +254,7 @@ surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); var expectedPoint = new GeometryPoint { X = 13 }; @@ -284,7 +284,7 @@ surfaceLine.EnsurePointOfType(4, 0.5, CharacteristicPointType.ShoulderTopInside); surfaceLine.EnsurePointOfType(5, 0, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedPoint = new GeometryPoint() { X = 7, Z = 0 }; // var actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); @@ -318,7 +318,7 @@ surfaceLine.EnsurePointOfType(pointAtShoulderTop.X, pointAtShoulderTop.Z, CharacteristicPointType.ShoulderTopInside); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.IsNull(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside)); Assert.IsNull(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside)); @@ -356,7 +356,7 @@ surfaceLine.EnsurePointOfType(pointAtShoulderTop.X, pointAtShoulderTop.Z, CharacteristicPointType.ShoulderTopInside); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.IsTrue(pointAtToePolder.LocationEquals(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder))); } @@ -388,7 +388,7 @@ surfaceLine.EnsurePointOfType(pointAtShoulderTop.X, pointAtShoulderTop.Z, CharacteristicPointType.ShoulderTopInside); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.IsTrue(pointAtShoulderTop.LocationEquals(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside))); } @@ -420,7 +420,7 @@ surfaceLine.EnsurePointOfType(pointAtShoulderTop.X, pointAtShoulderTop.Z, CharacteristicPointType.ShoulderTopInside); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedPoint = new GeometryPoint { X = 4.5, Z = 1 }; var actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); @@ -438,7 +438,7 @@ { throw new SurfaceLineException(validationError.Text); } - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); validationError = newSurfaceLine.Validate().FirstOrDefault(vr => vr.MessageType == ValidationResultType.Error); if (validationError != null) @@ -457,7 +457,7 @@ var location = new Location(); const double cTolerance = 0.0000001; const double newDikeHeight = 19.2; - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.AreEqual(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z, newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).Z, cTolerance); Assert.AreEqual(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z, newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).Z, cTolerance); @@ -492,7 +492,7 @@ surfaceLine.EnsurePointOfType(pointDikeTopAtPolder.X, pointDikeTopAtPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.AreEqual(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z, newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).Z); Assert.AreEqual(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z, newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).Z); @@ -545,7 +545,7 @@ const double cTolerance = 0.001; const double newDikeHeight = 4.0; Assert.AreEqual(10, surfaceLine.Geometry.Points.Count); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.AreEqual(6, newSurfaceLine.Geometry.Points.Count); Assert.AreEqual(7.3333, newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver).X, cTolerance); @@ -580,7 +580,7 @@ surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 1; - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); @@ -616,7 +616,7 @@ surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 0.8; - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); @@ -655,7 +655,7 @@ surfaceLine.EnsurePointOfType(100, -1, CharacteristicPointType.SurfaceLevelInside); location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 3; - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); @@ -691,7 +691,7 @@ surfaceLine.EnsurePointOfType(100, -1, CharacteristicPointType.SurfaceLevelInside); location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 2; - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); @@ -727,7 +727,7 @@ surfaceLine.EnsurePointOfType(100, -1, CharacteristicPointType.SurfaceLevelInside); location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 1.5; - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); @@ -769,7 +769,7 @@ surfaceLine.EnsurePointOfType(100, -1, CharacteristicPointType.SurfaceLevelInside); location.UseNewDikeSlopeInside = true; location.NewDikeSlopeInside = 0.5; - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); @@ -805,7 +805,7 @@ surfaceLine.EnsurePointOfType(100, -1, CharacteristicPointType.SurfaceLevelInside); location.UseNewDikeSlopeInside = true; location.NewDikeSlopeInside = 2; - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); @@ -844,7 +844,7 @@ surfaceLine.EnsurePointOfType(100, -1, CharacteristicPointType.SurfaceLevelInside); location.UseNewDikeSlopeOutside = true; location.NewDikeSlopeOutside = 2; - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedNewTopRiver = new GeometryPoint() { X = 1.5, Z = 2 }; var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); @@ -880,7 +880,7 @@ surfaceLine.EnsurePointOfType(100, -1, CharacteristicPointType.SurfaceLevelInside); location.UseNewDikeSlopeOutside = true; location.NewDikeSlopeOutside = 0.5; - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedNewTopRiver = new GeometryPoint() { X = 3, Z = 2 }; var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); @@ -920,7 +920,7 @@ location.NewDikeSlopeInside = 2; location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 1.5; - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedNewTopRiver = new GeometryPoint() { X = 1.5, Z = 2 }; var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); @@ -969,7 +969,7 @@ location.NewDikeSlopeInside = 0.5; location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 1.5; - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); var expectedNewTopRiver = new GeometryPoint() { X = 1.5, Z = 2 }; var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); @@ -992,10 +992,11 @@ const double newDikeHeight = 19.0; var pointSurfaceLevelInside = new GeometryPoint { X = 40, Z = 12 }; // Set surfacelevelinside just beside ditch to force exception surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.Null(newSurfaceLine); } + /// /// Determines the tan slope inside. /// Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/Sensors/SensorLocation.cs =================================================================== diff -u -r2113 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Data/General/Sensors/SensorLocation.cs (.../SensorLocation.cs) (revision 2113) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/Sensors/SensorLocation.cs (.../SensorLocation.cs) (revision 2791) @@ -250,9 +250,9 @@ /// public double PolderLevel { - get { return Location.PolderLevel; } + get { return Location.Scenarios.First().PolderLevel; } } - + /// /// Gets the head PL3. /// @@ -431,7 +431,7 @@ if (memberName == MemberNames.PolderLevel) { if (SourceTypePl1WaterLevelAtPolder == DataSourceTypeSensors.LocationData) - return Location.PolderLevel; + return Location.Scenarios[0].PolderLevel; if (SourceTypePl1WaterLevelAtPolder == DataSourceTypeSensors.Sensor) return sensorValues[sensor]; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineSlopeAdapterTest.cs =================================================================== diff -u -r1970 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineSlopeAdapterTest.cs (.../SurfaceLineSlopeAdapterTest.cs) (revision 1970) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineSlopeAdapterTest.cs (.../SurfaceLineSlopeAdapterTest.cs) (revision 2791) @@ -64,7 +64,7 @@ public void ConstructNewSurfaceLineReturnsANewSurfaceLine() { var surfaceLine = CreateSimpleDike(); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); var constructNewSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1); Assert.IsNotNull(constructNewSurfaceLine); } @@ -76,7 +76,7 @@ var surfaceLine = CreateSimpleDike(); var pointDikeToeAtPolder = new GeometryPoint { X = 3, Z = 0 }; surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1.0); var expectedPointDikeToeAtPolder = new GeometryPoint { X = 4, Z = 0 }; Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder))); @@ -104,7 +104,7 @@ surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside); surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double deltaX = 1.0; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX); var expectedPointShoulderBaseInside = new GeometryPoint { X = pointShoulderBaseInside.X + deltaX, Z = pointShoulderBaseInside.Z }; @@ -143,7 +143,7 @@ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide); surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide); surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double deltaX = 1.0; const double deltaXDitch = 3; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX); @@ -191,7 +191,7 @@ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide); surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide); surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double deltaX = 1.0; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX); var expectedPointShoulderBaseInside = new GeometryPoint { X = pointShoulderBaseInside.X + deltaX, Z = pointShoulderBaseInside.Z }; @@ -218,7 +218,7 @@ var surfaceLine = CreateSimpleDike(); surfaceLine.EnsurePoint(2.5, 0.4); // in between point on inside slope surfaceLine.SortPoints(); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1.0); var expectedPointDikeToeAtPolder = new GeometryPoint { X = 4, Z = 0 }; Assert.AreEqual(6, surfaceLine.Geometry.Count); @@ -264,7 +264,7 @@ surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside); surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside); surfaceLine.SortPoints(); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double deltaX = 1.0; SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX); GeometryPoint expectedPointTrafficLoadOutside = new GeometryPoint { X = 7, Z = 2.5 }; @@ -278,7 +278,7 @@ surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside); surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside); surfaceLine.SortPoints(); - surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX); expectedPointTrafficLoadOutside = new GeometryPoint { X = 9.5, Z = 1.25 }; expectedPointTrafficLoadInside = new GeometryPoint { X = 10.5, Z = 1.0 }; @@ -296,23 +296,23 @@ public void IsExceptionThrownIfSlopeDoesNotIntersectSurfaceLine() { var surfaceLine = CreateSimpleDike(); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); surfaceLineAdapter.ConstructNewSurfaceLineBySlope(0); } [Test] public void IsNotExceptionThrownIfSlopeEqualsTheCurrentSlope() { var surfaceLine = CreateSimpleDike(); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); Assert.IsNotNull(surfaceLineAdapter.ConstructNewSurfaceLineBySlope(1.0)); } [Test] public void ConstructNewSurfaceLineBySlopeReturnsANewSurfaceLine() { var surfaceLine = CreateSimpleDike(); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); Assert.IsNotNull(surfaceLineAdapter.ConstructNewSurfaceLineBySlope(0.9)); } @@ -321,7 +321,7 @@ public void AdaptedSimpleDikeLineBySlopeHasCorrectNewToeDikeAtPolder() { var surfaceLine = CreateSimpleDike(); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 3.0; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); var expectedPointDikeToeAtPolder = new GeometryPoint { X = 5, Z = 0 }; @@ -350,7 +350,7 @@ surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside); surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 4.0; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); const double deltaX = 4.0; @@ -388,7 +388,7 @@ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide); surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide); surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 4.0; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); const double deltaX = 4.0; @@ -434,7 +434,7 @@ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide); surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide); surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 4.0; surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); } @@ -469,7 +469,7 @@ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide); surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide); surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 4.0; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); const double deltaX = 4.0; @@ -520,7 +520,7 @@ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide); surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide); surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 2.0; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); const double deltaX = 1.0; @@ -572,7 +572,7 @@ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide); surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide); surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 2.0; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); var expectedNewPoint = new GeometryPoint { X = pointShoulderTopInside.X, Z = pointShoulderTopInside.Z }; @@ -623,7 +623,7 @@ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide); surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide); surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 2.0; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); const double deltaX = 4.0; // from pointShoulderTopInside @@ -652,7 +652,7 @@ var pointDikeToeAtPolder = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePoint(2.5, 0.4); // in between point on inside slope surfaceLine.SortPoints(); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 4.0; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); const double deltaX = 3.0; @@ -700,7 +700,7 @@ surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside); surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside); surfaceLine.SortPoints(); - var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 4.0; var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); var expectedPointTrafficLoadOutside = new GeometryPoint { X = 7, Z = 2.75 }; @@ -714,7 +714,7 @@ surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside); surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside); surfaceLine.SortPoints(); - surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location); + surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); expectedPointTrafficLoadOutside = new GeometryPoint { X = 10.0, Z = 2.0 }; expectedPointTrafficLoadInside = new GeometryPoint { X = 13, Z = 1.25 }; Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/Sensors/SensorFactory.cs =================================================================== diff -u -r1974 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Data/General/Sensors/SensorFactory.cs (.../SensorFactory.cs) (revision 1974) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/Sensors/SensorFactory.cs (.../SensorFactory.cs) (revision 2791) @@ -21,6 +21,7 @@ using System; using System.Collections.Generic; +using System.Linq; using Deltares.DamEngine.Data.Standard; namespace Deltares.DamEngine.Data.General.Sensors Index: DamEngine/trunk/src/Deltares.DamEngine.Data/General/Location.cs =================================================================== diff -u -r2575 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Data/General/Location.cs (.../Location.cs) (revision 2575) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/General/Location.cs (.../Location.cs) (revision 2791) @@ -21,7 +21,6 @@ using System; using System.Collections.Generic; -using System.Dynamic; using System.Linq; using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General.Gauges; @@ -71,7 +70,6 @@ private double pLLineOffsetBelowDikeTopAtPolder = 1.5; private double pLLineOffsetBelowDikeTopAtRiver = 0.5; private double pLLineOffsetBelowShoulderBaseInside = 0.1; - private double polderLevel; private bool redesignDikeHeight = true; private bool redesignDikeShoulder = true; private double scenarioRiverLevel; @@ -1173,24 +1171,6 @@ #region Waterlevels /// - /// Gets or sets the polder level. - /// - /// - /// The polder level. - /// - public virtual double PolderLevel - { - get - { - return polderLevel; - } - set - { - polderLevel = value; - } - } - - /// /// Gets or sets the river level. /// /// Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs =================================================================== diff -u -r2575 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 2575) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/DamPipingSellmeijer4Forces/DamPipingSellmeijer4ForcesKernelWrapper.cs (.../DamPipingSellmeijer4ForcesKernelWrapper.cs) (revision 2791) @@ -128,7 +128,7 @@ // bij zeedijken en de maatgevende hoogwaterstand (MHW bij rivierdijken) en de waterstand binnendijks ter plaatse van het uittredepunt, // rekening houdend met zeespiegelrijzing etc.(zie paragraaf 3.7.2). In dien ter plaatse van het uittreepunt of de opbarstlocatie // geen vrije waterstand heerst kan gerekend worden met het maaiveldniveau, rekening houdend met eventuele maaiveld daling (zie paragraaf 3.7.2)." - var referenceLevel = Math.Max(location.PolderLevel, surfaceLevel); + var referenceLevel = Math.Max(location.Scenarios[0].PolderLevel, surfaceLevel); Soil inBetweenAquiferlayerSoil = soilProfile1D.BottomAquiferLayer.Soil; if (soilProfile1D.InBetweenAquiferLayer != null) @@ -317,7 +317,7 @@ // The following 2 parameters are dependent on the position of the point and have to be recalculated for the current point double dCoverLayer = DamPipingHelper.DetermineHeightCoverLayer(topLevelAquifer, point.Z); // point.Z is surfacelevel damPipingInput.DTotal = dCoverLayer; - double referenceLevel = Math.Max(location.PolderLevel, point.Z); // point.Z is surfacelevel + double referenceLevel = Math.Max(location.Scenarios[0].PolderLevel, point.Z); // point.Z is surfacelevel damPipingInput.HExit = referenceLevel; // Calculate the piping safety factor using the level of the given point Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs =================================================================== diff -u -r2635 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs (.../DesignCalculator.cs) (revision 2635) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs (.../DesignCalculator.cs) (revision 2791) @@ -187,7 +187,7 @@ orgLocationSurfaceLine = location.SurfaceLine.FullDeepClone(); // Redesign the surfaceline to the desired Dike Table Height var surfaceLineHeightAdapter = - new SurfaceLineHeightAdapter(location.SurfaceLine, location); + new SurfaceLineHeightAdapter(location.SurfaceLine, location, designScenario.PolderLevel); SurfaceLine2 adaptedSurfaceLine = surfaceLineHeightAdapter.ConstructNewSurfaceLine( designScenario.DikeTableHeight ?? Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r2575 -r2791 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 2575) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 2791) @@ -500,7 +500,6 @@ var waternetOptions = inputLocation.WaternetOptions; location.ModelParametersForPlLines.PlLineCreationMethod = ConversionHelper.ConvertToPhreaticLineCreationMethod(waternetOptions.PhreaticLineCreationMethod); location.IntrusionVerticalWaterPressure = ConversionHelper.ConvertToIntrusionVerticalWaterPressure(waternetOptions.IntrusionVerticalWaterPressure); - location.PolderLevel = waternetOptions.PolderLevel; location.ModelParametersForPlLines.DampingFactorPl3 = waternetOptions.DampingFactorPl3; location.ModelParametersForPlLines.DampingFactorPl4 = waternetOptions.DampingFactorPl4; location.ModelParametersForPlLines.PenetrationLength = waternetOptions.PenetrationLength; @@ -558,6 +557,7 @@ var designScenario = new DesignScenario(); var inputLocationDesignScenario = inputLocation.DesignScenarios[j]; designScenario.LocationScenarioID = inputLocationDesignScenario.Id; + designScenario.PolderLevel = inputLocationDesignScenario.PolderLevel; designScenario.RiverLevel = inputLocationDesignScenario.RiverLevel; designScenario.RiverLevelLow = (inputLocationDesignScenario.RiverLevelLowSpecified ? (double?)inputLocationDesignScenario.RiverLevelLow : null); designScenario.DikeTableHeight = (inputLocationDesignScenario.DikeTableHeightSpecified ? (double?)inputLocationDesignScenario.DikeTableHeight : null);