Index: dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs =================================================================== diff -u -r726 -r732 --- dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 726) +++ dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 732) @@ -85,6 +85,7 @@ { var damProjectData = new DamProjectData(); FillAnalysisSpecification(damProjectData); + FillStabilityParameters(damProjectData); damProjectData.WaterBoard = new WaterBoard(); damProjectData.WaterBoard.Dikes = new List(); damProjectData.WaterBoard.Dikes.Add(new Dike()); @@ -112,6 +113,38 @@ damProjectData.DamProjectCalculationSpecification.DamCalculationSpecifications.Add(calculationSpecification); } + private static void FillStabilityParameters(DamProjectData damProjectData) + { + // Note: DamProjectCalculationSpecification created and filled by FillAnalysisSpecification + var curspec = damProjectData.DamProjectCalculationSpecification.CurrentSpecification; + curspec.FailureMechanismeParamatersMStab = new FailureMechanismeParamatersMStab + { + MStabParameters = new MStabParameters + { + SearchMethod = MStabSearchMethod.Grid, + SlipCircleDefinition = new SlipCircleDefinition + { + GridSizeDetermination = GridSizeDetermination.Specified, + BishopGridHorizontalPointCount = 4, + BishopGridHorizontalPointDistance = 1.2, + BishopGridVerticalPointCount = 5, + BishopGridVerticalPointDistance = 1.1, + BishopTangentLinesDefinition = TangentLinesDefinition.Specified, + BishopTangentLinesDistance = 0.25, + UpliftVanLeftGridHorizontalPointCount = 6, + UpliftVanLeftGridHorizontalPointDistance = 0.7, + UpliftVanLeftGridVerticalPointCount = 3, + UpliftVanLeftGridVerticalPointDistance = 1.3, + UpliftVanRightGridHorizontalPointCount = 8, + UpliftVanRightGridHorizontalPointDistance = 1.76, + UpliftVanRightGridVerticalPointCount = 11, + UpliftVanRightGridVerticalPointDistance = 0.14, + UpliftVanTangentLinesDefinition = TangentLinesDefinition.OnBoundaryLines, + UpliftVanTangentLinesDistance = 0.01 + } + } + }; + } private void FillSoils(Dike dike) { const int soilCount = 3; Index: dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/ConversionHelperTests.cs =================================================================== diff -u -r724 -r732 --- dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 724) +++ dam clients/DamUI/trunk/src/Dam/Tests/DamEngineIo/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 732) @@ -272,5 +272,53 @@ { Assert.AreEqual(logMessageType, ConversionHelper.ConvertToMessageType(messageType)); } + + [Test] + [TestCase(MStabSearchMethod.Grid, ConversionHelper.InputSearchMethodGrid)] + [TestCase(MStabSearchMethod.GeneticAlgorithm, ConversionHelper.InputSearchMethodGenetic)] + public void CanConvertToInputSearchMethod(MStabSearchMethod searchMethod, int inputSearchMethod) + { + Assert.AreEqual(inputSearchMethod, ConversionHelper.ConvertToInputSearchMethod(searchMethod)); + } + + [Test] + [TestCase(ConversionHelper.InputSearchMethodGrid, MStabSearchMethod.Grid)] + [TestCase(ConversionHelper.InputSearchMethodGenetic, MStabSearchMethod.GeneticAlgorithm)] + public void CanConvertToSearchMethod(int inputSearchMethod, MStabSearchMethod searchMethod) + { + Assert.AreEqual(searchMethod, ConversionHelper.ConvertToSearchMethod(inputSearchMethod)); + } + + [Test] + [TestCase(GridSizeDetermination.Automatic, ConversionHelper.InputGridTypeAutomatic)] + [TestCase(GridSizeDetermination.Specified, ConversionHelper.InputGridTypeSpecified)] + public void CanConvertToInputGridSizeDetermination(GridSizeDetermination gridDetermination, int inputGridDetermination) + { + Assert.AreEqual(inputGridDetermination, ConversionHelper.ConvertToInputGridDetermination(gridDetermination)); + } + + [Test] + [TestCase(ConversionHelper.InputGridTypeAutomatic, GridSizeDetermination.Automatic)] + [TestCase(ConversionHelper.InputGridTypeSpecified, GridSizeDetermination.Specified)] + public void CanConvertToGridSizeDetermination(int inputGridDetermination, GridSizeDetermination gridDetermination) + { + Assert.AreEqual(gridDetermination, ConversionHelper.ConvertToGridDetermination(inputGridDetermination)); + } + + [Test] + [TestCase(TangentLinesDefinition.OnBoundaryLines, ConversionHelper.InputTangentLinesOnBoundatyLines)] + [TestCase(TangentLinesDefinition.Specified, ConversionHelper.InputTangentLinesSpecified)] + public void CanConvertToInputTangentLinesDefinition(TangentLinesDefinition tangentLineType, int inputTangentLineType) + { + Assert.AreEqual(inputTangentLineType, ConversionHelper.ConvertToInputTangentLinesDefinition(tangentLineType)); + } + + [Test] + [TestCase(ConversionHelper.InputTangentLinesOnBoundatyLines, TangentLinesDefinition.OnBoundaryLines)] + [TestCase(ConversionHelper.InputTangentLinesSpecified, TangentLinesDefinition.Specified)] + public void CanConvertToTangentLinesDefinition(int inputTangentLineType, TangentLinesDefinition tangentLineType) + { + Assert.AreEqual(tangentLineType, ConversionHelper.ConvertToTangentLinesDefinition(inputTangentLineType)); + } } } Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/ConversionHelper.cs =================================================================== diff -u -r724 -r732 --- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 724) +++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 732) @@ -533,5 +533,150 @@ }; return translationTable[validationResultMessageType]; } + + /// + /// The input search method grid + /// + public const int InputSearchMethodGrid = 0; + + /// + /// The input search method genetic + /// + public const int InputSearchMethodGenetic = 1; + + /// + /// Converts to input search method. + /// + /// The search method. + /// + public static int ConvertToInputSearchMethod(MStabSearchMethod searchMethod) + { + var translationTable = new Dictionary() + { + { + MStabSearchMethod.Grid, InputSearchMethodGrid + }, + { + MStabSearchMethod.GeneticAlgorithm, InputSearchMethodGenetic + } + }; + return translationTable[searchMethod]; + } + + /// + /// Converts to search method. + /// + /// The search method. + /// + public static MStabSearchMethod ConvertToSearchMethod(int searchMethod) + { + var translationTable = new Dictionary() + { + { + InputSearchMethodGrid, MStabSearchMethod.Grid + }, + { + InputSearchMethodGenetic, MStabSearchMethod.GeneticAlgorithm + } + }; + return translationTable[searchMethod]; + } + + /// + /// The input grid type automatic + /// + public const int InputGridTypeAutomatic = 0; + + /// + /// The input grid type specified + /// + public const int InputGridTypeSpecified = 1; + + /// + /// Converts to input grid determination. + /// + /// Type of the grid. + /// + public static int ConvertToInputGridDetermination(GridSizeDetermination gridType) + { + var translationTable = new Dictionary() + { + { + GridSizeDetermination.Automatic, InputGridTypeAutomatic + }, + { + GridSizeDetermination.Specified, InputGridTypeSpecified + } + }; + + return translationTable[gridType]; + } + + /// + /// Converts to grid determination. + /// + /// Type of the grid. + /// + public static GridSizeDetermination ConvertToGridDetermination(int gridType) + { + var translationTable = new Dictionary() + { + { + InputGridTypeAutomatic, GridSizeDetermination.Automatic + }, + { + InputGridTypeSpecified, GridSizeDetermination.Specified + } + }; + return translationTable[gridType]; + } + + /// + /// The input tangent lines on boundaty lines + /// + public const int InputTangentLinesOnBoundatyLines = 0; + + /// + /// The input tangent lines specified + /// + public const int InputTangentLinesSpecified = 1; + + /// + /// Converts to input tangent lines definition. + /// + /// Type of the tangent line. + /// + public static int ConvertToInputTangentLinesDefinition(TangentLinesDefinition tangentLineType) + { + var translationTable = new Dictionary() + { + { + TangentLinesDefinition.OnBoundaryLines, InputGridTypeAutomatic + }, + { + TangentLinesDefinition.Specified, InputGridTypeSpecified + } + }; + return translationTable[tangentLineType]; + } + + /// + /// Converts to tangent lines definition. + /// + /// Type of the tangent line. + /// + public static TangentLinesDefinition ConvertToTangentLinesDefinition(int tangentLineType) + { + var translationTable = new Dictionary() + { + { + InputGridTypeAutomatic, TangentLinesDefinition.OnBoundaryLines + }, + { + InputGridTypeSpecified, TangentLinesDefinition.Specified + } + }; + return translationTable[tangentLineType]; + } } } Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs =================================================================== diff -u -r714 -r732 --- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 714) +++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 732) @@ -53,6 +53,7 @@ Dike dike = damProjectData.WaterBoard.Dikes[0]; TransferAnalysisSpecification(input, damProjectData); + TransferStabilityParameters(input, damProjectData); var localSurfaceLines = new List(); TransferSurfaceLines(input.SurfaceLines, localSurfaceLines); @@ -89,6 +90,89 @@ damProjectData.DamProjectCalculationSpecification.DamCalculationSpecifications.Add(calculationSpecification); } + private static void TransferStabilityParameters(Input input, DamProjectData damProjectData) + { + if (input.StabilityParameters != null) + { + var curSpec = damProjectData.DamProjectCalculationSpecification?.CurrentSpecification; + if (curSpec != null) + { + curSpec.FailureMechanismeParamatersMStab = new FailureMechanismeParamatersMStab(); + curSpec.FailureMechanismeParamatersMStab.MStabParameters = new MStabParameters(); + var curStabParamas = curSpec.FailureMechanismeParamatersMStab.MStabParameters; + curStabParamas.SearchMethod = ConversionHelper.ConvertToSearchMethod(input.StabilityParameters.SearchMethod); + curStabParamas.SlipCircleDefinition = new SlipCircleDefinition(); + var slipCircleDefinition = curStabParamas.SlipCircleDefinition; + slipCircleDefinition.GridSizeDetermination = ConversionHelper.ConvertToGridDetermination(input.StabilityParameters.GridDetermination); + + if (input.StabilityParameters.BishopTangentLinesDefinitionSpecified) + { + slipCircleDefinition.BishopTangentLinesDefinition = ConversionHelper.ConvertToTangentLinesDefinition(input.StabilityParameters.BishopTangentLinesDefinition); + } + if (input.StabilityParameters.BishopTangentLinesDistanceSpecified) + { + slipCircleDefinition.BishopTangentLinesDistance = input.StabilityParameters.BishopTangentLinesDistance; + } + if (input.StabilityParameters.BishopGridVerticalPointsCountSpecified) + { + slipCircleDefinition.BishopGridVerticalPointCount = input.StabilityParameters.BishopGridVerticalPointsCount; + } + if (input.StabilityParameters.BishopGridVerticalPointsDistanceSpecified) + { + slipCircleDefinition.BishopGridVerticalPointDistance = input.StabilityParameters.BishopGridVerticalPointsDistance; + } + if (input.StabilityParameters.BishopGridHorizontalPointsCountSpecified) + { + slipCircleDefinition.BishopGridHorizontalPointCount = input.StabilityParameters.BishopGridHorizontalPointsCount; + } + if (input.StabilityParameters.BishopGridHorizontalPointsDistanceSpecified) + { + slipCircleDefinition.BishopGridHorizontalPointDistance = input.StabilityParameters.BishopGridHorizontalPointsDistance; + } + if (input.StabilityParameters.UpliftVanTangentLinesDefinitionSpecified) + { + slipCircleDefinition.UpliftVanTangentLinesDefinition = ConversionHelper.ConvertToTangentLinesDefinition(input.StabilityParameters.UpliftVanTangentLinesDefinition); + } + if (input.StabilityParameters.UpliftVanTangentLinesDistanceSpecified) + { + slipCircleDefinition.UpliftVanTangentLinesDistance = input.StabilityParameters.UpliftVanTangentLinesDistance; + } + if (input.StabilityParameters.UpliftVanGridLeftVerticalPointsCountSpecified) + { + slipCircleDefinition.UpliftVanLeftGridVerticalPointCount = input.StabilityParameters.UpliftVanGridLeftVerticalPointsCount; + } + if (input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistanceSpecified) + { + slipCircleDefinition.UpliftVanLeftGridVerticalPointDistance = input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistance; + } + if (input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCountSpecified) + { + slipCircleDefinition.UpliftVanLeftGridHorizontalPointCount = input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCount; + } + if (input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistanceSpecified) + { + slipCircleDefinition.UpliftVanLeftGridHorizontalPointDistance = input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistance; + } + if (input.StabilityParameters.UpliftVanGridRightVerticalPointsCountSpecified) + { + slipCircleDefinition.UpliftVanRightGridVerticalPointCount = input.StabilityParameters.UpliftVanGridRightVerticalPointsCount; + } + if (input.StabilityParameters.UpliftVanGridRightVerticalPointsDistanceSpecified) + { + slipCircleDefinition.UpliftVanRightGridVerticalPointDistance = input.StabilityParameters.UpliftVanGridRightVerticalPointsDistance; + } + if (input.StabilityParameters.UpliftVanGridRightHorizontalPointsCountSpecified) + { + slipCircleDefinition.UpliftVanRightGridHorizontalPointCount = input.StabilityParameters.UpliftVanGridRightHorizontalPointsCount; + } + if (input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistanceSpecified) + { + slipCircleDefinition.UpliftVanRightGridHorizontalPointDistance = input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistance; + } + } + } + } + private static void ValidateInput(Input input) { if (input == null) Index: dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs =================================================================== diff -u -r714 -r732 --- dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 714) +++ dam clients/DamUI/trunk/src/Dam/Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 732) @@ -47,6 +47,7 @@ Dike dike = damProjectData.WaterBoard.Dikes[0]; TransferAnalysisSpecification(damProjectData, input); + TransferStabilityParameters(damProjectData, input); // Process locations List localLocations = new List(); @@ -118,6 +119,56 @@ } } + private static void TransferStabilityParameters(DamProjectData damProjectData, Input input) + { + if (damProjectData.DamProjectCalculationSpecification?.CurrentSpecification != null) + { + var curSpec = damProjectData.DamProjectCalculationSpecification?.CurrentSpecification; + if (curSpec.FailureMechanismeParamatersMStab?.MStabParameters != null) + { + input.StabilityParameters = new StabilityParameters(); + input.StabilityParameters.SearchMethod = ConversionHelper.ConvertToInputSearchMethod(curSpec.FailureMechanismeParamatersMStab.MStabParameters.SearchMethod); + var slipCircleDefinition = curSpec.FailureMechanismeParamatersMStab.MStabParameters.SlipCircleDefinition; + if (slipCircleDefinition != null) + { + input.StabilityParameters.GridDetermination = ConversionHelper.ConvertToInputGridDetermination(slipCircleDefinition.GridSizeDetermination); + input.StabilityParameters.BishopTangentLinesDefinitionSpecified = true; + input.StabilityParameters.BishopTangentLinesDefinition = ConversionHelper.ConvertToInputTangentLinesDefinition(slipCircleDefinition.BishopTangentLinesDefinition); + input.StabilityParameters.BishopTangentLinesDistanceSpecified = true; + input.StabilityParameters.BishopTangentLinesDistance = slipCircleDefinition.BishopTangentLinesDistance; + input.StabilityParameters.BishopGridVerticalPointsCountSpecified = true; + input.StabilityParameters.BishopGridVerticalPointsCount = slipCircleDefinition.BishopGridVerticalPointCount; + input.StabilityParameters.BishopGridVerticalPointsDistanceSpecified = true; + input.StabilityParameters.BishopGridVerticalPointsDistance = slipCircleDefinition.BishopGridVerticalPointDistance; + input.StabilityParameters.BishopGridHorizontalPointsCountSpecified = true; + input.StabilityParameters.BishopGridHorizontalPointsCount = slipCircleDefinition.BishopGridHorizontalPointCount; + input.StabilityParameters.BishopGridHorizontalPointsDistanceSpecified = true; + input.StabilityParameters.BishopGridHorizontalPointsDistance = slipCircleDefinition.BishopGridHorizontalPointDistance; + input.StabilityParameters.UpliftVanTangentLinesDefinitionSpecified = true; + input.StabilityParameters.UpliftVanTangentLinesDefinition = ConversionHelper.ConvertToInputTangentLinesDefinition(slipCircleDefinition.UpliftVanTangentLinesDefinition); + input.StabilityParameters.UpliftVanTangentLinesDistanceSpecified = true; + input.StabilityParameters.UpliftVanTangentLinesDistance = slipCircleDefinition.UpliftVanTangentLinesDistance; + input.StabilityParameters.UpliftVanGridLeftVerticalPointsCountSpecified = true; + input.StabilityParameters.UpliftVanGridLeftVerticalPointsCount = slipCircleDefinition.UpliftVanLeftGridVerticalPointCount; + input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistanceSpecified = true; + input.StabilityParameters.UpliftVanGridLeftVerticalPointsDistance = slipCircleDefinition.UpliftVanLeftGridVerticalPointDistance; + input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCountSpecified = true; + input.StabilityParameters.UpliftVanGridLeftHorizontalPointsCount = slipCircleDefinition.UpliftVanLeftGridHorizontalPointCount; + input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistanceSpecified = true; + input.StabilityParameters.UpliftVanGridLeftHorizontalPointsDistance = slipCircleDefinition.UpliftVanLeftGridHorizontalPointDistance; + input.StabilityParameters.UpliftVanGridRightVerticalPointsCountSpecified = true; + input.StabilityParameters.UpliftVanGridRightVerticalPointsCount = slipCircleDefinition.UpliftVanRightGridVerticalPointCount; + input.StabilityParameters.UpliftVanGridRightVerticalPointsDistanceSpecified = true; + input.StabilityParameters.UpliftVanGridRightVerticalPointsDistance = slipCircleDefinition.UpliftVanRightGridVerticalPointDistance; + input.StabilityParameters.UpliftVanGridRightHorizontalPointsCountSpecified = true; + input.StabilityParameters.UpliftVanGridRightHorizontalPointsCount = slipCircleDefinition.UpliftVanRightGridHorizontalPointCount; + input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistanceSpecified = true; + input.StabilityParameters.UpliftVanGridRightHorizontalPointsDistance = slipCircleDefinition.UpliftVanRightGridHorizontalPointDistance; + } + } + } + } + private static void ValidateDamProjectData(DamProjectData damProjectData) { if (damProjectData.WaterBoard == null)