Index: dam engine/trunk/src/Deltares.DamEngine.Io/DamInput.cs =================================================================== diff -u -r486 -r488 --- dam engine/trunk/src/Deltares.DamEngine.Io/DamInput.cs (.../DamInput.cs) (revision 486) +++ dam engine/trunk/src/Deltares.DamEngine.Io/DamInput.cs (.../DamInput.cs) (revision 488) @@ -26,7 +26,7 @@ private SurfaceLine[] surfaceLinesField; - private InputSoils soilsField; + private Soil[] soilsField; private InputDamProjectType damProjectTypeField; @@ -53,7 +53,8 @@ } /// - public InputSoils Soils { + [System.Xml.Serialization.XmlArrayItemAttribute(IsNullable=false)] + public Soil[] Soils { get { return this.soilsField; } @@ -1039,27 +1040,6 @@ [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)] - public partial class InputSoils { - - private Soil soilField; - - /// - public Soil Soil { - get { - return this.soilField; - } - set { - this.soilField = value; - } - } - } - - /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")] - [System.SerializableAttribute()] - [System.Diagnostics.DebuggerStepThroughAttribute()] - [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class Soil { private string nameField; Index: dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs =================================================================== diff -u -r479 -r488 --- dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 479) +++ dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 488) @@ -19,13 +19,15 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Io; using Deltares.DamEngine.Io.XmlInput; using KellermanSoftware.CompareNetObjects; using NUnit.Framework; +using Soil = Deltares.DamEngine.Data.Geotechnics.Soil; namespace Deltares.DamEngine.Interface.Tests { @@ -74,9 +76,46 @@ Dike dike = damProjectData.Dike; FillLocations(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.SoilType = SoilType.Loam; + + //soil.AbovePhreaticLevel = 10 + 0.1 * i; + //soil.BelowPhreaticLevel = 10 + 0.1 * i; + //soil.DryUnitWeight = 10 + 0.1 * i; + + //soil.ShearStrengthModel = ShearStrengthModel.CuMeasured; + + //soil.Cohesion = 10 + 0.1 * i; + //soil.CuBottom = 11 + 0.1 * i; + //soil.CuTop = 12 + 0.1 * i; + //soil.DilatancyType = DilatancyType.Zero; + //soil.FrictionAngle = 13 + 0.1 * i; + //soil.Ocr = 14 + 0.1 * i; + //soil.PoP = 15 + 0.1 * i; + //soil.RatioCuPc = 16 + 0.1 * i; + //soil.StrengthIncreaseExponent = 17 + 0.1 * i; + //soil.UsePop = true; + + 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 void FillSurfaceLines(Dike dike) { const int surfaceLineCount = 2; Index: dam engine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs =================================================================== diff -u -r484 -r488 --- dam engine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 484) +++ dam engine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 488) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Io.XmlInput; using Input = Deltares.DamEngine.Io.XmlInput.Input; @@ -39,9 +40,33 @@ Dike dike = damProjectData.Dike; 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 Soil[soils.Count]; + for (int i = 0; i < soils.Count; i++) + { + var soil = dike.SoilList.Soils[i]; + var inputSoil = new 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 engine/trunk/Xsds Liquid/DamInput.xsd =================================================================== diff -u -r486 -r488 --- dam engine/trunk/Xsds Liquid/DamInput.xsd (.../DamInput.xsd) (revision 486) +++ dam engine/trunk/Xsds Liquid/DamInput.xsd (.../DamInput.xsd) (revision 488) @@ -23,7 +23,7 @@ - + Index: dam engine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r478 -r488 --- dam engine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 478) +++ dam engine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 488) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; @@ -46,10 +47,29 @@ Dike dike = damProjectData.Dike; 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 Data.Geotechnics.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++)