Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r6251 -r6404 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 6251) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 6404) @@ -1,4 +1,4 @@ -// Copyright (C) Stichting Deltares 2024. All rights reserved. +// Copyright (C) Stichting Deltares 2025. All rights reserved. // // This file is part of the Dam Engine. // @@ -135,6 +135,39 @@ return null; } + internal static void AddLayers2D(Io.XmlInput.SoilProfile2D inputSoilProfile2D, SoilProfile2D soilProfile2D, SoilList soils) + { + if (inputSoilProfile2D != null) + { + for (var i = 0; i < inputSoilProfile2D.Layers2D.Length; i++) + { + var layer = new SoilLayer2D + { + GeometrySurface = new GeometrySurface() + }; + SoilProfile2DLayer2D inputLayer = inputSoilProfile2D.Layers2D[i]; + layer.Name = inputLayer.SoilName; + layer.Soil = soils.GetSoilByName(inputLayer.SoilName); + layer.IsAquifer = inputLayer.IsAquifer; + layer.WaterpressureInterpolationModel = ConversionHelper.ConvertToWaterpressureInterpolationModel( + inputLayer.WaterpressureInterpolationModel); + + // Add OuterLoop + AddOuterLoopToSoilProfile2DFromLayer2D(soilProfile2D.Geometry, inputLayer.Surface.OuterLoop, layer.GeometrySurface.OuterLoop); + + // Add InnerLoop when available + if (inputLayer.Surface.Innerloop != null && inputLayer.Surface.Innerloop.Length > 0) + { + layer.GeometrySurface.InnerLoops.Add(new GeometryLoop()); + AddInnerLoopToSoilProfile2DFromLayer2D(soilProfile2D.Geometry, inputLayer.Surface.Innerloop, layer.GeometrySurface.InnerLoops[0]); + } + + soilProfile2D.Surfaces.Add(layer); + soilProfile2D.Geometry.Surfaces.Add(layer.GeometrySurface); + } + } + } + private static void TransferSensorData(InputSensorData inputSensorData, SensorData sensorData, IList locations) { // Transfer sensors @@ -461,6 +494,7 @@ soil.SigmaTauCurve.Points.Add(new SigmaTauPoint(point.Sigma, point.Tau)); } } + if (inputSoil.SuTable != null) { soil.SuTableCurve = new SuTableCurve(); @@ -494,7 +528,7 @@ for (var j = 0; j < inputSurfaceLine.Points.Length; j++) { SurfaceLinePoint inputPoint = inputSurfaceLine.Points[j]; - var geometryPoint = new Point2D() + var geometryPoint = new Point2D { X = inputPoint.X, Z = inputPoint.Z @@ -639,6 +673,7 @@ location.Scenarios.Add(designScenario); } + location.CurrentScenario = location.Scenarios[0]; } @@ -690,9 +725,9 @@ } } } - + private static void TransferTrafficLoadDegreeOfConsolidation(InputTrafficLoadDegreeOfConsolidation[] inputDegreeOfConsolidations, - Dike dike) + Dike dike) { if (inputDegreeOfConsolidations != null) { @@ -764,70 +799,39 @@ } } - internal static void AddLayers2D(Io.XmlInput.SoilProfile2D inputSoilProfile2D, SoilProfile2D soilProfile2D, SoilList soils) - { - if (inputSoilProfile2D != null) - { - for (var i = 0; i < inputSoilProfile2D.Layers2D.Length; i++) - { - var layer = new SoilLayer2D - { - GeometrySurface = new GeometrySurface() - }; - SoilProfile2DLayer2D inputLayer = inputSoilProfile2D.Layers2D[i]; - layer.Name = inputLayer.SoilName; - layer.Soil = soils.GetSoilByName(inputLayer.SoilName); - layer.IsAquifer = inputLayer.IsAquifer; - layer.WaterpressureInterpolationModel = ConversionHelper.ConvertToWaterpressureInterpolationModel( - inputLayer.WaterpressureInterpolationModel); - - // Add OuterLoop - AddOuterLoopToSoilProfile2DFromLayer2D(soilProfile2D.Geometry, inputLayer.Surface.OuterLoop, layer.GeometrySurface.OuterLoop); - - // Add InnerLoop when available - if (inputLayer.Surface.Innerloop != null && inputLayer.Surface.Innerloop.Length > 0) - { - layer.GeometrySurface.InnerLoops.Add(new GeometryLoop()); - AddInnerLoopToSoilProfile2DFromLayer2D(soilProfile2D.Geometry, inputLayer.Surface.Innerloop, layer.GeometrySurface.InnerLoops[0]); - } - - soilProfile2D.Surfaces.Add(layer); - soilProfile2D.Geometry.Surfaces.Add(layer.GeometrySurface); - } - } - } - - private static void AddOuterLoopToSoilProfile2DFromLayer2D(GeometryData geometry, SoilProfile2DLayer2DSurfaceOuterPoint[] inputOuterLoop , + private static void AddOuterLoopToSoilProfile2DFromLayer2D(GeometryData geometry, SoilProfile2DLayer2DSurfaceOuterPoint[] inputOuterLoop, GeometryLoop outputOuterLoop) { - List inputPoints = new List(); + var inputPoints = new List(); foreach (SoilProfile2DLayer2DSurfaceOuterPoint innerPoint in inputOuterLoop) { inputPoints.Add(new Point2D(innerPoint.X, innerPoint.Z)); } + AddLoopToSoilProfile2DFromLayer2D(geometry, outputOuterLoop, inputPoints); } - - private static void AddInnerLoopToSoilProfile2DFromLayer2D(GeometryData geometry, + + private static void AddInnerLoopToSoilProfile2DFromLayer2D(GeometryData geometry, SoilProfile2DLayer2DSurfaceInnerPoint[] inputInnerLoop, GeometryLoop outputInnerLoop) { - List inputPoints = new List(); + var inputPoints = new List(); foreach (SoilProfile2DLayer2DSurfaceInnerPoint innerPoint in inputInnerLoop) { inputPoints.Add(new Point2D(innerPoint.X, innerPoint.Z)); } + AddLoopToSoilProfile2DFromLayer2D(geometry, outputInnerLoop, inputPoints); } private static void AddLoopToSoilProfile2DFromLayer2D(GeometryData geometry, GeometryLoop outputInnerLoop, List inputPoints) { var isStartPoint = true; var curve = new GeometryCurve(); - var firstPoint = new Point2D(); + var firstPoint = new Point2D(); for (var j = 0; j < inputPoints.Count; j++) { - var point = inputPoints[j]; + Point2D point = inputPoints[j]; point = AddPointToSoilProfile2D(geometry, outputInnerLoop, point); if (isStartPoint) { @@ -849,30 +853,28 @@ } isStartPoint = false; - } + geometry.Loops.Add(outputInnerLoop); } private static Point2D AddPointToSoilProfile2D(GeometryData geometry, GeometryLoop outputLoop, Point2D point) { - var existingPoint = geometry.GetPointAtLocation(point); + Point2D existingPoint = geometry.GetPointAtLocation(point); if (existingPoint == null) { geometry.Points.Add(point); outputLoop.Points.Add(point); return point; } - else - { - outputLoop.Points.Add(existingPoint); - return existingPoint; - } + + outputLoop.Points.Add(existingPoint); + return existingPoint; } private static void AddCurveToSoilProfile2D(GeometryData geometry, GeometryLoop outputLoop, GeometryCurve curve) { - var existingCurve = GeometryHelper.DoesCurveExist(geometry, curve); + GeometryCurve existingCurve = GeometryHelper.DoesCurveExist(geometry, curve); if (existingCurve == null) { geometry.Curves.Add(curve);