Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs
===================================================================
diff -u -r603 -r618
--- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 603)
+++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 618)
@@ -44,9 +44,10 @@
ValidateDamProjectData(damProjectData);
Input input = new Input();
- input.DamProjectType = ConversionHelper.ConvertToInputDamProjectType(damProjectData.DamProjectType);
Dike dike = damProjectData.WaterBoard.Dikes[0];
+ TransferAnalysisSpecification(damProjectData, input);
+
// Process locations
input.Locations = new DamEngine.Io.XmlInput.Location[dike.Locations.Count];
TransferLocations(dike.Locations, input.Locations);
@@ -85,6 +86,33 @@
return input;
}
+ private static void TransferAnalysisSpecification(DamProjectData damProjectData, Input input)
+ {
+ input.DamProjectType = ConversionHelper.ConvertToInputDamProjectType(damProjectData.DamProjectType);
+ if (damProjectData.DamProjectCalculationSpecification.CurrentSpecification != null)
+ {
+ 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.WaterBoard == null)
@@ -231,7 +259,7 @@
inputDesignScenario.PlLineOffsetBelowShoulderBaseInside = designScenario.PlLineOffsetBelowShoulderBaseInside ?? 0.0;
inputDesignScenario.PlLineOffsetBelowDikeToeAtPolderSpecified = designScenario.PlLineOffsetBelowDikeToeAtPolder.HasValue;
inputDesignScenario.PlLineOffsetBelowDikeToeAtPolder = designScenario.PlLineOffsetBelowDikeToeAtPolder ?? 0.0;
- inputDesignScenario.PlLineOffsetBelowDikeCrestMiddleSpecified = designScenario.UsePlLineOffsetBelowDikeCrestMiddle?? false;
+ inputDesignScenario.PlLineOffsetBelowDikeCrestMiddleSpecified = designScenario.UsePlLineOffsetBelowDikeCrestMiddle ?? false;
inputDesignScenario.PlLineOffsetBelowDikeCrestMiddle = designScenario.PlLineOffsetBelowDikeCrestMiddle ?? 0.0;
inputDesignScenario.PlLineOffsetFactorBelowShoulderCrestSpecified = designScenario.UsePlLineOffsetFactorBelowShoulderCrest ?? false;
inputDesignScenario.PlLineOffsetFactorBelowShoulderCrest = designScenario.PlLineOffsetFactorBelowShoulderCrest ?? 0.0;
Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/ConversionHelper.cs
===================================================================
diff -u -r615 -r618
--- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 615)
+++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 618)
@@ -363,5 +363,96 @@
};
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.Sellmeijer, InputPipingModelType.SellmeijerVnk},
+ {PipingModelType.Sellmeijer4Forces, InputPipingModelType.Sellmeijer4Forces}
+ };
+ 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.Sellmeijer},
+ {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];
+ }
}
}
Index: dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs
===================================================================
diff -u -r603 -r618
--- dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 603)
+++ dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 618)
@@ -28,6 +28,7 @@
using Deltares.Geometry;
using Deltares.Geotechnics.Soils;
using Deltares.Geotechnics.SurfaceLines;
+using Deltares.Standard.EventPublisher;
using KellermanSoftware.CompareNetObjects;
using NUnit.Framework;
using Location = Deltares.Dam.Data.Location;
@@ -40,13 +41,22 @@
[TestFixture]
public class FillXmlInputFromDamUiTests
{
+ const AnalysisType expectedAnalysisType = AnalysisType.AdaptGeometry;
+ const AnalysisType notExpectedAnalysisType = AnalysisType.NoAdaption;
[Test]
public void CanWriteAndReadDamProjectDataToXmlFile()
{
const string inputFilename = "InputFile.xml";
DamProjectData expectedDamProjectData = CreateExampleDamProjectData();
+
+ // Write input file
Input input = FillXmlInputFromDamUi.CreateInput(expectedDamProjectData);
DamXmlSerialization.SaveInputAsXmlFile(inputFilename, input);
+
+ // Init static that is to be loaded with not expected value
+ DamProjectCalculationSpecification.SelectedAnalysisType = notExpectedAnalysisType;
+
+ // Load input file
input = DamXmlSerialization.LoadInputFromXmlFile(inputFilename);
DamProjectData actualDamProjectData = FillDamUiFromXmlInput.CreateDamProjectData(input);
CompareDamProjectData(actualDamProjectData, expectedDamProjectData);
@@ -55,9 +65,17 @@
[Test]
public void CanWriteAndReadDamProjectDataToXmlString()
{
+ DataEventPublisher.IsDataEventPublishStopped = true;
DamProjectData expectedDamProjectData = CreateExampleDamProjectData();
+
+ // Write input string
Input input = FillXmlInputFromDamUi.CreateInput(expectedDamProjectData);
string inputXml = DamXmlSerialization.SaveInputAsXmlString(input);
+
+ // Init static that is to be loaded with not expected value
+ DamProjectCalculationSpecification.SelectedAnalysisType = notExpectedAnalysisType;
+
+ // Load input string
input = DamXmlSerialization.LoadInputFromXmlString(inputXml);
DamProjectData actualDamProjectData = FillDamUiFromXmlInput.CreateDamProjectData(input);
CompareDamProjectData(actualDamProjectData, expectedDamProjectData);
@@ -66,7 +84,7 @@
private DamProjectData CreateExampleDamProjectData()
{
var damProjectData = new DamProjectData();
- damProjectData.DamProjectType = DamProjectType.Design;
+ FillAnalysisSpecification(damProjectData);
damProjectData.WaterBoard = new WaterBoard();
damProjectData.WaterBoard.Dikes = new List();
damProjectData.WaterBoard.Dikes.Add(new Dike());
@@ -79,6 +97,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;
@@ -269,8 +298,9 @@
"SheetPilePointZ",
"LocalXZSheetPilePoint",
"SoilbaseDB",
- "LocalXZSurfaceLine",
"SoildatabaseName",
+ "WaterBoardJob",
+ "LocationJobs",
"MapForSoilGeometries2D"
};
var result = compare.Compare(expected, actual);
Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs
===================================================================
diff -u -r603 -r618
--- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 603)
+++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 618)
@@ -46,13 +46,14 @@
{
ValidateInput(input);
var damProjectData = new DamProjectData();
- damProjectData.DamProjectType = ConversionHelper.ConvertToDamProjectType(input.DamProjectType);
damProjectData.WaterBoard = new WaterBoard();
damProjectData.WaterBoard.Dikes = new List();
damProjectData.WaterBoard.Dikes.Add(new Dike());
Dike dike = damProjectData.WaterBoard.Dikes[0];
+ TransferAnalysisSpecification(input, damProjectData);
+
var localSurfaceLines = new List();
TransferSurfaceLines(input.SurfaceLines, localSurfaceLines);
dike.SoilList = new SoilList();
@@ -63,6 +64,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)