Index: DamClients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs =================================================================== diff -u -r3166 -r3282 --- DamClients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 3166) +++ DamClients/DamUI/trunk/src/Dam/Tests/DamEngineIo/FillXmlInputFromDamUiTests.cs (.../FillXmlInputFromDamUiTests.cs) (revision 3282) @@ -188,6 +188,12 @@ selectedSegmentTwoName }, input.Segments.Select(segment => segment.Name)); + DamEngine.Io.XmlInput.Segment segmentWith1DProfile = input.Segments.Single(s => string.Equals(s.Name, selectedSegmentOneName)); + Assert.IsTrue(segmentWith1DProfile.SoilGeometryProbability.All(prob => prob.SoilProfileType == ConversionHelper.ConvertToInputSoilProfileType(SoilProfileType.SoilProfile1D))); + + DamEngine.Io.XmlInput.Segment segmentWith2DProfile = input.Segments.Single(s => string.Equals(s.Name, selectedSegmentTwoName)); + Assert.IsTrue(segmentWith2DProfile.SoilGeometryProbability.All(prob => prob.SoilProfileType == ConversionHelper.ConvertToInputSoilProfileType(SoilProfileType.SoilProfile2D))); + CollectionAssert.AreEquivalent(new[] { firstSoilProfile1DName, @@ -278,6 +284,11 @@ selectedSegmentOneName, selectedSegmentTwoName }, input.Segments.Select(segment => segment.Name)); + + var segmentWith2DProfile = input.Segments.Where(s => string.Equals(s.Name, selectedSegmentOneName) || string.Equals(s.Name, selectedSegmentTwoName)); + var probabilities = segmentWith2DProfile.SelectMany(p => p.SoilGeometryProbability); + Assert.IsTrue(probabilities.All(prob => prob.SoilProfileType == ConversionHelper.ConvertToInputSoilProfileType(SoilProfileType.SoilProfile2D))); + CollectionAssert.AreEquivalent(new[] { segmentOneSoilProfileName, @@ -350,6 +361,11 @@ selectedSegmentOneName, selectedSegmentTwoName }, input.Segments.Select(segment => segment.Name)); + + var segmentWith2DProfile = input.Segments.Where(s => string.Equals(s.Name, selectedSegmentOneName) || string.Equals(s.Name, selectedSegmentTwoName)); + var probabilities = segmentWith2DProfile.SelectMany(p => p.SoilGeometryProbability); + Assert.IsTrue(probabilities.All(prob => prob.SoilProfileType == ConversionHelper.ConvertToInputSoilProfileType(SoilProfileType.SoilProfile2D))); + CollectionAssert.AreEquivalent(new[] { soilProfileName @@ -443,6 +459,9 @@ segmentOneSoilProfileName }, input.SoilProfiles2D.Select(profile => profile.Name)); + DamEngine.Io.XmlInput.Segment segmentWith2DProfile = input.Segments.Single(s => string.Equals(s.Name, selectedSegmentOneName)); + Assert.IsTrue(segmentWith2DProfile.SoilGeometryProbability.All(prob => prob.SoilProfileType == ConversionHelper.ConvertToInputSoilProfileType(SoilProfileType.SoilProfile2D))); + Assert.That(LogManager.Messages, Has.Count.EqualTo(1)); Assert.That(LogManager.Messages[0].Message, new StartsWithConstraint($"Location '{selectedLocationTwoName}': The calculation failed with error message:")); @@ -533,6 +552,9 @@ segmentOneSoilProfileName }, input.SoilProfiles2D.Select(profile => profile.Name)); + DamEngine.Io.XmlInput.Segment segmentWith2DProfile = input.Segments.Single(s => string.Equals(s.Name, selectedSegmentOneName)); + Assert.IsTrue(segmentWith2DProfile.SoilGeometryProbability.All(prob => prob.SoilProfileType == ConversionHelper.ConvertToInputSoilProfileType(SoilProfileType.SoilProfile2D))); + Assert.That(LogManager.Messages, Has.Count.EqualTo(2)); Assert.That(LogManager.Messages[0].Message, new StartsWithConstraint($"Location '{selectedLocationTwoName}', design scenario 'InvalidScenarioOne': The calculation failed with error message:")); Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs =================================================================== diff -u -r3168 -r3282 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 3168) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillXmlInputFromDamUi.cs (.../FillXmlInputFromDamUi.cs) (revision 3282) @@ -705,7 +705,13 @@ break; } - inputSoilGeometryProbability.SoilProfileType = ConversionHelper.ConvertToInputSoilProfileType(soilGeometryProbability.SoilProfileType); + + // When the soil profile type is of type sti, it needs to be converted to SoilProfile type 2D for the DamEngine input + // This modification is necessary because the soilprofile 2D is now loaded at the DAM UI side and not at the DamEngine + // However, this does cause a mismatch of the SoilProfileType as per default a 2D is set as a sti on the DAM UI + inputSoilGeometryProbability.SoilProfileType = soilGeometryProbability.SoilProfileType == SoilProfileType.SoilGeometryStiFile + ? ConversionHelper.ConvertToInputSoilProfileType(SoilProfileType.SoilProfile2D) + : ConversionHelper.ConvertToInputSoilProfileType(soilGeometryProbability.SoilProfileType); inputSegment.SoilGeometryProbability[i] = inputSoilGeometryProbability; } } Index: DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlInput.cs =================================================================== diff -u -r2954 -r3282 --- DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 2954) +++ DamClients/DamUI/trunk/src/DamClientsLibrary/Deltares.Dam.Data/DamEngineIo/FillDamUiFromXmlInput.cs (.../FillDamUiFromXmlInput.cs) (revision 3282) @@ -578,7 +578,15 @@ { soilGeometryProbability.SoilGeometry2DName = inputSoilGeometryProbability.SoilProfileName; } - if (soilGeometryProbability.SoilProfileType != ConversionHelper.ConvertToSoilProfileType(inputSoilGeometryProbability.SoilProfileType)) + + + // When the soil profile type is of type SoilProfile2D, it needs to be converted BACK to sti for the DAM UI. + // This modification is necessary because the soil profile 2D is now loaded at the DAM UI side and not at the DamEngine + // However, this does cause a mismatch of the SoilProfileType as per default a 2D is set as a sti on the DAM UI + SoilProfileType expectedSoilProfileType = inputSoilGeometryProbability.SoilProfileType == 1 + ? ConversionHelper.ConvertToSoilProfileType(2) + : ConversionHelper.ConvertToSoilProfileType(inputSoilGeometryProbability.SoilProfileType); + if (soilGeometryProbability.SoilProfileType != expectedSoilProfileType) { throw new ConversionException(typeof(SegmentSoilGeometryProbability), soilGeometryProbability.SoilProfileType); }