Index: dam clients/DamUI/trunk/src/Dam/Forms/DamPlugin.cs =================================================================== diff -u -r468 -r491 --- dam clients/DamUI/trunk/src/Dam/Forms/DamPlugin.cs (.../DamPlugin.cs) (revision 468) +++ dam clients/DamUI/trunk/src/Dam/Forms/DamPlugin.cs (.../DamPlugin.cs) (revision 491) @@ -38,7 +38,6 @@ using Deltares.DamEngine.Io; using Deltares.DamEngine.Io.XmlInput; using Deltares.Geotechnics.Mechanisms; -using Deltares.Geotechnics.Soils; using Deltares.Geotechnics.SurfaceLines; using Deltares.Standard; using Deltares.Standard.Attributes; @@ -55,6 +54,7 @@ using DevExpress.XtraEditors.Controls; using DevExpress.XtraEditors.Repository; using Location = Deltares.Dam.Data.Location; +using Soil = Deltares.Geotechnics.Soils.Soil; namespace Deltares.Dam.Forms { Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs =================================================================== diff -u -r484 -r491 --- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 484) +++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 491) @@ -1,4 +1,6 @@ -using Deltares.DamEngine.Io.XmlInput; +using System; +using Deltares.DamEngine.Io.XmlInput; +using Deltares.Geotechnics.Soils; namespace Deltares.Dam.Data.DamEngineIo { @@ -19,9 +21,33 @@ Dike dike = damProjectData.WaterBoard.Dikes[0]; TransferLocations(dike, input); TransferSurfaceLines(dike, input); + TransferSoils(dike, input); return input; } + private static void TransferSoils(Dike dike, Input input) + { + var soils = dike.SoilList.Soils; + input.Soils = new DamEngine.Io.XmlInput.Soil[soils.Count]; + for (int i = 0; i < soils.Count; i++) + { + var soil = dike.SoilList.Soils[i]; + var inputSoil = new DamEngine.Io.XmlInput.Soil(); + inputSoil.Name = soil.Name; + inputSoil.BeddingAngleSpecified = !Double.IsNaN(soil.BeddingAngle); + inputSoil.BeddingAngle = soil.BeddingAngle; + inputSoil.DiameterD70Specified = !Double.IsNaN(soil.DiameterD70); + inputSoil.DiameterD70 = soil.DiameterD70; + inputSoil.DiameterD90Specified = !Double.IsNaN(soil.DiameterD70); + inputSoil.DiameterD90 = soil.DiameterD90; + inputSoil.PermeabKxSpecified = !Double.IsNaN(soil.DiameterD90); + inputSoil.PermeabKx = soil.PermeabKx; + inputSoil.WhitesConstantSpecified = !Double.IsNaN(soil.WhitesConstant); + inputSoil.WhitesConstant = soil.WhitesConstant; + input.Soils[i] = inputSoil; + } + } + private static void TransferSurfaceLines(Dike dike, Input input) { input.SurfaceLines = new SurfaceLine[dike.SurfaceLines2.Count]; Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs =================================================================== diff -u -r484 -r491 --- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 484) +++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 491) @@ -1,8 +1,11 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using Deltares.DamEngine.Io.XmlInput; using Deltares.Geometry; using Deltares.Geotechnics.GeotechnicalGeometry; +using Deltares.Geotechnics.Soils; using Deltares.Geotechnics.SurfaceLines; +using Soil = Deltares.Geotechnics.Soils.Soil; using SurfaceLine = Deltares.DamEngine.Io.XmlInput.SurfaceLine; namespace Deltares.Dam.Data.DamEngineIo @@ -28,9 +31,28 @@ Dike dike = damProjectData.WaterBoard.Dikes[0]; TransferLocations(input, dike); TransferSurfaceLines(input, dike); + TransferSoils(input, dike); return damProjectData; } + private static void TransferSoils(Input input, Dike dike) + { + dike.SoilList = new SoilList(); + var soils = dike.SoilList.Soils; + for (int i = 0; i < input.Soils.Length; i++) + { + var soil = new Soil(); + var inputSoil = input.Soils[i]; + soil.Name = inputSoil.Name; + soil.BeddingAngle = inputSoil.BeddingAngleSpecified ? inputSoil.BeddingAngle : Double.NaN; + soil.DiameterD70 = inputSoil.DiameterD70Specified ? inputSoil.DiameterD70 : Double.NaN; + soil.DiameterD90 = inputSoil.DiameterD90Specified ? inputSoil.DiameterD90 : Double.NaN; + soil.PermeabKx = inputSoil.PermeabKxSpecified ? inputSoil.PermeabKx : Double.NaN; + soil.WhitesConstant = inputSoil.WhitesConstantSpecified ? inputSoil.WhitesConstant : Double.NaN; + soils.Add(soil); + } + } + private static void TransferSurfaceLines(Input input, Dike dike) { for (int i = 0; i < input.SurfaceLines.Length; i++) Index: dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs =================================================================== diff -u -r485 -r491 --- dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 485) +++ dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 491) @@ -1,13 +1,16 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using Deltares.Dam.Data; using Deltares.Dam.Data.DamEngineIo; using Deltares.DamEngine.Io; using Deltares.DamEngine.Io.XmlInput; using Deltares.Geometry; +using Deltares.Geotechnics.Soils; using Deltares.Geotechnics.SurfaceLines; using KellermanSoftware.CompareNetObjects; using NUnit.Framework; using Location = Deltares.Dam.Data.Location; +using Soil = Deltares.Geotechnics.Soils.Soil; namespace Deltares.Dam.Tests.DamEngineIo { @@ -47,9 +50,28 @@ Dike dike = damProjectData.WaterBoard.Dikes[0]; AddLocations(dike); FillSurfaceLines(dike); + FillSoils(dike); return damProjectData; } + private void FillSoils(Dike dike) + { + const int soilCount = 3; + dike.SoilList = new SoilList(); + for (int i = 0; i < soilCount; i++) + { + Soil soil = new Soil() { Name = String.Format("Soil {0}", i) }; + + soil.BeddingAngle = 18 + 0.1 * i; + soil.DiameterD70 = 19 + 0.1 * i; + soil.DiameterD90 = 20 + 0.1 * i; + soil.PermeabKx = 21 + 0.1 * i; + soil.WhitesConstant = 22 + 0.1 * i; + + dike.SoilList.Add(soil); + } + } + private static void AddLocations(Dike dike) { const int locationCount = 3; @@ -129,7 +151,6 @@ "LocalXZSurfaceLine", "SoilLayer1D", "SoildatabaseName", - "SoilList", "MapForSoilGeometries2D" }; var result = compare.Compare(expected, actual);