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++)