Index: dam engine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs =================================================================== diff -u -r563 -r566 --- dam engine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 563) +++ dam engine/trunk/src/Deltares.DamEngine.Interface/FillXmlInputFromDam.cs (.../FillXmlInputFromDam.cs) (revision 566) @@ -381,8 +381,13 @@ inputSoilGeometryProbability.Probability = soilGeometryProbability.Probability; if (soilGeometryProbability.SegmentFailureMechanismType.HasValue) { - //inputSoilGeometryProbability.SegmentFailureMechanismType = soilGeometryProbability.FailureMechanismSystemType; + inputSoilGeometryProbability.FailureMechanismSystemType = ConversionHelper.ConvertToInputFailureMechanismSystemType(soilGeometryProbability.SegmentFailureMechanismType.Value); + inputSoilGeometryProbability.FailureMechanismSystemTypeSpecified = true; } + else + { + inputSoilGeometryProbability.FailureMechanismSystemTypeSpecified = false; + } if (soilGeometryProbability.SoilGeometryType == SoilGeometryType.SoilGeometry1D) { inputSoilGeometryProbability.SoilGeometryName = soilGeometryProbability.SoilGeometry1DName; @@ -391,6 +396,7 @@ { inputSoilGeometryProbability.SoilGeometryName = soilGeometryProbability.SoilGeometry2DName; } + inputSoilGeometryProbability.SoilGeometryType = ConversionHelper.ConvertToInputSoilGeometryType(soilGeometryProbability.SoilGeometryType); inputSegment.SoilGeometryProbability[i] = inputSoilGeometryProbability; } } Index: dam engine/trunk/src/Deltares.DamEngine.Interface/ConversionHelper.cs =================================================================== diff -u -r530 -r566 --- dam engine/trunk/src/Deltares.DamEngine.Interface/ConversionHelper.cs (.../ConversionHelper.cs) (revision 530) +++ dam engine/trunk/src/Deltares.DamEngine.Interface/ConversionHelper.cs (.../ConversionHelper.cs) (revision 566) @@ -286,5 +286,59 @@ }; return translationTable[waterpressureInterpolationModel]; } + + /// + /// Converts the type of to input soil geometry. + /// + /// Type of the soil geometry. + /// + public static SegmentSoilGeometryProbabilitySoilGeometryType ConvertToInputSoilGeometryType(SoilGeometryType soilGeometryType) + { + var translationTable = new Dictionary() + { + {SoilGeometryType.SoilGeometry1D, SegmentSoilGeometryProbabilitySoilGeometryType.SoilGeometry1D}, + {SoilGeometryType.SoilGeometry2D, SegmentSoilGeometryProbabilitySoilGeometryType.SoilGeometry2D} + }; + return translationTable[soilGeometryType]; + } + + /// + /// Converts the type of to soil geometry. + /// + /// Type of the soil geometry. + /// + public static SoilGeometryType ConvertToSoilGeometryType(SegmentSoilGeometryProbabilitySoilGeometryType soilGeometryType) + { + var translationTable = new Dictionary() + { + {SegmentSoilGeometryProbabilitySoilGeometryType.SoilGeometry1D, SoilGeometryType.SoilGeometry1D}, + {SegmentSoilGeometryProbabilitySoilGeometryType.SoilGeometry2D, SoilGeometryType.SoilGeometry2D} + }; + return translationTable[soilGeometryType]; + } + + public static SegmentSoilGeometryProbabilityFailureMechanismSystemType ConvertToInputFailureMechanismSystemType(FailureMechanismSystemType segmentFailureMechanismType) + { + var translationTable = new Dictionary() + { + {FailureMechanismSystemType.StabilityInside, SegmentSoilGeometryProbabilityFailureMechanismSystemType.StabilityInside}, + {FailureMechanismSystemType.StabilityOutside, SegmentSoilGeometryProbabilityFailureMechanismSystemType.StabilityOutside}, + {FailureMechanismSystemType.Piping, SegmentSoilGeometryProbabilityFailureMechanismSystemType.Piping}, + {FailureMechanismSystemType.HorizontalBalance, SegmentSoilGeometryProbabilityFailureMechanismSystemType.HorizontalBalance} + }; + return translationTable[segmentFailureMechanismType]; + } + + public static FailureMechanismSystemType ConvertToFailureMechanismSystemType(SegmentSoilGeometryProbabilityFailureMechanismSystemType failureMechanismSystemType) + { + var translationTable = new Dictionary() + { + {SegmentSoilGeometryProbabilityFailureMechanismSystemType.StabilityInside, FailureMechanismSystemType.StabilityInside}, + {SegmentSoilGeometryProbabilityFailureMechanismSystemType.StabilityOutside, FailureMechanismSystemType.StabilityOutside}, + {SegmentSoilGeometryProbabilityFailureMechanismSystemType.Piping, FailureMechanismSystemType.Piping}, + {SegmentSoilGeometryProbabilityFailureMechanismSystemType.HorizontalBalance, FailureMechanismSystemType.HorizontalBalance} + }; + return translationTable[failureMechanismSystemType]; + } } } \ No newline at end of file Index: dam engine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r564 -r566 --- dam engine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 564) +++ dam engine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 566) @@ -27,6 +27,7 @@ using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Io.XmlInput; +using ConversionException = Deltares.DamEngine.Data.Standard.ConversionException; using Location = Deltares.DamEngine.Data.General.Location; using Segment = Deltares.DamEngine.Data.General.Segment; using Soil = Deltares.DamEngine.Io.XmlInput.Soil; @@ -108,12 +109,12 @@ { if (segmentSoilProfileProbability.SoilGeometryType == SoilGeometryType.SoilGeometry1D) { - segmentSoilProfileProbability.SoilProfile = FindSoilProfile1DByName(project.Dike.SoilProfiles, + segmentSoilProfileProbability.SoilProfile = FindSoilProfile1DByName(project.Dike.SoilProfiles, segmentSoilProfileProbability.SoilGeometry1DName); } else { - segmentSoilProfileProbability.SoilProfile2D = FindSoilProfile2DByName(project.Dike.SoilProfiles2D, + segmentSoilProfileProbability.SoilProfile2D = FindSoilProfile2DByName(project.Dike.SoilProfiles2D, segmentSoilProfileProbability.SoilGeometry2DName); } } @@ -367,8 +368,12 @@ soilGeometryProbability.Probability = inputSoilGeometryProbability.Probability; if (inputSoilGeometryProbability.FailureMechanismSystemTypeSpecified) { - //soilGeometryProbability.SegmentFailureMechanismType = inputSoilGeometryProbability.FailureMechanismSystemType; + soilGeometryProbability.SegmentFailureMechanismType = ConversionHelper.ConvertToFailureMechanismSystemType(inputSoilGeometryProbability.FailureMechanismSystemType); } + else + { + soilGeometryProbability.SegmentFailureMechanismType = null; + } if (inputSoilGeometryProbability.SoilGeometryType == SegmentSoilGeometryProbabilitySoilGeometryType.SoilGeometry1D) { soilGeometryProbability.SoilGeometry1DName = inputSoilGeometryProbability.SoilGeometryName; @@ -377,11 +382,21 @@ { soilGeometryProbability.SoilGeometry2DName = inputSoilGeometryProbability.SoilGeometryName; } + if (soilGeometryProbability.SoilGeometryType != ConversionHelper.ConvertToSoilGeometryType(inputSoilGeometryProbability.SoilGeometryType)) + { + throw new ConversionException(typeof(SegmentSoilGeometryProbabilitySoilGeometryType), soilGeometryProbability.SoilGeometryType); + } segment.SoilProfileProbabilities.Add(soilGeometryProbability); } } - private static SoilProfile1D FindSoilProfile1DByName(IList soilProfiles, string name) + /// + /// Finds the SoilProfile1D by name. + /// + /// The soil profiles. + /// The name. + /// + public static SoilProfile1D FindSoilProfile1DByName(IList soilProfiles, string name) { foreach (var soilProfile1D in soilProfiles) { @@ -391,7 +406,13 @@ return null; } - private static SoilProfile2D FindSoilProfile2DByName(IList soilProfiles, string name) + /// + /// Finds the SoilProfile2D by name. + /// + /// The soil profiles. + /// The name. + /// + public static SoilProfile2D FindSoilProfile2DByName(IList soilProfiles, string name) { foreach (var soilProfile2D in soilProfiles) { Index: dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/TestFiles/InputFile.xml =================================================================== diff -u -r557 -r566 --- dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/TestFiles/InputFile.xml (.../InputFile.xml) (revision 557) +++ dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/TestFiles/InputFile.xml (.../InputFile.xml) (revision 566) @@ -69,6 +69,14 @@ + + + + + + + + Index: dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs =================================================================== diff -u -r564 -r566 --- dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 564) +++ dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 566) @@ -314,11 +314,15 @@ { soilProfileProbability.SegmentFailureMechanismType = FailureMechanismSystemType.StabilityInside; soilProfileProbability.SoilGeometry2DName = "Profile2D " + (i + 1).ToString(); + soilProfileProbability.SoilProfile2D = FillDamFromXmlInput.FindSoilProfile2DByName(damProjectData.Dike.SoilProfiles2D, + soilProfileProbability.SoilGeometry2DName); } else { soilProfileProbability.SegmentFailureMechanismType = FailureMechanismSystemType.Piping; soilProfileProbability.SoilGeometry1DName = "Profile1D " + (i + 1).ToString(); + soilProfileProbability.SoilProfile = FillDamFromXmlInput.FindSoilProfile1DByName(damProjectData.Dike.SoilProfiles, + soilProfileProbability.SoilGeometry1DName); } soilProfileProbability.Probability = 0.003 * (i + 1); segment.SoilProfileProbabilities.Add(soilProfileProbability); Index: dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/ConversionHelperTests.cs =================================================================== diff -u -r530 -r566 --- dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 530) +++ dam engine/trunk/src/Deltares.DamEngine.Interface.Tests/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 566) @@ -183,11 +183,39 @@ } [Test] - [TestCase(WaterpressureInterpolationModel.Automatic, 0)] - [TestCase(WaterpressureInterpolationModel.Hydrostatic, 1)] - public void CanConvertToInputWaterpressureInterpolationModel(WaterpressureInterpolationModel inputInterpolationModel, int interpolationModel) + [TestCase(SoilGeometryType.SoilGeometry1D, SegmentSoilGeometryProbabilitySoilGeometryType.SoilGeometry1D)] + [TestCase(SoilGeometryType.SoilGeometry2D, SegmentSoilGeometryProbabilitySoilGeometryType.SoilGeometry2D)] + public void CanConvertToInputSoilGeometryType(SoilGeometryType soilGeometryType, SegmentSoilGeometryProbabilitySoilGeometryType inputSoilGeometryType) { - Assert.AreEqual(interpolationModel, ConversionHelper.ConvertToInputWaterpressureInterpolationModel(inputInterpolationModel)); + Assert.AreEqual(inputSoilGeometryType, ConversionHelper.ConvertToInputSoilGeometryType(soilGeometryType)); } + + [Test] + [TestCase(SegmentSoilGeometryProbabilitySoilGeometryType.SoilGeometry1D, SoilGeometryType.SoilGeometry1D)] + [TestCase(SegmentSoilGeometryProbabilitySoilGeometryType.SoilGeometry2D, SoilGeometryType.SoilGeometry2D)] + public void CanConvertToSoilGeometryType(SegmentSoilGeometryProbabilitySoilGeometryType inputSoilGeometryType, SoilGeometryType soilGeometryType) + { + Assert.AreEqual(soilGeometryType, ConversionHelper.ConvertToSoilGeometryType(inputSoilGeometryType)); + } + + [Test] + [TestCase(SegmentSoilGeometryProbabilityFailureMechanismSystemType.StabilityInside, FailureMechanismSystemType.StabilityInside)] + [TestCase(SegmentSoilGeometryProbabilityFailureMechanismSystemType.StabilityOutside, FailureMechanismSystemType.StabilityOutside)] + [TestCase(SegmentSoilGeometryProbabilityFailureMechanismSystemType.Piping, FailureMechanismSystemType.Piping)] + [TestCase(SegmentSoilGeometryProbabilityFailureMechanismSystemType.HorizontalBalance, FailureMechanismSystemType.HorizontalBalance)] + public void CanConvertToInputFailureMechanismSystemType(FailureMechanismSystemType failureMechanismSystemType, SegmentSoilGeometryProbabilityFailureMechanismSystemType inputFailureMechanismSystemType) + { + Assert.AreEqual(inputFailureMechanismSystemType, ConversionHelper.ConvertToInputFailureMechanismSystemType(failureMechanismSystemType)); + } + + [Test] + [TestCase(FailureMechanismSystemType.StabilityInside, SegmentSoilGeometryProbabilityFailureMechanismSystemType.StabilityInside)] + [TestCase(FailureMechanismSystemType.StabilityOutside, SegmentSoilGeometryProbabilityFailureMechanismSystemType.StabilityOutside)] + [TestCase(FailureMechanismSystemType.Piping, SegmentSoilGeometryProbabilityFailureMechanismSystemType.Piping)] + [TestCase(FailureMechanismSystemType.HorizontalBalance, SegmentSoilGeometryProbabilityFailureMechanismSystemType.HorizontalBalance)] + public void CanConvertToFailureMechanismSystemType(SegmentSoilGeometryProbabilityFailureMechanismSystemType inputFailureMechanismSystemType, FailureMechanismSystemType failureMechanismSystemType) + { + Assert.AreEqual(inputFailureMechanismSystemType, ConversionHelper.ConvertToInputFailureMechanismSystemType(failureMechanismSystemType)); + } } }