Index: dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs
===================================================================
diff -u -r601 -r613
--- dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 601)
+++ dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 613)
@@ -39,13 +39,21 @@
[TestFixture]
public class FillDamFromXmlInputTests
{
+ const AnalysisType expectedAnalysisType = AnalysisType.AdaptGeometry;
+ const AnalysisType notExpectedAnalysisType = AnalysisType.NoAdaption;
+
[Test]
public void CanWriteAndReadDamProjectDataToXml()
{
const string inputFilename = "InputFile.xml";
+
+ // Write input file
DamProjectData expectedDamProjectData = CreateExampleDamProjectData();
Input input = FillXmlInputFromDam.CreateInput(expectedDamProjectData);
DamXmlSerialization.SaveInputAsXmlFile(inputFilename, input);
+
+
+ // Load input file
input = DamXmlSerialization.LoadInputFromXmlFile(inputFilename);
DamProjectData actualDamProjectData = FillDamFromXmlInput.CreateDamProjectData(input);
CompareDamProjectData(actualDamProjectData, expectedDamProjectData);
@@ -55,9 +63,15 @@
public void CanWriteAndReadDamProjectDataToXmlString()
{
string xmlString;
+ // Write input string
DamProjectData expectedDamProjectData = CreateExampleDamProjectData();
Input input = FillXmlInputFromDam.CreateInput(expectedDamProjectData);
xmlString = DamXmlSerialization.SaveInputAsXmlString(input);
+
+ // Init static that is to be loaded with not expected value
+ DamProjectCalculationSpecification.SelectedAnalysisType = notExpectedAnalysisType;
+
+ // Load input string
input = DamXmlSerialization.LoadInputFromXmlString(xmlString);
DamProjectData actualDamProjectData = FillDamFromXmlInput.CreateDamProjectData(input);
CompareDamProjectData(actualDamProjectData, expectedDamProjectData);
@@ -76,7 +90,9 @@
private DamProjectData CreateExampleDamProjectData()
{
var damProjectData = new DamProjectData();
- damProjectData.DamProjectType = DamProjectType.Design;
+
+ FillAnalysisSpecification(damProjectData);
+
damProjectData.Dike = new Dike();
Dike dike = damProjectData.Dike;
FillSurfaceLines(dike);
@@ -88,6 +104,17 @@
return damProjectData;
}
+ private static void FillAnalysisSpecification(DamProjectData damProjectData)
+ {
+ damProjectData.DamProjectType = DamProjectType.Design;
+ damProjectData.DamProjectCalculationSpecification = new DamProjectCalculationSpecification();
+ DamProjectCalculationSpecification.SelectedAnalysisType = expectedAnalysisType;
+ var calculationSpecification = new DamFailureMechanismeCalculationSpecification();
+ calculationSpecification.FailureMechanismSystemType = FailureMechanismSystemType.Piping;
+ calculationSpecification.CalculationModel = PipingModelType.Bligh;
+ damProjectData.DamProjectCalculationSpecification.DamCalculationSpecifications.Add(calculationSpecification);
+ }
+
private void FillSoils(Dike dike)
{
const int soilCount = 3;
@@ -336,6 +363,8 @@
private void CompareDamProjectData(DamProjectData actual, DamProjectData expected)
{
+ Assert.AreEqual(expectedAnalysisType, DamProjectCalculationSpecification.SelectedAnalysisType);
+
var compare = new CompareLogic { Config = { MaxDifferences = 100 } };
var result = compare.Compare(expected, actual);
Assert.AreEqual(0, result.Differences.Count, "Differences found read/write Input object");
Index: dam engine/trunk/src/Deltares.DamEngine.Interface/ConversionHelper.cs
===================================================================
diff -u -r580 -r613
--- dam engine/trunk/src/Deltares.DamEngine.Interface/ConversionHelper.cs (.../ConversionHelper.cs) (revision 580)
+++ dam engine/trunk/src/Deltares.DamEngine.Interface/ConversionHelper.cs (.../ConversionHelper.cs) (revision 613)
@@ -319,6 +319,10 @@
return translationTable[soilGeometryType];
}
+ public const int inputFailureMechanismStabilityInside = 0;
+ public const int inputFailureMechanismStabilityOutside = 1;
+ public const int inputFailureMechanismPiping = 2;
+ public const int inputFailureMechanismHorizontalBalance = 3;
///
/// Converts the Dam failure mechanism type to the input failure mechanism type .
///
@@ -328,10 +332,10 @@
{
var translationTable = new Dictionary()
{
- {FailureMechanismSystemType.StabilityInside, 0},
- {FailureMechanismSystemType.StabilityOutside, 1},
- {FailureMechanismSystemType.Piping, 2},
- {FailureMechanismSystemType.HorizontalBalance, 3}
+ {FailureMechanismSystemType.StabilityInside, inputFailureMechanismStabilityInside},
+ {FailureMechanismSystemType.StabilityOutside, inputFailureMechanismStabilityOutside},
+ {FailureMechanismSystemType.Piping, inputFailureMechanismPiping},
+ {FailureMechanismSystemType.HorizontalBalance, inputFailureMechanismHorizontalBalance}
};
return translationTable[segmentFailureMechanismType];
}
@@ -345,12 +349,104 @@
{
var translationTable = new Dictionary()
{
- {0, FailureMechanismSystemType.StabilityInside},
- {1, FailureMechanismSystemType.StabilityOutside},
- {2, FailureMechanismSystemType.Piping},
- {3, FailureMechanismSystemType.HorizontalBalance}
+ {inputFailureMechanismStabilityInside, FailureMechanismSystemType.StabilityInside},
+ {inputFailureMechanismStabilityOutside, FailureMechanismSystemType.StabilityOutside},
+ {inputFailureMechanismPiping, FailureMechanismSystemType.Piping},
+ {inputFailureMechanismHorizontalBalance, FailureMechanismSystemType.HorizontalBalance}
};
return translationTable[failureMechanismSystemType];
}
+
+ ///
+ /// Converts the Dam piping model to the input piping model.
+ ///
+ /// Type of the piping model.
+ ///
+ public static InputPipingModelType ConvertToInputPipingModelType(PipingModelType pipingModelType)
+ {
+ var translationTable = new Dictionary()
+ {
+ {PipingModelType.Bligh, InputPipingModelType.Bligh},
+ {PipingModelType.SellmeijerVnk, InputPipingModelType.SellmeijerVnk},
+ {PipingModelType.Sellmeijer4Forces, InputPipingModelType.SellmeijerVnk}
+ };
+ return translationTable[pipingModelType];
+ }
+
+ ///
+ /// Converts the input piping model to the Dam piping model.
+ ///
+ /// Type of the input piping model.
+ ///
+ public static PipingModelType ConvertToPipingModelType(InputPipingModelType inputPipingModelType)
+ {
+ var translationTable = new Dictionary()
+ {
+ {InputPipingModelType.Bligh, PipingModelType.Bligh},
+ {InputPipingModelType.SellmeijerVnk, PipingModelType.SellmeijerVnk},
+ {InputPipingModelType.Sellmeijer4Forces, PipingModelType.Sellmeijer4Forces}
+ };
+ return translationTable[inputPipingModelType];
+ }
+
+ ///
+ /// Converts the Dam stability model to the input stability model.
+ ///
+ /// Type of the stability model.
+ ///
+ public static InputStabilityModelType ConvertToInputStabilityModelType(MStabModelType stabilityModelType)
+ {
+ var translationTable = new Dictionary()
+ {
+ {MStabModelType.Bishop, InputStabilityModelType.Bishop},
+ {MStabModelType.UpliftVan, InputStabilityModelType.UpliftVan},
+ {MStabModelType.BishopUpliftVan,InputStabilityModelType.BishopUpliftVan}
+ };
+ return translationTable[stabilityModelType];
+ }
+ ///
+ /// Converts the input stability model to the Dam stability model.
+ ///
+ /// Type of the input stability model.
+ ///
+ public static MStabModelType ConvertToStabilityModelType(InputStabilityModelType inputStabilityModelType)
+ {
+ var translationTable = new Dictionary()
+ {
+ {InputStabilityModelType.Bishop, MStabModelType.Bishop},
+ {InputStabilityModelType.UpliftVan, MStabModelType.UpliftVan},
+ {InputStabilityModelType.BishopUpliftVan, MStabModelType.BishopUpliftVan}
+ };
+ return translationTable[inputStabilityModelType];
+ }
+
+ ///
+ /// Converts the Dam analysis type to the input analysis type.
+ ///
+ /// Type of the analysis.
+ ///
+ public static InputAnalysisType ConvertToInputAnalysisType(AnalysisType analysisType)
+ {
+ var translationTable = new Dictionary()
+ {
+ {AnalysisType.NoAdaption, InputAnalysisType.NoAdaption},
+ {AnalysisType.AdaptGeometry, InputAnalysisType.AdaptGeometry}
+ };
+ return translationTable[analysisType];
+ }
+ ///
+ /// Converts the input analysis type to the Dam analysis type.
+ ///
+ /// Type of the input analysis.
+ ///
+ public static AnalysisType ConvertToAnalysisType(InputAnalysisType inputAnalysisType)
+ {
+ var translationTable = new Dictionary()
+ {
+ {InputAnalysisType.NoAdaption, AnalysisType.NoAdaption},
+ {InputAnalysisType.AdaptGeometry, AnalysisType.AdaptGeometry}
+ };
+ return translationTable[inputAnalysisType];
+ }
}
}
\ No newline at end of file
Index: dam engine/trunk/Xsds Liquid/DamInput.xsd
===================================================================
diff -u -r528 -r613
--- dam engine/trunk/Xsds Liquid/DamInput.xsd (.../DamInput.xsd) (revision 528)
+++ dam engine/trunk/Xsds Liquid/DamInput.xsd (.../DamInput.xsd) (revision 613)
@@ -63,6 +63,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: dam engine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs
===================================================================
diff -u -r601 -r613
--- dam engine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 601)
+++ dam engine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 613)
@@ -36,6 +36,7 @@
{
public class FillXmlInputFromDam
{
+
///
/// Creates the input from Dam data.
///
@@ -44,8 +45,10 @@
public static Input CreateInput(DamProjectData damProjectData)
{
ValidateDamProjectData(damProjectData);
+
Input input = new Input();
- input.DamProjectType = ConversionHelper.ConvertToInputDamProjectType(damProjectData.DamProjectType);
+ TransferAnalysisSpecification(damProjectData, input);
+
Dike dike = damProjectData.Dike;
input.Locations = new Io.XmlInput.Location[dike.Locations.Count];
TransferLocations(dike.Locations, input.Locations);
@@ -73,6 +76,30 @@
return input;
}
+ private static void TransferAnalysisSpecification(DamProjectData damProjectData, Input input)
+ {
+ input.DamProjectType = ConversionHelper.ConvertToInputDamProjectType(damProjectData.DamProjectType);
+ input.FailureMechanismSystemType = ConversionHelper.ConvertToInputFailureMechanismSystemType(damProjectData.DamProjectCalculationSpecification.CurrentSpecification.FailureMechanismSystemType);
+
+ input.AnalysisTypeSpecified = (input.DamProjectType == InputDamProjectType.Design);
+ if (input.AnalysisTypeSpecified)
+ {
+ input.AnalysisType = ConversionHelper.ConvertToInputAnalysisType(DamProjectCalculationSpecification.SelectedAnalysisType);
+ }
+
+ input.PipingModelTypeSpecified = (input.FailureMechanismSystemType == ConversionHelper.inputFailureMechanismPiping);
+ if (input.PipingModelTypeSpecified)
+ {
+ input.PipingModelType = ConversionHelper.ConvertToInputPipingModelType(damProjectData.DamProjectCalculationSpecification.CurrentSpecification.PipingModelType);
+ }
+
+ input.StabilityModelTypeSpecified = (input.FailureMechanismSystemType == ConversionHelper.inputFailureMechanismStabilityInside) || (input.FailureMechanismSystemType == ConversionHelper.inputFailureMechanismStabilityOutside);
+ if (input.StabilityModelTypeSpecified)
+ {
+ input.StabilityModelType = ConversionHelper.ConvertToInputStabilityModelType(damProjectData.DamProjectCalculationSpecification.CurrentSpecification.StabilityModelType);
+ }
+ }
+
private static void ValidateDamProjectData(DamProjectData damProjectData)
{
if (damProjectData.Dike == null)
Index: dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/TestFiles/InputFile.xml
===================================================================
diff -u -r601 -r613
--- dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/TestFiles/InputFile.xml (.../InputFile.xml) (revision 601)
+++ dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/TestFiles/InputFile.xml (.../InputFile.xml) (revision 613)
@@ -1,5 +1,5 @@
-
+
Index: dam engine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs
===================================================================
diff -u -r612 -r613
--- dam engine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 612)
+++ dam engine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 613)
@@ -51,11 +51,13 @@
ValidateInput(input);
var damProjectData = new DamProjectData
{
- DamProjectType = ConversionHelper.ConvertToDamProjectType(input.DamProjectType),
Dike = new Dike()
};
Dike dike = damProjectData.Dike;
+
+ TransferAnalysisSpecification(input, damProjectData);
+
TransferSurfaceLines(input.SurfaceLines, dike.SurfaceLines2);
dike.SoilList = new SoilList();
TransferSoils(input.Soils, dike.SoilList.Soils);
@@ -68,6 +70,31 @@
return damProjectData;
}
+ private static void TransferAnalysisSpecification(Input input, DamProjectData damProjectData)
+ {
+ damProjectData.DamProjectType = ConversionHelper.ConvertToDamProjectType(input.DamProjectType);
+
+ var calculationSpecification = new DamFailureMechanismeCalculationSpecification();
+
+ calculationSpecification.FailureMechanismSystemType = ConversionHelper.ConvertToFailureMechanismSystemType(input.FailureMechanismSystemType);
+
+ if (input.AnalysisTypeSpecified)
+ {
+ DamProjectCalculationSpecification.SelectedAnalysisType = ConversionHelper.ConvertToAnalysisType(input.AnalysisType);
+ }
+
+ if (input.PipingModelTypeSpecified)
+ {
+ calculationSpecification.PipingModelType = ConversionHelper.ConvertToPipingModelType(input.PipingModelType);
+ }
+
+ if (input.StabilityModelTypeSpecified)
+ {
+ calculationSpecification.StabilityModelType = ConversionHelper.ConvertToStabilityModelType(input.StabilityModelType);
+ }
+ damProjectData.DamProjectCalculationSpecification.DamCalculationSpecifications.Add(calculationSpecification);
+ }
+
private static void ValidateInput(Input input)
{
if (input == null)
Index: dam engine/trunk/src/Deltares.DamEngine.Io/DamInput.cs
===================================================================
diff -u -r601 -r613
--- dam engine/trunk/src/Deltares.DamEngine.Io/DamInput.cs (.../DamInput.cs) (revision 601)
+++ dam engine/trunk/src/Deltares.DamEngine.Io/DamInput.cs (.../DamInput.cs) (revision 613)
@@ -37,6 +37,20 @@
private InputDamProjectType damProjectTypeField;
+ private int failureMechanismSystemTypeField;
+
+ private InputPipingModelType pipingModelTypeField;
+
+ private bool pipingModelTypeFieldSpecified;
+
+ private InputStabilityModelType stabilityModelTypeField;
+
+ private bool stabilityModelTypeFieldSpecified;
+
+ private InputAnalysisType analysisTypeField;
+
+ private bool analysisTypeFieldSpecified;
+
///
[System.Xml.Serialization.XmlArrayItemAttribute(IsNullable=false)]
public Location[] Locations {
@@ -113,6 +127,83 @@
this.damProjectTypeField = value;
}
}
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public int FailureMechanismSystemType {
+ get {
+ return this.failureMechanismSystemTypeField;
+ }
+ set {
+ this.failureMechanismSystemTypeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public InputPipingModelType PipingModelType {
+ get {
+ return this.pipingModelTypeField;
+ }
+ set {
+ this.pipingModelTypeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool PipingModelTypeSpecified {
+ get {
+ return this.pipingModelTypeFieldSpecified;
+ }
+ set {
+ this.pipingModelTypeFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public InputStabilityModelType StabilityModelType {
+ get {
+ return this.stabilityModelTypeField;
+ }
+ set {
+ this.stabilityModelTypeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool StabilityModelTypeSpecified {
+ get {
+ return this.stabilityModelTypeFieldSpecified;
+ }
+ set {
+ this.stabilityModelTypeFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public InputAnalysisType AnalysisType {
+ get {
+ return this.analysisTypeField;
+ }
+ set {
+ this.analysisTypeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool AnalysisTypeSpecified {
+ get {
+ return this.analysisTypeFieldSpecified;
+ }
+ set {
+ this.analysisTypeFieldSpecified = value;
+ }
+ }
}
///
@@ -2291,4 +2382,49 @@
///
NWO,
}
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
+ public enum InputPipingModelType {
+
+ ///
+ Bligh,
+
+ ///
+ SellmeijerVnk,
+
+ ///
+ Sellmeijer4Forces,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
+ public enum InputStabilityModelType {
+
+ ///
+ Bishop,
+
+ ///
+ UpliftVan,
+
+ ///
+ BishopUpliftVan,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
+ public enum InputAnalysisType {
+
+ ///
+ NoAdaption,
+
+ ///
+ AdaptGeometry,
+ }
}