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)