Index: Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Creators/Input/LayerWithSoil.cs =================================================================== diff -u -rfe0f11c19023237d7f3629c2206b4fe5eb5e121f -r0611f0791bfb4c487ba302eb01e13ae81d1176f6 --- Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Creators/Input/LayerWithSoil.cs (.../LayerWithSoil.cs) (revision fe0f11c19023237d7f3629c2206b4fe5eb5e121f) +++ Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Creators/Input/LayerWithSoil.cs (.../LayerWithSoil.cs) (revision 0611f0791bfb4c487ba302eb01e13ae81d1176f6) @@ -42,7 +42,7 @@ IEnumerable> innerRings, Soil soil, bool isAquifer, - WaterpressureInterpolationModel waterPressureInterpolationModel) + WaterPressureInterpolationModel waterPressureInterpolationModel) { OuterRing = outerRing; InnerRings = innerRings; @@ -74,6 +74,6 @@ /// /// Gets the water pressure interpolation model of the layer. /// - public WaterpressureInterpolationModel WaterPressureInterpolationModel { get; } + public WaterPressureInterpolationModel WaterPressureInterpolationModel { get; } } } \ No newline at end of file Index: Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Creators/Input/SoilProfileCreator.cs =================================================================== diff -u -rfe0f11c19023237d7f3629c2206b4fe5eb5e121f -r0611f0791bfb4c487ba302eb01e13ae81d1176f6 --- Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Creators/Input/SoilProfileCreator.cs (.../SoilProfileCreator.cs) (revision fe0f11c19023237d7f3629c2206b4fe5eb5e121f) +++ Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.KernelWrapper/Creators/Input/SoilProfileCreator.cs (.../SoilProfileCreator.cs) (revision 0611f0791bfb4c487ba302eb01e13ae81d1176f6) @@ -22,24 +22,22 @@ using System; using System.Collections.Generic; using System.Linq; +using Core.Common.Base.Geometry; using Deltares.MacroStability.CSharpWrapper.Input; -using Deltares.MacroStability.Geometry; -using Deltares.MacroStability.Standard; -using Point2D = Core.Common.Base.Geometry.Point2D; -using WtiStabilityPoint2D = Deltares.MacroStability.Geometry.Point2D; +using CSharpWrapperPoint2D = Deltares.MacroStability.CSharpWrapper.Point2D; namespace Riskeer.MacroStabilityInwards.KernelWrapper.Creators.Input { /// - /// Creates instances which are required in a calculation. + /// Creates instances which are required in a calculation. /// internal static class SoilProfileCreator { /// - /// Creates a based on . + /// Creates a based on . /// - /// The layer data to use in the . - /// A new . + /// The layer data to use in the . + /// A new . /// Thrown when any parameter is null. public static SoilProfile Create(IEnumerable layersWithSoil) { @@ -50,18 +48,18 @@ var profile = new SoilProfile(); - var alreadyCreatedPoints = new List(); - var alreadyCreatedCurves = new List(); - var alreadyCreatedLoops = new List(); + var alreadyCreatedPoints = new List(); + var alreadyCreatedCurves = new List(); + var alreadyCreatedLoops = new List(); foreach (LayerWithSoil layerWithSoil in layersWithSoil) { - profile.Surfaces.Add(new SoilLayer2D + profile.SoilSurfaces.Add(new SoilProfileSurface { IsAquifer = layerWithSoil.IsAquifer, Soil = layerWithSoil.Soil, - GeometrySurface = CreateGeometrySurface(layerWithSoil, alreadyCreatedPoints, alreadyCreatedCurves, alreadyCreatedLoops), - WaterpressureInterpolationModel = layerWithSoil.WaterPressureInterpolationModel + Surface = CreateSurface(layerWithSoil, alreadyCreatedPoints, alreadyCreatedCurves, alreadyCreatedLoops), + WaterPressureInterpolationModel = layerWithSoil.WaterPressureInterpolationModel }); } @@ -70,40 +68,38 @@ return profile; } - private static GeometrySurface CreateGeometrySurface(LayerWithSoil layer, List alreadyCreatedPoints, List alreadyCreatedCurves, List alreadyCreatedLoops) + private static Surface CreateSurface(LayerWithSoil layer, List alreadyCreatedPoints, List alreadyCreatedCurves, List alreadyCreatedLoops) { - var surface = new GeometrySurface + return new Surface { - OuterLoop = CreateGeometryLoop(layer.OuterRing, alreadyCreatedPoints, alreadyCreatedCurves, alreadyCreatedLoops) + OuterLoop = CreateLoop(layer.OuterRing, alreadyCreatedPoints, alreadyCreatedCurves, alreadyCreatedLoops), + InnerLoops = layer.InnerRings.Select(ir => CreateLoop(ir, alreadyCreatedPoints, alreadyCreatedCurves, alreadyCreatedLoops)).ToArray() }; - - surface.InnerLoops.AddRange(layer.InnerRings.Select(ir => CreateGeometryLoop(ir, alreadyCreatedPoints, alreadyCreatedCurves, alreadyCreatedLoops)).ToArray()); - - return surface; } - private static GeometryLoop CreateGeometryLoop(IEnumerable points, List alreadyCreatedPoints, List alreadyCreatedCurves, List alreadyCreatedLoops) + private static Loop CreateLoop(IEnumerable points, List alreadyCreatedPoints, List alreadyCreatedCurves, List alreadyCreatedLoops) { - GeometryCurve[] geometryCurves = CreateGeometryCurves(points, alreadyCreatedPoints, alreadyCreatedCurves); - GeometryLoop loop = alreadyCreatedLoops.FirstOrDefault(l => l.CurveList.SequenceEqual(geometryCurves)); + Curve[] curves = CreateCurves(points, alreadyCreatedPoints, alreadyCreatedCurves); + Loop loop = alreadyCreatedLoops.FirstOrDefault(l => l.Curves.SequenceEqual(curves)); if (loop == null) { - loop = new GeometryLoop(); + loop = new Loop + { + Curves = curves + }; - loop.CurveList.AddRange(geometryCurves); - alreadyCreatedLoops.Add(loop); } return loop; } - private static GeometryCurve[] CreateGeometryCurves(IEnumerable points, List alreadyCreatedPoints, List alreadyCreatedCurves) + private static Curve[] CreateCurves(IEnumerable points, List alreadyCreatedPoints, List alreadyCreatedCurves) { - var curves = new List(); + var curves = new List(); - WtiStabilityPoint2D[] stabilityPoints = points.Select(p => GetPoint(p, alreadyCreatedPoints)).ToArray(); + CSharpWrapperPoint2D[] stabilityPoints = points.Select(p => GetPoint(p, alreadyCreatedPoints)).ToArray(); int stabilityPointsLength = stabilityPoints.Length; for (var i = 0; i < stabilityPointsLength; i++) @@ -118,26 +114,26 @@ return curves.ToArray(); } - private static WtiStabilityPoint2D GetPoint(Point2D point2D, List alreadyCreatedPoints) + private static CSharpWrapperPoint2D GetPoint(Point2D point2D, List alreadyCreatedPoints) { - WtiStabilityPoint2D stabilityPoint = alreadyCreatedPoints.FirstOrDefault(p => p.X.Equals(point2D.X) && p.Z.Equals(point2D.Y)); + CSharpWrapperPoint2D stabilityPoint = alreadyCreatedPoints.FirstOrDefault(p => p.X.Equals(point2D.X) && p.Z.Equals(point2D.Y)); if (stabilityPoint == null) { - stabilityPoint = new WtiStabilityPoint2D(point2D.X, point2D.Y); + stabilityPoint = new CSharpWrapperPoint2D(point2D.X, point2D.Y); alreadyCreatedPoints.Add(stabilityPoint); } return stabilityPoint; } - private static GeometryCurve GetCurve(WtiStabilityPoint2D headPoint, WtiStabilityPoint2D endPoint, List alreadyCreatedCurves) + private static Curve GetCurve(CSharpWrapperPoint2D headPoint, CSharpWrapperPoint2D endPoint, List alreadyCreatedCurves) { - GeometryCurve curve = alreadyCreatedCurves.FirstOrDefault(c => ReferenceEquals(c.HeadPoint, headPoint) && ReferenceEquals(c.EndPoint, endPoint) - || ReferenceEquals(c.HeadPoint, endPoint) && ReferenceEquals(c.EndPoint, headPoint)); + Curve curve = alreadyCreatedCurves.FirstOrDefault(c => ReferenceEquals(c.HeadPoint, headPoint) && ReferenceEquals(c.EndPoint, endPoint) + || ReferenceEquals(c.HeadPoint, endPoint) && ReferenceEquals(c.EndPoint, headPoint)); if (curve == null) { - curve = new GeometryCurve + curve = new Curve { HeadPoint = headPoint, EndPoint = endPoint @@ -149,27 +145,31 @@ return curve; } - private static GeometryData CreateGeometryData(SoilProfile2D profile) + private static Geometry CreateGeometryData(SoilProfile profile) { - var geometryData = new GeometryData(); + var geometry = new Geometry + { + Surfaces = profile.SoilSurfaces.Select(s => s.Surface).ToArray() + }; - geometryData.Surfaces.AddRange(profile.Surfaces - .Select(s => s.GeometrySurface)); - geometryData.Loops.AddRange(geometryData.Surfaces - .Select(gs => gs.OuterLoop)); - geometryData.Curves.AddRange(geometryData.Loops - .SelectMany(l => l.CurveList) - .Distinct()); - geometryData.Points.AddRange(geometryData.Curves - .SelectMany(c => new[] - { - c.HeadPoint, - c.EndPoint - }).Distinct()); + geometry.Loops = geometry.Surfaces + .Select(s => s.OuterLoop) + .ToArray(); - geometryData.Rebox(); + geometry.Curves = geometry.Loops + .SelectMany(l => l.Curves) + .Distinct() + .ToArray(); + geometry.Points = geometry.Curves + .SelectMany(c => new[] + { + c.HeadPoint, + c.EndPoint + }) + .Distinct() + .ToArray(); - return geometryData; + return geometry; } } } \ No newline at end of file Index: Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.Test/Creators/Input/SoilProfileCreatorTest.cs =================================================================== diff -u -r2fee3f09e48fbeb8bf0640c899d124a6cd0e4e39 -r0611f0791bfb4c487ba302eb01e13ae81d1176f6 --- Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.Test/Creators/Input/SoilProfileCreatorTest.cs (.../SoilProfileCreatorTest.cs) (revision 2fee3f09e48fbeb8bf0640c899d124a6cd0e4e39) +++ Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.KernelWrapper.Test/Creators/Input/SoilProfileCreatorTest.cs (.../SoilProfileCreatorTest.cs) (revision 0611f0791bfb4c487ba302eb01e13ae81d1176f6) @@ -21,12 +21,12 @@ using System; using System.Linq; -using Deltares.MacroStability.Geometry; +using Core.Common.Base.Geometry; +using Deltares.MacroStability.CSharpWrapper.Input; using NUnit.Framework; using Riskeer.MacroStabilityInwards.KernelWrapper.Creators.Input; using Riskeer.MacroStabilityInwards.KernelWrapper.TestUtil.Kernels.UpliftVan.Input; -using Point2D = Core.Common.Base.Geometry.Point2D; -using WtiStabilityPoint2D = Deltares.MacroStability.Geometry.Point2D; +using CSharpWrapperPoint2D = Deltares.MacroStability.CSharpWrapper.Point2D; namespace Riskeer.MacroStabilityInwards.KernelWrapper.Test.Creators.Input { @@ -123,7 +123,7 @@ new Point2D[0][], soil1, false, - WaterpressureInterpolationModel.Automatic); + WaterPressureInterpolationModel.Automatic); var layerWithSoil2 = new LayerWithSoil( layer2Points, @@ -134,24 +134,24 @@ }, soil2, true, - WaterpressureInterpolationModel.Hydrostatic); + WaterPressureInterpolationModel.Hydrostatic); var layerWithSoil3 = new LayerWithSoil( layer2Hole1Points, new Point2D[0][], soil3, false, - WaterpressureInterpolationModel.Automatic); + WaterPressureInterpolationModel.Automatic); var layerWithSoil4 = new LayerWithSoil( layer2Hole2Points, new Point2D[0][], soil4, true, - WaterpressureInterpolationModel.Hydrostatic); + WaterPressureInterpolationModel.Hydrostatic); // Call - SoilProfile2D profile = SoilProfileCreator.Create(new[] + SoilProfile profile = SoilProfileCreator.Create(new[] { layerWithSoil1, layerWithSoil2, @@ -163,32 +163,32 @@ #region Geometry - var outerLoopPoint1 = new WtiStabilityPoint2D(0, 0); - var outerLoopPoint2 = new WtiStabilityPoint2D(0, 3); - var outerLoopPoint3 = new WtiStabilityPoint2D(10, 3); - var outerLoopPoint4 = new WtiStabilityPoint2D(10, 0); - var outerLoopPoint5 = new WtiStabilityPoint2D(0, 11); - var outerLoopPoint6 = new WtiStabilityPoint2D(10, 11); - var outerLoopCurve1 = new GeometryCurve(outerLoopPoint1, outerLoopPoint2); - var outerLoopCurve2 = new GeometryCurve(outerLoopPoint2, outerLoopPoint3); - var outerLoopCurve3 = new GeometryCurve(outerLoopPoint3, outerLoopPoint4); - var outerLoopCurve4 = new GeometryCurve(outerLoopPoint4, outerLoopPoint1); - var outerLoopCurve5 = new GeometryCurve(outerLoopPoint2, outerLoopPoint5); - var outerLoopCurve6 = new GeometryCurve(outerLoopPoint5, outerLoopPoint6); - var outerLoopCurve7 = new GeometryCurve(outerLoopPoint6, outerLoopPoint3); - var outerLoop1 = new GeometryLoop + var outerLoopPoint1 = new CSharpWrapperPoint2D(0, 0); + var outerLoopPoint2 = new CSharpWrapperPoint2D(0, 3); + var outerLoopPoint3 = new CSharpWrapperPoint2D(10, 3); + var outerLoopPoint4 = new CSharpWrapperPoint2D(10, 0); + var outerLoopPoint5 = new CSharpWrapperPoint2D(0, 11); + var outerLoopPoint6 = new CSharpWrapperPoint2D(10, 11); + Curve outerLoopCurve1 = CreateCurve(outerLoopPoint1, outerLoopPoint2); + Curve outerLoopCurve2 = CreateCurve(outerLoopPoint2, outerLoopPoint3); + Curve outerLoopCurve3 = CreateCurve(outerLoopPoint3, outerLoopPoint4); + Curve outerLoopCurve4 = CreateCurve(outerLoopPoint4, outerLoopPoint1); + Curve outerLoopCurve5 = CreateCurve(outerLoopPoint2, outerLoopPoint5); + Curve outerLoopCurve6 = CreateCurve(outerLoopPoint5, outerLoopPoint6); + Curve outerLoopCurve7 = CreateCurve(outerLoopPoint6, outerLoopPoint3); + var outerLoop1 = new Loop { - CurveList = + Curves = { outerLoopCurve1, outerLoopCurve2, outerLoopCurve3, outerLoopCurve4 } }; - var outerLoop2 = new GeometryLoop + var outerLoop2 = new Loop { - CurveList = + Curves = { outerLoopCurve5, outerLoopCurve6, @@ -197,32 +197,32 @@ } }; - var innerLoopPoint1 = new WtiStabilityPoint2D(2, 5); - var innerLoopPoint2 = new WtiStabilityPoint2D(2, 7); - var innerLoopPoint3 = new WtiStabilityPoint2D(8, 7); - var innerLoopPoint4 = new WtiStabilityPoint2D(8, 5); - var innerLoopPoint5 = new WtiStabilityPoint2D(2, 9); - var innerLoopPoint6 = new WtiStabilityPoint2D(8, 9); - var innerLoopCurve1 = new GeometryCurve(innerLoopPoint1, innerLoopPoint2); - var innerLoopCurve2 = new GeometryCurve(innerLoopPoint2, innerLoopPoint3); - var innerLoopCurve3 = new GeometryCurve(innerLoopPoint3, innerLoopPoint4); - var innerLoopCurve4 = new GeometryCurve(innerLoopPoint4, innerLoopPoint1); - var innerLoopCurve5 = new GeometryCurve(innerLoopPoint2, innerLoopPoint5); - var innerLoopCurve6 = new GeometryCurve(innerLoopPoint5, innerLoopPoint6); - var innerLoopCurve7 = new GeometryCurve(innerLoopPoint6, innerLoopPoint3); - var innerLoop1 = new GeometryLoop + var innerLoopPoint1 = new CSharpWrapperPoint2D(2, 5); + var innerLoopPoint2 = new CSharpWrapperPoint2D(2, 7); + var innerLoopPoint3 = new CSharpWrapperPoint2D(8, 7); + var innerLoopPoint4 = new CSharpWrapperPoint2D(8, 5); + var innerLoopPoint5 = new CSharpWrapperPoint2D(2, 9); + var innerLoopPoint6 = new CSharpWrapperPoint2D(8, 9); + Curve innerLoopCurve1 = CreateCurve(innerLoopPoint1, innerLoopPoint2); + Curve innerLoopCurve2 = CreateCurve(innerLoopPoint2, innerLoopPoint3); + Curve innerLoopCurve3 = CreateCurve(innerLoopPoint3, innerLoopPoint4); + Curve innerLoopCurve4 = CreateCurve(innerLoopPoint4, innerLoopPoint1); + Curve innerLoopCurve5 = CreateCurve(innerLoopPoint2, innerLoopPoint5); + Curve innerLoopCurve6 = CreateCurve(innerLoopPoint5, innerLoopPoint6); + Curve innerLoopCurve7 = CreateCurve(innerLoopPoint6, innerLoopPoint3); + var innerLoop1 = new Loop { - CurveList = + Curves = { innerLoopCurve1, innerLoopCurve2, innerLoopCurve3, innerLoopCurve4 } }; - var innerLoop2 = new GeometryLoop + var innerLoop2 = new Loop { - CurveList = + Curves = { innerLoopCurve5, innerLoopCurve6, @@ -277,49 +277,51 @@ Assert.AreEqual(0, profile.Geometry.Bottom); Assert.AreEqual(10, profile.Geometry.Right); - Assert.AreEqual(4, profile.Surfaces.Count); + Assert.AreEqual(4, profile.SoilSurfaces.Count); Assert.AreEqual(4, profile.Geometry.Surfaces.Count); - CollectionAssert.AreEqual(profile.Surfaces.Select(s => s.GeometrySurface), profile.Geometry.Surfaces); + CollectionAssert.AreEqual(profile.SoilSurfaces.ToList() + .Select(s => s.Surface), + profile.Geometry.Surfaces); #endregion #region Surfaces - SoilLayer2D surface1 = profile.Surfaces.ElementAt(0); + SoilProfileSurface surface1 = profile.SoilSurfaces.ElementAt(0); Assert.AreSame(soil1, surface1.Soil); Assert.AreEqual(soil1.Name, surface1.Name); Assert.AreEqual(layerWithSoil1.IsAquifer, surface1.IsAquifer); - Assert.AreEqual(layerWithSoil1.WaterPressureInterpolationModel, surface1.WaterpressureInterpolationModel); - Assert.AreSame(profile.Geometry.Loops[0], surface1.GeometrySurface.OuterLoop); - CollectionAssert.IsEmpty(surface1.GeometrySurface.InnerLoops); + Assert.AreEqual(layerWithSoil1.WaterPressureInterpolationModel, surface1.WaterPressureInterpolationModel); + Assert.AreSame(profile.Geometry.Loops.ElementAt(0), surface1.Surface.OuterLoop); + CollectionAssert.IsEmpty(surface1.Surface.InnerLoops); - SoilLayer2D surface2 = profile.Surfaces.ElementAt(1); + SoilProfileSurface surface2 = profile.SoilSurfaces.ElementAt(1); Assert.AreSame(soil2, surface2.Soil); Assert.AreEqual(soil2.Name, surface2.Name); Assert.AreEqual(layerWithSoil2.IsAquifer, surface2.IsAquifer); - Assert.AreEqual(layerWithSoil2.WaterPressureInterpolationModel, surface2.WaterpressureInterpolationModel); - Assert.AreSame(profile.Geometry.Loops[1], surface2.GeometrySurface.OuterLoop); + Assert.AreEqual(layerWithSoil2.WaterPressureInterpolationModel, surface2.WaterPressureInterpolationModel); + Assert.AreSame(profile.Geometry.Loops.ElementAt(1), surface2.Surface.OuterLoop); CollectionAssert.AreEqual(new[] { - profile.Geometry.Loops[2], - profile.Geometry.Loops[3] - }, surface2.GeometrySurface.InnerLoops); + profile.Geometry.Loops.ElementAt(2), + profile.Geometry.Loops.ElementAt(3) + }, surface2.Surface.InnerLoops); - SoilLayer2D surface3 = profile.Surfaces.ElementAt(2); + SoilProfileSurface surface3 = profile.SoilSurfaces.ElementAt(2); Assert.AreSame(soil3, surface3.Soil); Assert.AreEqual(soil3.Name, surface3.Name); Assert.AreEqual(layerWithSoil3.IsAquifer, surface3.IsAquifer); - Assert.AreEqual(layerWithSoil3.WaterPressureInterpolationModel, surface3.WaterpressureInterpolationModel); - Assert.AreSame(profile.Geometry.Loops[2], surface3.GeometrySurface.OuterLoop); - CollectionAssert.IsEmpty(surface3.GeometrySurface.InnerLoops); + Assert.AreEqual(layerWithSoil3.WaterPressureInterpolationModel, surface3.WaterPressureInterpolationModel); + Assert.AreSame(profile.Geometry.Loops.ElementAt(2), surface3.Surface.OuterLoop); + CollectionAssert.IsEmpty(surface3.Surface.InnerLoops); - SoilLayer2D surface4 = profile.Surfaces.ElementAt(3); + SoilProfileSurface surface4 = profile.SoilSurfaces.ElementAt(3); Assert.AreSame(soil4, surface4.Soil); Assert.AreEqual(soil4.Name, surface4.Name); Assert.AreEqual(layerWithSoil4.IsAquifer, surface4.IsAquifer); - Assert.AreEqual(layerWithSoil4.WaterPressureInterpolationModel, surface4.WaterpressureInterpolationModel); - Assert.AreSame(profile.Geometry.Loops[3], surface4.GeometrySurface.OuterLoop); - CollectionAssert.IsEmpty(surface4.GeometrySurface.InnerLoops); + Assert.AreEqual(layerWithSoil4.WaterPressureInterpolationModel, surface4.WaterPressureInterpolationModel); + Assert.AreSame(profile.Geometry.Loops.ElementAt(3), surface4.Surface.OuterLoop); + CollectionAssert.IsEmpty(surface4.Surface.InnerLoops); #endregion } @@ -405,7 +407,7 @@ new Point2D[0][], soil1, false, - WaterpressureInterpolationModel.Automatic); + WaterPressureInterpolationModel.Automatic); var layerWithSoil2 = new LayerWithSoil( layer2Points, @@ -415,7 +417,7 @@ }, soil2, true, - WaterpressureInterpolationModel.Hydrostatic); + WaterPressureInterpolationModel.Hydrostatic); var layerWithSoil3 = new LayerWithSoil( layer2Hole1Points, @@ -425,17 +427,17 @@ }, soil3, false, - WaterpressureInterpolationModel.Automatic); + WaterPressureInterpolationModel.Automatic); var layerWithSoil4 = new LayerWithSoil( layer2Hole2Points, new Point2D[0][], soil4, true, - WaterpressureInterpolationModel.Hydrostatic); + WaterPressureInterpolationModel.Hydrostatic); // Call - SoilProfile2D profile = SoilProfileCreator.Create(new[] + SoilProfile profile = SoilProfileCreator.Create(new[] { layerWithSoil1, layerWithSoil2, @@ -447,32 +449,32 @@ #region Geometry - var outerLoopPoint1 = new WtiStabilityPoint2D(0, 0); - var outerLoopPoint2 = new WtiStabilityPoint2D(0, 3); - var outerLoopPoint3 = new WtiStabilityPoint2D(10, 3); - var outerLoopPoint4 = new WtiStabilityPoint2D(10, 0); - var outerLoopPoint5 = new WtiStabilityPoint2D(0, 13); - var outerLoopPoint6 = new WtiStabilityPoint2D(10, 13); - var outerLoopCurve1 = new GeometryCurve(outerLoopPoint1, outerLoopPoint2); - var outerLoopCurve2 = new GeometryCurve(outerLoopPoint2, outerLoopPoint3); - var outerLoopCurve3 = new GeometryCurve(outerLoopPoint3, outerLoopPoint4); - var outerLoopCurve4 = new GeometryCurve(outerLoopPoint4, outerLoopPoint1); - var outerLoopCurve5 = new GeometryCurve(outerLoopPoint2, outerLoopPoint5); - var outerLoopCurve6 = new GeometryCurve(outerLoopPoint5, outerLoopPoint6); - var outerLoopCurve7 = new GeometryCurve(outerLoopPoint6, outerLoopPoint3); - var outerLoop1 = new GeometryLoop + var outerLoopPoint1 = new CSharpWrapperPoint2D(0, 0); + var outerLoopPoint2 = new CSharpWrapperPoint2D(0, 3); + var outerLoopPoint3 = new CSharpWrapperPoint2D(10, 3); + var outerLoopPoint4 = new CSharpWrapperPoint2D(10, 0); + var outerLoopPoint5 = new CSharpWrapperPoint2D(0, 13); + var outerLoopPoint6 = new CSharpWrapperPoint2D(10, 13); + Curve outerLoopCurve1 = CreateCurve(outerLoopPoint1, outerLoopPoint2); + Curve outerLoopCurve2 = CreateCurve(outerLoopPoint2, outerLoopPoint3); + Curve outerLoopCurve3 = CreateCurve(outerLoopPoint3, outerLoopPoint4); + Curve outerLoopCurve4 = CreateCurve(outerLoopPoint4, outerLoopPoint1); + Curve outerLoopCurve5 = CreateCurve(outerLoopPoint2, outerLoopPoint5); + Curve outerLoopCurve6 = CreateCurve(outerLoopPoint5, outerLoopPoint6); + Curve outerLoopCurve7 = CreateCurve(outerLoopPoint6, outerLoopPoint3); + var outerLoop1 = new Loop { - CurveList = + Curves = { outerLoopCurve1, outerLoopCurve2, outerLoopCurve3, outerLoopCurve4 } }; - var outerLoop2 = new GeometryLoop + var outerLoop2 = new Loop { - CurveList = + Curves = { outerLoopCurve5, outerLoopCurve6, @@ -481,36 +483,36 @@ } }; - var innerLoopPoint1 = new WtiStabilityPoint2D(2, 5); - var innerLoopPoint2 = new WtiStabilityPoint2D(2, 11); - var innerLoopPoint3 = new WtiStabilityPoint2D(8, 11); - var innerLoopPoint4 = new WtiStabilityPoint2D(8, 5); - var innerLoopPoint5 = new WtiStabilityPoint2D(4, 7); - var innerLoopPoint6 = new WtiStabilityPoint2D(4, 9); - var innerLoopPoint7 = new WtiStabilityPoint2D(6, 9); - var innerLoopPoint8 = new WtiStabilityPoint2D(6, 7); - var innerLoopCurve1 = new GeometryCurve(innerLoopPoint1, innerLoopPoint2); - var innerLoopCurve2 = new GeometryCurve(innerLoopPoint2, innerLoopPoint3); - var innerLoopCurve3 = new GeometryCurve(innerLoopPoint3, innerLoopPoint4); - var innerLoopCurve4 = new GeometryCurve(innerLoopPoint4, innerLoopPoint1); - var innerLoopCurve5 = new GeometryCurve(innerLoopPoint5, innerLoopPoint6); - var innerLoopCurve6 = new GeometryCurve(innerLoopPoint6, innerLoopPoint7); - var innerLoopCurve7 = new GeometryCurve(innerLoopPoint7, innerLoopPoint8); - var innerLoopCurve8 = new GeometryCurve(innerLoopPoint8, innerLoopPoint5); + var innerLoopPoint1 = new CSharpWrapperPoint2D(2, 5); + var innerLoopPoint2 = new CSharpWrapperPoint2D(2, 11); + var innerLoopPoint3 = new CSharpWrapperPoint2D(8, 11); + var innerLoopPoint4 = new CSharpWrapperPoint2D(8, 5); + var innerLoopPoint5 = new CSharpWrapperPoint2D(4, 7); + var innerLoopPoint6 = new CSharpWrapperPoint2D(4, 9); + var innerLoopPoint7 = new CSharpWrapperPoint2D(6, 9); + var innerLoopPoint8 = new CSharpWrapperPoint2D(6, 7); + Curve innerLoopCurve1 = CreateCurve(innerLoopPoint1, innerLoopPoint2); + Curve innerLoopCurve2 = CreateCurve(innerLoopPoint2, innerLoopPoint3); + Curve innerLoopCurve3 = CreateCurve(innerLoopPoint3, innerLoopPoint4); + Curve innerLoopCurve4 = CreateCurve(innerLoopPoint4, innerLoopPoint1); + Curve innerLoopCurve5 = CreateCurve(innerLoopPoint5, innerLoopPoint6); + Curve innerLoopCurve6 = CreateCurve(innerLoopPoint6, innerLoopPoint7); + Curve innerLoopCurve7 = CreateCurve(innerLoopPoint7, innerLoopPoint8); + Curve innerLoopCurve8 = CreateCurve(innerLoopPoint8, innerLoopPoint5); - var innerLoop1 = new GeometryLoop + var innerLoop1 = new Loop { - CurveList = + Curves = { innerLoopCurve1, innerLoopCurve2, innerLoopCurve3, innerLoopCurve4 } }; - var innerLoop2 = new GeometryLoop + var innerLoop2 = new Loop { - CurveList = + Curves = { innerLoopCurve5, innerLoopCurve6, @@ -568,53 +570,64 @@ Assert.AreEqual(0, profile.Geometry.Bottom); Assert.AreEqual(10, profile.Geometry.Right); - Assert.AreEqual(4, profile.Surfaces.Count); + Assert.AreEqual(4, profile.SoilSurfaces.Count); Assert.AreEqual(4, profile.Geometry.Surfaces.Count); - CollectionAssert.AreEqual(profile.Surfaces.Select(s => s.GeometrySurface), profile.Geometry.Surfaces); + CollectionAssert.AreEqual(profile.SoilSurfaces.ToList() + .Select(s => s.Surface), + profile.Geometry.Surfaces); #endregion #region Surfaces - SoilLayer2D surface1 = profile.Surfaces.ElementAt(0); + SoilProfileSurface surface1 = profile.SoilSurfaces.ElementAt(0); Assert.AreSame(soil1, surface1.Soil); Assert.AreEqual(soil1.Name, surface1.Name); Assert.AreEqual(layerWithSoil1.IsAquifer, surface1.IsAquifer); - Assert.AreEqual(layerWithSoil1.WaterPressureInterpolationModel, surface1.WaterpressureInterpolationModel); - Assert.AreSame(profile.Geometry.Loops[0], surface1.GeometrySurface.OuterLoop); - CollectionAssert.IsEmpty(surface1.GeometrySurface.InnerLoops); + Assert.AreEqual(layerWithSoil1.WaterPressureInterpolationModel, surface1.WaterPressureInterpolationModel); + Assert.AreSame(profile.Geometry.Loops.ElementAt(0), surface1.Surface.OuterLoop); + CollectionAssert.IsEmpty(surface1.Surface.InnerLoops); - SoilLayer2D surface2 = profile.Surfaces.ElementAt(1); + SoilProfileSurface surface2 = profile.SoilSurfaces.ElementAt(1); Assert.AreSame(soil2, surface2.Soil); Assert.AreEqual(soil2.Name, surface2.Name); Assert.AreEqual(layerWithSoil2.IsAquifer, surface2.IsAquifer); - Assert.AreEqual(layerWithSoil2.WaterPressureInterpolationModel, surface2.WaterpressureInterpolationModel); - Assert.AreSame(profile.Geometry.Loops[1], surface2.GeometrySurface.OuterLoop); + Assert.AreEqual(layerWithSoil2.WaterPressureInterpolationModel, surface2.WaterPressureInterpolationModel); + Assert.AreSame(profile.Geometry.Loops.ElementAt(1), surface2.Surface.OuterLoop); CollectionAssert.AreEqual(new[] { - profile.Geometry.Loops[2] - }, surface2.GeometrySurface.InnerLoops); + profile.Geometry.Loops.ElementAt(2) + }, surface2.Surface.InnerLoops); - SoilLayer2D surface3 = profile.Surfaces.ElementAt(2); + SoilProfileSurface surface3 = profile.SoilSurfaces.ElementAt(2); Assert.AreSame(soil3, surface3.Soil); Assert.AreEqual(soil3.Name, surface3.Name); Assert.AreEqual(layerWithSoil3.IsAquifer, surface3.IsAquifer); - Assert.AreEqual(layerWithSoil3.WaterPressureInterpolationModel, surface3.WaterpressureInterpolationModel); - Assert.AreSame(profile.Geometry.Loops[2], surface3.GeometrySurface.OuterLoop); + Assert.AreEqual(layerWithSoil3.WaterPressureInterpolationModel, surface3.WaterPressureInterpolationModel); + Assert.AreSame(profile.Geometry.Loops.ElementAt(2), surface3.Surface.OuterLoop); CollectionAssert.AreEqual(new[] { - profile.Geometry.Loops[3] - }, surface3.GeometrySurface.InnerLoops); + profile.Geometry.Loops.ElementAt(3) + }, surface3.Surface.InnerLoops); - SoilLayer2D surface4 = profile.Surfaces.ElementAt(3); + SoilProfileSurface surface4 = profile.SoilSurfaces.ElementAt(3); Assert.AreSame(soil4, surface4.Soil); Assert.AreEqual(soil4.Name, surface4.Name); Assert.AreEqual(layerWithSoil4.IsAquifer, surface4.IsAquifer); - Assert.AreEqual(layerWithSoil4.WaterPressureInterpolationModel, surface4.WaterpressureInterpolationModel); - Assert.AreSame(profile.Geometry.Loops[3], surface4.GeometrySurface.OuterLoop); - CollectionAssert.IsEmpty(surface4.GeometrySurface.InnerLoops); + Assert.AreEqual(layerWithSoil4.WaterPressureInterpolationModel, surface4.WaterPressureInterpolationModel); + Assert.AreSame(profile.Geometry.Loops.ElementAt(3), surface4.Surface.OuterLoop); + CollectionAssert.IsEmpty(surface4.Surface.InnerLoops); #endregion } + + private static Curve CreateCurve(CSharpWrapperPoint2D headPoint, CSharpWrapperPoint2D endPoint) + { + return new Curve + { + HeadPoint = headPoint, + EndPoint = endPoint + }; + } } } \ No newline at end of file