Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/ConversionHelperTests.cs =================================================================== diff -u -r2017 -r2018 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 2017) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 2018) @@ -27,6 +27,8 @@ using Deltares.MacroStability.Geometry; using KellermanSoftware.CompareNetObjects; using NUnit.Framework; +using CharacteristicPointType = Deltares.DamEngine.Data.Geotechnics.CharacteristicPointType; +using ShearStrengthModel = Deltares.DamEngine.Data.Geotechnics.ShearStrengthModel; using Soil = Deltares.DamEngine.Data.Geotechnics.Soil; namespace Deltares.DamEngine.Calculators.Tests.KernelWrappers.MacroStabilityCommon @@ -147,6 +149,36 @@ } #endregion + #region ShearStrengthModel + [TestCase(MacroStability.Geometry.ShearStrengthModel.CPhi, ShearStrengthModel.CPhi)] + [TestCase(MacroStability.Geometry.ShearStrengthModel.CPhiOrCuCalculated, ShearStrengthModel.CPhiOrSuCalculated)] + [TestCase(MacroStability.Geometry.ShearStrengthModel.CuCalculated, ShearStrengthModel.SuCalculated)] + [TestCase(MacroStability.Geometry.ShearStrengthModel.CuGradient, ShearStrengthModel.SuGradient)] + [TestCase(MacroStability.Geometry.ShearStrengthModel.CuMeasured, ShearStrengthModel.SuMeasured)] + [TestCase(MacroStability.Geometry.ShearStrengthModel.None, ShearStrengthModel.None)] + [TestCase(MacroStability.Geometry.ShearStrengthModel.PseudoValues, ShearStrengthModel.PseudoValues)] + [TestCase(MacroStability.Geometry.ShearStrengthModel.StressTable, ShearStrengthModel.StressTable)] + public static void CanConvertToConvertToDamShearStrengthModel( + MacroStability.Geometry.ShearStrengthModel kernelShearStrengthModel, ShearStrengthModel damShearStrengthModel) + { + Assert.AreEqual(damShearStrengthModel, ConversionHelper.ConvertToDamShearStrengthModel(kernelShearStrengthModel)); + } + + [TestCase(ShearStrengthModel.CPhi, MacroStability.Geometry.ShearStrengthModel.CPhi)] + [TestCase(ShearStrengthModel.CPhiOrSuCalculated, MacroStability.Geometry.ShearStrengthModel.CPhiOrCuCalculated)] + [TestCase(ShearStrengthModel.None, MacroStability.Geometry.ShearStrengthModel.None)] + [TestCase(ShearStrengthModel.PseudoValues, MacroStability.Geometry.ShearStrengthModel.PseudoValues)] + [TestCase(ShearStrengthModel.StressTable, MacroStability.Geometry.ShearStrengthModel.StressTable)] + [TestCase(ShearStrengthModel.SuCalculated, MacroStability.Geometry.ShearStrengthModel.CuCalculated)] + [TestCase(ShearStrengthModel.SuGradient, MacroStability.Geometry.ShearStrengthModel.CuGradient)] + [TestCase(ShearStrengthModel.SuMeasured, MacroStability.Geometry.ShearStrengthModel.CuMeasured)] + public static void CanConvertToConvertToMacroStabilityShearStrengthModel( + ShearStrengthModel damShearStrengthModel, MacroStability.Geometry.ShearStrengthModel kernelShearStrengthModel) + { + Assert.AreEqual(kernelShearStrengthModel, ConversionHelper.ConvertToMacroStabilityShearStrengthModel(damShearStrengthModel)); + } + #endregion + #region WaterpressureInterpolationModel [TestCase(Data.Geotechnics.WaterpressureInterpolationModel.Automatic, WaterpressureInterpolationModel.Automatic)] [TestCase(Data.Geotechnics.WaterpressureInterpolationModel.Hydrostatic, WaterpressureInterpolationModel.Hydrostatic)] @@ -165,5 +197,55 @@ } #endregion + #region CharacteristicPointType + [TestCase(CharacteristicPointType.BottomDitchPolderSide, MacroStability.Geometry.CharacteristicPointType.BottomDitchPolderSide)] + [TestCase(CharacteristicPointType.BottomDitchDikeSide, MacroStability.Geometry.CharacteristicPointType.BottomDitchDikeSide)] + [TestCase(CharacteristicPointType.DikeLine, MacroStability.Geometry.CharacteristicPointType.DikeLine)] + [TestCase(CharacteristicPointType.DikeToeAtPolder, MacroStability.Geometry.CharacteristicPointType.DikeToeAtPolder)] + [TestCase(CharacteristicPointType.DikeToeAtRiver, MacroStability.Geometry.CharacteristicPointType.DikeToeAtRiver)] + [TestCase(CharacteristicPointType.DikeTopAtPolder, MacroStability.Geometry.CharacteristicPointType.DikeTopAtPolder)] + [TestCase(CharacteristicPointType.DikeTopAtRiver, MacroStability.Geometry.CharacteristicPointType.DikeTopAtRiver)] + [TestCase(CharacteristicPointType.DitchDikeSide, MacroStability.Geometry.CharacteristicPointType.DitchDikeSide)] + [TestCase(CharacteristicPointType.DitchPolderSide, MacroStability.Geometry.CharacteristicPointType.DitchPolderSide)] + [TestCase(CharacteristicPointType.None, MacroStability.Geometry.CharacteristicPointType.None)] + [TestCase(CharacteristicPointType.ShoulderBaseInside, MacroStability.Geometry.CharacteristicPointType.ShoulderBaseInside)] + [TestCase(CharacteristicPointType.ShoulderBaseOutside, MacroStability.Geometry.CharacteristicPointType.ShoulderBaseOutside)] + [TestCase(CharacteristicPointType.ShoulderTopInside, MacroStability.Geometry.CharacteristicPointType.ShoulderTopInside)] + [TestCase(CharacteristicPointType.ShoulderTopOutside, MacroStability.Geometry.CharacteristicPointType.ShoulderTopOutside)] + [TestCase(CharacteristicPointType.SurfaceLevelInside, MacroStability.Geometry.CharacteristicPointType.SurfaceLevelInside)] + [TestCase(CharacteristicPointType.SurfaceLevelOutside, MacroStability.Geometry.CharacteristicPointType.SurfaceLevelOutside)] + [TestCase(CharacteristicPointType.TrafficLoadInside, MacroStability.Geometry.CharacteristicPointType.TrafficLoadInside)] + [TestCase(CharacteristicPointType.TrafficLoadOutside, MacroStability.Geometry.CharacteristicPointType.TrafficLoadOutside)] + public static void CanConvertToMacroStabilityWaterpressureInterpolationModel( + CharacteristicPointType damCharacteristicPointType, MacroStability.Geometry.CharacteristicPointType kernelCharacteristicPointType) + { + Assert.AreEqual(kernelCharacteristicPointType, ConversionHelper.ConvertToMacroStabilityCharacteristicPointType(damCharacteristicPointType)); + } + + [TestCase(MacroStability.Geometry.CharacteristicPointType.BottomDitchDikeSide, CharacteristicPointType.BottomDitchDikeSide)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.BottomDitchPolderSide, CharacteristicPointType.BottomDitchPolderSide)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.DikeLine, CharacteristicPointType.DikeLine)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.DikeToeAtPolder, CharacteristicPointType.DikeToeAtPolder)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.DikeToeAtRiver, CharacteristicPointType.DikeToeAtRiver)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.DikeTopAtPolder, CharacteristicPointType.DikeTopAtPolder)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.DikeTopAtRiver, CharacteristicPointType.DikeTopAtRiver)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.DitchDikeSide, CharacteristicPointType.DitchDikeSide)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.DitchPolderSide, CharacteristicPointType.DitchPolderSide)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.None, CharacteristicPointType.None)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.ShoulderBaseInside, CharacteristicPointType.ShoulderBaseInside)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.ShoulderBaseOutside, CharacteristicPointType.ShoulderBaseOutside)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.ShoulderTopInside, CharacteristicPointType.ShoulderTopInside)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.ShoulderTopOutside, CharacteristicPointType.ShoulderTopOutside)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.SurfaceLevelInside, CharacteristicPointType.SurfaceLevelInside)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.SurfaceLevelOutside, CharacteristicPointType.SurfaceLevelOutside)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.TrafficLoadInside, CharacteristicPointType.TrafficLoadInside)] + [TestCase(MacroStability.Geometry.CharacteristicPointType.TrafficLoadOutside, CharacteristicPointType.TrafficLoadOutside)] + public static void CanConvertToDamWaterpressureInterpolationModel( + MacroStability.Geometry.CharacteristicPointType kernelCharacteristicPointType, CharacteristicPointType damCharacteristicPointType) + { + Assert.AreEqual(damCharacteristicPointType, ConversionHelper.ConvertToDamCharacteristicPointType(kernelCharacteristicPointType)); + } + #endregion + } } Index: DamEngine/trunk/doc/Dam Engine - Technical Design/DAM Engine - Technical Design.pdf =================================================================== diff -u -r2006 -r2018 Binary files differ Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs =================================================================== diff -u -r2017 -r2018 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 2017) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 2018) @@ -33,6 +33,7 @@ using Deltares.MacroStability.Geometry; using Deltares.MacroStability.Standard; using KellermanSoftware.CompareNetObjects; +using CharacteristicPointSet = Deltares.MacroStability.Geometry.CharacteristicPointSet; using Soil = Deltares.MacroStability.Geometry.Soil; using SoilProfile2D = Deltares.DamEngine.Data.Geotechnics.SoilProfile2D; using SurfaceLine2 = Deltares.DamEngine.Data.Geotechnics.SurfaceLine2; @@ -44,8 +45,18 @@ { private const string WtiFilesMap = @"KernelWrappers\MacroStabilityCommon\TestFiles"; + private static readonly List SoilParametersToIgnore = new List() + { + "StrengthIncreaseExponent", + "RRatio", + "RheologicalCoefficient", + "BondStressCurve", + "UseSoilType" + }; + [TestCase("Benchmark 1-01b.wti")] [TestCase("Benchmark 2-04a.wti")] + [TestCase("bm3-10c.wti")] public void GivenWtiFileWhenDeserializingAndSerializingThenTheStringsAreEqual(string fileNameIn) { // Given WTI file @@ -112,6 +123,7 @@ [TestCase("Benchmark 1-01b.wti")] [TestCase("Benchmark 2-04a.wti")] + [TestCase("bm3-10c.wti")] public void GivenWtiFileWhenFillingToDamEngineDataAndWritingBackToKernelDataThenTheKernelModelsAreEqual(string fileNameIn) { // Given Wti file @@ -142,19 +154,24 @@ CompareStabilityModel(expectedKernelModel.StabilityModel, actualKernelModel.StabilityModel); CompareSoilModel(expectedKernelModel.StabilityModel.SoilModel, actualKernelModel.StabilityModel.SoilModel); CompareSoilProfile2D(expectedKernelModel.StabilityModel.SoilProfile, actualKernelModel.StabilityModel.SoilProfile); + CompareSoilSurfaceLine(expectedKernelModel.PreprocessingModel.LastStage.SurfaceLine.CharacteristicPoints, + actualKernelModel.PreprocessingModel.LastStage.SurfaceLine.CharacteristicPoints); } - private void CompareSoilProfile2D(MacroStability.Geometry.SoilProfile2D expectedSoilProfile, MacroStability.Geometry.SoilProfile2D actualSoilProfile) + private void CompareSoilSurfaceLine(CharacteristicPointSet expectedCharacteristicPoints, CharacteristicPointSet actualCharacteristicPoints) { var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; - compare.Config.MembersToIgnore = new List + compare.Config.MembersToIgnore = new List() { - "StrengthIncreaseExponent", - "RRatio", - "RheologicalCoefficient", - "BondStressCurve", - "UseSoilType" - }; + "Owner" + }; var result = compare.Compare(expectedCharacteristicPoints, actualCharacteristicPoints); + Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SurfaceLine"); + } + + private void CompareSoilProfile2D(MacroStability.Geometry.SoilProfile2D expectedSoilProfile, MacroStability.Geometry.SoilProfile2D actualSoilProfile) + { + var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; + compare.Config.MembersToIgnore = SoilParametersToIgnore; var result = compare.Compare(expectedSoilProfile, actualSoilProfile); Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilProfile2D"); } @@ -168,16 +185,9 @@ var actualSoil = actualSoilModel.Soils.First(soil => soil.Name.Equals(expectedSoil.Name)); Assert.IsNotNull(actualSoil, string.Format("Soil {0} not found", expectedSoil.Name)); var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; - compare.Config.MembersToIgnore = new List - { - "StrengthIncreaseExponent", - "RRatio", - "RheologicalCoefficient", - "BondStressCurve", - "UseSoilType" - }; + compare.Config.MembersToIgnore = SoilParametersToIgnore; var result = compare.Compare(expectedSoil, actualSoil); - Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilProfile"); + Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilModel"); } } Index: DamEngine/trunk/doc/Dam Engine - Technical Design/DAM Engine - Technical Design.tex =================================================================== diff -u -r2006 -r2018 --- DamEngine/trunk/doc/Dam Engine - Technical Design/DAM Engine - Technical Design.tex (.../DAM Engine - Technical Design.tex) (revision 2006) +++ DamEngine/trunk/doc/Dam Engine - Technical Design/DAM Engine - Technical Design.tex (.../DAM Engine - Technical Design.tex) (revision 2018) @@ -894,11 +894,10 @@ DilatancyType & DilatancyType \\ \hline Cohesion & Cohesion \\ \hline FrictionAngle & FrictionAngle \\ \hline - UsePop & UsePop \\ \hline - POP & POP \\ \hline RatioCuPc & RatioCuPc \\ \hline StrengthIncreaseExponent & StrengthIncreaseExponent \\ \hline OCR & OCR \\ \hline + ShearStrengthModel & ShearStrengthModel \\ \hline \end{tabular} \caption{\small Mapping of the \WbiKernel Soils to the \ProgramName Soils.} \label{table-MappingDamEngineSoilsWbiMacrostability} Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/TestFiles/bm3-10c.wti =================================================================== diff -u --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/TestFiles/bm3-10c.wti (revision 0) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/TestFiles/bm3-10c.wti (revision 2018) @@ -0,0 +1 @@ + \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs =================================================================== diff -u -r2002 -r2018 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 2002) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 2018) @@ -26,6 +26,8 @@ using Deltares.DamEngine.Data.Standard; using Deltares.MacroStability.Data; using Deltares.MacroStability.Geometry; +using CharacteristicPointType = Deltares.DamEngine.Data.Geotechnics.CharacteristicPointType; +using ShearStrengthModel = Deltares.DamEngine.Data.Geotechnics.ShearStrengthModel; using Soil = Deltares.MacroStability.Geometry.Soil; using WaterpressureInterpolationModel = Deltares.MacroStability.Geometry.WaterpressureInterpolationModel; @@ -67,6 +69,7 @@ } #endregion + #region ModelType /// Converts ModelOption to the MStabModelType. /// The model option. @@ -158,6 +161,14 @@ UseSoilType = true, // TODO find the correct parameter BondStressCurve = null // TODO find the correct parameter }; + if (soil.ShearStrengthModel != null) + { + macroStabilitySoil.ShearStrengthModel = ConvertToMacroStabilityShearStrengthModel(soil.ShearStrengthModel.Value); + } + else + { + macroStabilitySoil.ShearStrengthModel = MacroStability.Geometry.ShearStrengthModel.None; + } switch (soil.DilatancyType) { case DilatancyType.MinusPhi: @@ -190,6 +201,7 @@ // RRatio = 1.01 RatioCuPc = soil.RatioCuPc, // RheologicalCoefficient = 1.07, + ShearStrengthModel = ConvertToDamShearStrengthModel(soil.ShearStrengthModel), // StrengthIncreaseExponent = 1.08, // UseSoilType = true, @@ -202,7 +214,6 @@ //Ocr = 0.00, //PermeabKx = 0.00, //PoP = 0.00, - //ShearStrengthModel = ShearStrengthModel.CPhi, //SlopeRestProfile = 0.00, //SoilType = SoilType.Clay, //UseDefaultShearStrengthModel = false, @@ -227,7 +238,54 @@ } return damSoil; } + + /// Converts to dam ShearStrengthModel. + /// The kernel ShearStrengthModel. + /// + public static ShearStrengthModel ConvertToDamShearStrengthModel(MacroStability.Geometry.ShearStrengthModel kernelShearStrengthModel) + { + var translationTable = new Dictionary() + { + {MacroStability.Geometry.ShearStrengthModel.CPhi, ShearStrengthModel.CPhi}, + {MacroStability.Geometry.ShearStrengthModel.CPhiOrCuCalculated, ShearStrengthModel.CPhiOrSuCalculated}, + {MacroStability.Geometry.ShearStrengthModel.CuCalculated, ShearStrengthModel.SuCalculated}, + {MacroStability.Geometry.ShearStrengthModel.CuGradient, ShearStrengthModel.SuGradient}, + {MacroStability.Geometry.ShearStrengthModel.CuMeasured, ShearStrengthModel.SuMeasured}, + {MacroStability.Geometry.ShearStrengthModel.None, ShearStrengthModel.None}, + {MacroStability.Geometry.ShearStrengthModel.PseudoValues, ShearStrengthModel.PseudoValues}, + {MacroStability.Geometry.ShearStrengthModel.StressTable, ShearStrengthModel.StressTable}, + }; + return translationTable[kernelShearStrengthModel]; + } + + /// Converts to macro stability ShearStrengthModel. + /// The dam ShearStrengthModel. + /// + /// + public static MacroStability.Geometry.ShearStrengthModel ConvertToMacroStabilityShearStrengthModel(ShearStrengthModel damShearStrengthModel) + { + if (damShearStrengthModel == ShearStrengthModel.SuCalculatedWithYield) + { + throw new ArgumentException(string.Format("Cannot convert dam ShearStrengthModel: {0}", damShearStrengthModel)); + } + + var translationTable = new Dictionary() + { + {ShearStrengthModel.CPhi, MacroStability.Geometry.ShearStrengthModel.CPhi}, + {ShearStrengthModel.CPhiOrSuCalculated, MacroStability.Geometry.ShearStrengthModel.CPhiOrCuCalculated}, + {ShearStrengthModel.None, MacroStability.Geometry.ShearStrengthModel.None}, + {ShearStrengthModel.PseudoValues, MacroStability.Geometry.ShearStrengthModel.PseudoValues}, + {ShearStrengthModel.StressTable, MacroStability.Geometry.ShearStrengthModel.StressTable}, + {ShearStrengthModel.SuCalculated, MacroStability.Geometry.ShearStrengthModel.CuCalculated}, + {ShearStrengthModel.SuGradient, MacroStability.Geometry.ShearStrengthModel.CuGradient}, + {ShearStrengthModel.SuMeasured, MacroStability.Geometry.ShearStrengthModel.CuMeasured}, + }; + return translationTable[damShearStrengthModel]; + } + #endregion + + #region WaterpressureInterpolationModel /// Converts to macro stability waterpressure interpolation model. /// The waterpressure interpolation model. /// @@ -253,5 +311,66 @@ }; return translationTable[waterpressureInterpolationModel]; } + #endregion + + #region CharacteristicPointType + /// Converts the type of to dam characteristic point. + /// Type of the kernel characteristic point. + /// + public static CharacteristicPointType ConvertToDamCharacteristicPointType(MacroStability.Geometry.CharacteristicPointType kernelCharacteristicPointType) + { + var translationTable = new Dictionary() + { + {MacroStability.Geometry.CharacteristicPointType.BottomDitchDikeSide, CharacteristicPointType.BottomDitchDikeSide}, + {MacroStability.Geometry.CharacteristicPointType.BottomDitchPolderSide, CharacteristicPointType.BottomDitchPolderSide}, + {MacroStability.Geometry.CharacteristicPointType.DikeLine, CharacteristicPointType.DikeLine}, + {MacroStability.Geometry.CharacteristicPointType.DikeToeAtPolder, CharacteristicPointType.DikeToeAtPolder}, + {MacroStability.Geometry.CharacteristicPointType.DikeToeAtRiver, CharacteristicPointType.DikeToeAtRiver}, + {MacroStability.Geometry.CharacteristicPointType.DikeTopAtPolder, CharacteristicPointType.DikeTopAtPolder}, + {MacroStability.Geometry.CharacteristicPointType.DikeTopAtRiver, CharacteristicPointType.DikeTopAtRiver}, + {MacroStability.Geometry.CharacteristicPointType.DitchDikeSide, CharacteristicPointType.DitchDikeSide}, + {MacroStability.Geometry.CharacteristicPointType.DitchPolderSide, CharacteristicPointType.DitchPolderSide}, + {MacroStability.Geometry.CharacteristicPointType.None, CharacteristicPointType.None}, + {MacroStability.Geometry.CharacteristicPointType.ShoulderBaseInside, CharacteristicPointType.ShoulderBaseInside}, + {MacroStability.Geometry.CharacteristicPointType.ShoulderBaseOutside, CharacteristicPointType.ShoulderBaseOutside}, + {MacroStability.Geometry.CharacteristicPointType.ShoulderTopInside, CharacteristicPointType.ShoulderTopInside}, + {MacroStability.Geometry.CharacteristicPointType.ShoulderTopOutside, CharacteristicPointType.ShoulderTopOutside}, + {MacroStability.Geometry.CharacteristicPointType.SurfaceLevelInside, CharacteristicPointType.SurfaceLevelInside}, + {MacroStability.Geometry.CharacteristicPointType.SurfaceLevelOutside, CharacteristicPointType.SurfaceLevelOutside}, + {MacroStability.Geometry.CharacteristicPointType.TrafficLoadInside, CharacteristicPointType.TrafficLoadInside}, + {MacroStability.Geometry.CharacteristicPointType.TrafficLoadOutside, CharacteristicPointType.TrafficLoadOutside} + }; + return translationTable[kernelCharacteristicPointType]; + } + + /// Converts the type of to macro stability characteristic point. + /// Type of the dam characteristic point. + /// + public static MacroStability.Geometry.CharacteristicPointType ConvertToMacroStabilityCharacteristicPointType(CharacteristicPointType damCharacteristicPointType) + { + var translationTable = new Dictionary() + { + {CharacteristicPointType.BottomDitchPolderSide, MacroStability.Geometry.CharacteristicPointType.BottomDitchPolderSide}, + {CharacteristicPointType.BottomDitchDikeSide, MacroStability.Geometry.CharacteristicPointType.BottomDitchDikeSide}, + {CharacteristicPointType.DikeLine, MacroStability.Geometry.CharacteristicPointType.DikeLine}, + {CharacteristicPointType.DikeToeAtPolder, MacroStability.Geometry.CharacteristicPointType.DikeToeAtPolder}, + {CharacteristicPointType.DikeToeAtRiver, MacroStability.Geometry.CharacteristicPointType.DikeToeAtRiver}, + {CharacteristicPointType.DikeTopAtPolder, MacroStability.Geometry.CharacteristicPointType.DikeTopAtPolder}, + {CharacteristicPointType.DikeTopAtRiver, MacroStability.Geometry.CharacteristicPointType.DikeTopAtRiver}, + {CharacteristicPointType.DitchDikeSide, MacroStability.Geometry.CharacteristicPointType.DitchDikeSide}, + {CharacteristicPointType.DitchPolderSide, MacroStability.Geometry.CharacteristicPointType.DitchPolderSide}, + {CharacteristicPointType.None, MacroStability.Geometry.CharacteristicPointType.None}, + {CharacteristicPointType.ShoulderBaseInside, MacroStability.Geometry.CharacteristicPointType.ShoulderBaseInside}, + {CharacteristicPointType.ShoulderBaseOutside, MacroStability.Geometry.CharacteristicPointType.ShoulderBaseOutside}, + {CharacteristicPointType.ShoulderTopInside, MacroStability.Geometry.CharacteristicPointType.ShoulderTopInside}, + {CharacteristicPointType.ShoulderTopOutside, MacroStability.Geometry.CharacteristicPointType.ShoulderTopOutside}, + {CharacteristicPointType.SurfaceLevelInside, MacroStability.Geometry.CharacteristicPointType.SurfaceLevelInside}, + {CharacteristicPointType.SurfaceLevelOutside, MacroStability.Geometry.CharacteristicPointType.SurfaceLevelOutside}, + {CharacteristicPointType.TrafficLoadInside, MacroStability.Geometry.CharacteristicPointType.TrafficLoadInside}, + {CharacteristicPointType.TrafficLoadOutside, MacroStability.Geometry.CharacteristicPointType.TrafficLoadOutside} + }; + return translationTable[damCharacteristicPointType]; + } + #endregion } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Deltares.DamEngine.Calculators.Tests.csproj =================================================================== diff -u -r2005 -r2018 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Deltares.DamEngine.Calculators.Tests.csproj (.../Deltares.DamEngine.Calculators.Tests.csproj) (revision 2005) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Deltares.DamEngine.Calculators.Tests.csproj (.../Deltares.DamEngine.Calculators.Tests.csproj) (revision 2018) @@ -151,6 +151,9 @@ PreserveNewest + + PreserveNewest + Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillDamEngineFromWti.cs =================================================================== diff -u -r2017 -r2018 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillDamEngineFromWti.cs (.../FillDamEngineFromWti.cs) (revision 2017) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillDamEngineFromWti.cs (.../FillDamEngineFromWti.cs) (revision 2018) @@ -21,11 +21,17 @@ using System.Collections.Generic; using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; using Deltares.MacroStability.Data; using Deltares.MacroStability.Kernel; using Soil = Deltares.MacroStability.Geometry.Soil; -using Deltares.MacroStability.Geometry; +using CharacteristicPoint = Deltares.DamEngine.Data.Geotechnics.CharacteristicPoint; +using GeometryCurve = Deltares.MacroStability.Geometry.GeometryCurve; +using GeometryLoop = Deltares.MacroStability.Geometry.GeometryLoop; +using GeometrySurface = Deltares.MacroStability.Geometry.GeometrySurface; +using Point2D = Deltares.MacroStability.Geometry.Point2D; +using SurfaceLine2 = Deltares.DamEngine.Data.Geotechnics.SurfaceLine2; namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo { @@ -62,12 +68,30 @@ TransferWtiStabilityModel(kernelModel.StabilityModel, FailureMechanismParametersMStab); TransferSoils(kernelModel.StabilityModel.Soils); TransferSoilProfile2D(kernelModel.StabilityModel.SoilProfile); - + TransferSurfaceLine(kernelModel.PreprocessingModel.LastStage.SurfaceLine, SurfaceLine2); // TransferLocation(kernelModel, Location); // TransferSurfaceLine2(kernelModel, SurfaceLine2); // TransferParametersMStab(kernelModel, FailureMechanismParametersMStab); } + private void TransferSurfaceLine(MacroStability.Geometry.SurfaceLine2 kernelSurfaceLine2, SurfaceLine2 damSurfaceLine) + { + foreach (var kernelCharPoint in kernelSurfaceLine2.CharacteristicPoints) + { + CharacteristicPoint damCharPoint; + damCharPoint = new CharacteristicPoint() + { + CharacteristicPointType = ConversionHelper.ConvertToDamCharacteristicPointType(kernelCharPoint.CharacteristicPointType), + GeometryPoint = new GeometryPoint() + { + X = kernelCharPoint.X, + Z = kernelCharPoint.Z + } + }; + damSurfaceLine.CharacteristicPoints.Add(damCharPoint); + } + } + private void TransferSoils(IList stabilityModelSoils) { foreach (Soil kernelSoil in stabilityModelSoils) @@ -189,7 +213,7 @@ // Add soil surfaces foreach (var kernelSoilLayer2D in kernelsoilProfile2D.Surfaces) { - Data.Geotechnics.SoilLayer2D damSoilLayer2D = new Data.Geotechnics.SoilLayer2D(); + SoilLayer2D damSoilLayer2D = new SoilLayer2D(); damSoilLayer2D.GeometrySurface = dictSurfaces[kernelSoilLayer2D.GeometrySurface]; damSoilLayer2D.Soil = dictSoils[kernelSoilLayer2D.Soil.Name]; damSoilLayer2D.IsAquifer = kernelSoilLayer2D.IsAquifer; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillWtiKernelData.cs =================================================================== diff -u -r2017 -r2018 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillWtiKernelData.cs (.../FillWtiKernelData.cs) (revision 2017) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillWtiKernelData.cs (.../FillWtiKernelData.cs) (revision 2018) @@ -26,6 +26,7 @@ using Deltares.MacroStability.Geometry; using Deltares.MacroStability.Kernel; using Deltares.MacroStability.Preprocessing; +using CharacteristicPoint = Deltares.MacroStability.Geometry.CharacteristicPoint; using Location = Deltares.MacroStability.WaternetCreator.Location; using Soil = Deltares.MacroStability.Geometry.Soil; using SoilLayer2D = Deltares.DamEngine.Data.Geotechnics.SoilLayer2D; @@ -71,7 +72,7 @@ kernelModel.StabilityModel.SoilProfile = new SoilProfile2D(); TransferSoilProfile(SoilProfile2D, kernelModel.StabilityModel.SoilProfile); kernelModel.PreprocessingModel.LastStage.SurfaceLine = new SurfaceLine2(); - TransferSurfaceLine(SurfaceLine2, kernelModel.PreprocessingModel.LastStage.SurfaceLine); // TODO + TransferSurfaceLine(SurfaceLine2, kernelModel.PreprocessingModel.LastStage.SurfaceLine); kernelModel.PreprocessingModel.ConstructionStages.Add(new PreprocessingConstructionStage()); kernelModel.PreprocessingModel.LastStage.Locations.Add(new Location()); TransferLocation(Location, kernelModel.PreprocessingModel.LastStage.Locations); // TODO @@ -87,9 +88,22 @@ return kernelModel; } - private void TransferSurfaceLine(Data.Geotechnics.SurfaceLine2 surfaceLine2, SurfaceLine2 surfaceLine) + private void TransferSurfaceLine(Data.Geotechnics.SurfaceLine2 damSurfaceLine, SurfaceLine2 kernelSurfaceLine) { - // TODO: to be implemented + foreach (var damCharPoint in damSurfaceLine.CharacteristicPoints) + { + CharacteristicPoint kernelCharPoint; + kernelCharPoint = new CharacteristicPoint() + { + CharacteristicPointType = ConversionHelper.ConvertToMacroStabilityCharacteristicPointType(damCharPoint.CharacteristicPointType), + GeometryPoint = new GeometryPoint() + { + X = damCharPoint.X, + Z = damCharPoint.Z + } + }; + kernelSurfaceLine.CharacteristicPoints.Add(kernelCharPoint); + } } private void TransferSoilProfile(Data.Geotechnics.SoilProfile2D damSoilProfile2D, SoilProfile2D soilProfile2D)