Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillDamEngineFromWti.cs =================================================================== diff -u -r2045 -r2904 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillDamEngineFromWti.cs (.../FillDamEngineFromWti.cs) (revision 2045) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillDamEngineFromWti.cs (.../FillEngineFromMacroStabilityWrapperInput.cs) (revision 2904) @@ -21,6 +21,7 @@ using System; using System.Collections.Generic; +using System.Linq; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; @@ -41,7 +42,7 @@ namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo { /// Fill DamEngine data objects from the kernel data model - public class FillDamEngineFromWti + public class FillEngineFromMacroStabilityWrapperInput { /// Gets or sets the SoilList DamEngine object /// The soil list. @@ -68,24 +69,22 @@ /// The failure mechanism parameters for macrostability DamEngine object. public FailureMechanismParametersMStab FailureMechanismParametersMStab { get; set; } - private Dictionary dictSoils = new Dictionary(); - private Dictionary dictHeadLines = new Dictionary(); /// Creates the dam project data from the kernel model. - /// The kernel model. + /// The kernel model. /// The DamProjectData object filled with Wti data - public void FillDamProjectDataFromKernelModel(KernelModel kernelModel) + public void FillDamProjectDataFromKernelModel(Deltares.MacroStability.CSharpWrapper.Input.MacroStabilityInput macroStabilityInput) { Location = null; - TransferWtiStabilityModel(kernelModel.StabilityModel); - TransferSoils(kernelModel.StabilityModel.Soils); - TransferSoilProfile2D(kernelModel.StabilityModel.SoilProfile); - TransferSurfaceLine(kernelModel.PreprocessingModel.LastStage.SurfaceLine); - TransferWaternet(kernelModel.StabilityModel.LastStage.GeotechnicsData.CurrentWaternet); - TransferUpliftVanCalculationGrid(kernelModel.StabilityModel.SlipPlaneUpliftVan, kernelModel.PreprocessingModel.SearchAreaConditions); - TransferTrafficLoad(kernelModel.StabilityModel.LastStage.UniformLoads); + TransferStabilityModel(macroStabilityInput.StabilityModel); + TransferSoils(macroStabilityInput.StabilityModel.Soils); + TransferSoilProfile2D(macroStabilityInput.StabilityModel.ConstructionStages.Last().SoilProfile); + TransferSurfaceLine(macroStabilityInput.PreprocessingInput.PreConstructionStages.Last().Surfaceline); + TransferWaternet(macroStabilityInput.StabilityModel.ConstructionStages.Last().Waternet); + TransferUpliftVanCalculationGrid(macroStabilityInput.StabilityModel.UpliftVanCalculationGrid, macroStabilityInput.PreprocessingInput.SearchAreaConditions); + TransferTrafficLoad(macroStabilityInput.StabilityModel.ConstructionStages.Last().UniformLoads); } - private void TransferTrafficLoad(List kernelUniformLoads) + private void TransferTrafficLoad(IList kernelUniformLoads) { TrafficLoad = null; if ((kernelUniformLoads != null) && (kernelUniformLoads.Count > 0)) @@ -106,220 +105,217 @@ } } - private void TransferUpliftVanCalculationGrid(SlipPlaneUpliftVan kernelSlipPlaneUpliftVan, - SearchAreaConditions kernelSearchAreaConditions) + private void TransferUpliftVanCalculationGrid(Deltares.MacroStability.CSharpWrapper.UpliftVanCalculationGrid kernelSlipPlaneUpliftVan, + Deltares.MacroStability.CSharpWrapper.Input.SearchAreaConditions kernelSearchAreaConditions) { - UpliftVanCalculationGrid = new UpliftVanCalculationGrid(); - UpliftVanCalculationGrid.IsAuto = kernelSearchAreaConditions.AutoSearchArea; - UpliftVanCalculationGrid.LeftGridXCount = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXNumber; - UpliftVanCalculationGrid.LeftGridXLeft = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXLeft; - UpliftVanCalculationGrid.LeftGridXRight = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXRight; - UpliftVanCalculationGrid.LeftGridZCount = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZNumber; - UpliftVanCalculationGrid.LeftGridZTop = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZTop; - UpliftVanCalculationGrid.LeftGridZBottom = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZBottom; - UpliftVanCalculationGrid.RightGridXCount = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridXNumber; - UpliftVanCalculationGrid.RightGridXLeft = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridXLeft; - UpliftVanCalculationGrid.RightGridXRight = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridXRight; - UpliftVanCalculationGrid.RightGridZCount = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridZNumber; - UpliftVanCalculationGrid.RightGridZTop = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridZTop; - UpliftVanCalculationGrid.RightGridZBottom = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridZBottom; - UpliftVanCalculationGrid.TangentLineAutomaticAtBoundaries = kernelSearchAreaConditions.AutoTangentLines; - UpliftVanCalculationGrid.TangentLineCount = kernelSlipPlaneUpliftVan.SlipPlaneTangentLine.TangentLineNumber; - UpliftVanCalculationGrid.TangentLineZTop = kernelSlipPlaneUpliftVan.SlipPlaneTangentLine.TangentLineZTop; - UpliftVanCalculationGrid.TangentLineZBottom = kernelSlipPlaneUpliftVan.SlipPlaneTangentLine.TangentLineZBottom; + // UpliftVanCalculationGrid = new UpliftVanCalculationGrid(); + // UpliftVanCalculationGrid.IsAuto = kernelSearchAreaConditions.AutoSearchArea; + // UpliftVanCalculationGrid.LeftGridXCount = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXNumber; + // UpliftVanCalculationGrid.LeftGridXLeft = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXLeft; + // UpliftVanCalculationGrid.LeftGridXRight = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXRight; + // UpliftVanCalculationGrid.LeftGridZCount = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZNumber; + // UpliftVanCalculationGrid.LeftGridZTop = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZTop; + // UpliftVanCalculationGrid.LeftGridZBottom = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZBottom; + // UpliftVanCalculationGrid.RightGridXCount = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridXNumber; + // UpliftVanCalculationGrid.RightGridXLeft = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridXLeft; + // UpliftVanCalculationGrid.RightGridXRight = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridXRight; + // UpliftVanCalculationGrid.RightGridZCount = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridZNumber; + // UpliftVanCalculationGrid.RightGridZTop = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridZTop; + // UpliftVanCalculationGrid.RightGridZBottom = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridZBottom; + // UpliftVanCalculationGrid.TangentLineAutomaticAtBoundaries = kernelSearchAreaConditions.AutoTangentLines; + // UpliftVanCalculationGrid.TangentLineCount = kernelSlipPlaneUpliftVan.SlipPlaneTangentLine.TangentLineNumber; + // UpliftVanCalculationGrid.TangentLineZTop = kernelSlipPlaneUpliftVan.SlipPlaneTangentLine.TangentLineZTop; + // UpliftVanCalculationGrid.TangentLineZBottom = kernelSlipPlaneUpliftVan.SlipPlaneTangentLine.TangentLineZBottom; } - private void TransferWaternet(Waternet kernelWaternet) + private void TransferWaternet(Deltares.MacroStability.CSharpWrapper.Input.Waternet kernelWaternet) { - Waternet = new Data.Geometry.Waternet(); - // Properties - Waternet.IsGenerated = kernelWaternet.IsGenerated; - Waternet.UnitWeight = kernelWaternet.UnitWeight; - - // Phreatic Line - var damPhreaticLine = new PhreaticLine() - { - Name = kernelWaternet.PhreaticLine.Name - }; - foreach (var kernelPoint in kernelWaternet.PhreaticLine.CalcPoints) - { - damPhreaticLine.CalcPoints.Add(new Data.Geometry.Point2D(kernelPoint.X, kernelPoint.Z)); - } - dictHeadLines.Add(kernelWaternet.PhreaticLine, damPhreaticLine); - Waternet.PhreaticLine = damPhreaticLine; - - // Head Lines - foreach (var kernelHeadLine in kernelWaternet.HeadLineList) - { - var damHeadLine = new HeadLine() - { - Name = kernelHeadLine.Name - }; - foreach (var kernelPoint in kernelHeadLine.CalcPoints) - { - damHeadLine.CalcPoints.Add(new Data.Geometry.Point2D(kernelPoint.X, kernelPoint.Z)); - } - Waternet.HeadLineList.Add(damHeadLine); - dictHeadLines.Add(kernelHeadLine, damHeadLine); - } - - // Waternet Lines - foreach (var kernelWaternetLine in kernelWaternet.WaternetLineList) - { - var damWaternetLine = new WaternetLine() - { - Name = kernelWaternetLine.Name - }; - foreach (var kernelPoint in kernelWaternetLine.CalcPoints) - { - damWaternetLine.CalcPoints.Add(new Data.Geometry.Point2D(kernelPoint.X, kernelPoint.Z)); - } - - damWaternetLine.HeadLine = dictHeadLines[kernelWaternetLine.HeadLine]; - Waternet.WaternetLineList.Add(damWaternetLine); - } + // Waternet = new Data.Geometry.Waternet(); + // // Properties + // Waternet.IsGenerated = kernelWaternet.IsGenerated; + // Waternet.UnitWeight = kernelWaternet.UnitWeight; + // + // // Phreatic Line + // var damPhreaticLine = new PhreaticLine() + // { + // Name = kernelWaternet.PhreaticLine.Name + // }; + // foreach (var kernelPoint in kernelWaternet.PhreaticLine.CalcPoints) + // { + // damPhreaticLine.CalcPoints.Add(new Data.Geometry.Point2D(kernelPoint.X, kernelPoint.Z)); + // } + // dictHeadLines.Add(kernelWaternet.PhreaticLine, damPhreaticLine); + // Waternet.PhreaticLine = damPhreaticLine; + // + // // Head Lines + // foreach (var kernelHeadLine in kernelWaternet.HeadLineList) + // { + // var damHeadLine = new HeadLine() + // { + // Name = kernelHeadLine.Name + // }; + // foreach (var kernelPoint in kernelHeadLine.CalcPoints) + // { + // damHeadLine.CalcPoints.Add(new Data.Geometry.Point2D(kernelPoint.X, kernelPoint.Z)); + // } + // Waternet.HeadLineList.Add(damHeadLine); + // dictHeadLines.Add(kernelHeadLine, damHeadLine); + // } + // + // // Waternet Lines + // foreach (var kernelWaternetLine in kernelWaternet.WaternetLineList) + // { + // var damWaternetLine = new WaternetLine() + // { + // Name = kernelWaternetLine.Name + // }; + // foreach (var kernelPoint in kernelWaternetLine.CalcPoints) + // { + // damWaternetLine.CalcPoints.Add(new Data.Geometry.Point2D(kernelPoint.X, kernelPoint.Z)); + // } + // + // damWaternetLine.HeadLine = dictHeadLines[kernelWaternetLine.HeadLine]; + // Waternet.WaternetLineList.Add(damWaternetLine); + // } } - private void TransferSurfaceLine(MacroStability.Geometry.SurfaceLine2 kernelSurfaceLine2) + private void TransferSurfaceLine(MacroStability.CSharpWrapper.Input.SurfaceLine kernelSurfaceLine2) { - SurfaceLine2 = new SurfaceLine2(); - 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 - } - }; - SurfaceLine2.CharacteristicPoints.Add(damCharPoint); - } + // SurfaceLine2 = new SurfaceLine2(); + // 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 + // } + // }; + // SurfaceLine2.CharacteristicPoints.Add(damCharPoint); + // } } - private void TransferSoils(IList stabilityModelSoils) + private void TransferSoils(IList stabilityModelSoils) { - SoilList = new SoilList(); - foreach (Soil kernelSoil in stabilityModelSoils) - { - var damSoil = ConversionHelper.ConvertToDamSoil(kernelSoil); - dictSoils.Add(kernelSoil.Name, damSoil); - SoilList.Add(damSoil); - } + // SoilList = new SoilList(); + // foreach (Soil kernelSoil in stabilityModelSoils) + // { + // var damSoil = ConversionHelper.ConvertToDamSoil(kernelSoil); + // dictSoils.Add(kernelSoil.Name, damSoil); + // SoilList.Add(damSoil); + // } } - private void TransferWtiStabilityModel(StabilityModel kernelModelStabilityModel) + private void TransferStabilityModel(Deltares.MacroStability.CSharpWrapper.Input.StabilityInput kernelModelStabilityModel) { - FailureMechanismParametersMStab = new FailureMechanismParametersMStab(); - // kernelModelStabilityModel.MoveGrid is not in DamEngine datamodel - // kernelModelStabilityModel.MaximumSliceWidth is not in DamEngine datamodel - FailureMechanismParametersMStab.MStabParameters.SearchMethod = - ConversionHelper.ConvertToDamSearchMethod(kernelModelStabilityModel.SearchAlgorithm); - FailureMechanismParametersMStab.MStabParameters.Model = - ConversionHelper.ConvertToMStabModelType(kernelModelStabilityModel.ModelOption); - FailureMechanismParametersMStab.MStabParameters.GridPosition = - ConversionHelper.ConvertToMStabGridPosition(kernelModelStabilityModel.GridOrientation); + // FailureMechanismParametersMStab = new FailureMechanismParametersMStab(); + // // kernelModelStabilityModel.MoveGrid is not in DamEngine datamodel + // // kernelModelStabilityModel.MaximumSliceWidth is not in DamEngine datamodel + // FailureMechanismParametersMStab.MStabParameters.SearchMethod = + // ConversionHelper.ConvertToDamSearchMethod(kernelModelStabilityModel. .SearchAlgorithm); + // FailureMechanismParametersMStab.MStabParameters.Model = + // ConversionHelper.ConvertToMStabModelType(kernelModelStabilityModel.ModelOption); + // FailureMechanismParametersMStab.MStabParameters.GridPosition = + // ConversionHelper.ConvertToMStabGridPosition(kernelModelStabilityModel.GridOrientation); } - private void TransferSoilProfile2D(MacroStability.Geometry.SoilProfile2D kernelsoilProfile2D) + private void TransferSoilProfile2D(MacroStability.CSharpWrapper.Input.SoilProfile kernelSoilProfile2D) { - SoilProfile2D = new SoilProfile2D(); - Dictionary dictPoints = new Dictionary(); - Dictionary dictCurves = new Dictionary(); - Dictionary dictLoops = new Dictionary(); - Dictionary dictSurfaces = new Dictionary(); - // Add points - foreach (var kernelPoint in kernelsoilProfile2D.Geometry.Points) - { - Data.Geometry.Point2D damPoint; - if (dictPoints.ContainsKey(kernelPoint)) - { - damPoint = dictPoints[kernelPoint]; - } - else - { - damPoint = new Data.Geometry.Point2D() { X = kernelPoint.X, Z = kernelPoint.Z }; - dictPoints.Add(kernelPoint, damPoint); - } - SoilProfile2D.Geometry.Points.Add(damPoint); - } - - // Add curves - foreach (var kernelCurve in kernelsoilProfile2D.Geometry.Curves) - { - Data.Geometry.GeometryCurve damCurve; - if (dictCurves.ContainsKey(kernelCurve)) - { - damCurve = dictCurves[kernelCurve]; - } - else - { - var kernelHeadPoint = kernelCurve.HeadPoint; - var kernelEndPoint = kernelCurve.EndPoint; - var damHeadPoint = dictPoints[kernelHeadPoint]; - var damEndPoint = dictPoints[kernelEndPoint]; - damCurve = new Data.Geometry.GeometryCurve() { HeadPoint = damHeadPoint, EndPoint = damEndPoint }; - dictCurves.Add(kernelCurve, damCurve); - } - SoilProfile2D.Geometry.Curves.Add(damCurve); - } - - // Add loops - foreach (var kernelLoop in kernelsoilProfile2D.Geometry.Loops) - { - Data.Geometry.GeometryLoop damLoop; - if (dictLoops.ContainsKey(kernelLoop)) - { - damLoop = dictLoops[kernelLoop]; - } - else - { - damLoop = new Data.Geometry.GeometryLoop() { Name = kernelLoop.Name }; - foreach (var damCurve in kernelLoop.CurveList) - { - damLoop.CurveList.Add(dictCurves[damCurve]); - } - - dictLoops.Add(kernelLoop, damLoop); - } - SoilProfile2D.Geometry.Loops.Add(damLoop); - } - - // Add surfaces - foreach (var kernelSurface in kernelsoilProfile2D.Geometry.Surfaces) - { - Data.Geometry.GeometrySurface damSurface; - if (dictSurfaces.ContainsKey(kernelSurface)) - { - damSurface = dictSurfaces[kernelSurface]; - } - else - { - damSurface = new Data.Geometry.GeometrySurface() { Name = kernelSurface.Name }; - damSurface.OuterLoop = dictLoops[kernelSurface.OuterLoop]; - foreach (var damInnerLoop in kernelSurface.InnerLoops) - { - damSurface.InnerLoops.Add(dictLoops[damInnerLoop]); - } - - dictSurfaces.Add(kernelSurface, damSurface); - } - - SoilProfile2D.Geometry.Surfaces.Add(damSurface); - } - - // Add soil surfaces - foreach (var kernelSoilLayer2D in kernelsoilProfile2D.Surfaces) - { - SoilLayer2D damSoilLayer2D = new SoilLayer2D(); - damSoilLayer2D.GeometrySurface = dictSurfaces[kernelSoilLayer2D.GeometrySurface]; - damSoilLayer2D.Soil = dictSoils[kernelSoilLayer2D.Soil.Name]; - damSoilLayer2D.IsAquifer = kernelSoilLayer2D.IsAquifer; - damSoilLayer2D.WaterpressureInterpolationModel = ConversionHelper.ConvertToDamWaterpressureInterpolationModel(kernelSoilLayer2D.WaterpressureInterpolationModel); - SoilProfile2D.Surfaces.Add(damSoilLayer2D); - } + // SoilProfile2D = new SoilProfile2D(); + // + // // Add points + // foreach (var kernelPoint in kernelSoilProfile2D.Geometry.Points) + // { + // Data.Geometry.Point2D damPoint; + // if (dictPoints.ContainsKey(kernelPoint)) + // { + // damPoint = dictPoints[kernelPoint]; + // } + // else + // { + // damPoint = new Data.Geometry.Point2D() { X = kernelPoint.X, Z = kernelPoint.Z }; + // dictPoints.Add(kernelPoint, damPoint); + // } + // SoilProfile2D.Geometry.Points.Add(damPoint); + // } + // + // // Add curves + // foreach (var kernelCurve in kernelsoilProfile2D.Geometry.Curves) + // { + // Data.Geometry.GeometryCurve damCurve; + // if (dictCurves.ContainsKey(kernelCurve)) + // { + // damCurve = dictCurves[kernelCurve]; + // } + // else + // { + // var kernelHeadPoint = kernelCurve.HeadPoint; + // var kernelEndPoint = kernelCurve.EndPoint; + // var damHeadPoint = dictPoints[kernelHeadPoint]; + // var damEndPoint = dictPoints[kernelEndPoint]; + // damCurve = new Data.Geometry.GeometryCurve() { HeadPoint = damHeadPoint, EndPoint = damEndPoint }; + // dictCurves.Add(kernelCurve, damCurve); + // } + // SoilProfile2D.Geometry.Curves.Add(damCurve); + // } + // + // // Add loops + // foreach (var kernelLoop in kernelsoilProfile2D.Geometry.Loops) + // { + // Data.Geometry.GeometryLoop damLoop; + // if (dictLoops.ContainsKey(kernelLoop)) + // { + // damLoop = dictLoops[kernelLoop]; + // } + // else + // { + // damLoop = new Data.Geometry.GeometryLoop() { Name = kernelLoop.Name }; + // foreach (var damCurve in kernelLoop.CurveList) + // { + // damLoop.CurveList.Add(dictCurves[damCurve]); + // } + // + // dictLoops.Add(kernelLoop, damLoop); + // } + // SoilProfile2D.Geometry.Loops.Add(damLoop); + // } + // + // // Add surfaces + // foreach (var kernelSurface in kernelsoilProfile2D.Geometry.Surfaces) + // { + // Data.Geometry.GeometrySurface damSurface; + // if (dictSurfaces.ContainsKey(kernelSurface)) + // { + // damSurface = dictSurfaces[kernelSurface]; + // } + // else + // { + // damSurface = new Data.Geometry.GeometrySurface() { Name = kernelSurface.Name }; + // damSurface.OuterLoop = dictLoops[kernelSurface.OuterLoop]; + // foreach (var damInnerLoop in kernelSurface.InnerLoops) + // { + // damSurface.InnerLoops.Add(dictLoops[damInnerLoop]); + // } + // + // dictSurfaces.Add(kernelSurface, damSurface); + // } + // + // SoilProfile2D.Geometry.Surfaces.Add(damSurface); + // } + // + // // Add soil surfaces + // foreach (var kernelSoilLayer2D in kernelsoilProfile2D.Surfaces) + // { + // SoilLayer2D damSoilLayer2D = new SoilLayer2D(); + // damSoilLayer2D.GeometrySurface = dictSurfaces[kernelSoilLayer2D.GeometrySurface]; + // damSoilLayer2D.Soil = dictSoils[kernelSoilLayer2D.Soil.Name]; + // damSoilLayer2D.IsAquifer = kernelSoilLayer2D.IsAquifer; + // damSoilLayer2D.WaterpressureInterpolationModel = ConversionHelper.ConvertToDamWaterpressureInterpolationModel(kernelSoilLayer2D.WaterpressureInterpolationModel); + // SoilProfile2D.Surfaces.Add(damSoilLayer2D); + // } } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs =================================================================== diff -u -r2044 -r2904 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 2044) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 2904) @@ -24,13 +24,12 @@ using System.Linq; using Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon; using NUnit.Framework; -using Deltares.MacroStability.Kernel; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo; using Deltares.DamEngine.Data.Geotechnics; +using Deltares.DamEngine.TestHelpers; using Deltares.DamEngine.TestHelpers.Factories; using Deltares.MacroStability.Data; -using Deltares.MacroStability.Geometry; using Deltares.MacroStability.Standard; using Deltares.SoilStress.Data; using KellermanSoftware.CompareNetObjects; @@ -58,28 +57,8 @@ "UseSoilType" }; - [TestCase("Benchmark 1-01b.wti")] - [TestCase("Benchmark 2-04a.wti")] - [TestCase("bm3-10c.wti")] - public void GivenWtiFileWhenDeserializingAndSerializingThenTheStringsAreEqual(string fileNameIn) - { - // Given WTI file - string fullFileNameIn = Path.Combine(WtiFilesMap, fileNameIn); - - // When Deserializing and Serializing - string xmlInput = File.ReadAllText(fullFileNameIn); - string fileNameOut = fileNameIn + ".out"; - string fullFileNameOut = Path.Combine(WtiFilesMap, fileNameOut); - KernelModel kernelModel = WtiDeserializer.Deserialize(xmlInput); - string xmlOutput = WtiSerializer.Serialize(kernelModel); - File.WriteAllText(fullFileNameOut, xmlOutput); - - // Then the strings are equal - Assert.AreEqual(xmlInput, xmlOutput); - } - [Test] - // [Category(Categories.WorkInProgress)] // The actual code has to be implemented + [Category(Categories.WorkInProgress)] // The actual code has to be implemented public void GivenDamEngineDataModelWhenSerializingAndDeserializingTheDataModelsAreEqual() { // Given DamEngine data (DamProjectData) @@ -99,7 +78,7 @@ XEnd = expectedSurfaceLine2D.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X, }; - FillWtiKernelData fillWtiKernelData = new FillWtiKernelData() + var fillWtiKernelData = new FillMacroStabilityWrapperInputFromEngine() { SoilList = expectedSoilList, FailureMechanismParametersMStab = expectedParametersMStab, @@ -110,32 +89,33 @@ UpliftVanCalculationGrid = expectedUpliftVanCalculationGrid, TrafficLoad = expectedTrafficLoad }; - KernelModel expectedKernelModel = fillWtiKernelData.CreateKernelModel(); + var expectedKernelModel = fillWtiKernelData.CreateMacroStabilityInput(); + //ToDo replace serialization with C#wrapper conversions as provided by methods in FillEngineFromMacroStabilityWrapperInput, FillEngineFromMacroStabilityWrapperOutput, FillMacroStabilityWrapperInputFromEngine, FillMacroStabilityWrapperOutputFromEngine // When Serializing and Deserializing - string xmlWti = WtiSerializer.Serialize(expectedKernelModel); + // string xmlWti = WtiSerializer.Serialize(expectedKernelModel); const string fileName = "TestInput.wti"; string fullFileName = Path.Combine(WtiFilesMap, fileName); - File.WriteAllText(fullFileName, xmlWti); - KernelModel actualKernelModel = WtiDeserializer.Deserialize(xmlWti); - var fillDamEngineFromWti = new FillDamEngineFromWti(); - fillDamEngineFromWti.FillDamProjectDataFromKernelModel(actualKernelModel); +// File.WriteAllText(fullFileName, xmlWti); + // KernelModel actualKernelModel = WtiDeserializer.Deserialize(xmlWti); + var fillDamEngineFromWti = new FillEngineFromMacroStabilityWrapperInput(); + //fillDamEngineFromWti.FillDamProjectDataFromKernelModel(actualKernelModel); // Then the data models are equal var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; - ComparisonResult result; + // ComparisonResult result; return; // TODO fix following comparisons. Can be done if all code is implemented - result = compare.Compare(expectedSurfaceLine2D, fillDamEngineFromWti.SurfaceLine2); - Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SurfaceLine2"); - result = compare.Compare(expectedSoilProfile2D, fillDamEngineFromWti.SoilProfile2D); - Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilProfile2D"); - result = compare.Compare(expectedSoilList, fillDamEngineFromWti.SoilList); - Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilList"); - result = compare.Compare(expectedLocation, fillDamEngineFromWti.Location); - Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel Location"); - result = compare.Compare(expectedParametersMStab, fillDamEngineFromWti.FailureMechanismParametersMStab); - Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel FailureMechanismParametersMStab"); + // result = compare.Compare(expectedSurfaceLine2D, fillDamEngineFromWti.SurfaceLine2); + // Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SurfaceLine2"); + // result = compare.Compare(expectedSoilProfile2D, fillDamEngineFromWti.SoilProfile2D); + // Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilProfile2D"); + // result = compare.Compare(expectedSoilList, fillDamEngineFromWti.SoilList); + // Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilList"); + // result = compare.Compare(expectedLocation, fillDamEngineFromWti.Location); + // Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel Location"); + // result = compare.Compare(expectedParametersMStab, fillDamEngineFromWti.FailureMechanismParametersMStab); + // Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel FailureMechanismParametersMStab"); } @@ -189,19 +169,20 @@ [TestCase("Benchmark 1-01b.wti")] [TestCase("bm3-10c.wti")] + [Category(Categories.WorkInProgress)] //wti files can no longer be used public void GivenWtiFileWhenFillingToDamEngineDataAndWritingBackToKernelDataThenTheKernelModelsAreEqual(string fileNameIn) { // Given Wti file string fullFileNameIn = Path.Combine(WtiFilesMap, fileNameIn); // When filling to DamEngine data string xmlInput = File.ReadAllText(fullFileNameIn); - KernelModel expectedKernelModel = WtiDeserializer.Deserialize(xmlInput); - FillDamEngineFromWti fillDamEngineFromWti = new FillDamEngineFromWti(); - fillDamEngineFromWti.FillDamProjectDataFromKernelModel(expectedKernelModel); + //KernelModel expectedKernelModel = WtiDeserializer.Deserialize(xmlInput); + FillEngineFromMacroStabilityWrapperInput fillDamEngineFromWti = new FillEngineFromMacroStabilityWrapperInput(); + //fillDamEngineFromWti.FillDamProjectDataFromKernelModel(expectedKernelModel); // And writing back to kernel data - FillWtiKernelData fillWtiKernelData = new FillWtiKernelData() + var fillWtiKernelData = new FillMacroStabilityWrapperInputFromEngine() { SoilList = fillDamEngineFromWti.SoilList, Waternet = fillDamEngineFromWti.Waternet, @@ -212,22 +193,22 @@ UpliftVanCalculationGrid = fillDamEngineFromWti.UpliftVanCalculationGrid, TrafficLoad = fillDamEngineFromWti.TrafficLoad }; - KernelModel actualKernelModel = fillWtiKernelData.CreateKernelModel(); - string xmlOutput = WtiSerializer.Serialize(actualKernelModel); + var actualKernelModel = fillWtiKernelData.CreateMacroStabilityInput(); + // string xmlOutput = WtiSerializer.Serialize(actualKernelModel); string fileNameOut = fileNameIn + ".out"; string fullFileNameOut = Path.Combine(WtiFilesMap, fileNameOut); - File.WriteAllText(fullFileNameOut, xmlOutput); + // File.WriteAllText(fullFileNameOut, xmlOutput); // Then the kernel models are equal - 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); - CompareWaternet(expectedKernelModel.StabilityModel.LastStage.GeotechnicsData.CurrentWaternet, - actualKernelModel.StabilityModel.LastStage.GeotechnicsData.CurrentWaternet); - CompareUpliftVanCalculationGrid(expectedKernelModel.StabilityModel.SlipPlaneUpliftVan, actualKernelModel.StabilityModel.SlipPlaneUpliftVan); - CompareTrafficLoad(expectedKernelModel.StabilityModel.LastStage.UniformLoads, actualKernelModel.StabilityModel.LastStage.UniformLoads); + // 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); + // CompareWaternet(expectedKernelModel.StabilityModel.LastStage.GeotechnicsData.CurrentWaternet, + // actualKernelModel.StabilityModel.LastStage.GeotechnicsData.CurrentWaternet); + // CompareUpliftVanCalculationGrid(expectedKernelModel.StabilityModel.SlipPlaneUpliftVan, actualKernelModel.StabilityModel.SlipPlaneUpliftVan); + // CompareTrafficLoad(expectedKernelModel.StabilityModel.LastStage.UniformLoads, actualKernelModel.StabilityModel.LastStage.UniformLoads); } private void CompareTrafficLoad(List expectedUniformLoads, List actualUniformLoads) @@ -280,7 +261,7 @@ Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel Waternet.WaternetLineList"); result = compare.Compare(expectedWaternet.HeadLineList, actualWaternet.HeadLineList); Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel Waternet.HeadLineList"); - Assert.AreEqual(expectedWaternet.ExternalWaterLevel, actualWaternet.ExternalWaterLevel); +// Assert.AreEqual(expectedWaternet.ExternalWaterLevel, actualWaternet.ExternalWaterLevel); } private void CompareSoilSurfaceLine(CharacteristicPointSet expectedCharacteristicPoints, CharacteristicPointSet actualCharacteristicPoints) @@ -303,19 +284,19 @@ } - private void CompareSoilModel(SoilModel expectedSoilModel, SoilModel actualSoilModel) - { - Assert.AreEqual(expectedSoilModel.Soils.Count, actualSoilModel.Soils.Count, "Soil Count does not match"); - foreach (Soil expectedSoil in expectedSoilModel.Soils) - { - 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 = SoilParametersToIgnore; - var result = compare.Compare(expectedSoil, actualSoil); - Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilModel"); - } - } + // private void CompareSoilModel(SoilModel expectedSoilModel, SoilModel actualSoilModel) + // { + // Assert.AreEqual(expectedSoilModel.Soils.Count, actualSoilModel.Soils.Count, "Soil Count does not match"); + // foreach (Soil expectedSoil in expectedSoilModel.Soils) + // { + // 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 = SoilParametersToIgnore; + // var result = compare.Compare(expectedSoil, actualSoil); + // Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SoilModel"); + // } + // } private void CompareStabilityModel(StabilityModel expectedStabilityModel, StabilityModel actualStabilityModel) { @@ -326,40 +307,41 @@ [TestCase("ValidateOk.xml")] [TestCase("ValidateError.xml")] - public void GivenValidationResultFileWhenDeserializingAndSerializingThenTheStringsAreEqual(string fileNameIn) - { - // Given validation result file from kernel - string fullFileNameIn = Path.Combine(WtiFilesMap, fileNameIn); + // public void GivenValidationResultFileWhenDeserializingAndSerializingThenTheStringsAreEqual(string fileNameIn) + // { + // // Given validation result file from kernel + // string fullFileNameIn = Path.Combine(WtiFilesMap, fileNameIn); + // + // // When Deserializing and Serializing + // string xmlInput = File.ReadAllText(fullFileNameIn); + // string fileNameOut = fileNameIn + ".out"; + // string fullFileNameOut = Path.Combine(WtiFilesMap, fileNameOut); + // IValidationResult[] validationResults = WtiDeserializer.DeserializeValidation(xmlInput); + // string xmlOutput = WtiSerializer.SerializeValidation(validationResults); + // File.WriteAllText(fullFileNameOut, xmlOutput); + // + // // Then the strings are equal + // Assert.AreEqual(xmlInput, xmlOutput); + // } - // When Deserializing and Serializing - string xmlInput = File.ReadAllText(fullFileNameIn); - string fileNameOut = fileNameIn + ".out"; - string fullFileNameOut = Path.Combine(WtiFilesMap, fileNameOut); - IValidationResult[] validationResults = WtiDeserializer.DeserializeValidation(xmlInput); - string xmlOutput = WtiSerializer.SerializeValidation(validationResults); - File.WriteAllText(fullFileNameOut, xmlOutput); - - // Then the strings are equal - Assert.AreEqual(xmlInput, xmlOutput); - } - [TestCase("Result1.xml")] - public void GivenCalculationResultFileWhenDeserializingAndSerializingThenTheStringsAreEqual(string fileNameIn) - { - // Given calculation result file from kernel - string fullFileNameIn = Path.Combine(WtiFilesMap, fileNameIn); - - // When Deserializing and Serializing - string xmlInput = File.ReadAllText(fullFileNameIn); - string fileNameOut = fileNameIn + ".out"; - string fullFileNameOut = Path.Combine(WtiFilesMap, fileNameOut); - var calculationResults = WtiDeserializer.DeserializeResult(xmlInput); - string xmlOutput = WtiSerializer.SerializeResult(calculationResults); - File.WriteAllText(fullFileNameOut, xmlOutput); - - // Then the strings are equal - Assert.AreEqual(xmlInput, xmlOutput); - } + // public void GivenCalculationResultFileWhenDeserializingAndSerializingThenTheStringsAreEqual(string fileNameIn) + // { + // // Given calculation result file from kernel + // string fullFileNameIn = Path.Combine(WtiFilesMap, fileNameIn); + // + // // When Deserializing and Serializing + // string xmlInput = File.ReadAllText(fullFileNameIn); + // string fileNameOut = fileNameIn + ".out"; + // string fullFileNameOut = Path.Combine(WtiFilesMap, fileNameOut); + // var calculationResults = WtiDeserializer.DeserializeResult(xmlInput); + // string xmlOutput = WtiSerializer.SerializeResult(calculationResults); + // File.WriteAllText(fullFileNameOut, xmlOutput); + // + // // Then the strings are equal + // Assert.AreEqual(xmlInput, xmlOutput); + // } + private DamProjectData CreateExampleDamProjectData() { return FactoryForDamProjectData.CreateExampleDamProjectData(); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj =================================================================== diff -u -r2899 -r2904 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj (.../Deltares.DamEngine.Calculators.csproj) (revision 2899) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj (.../Deltares.DamEngine.Calculators.csproj) (revision 2904) @@ -44,42 +44,66 @@ ..\..\lib\FailureMechanisms\DamPiping\Deltares.DamPiping.SellmeijerVNKCalculator.dll - - ..\..\lib\FailureMechanisms\Macrostability\Deltares.MacroStability.Data.dll + + False + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Calculation.dll - - ..\..\lib\FailureMechanisms\Macrostability\Deltares.MacroStability.Geometry.dll + + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.CSharpWrapper.dll - - ..\..\lib\FailureMechanisms\Macrostability\Deltares.MacroStability.Kernel.dll + + False + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Data.dll - - ..\..\lib\FailureMechanisms\Macrostability\Deltares.MacroStability.Preprocessing.dll + + False + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Geometry.dll - - ..\..\lib\FailureMechanisms\Macrostability\Deltares.MacroStability.Standard.dll + + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Interface.dll - - ..\..\lib\FailureMechanisms\Macrostability\Deltares.MacroStability.WaternetCreator.dll + + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Io.dll - - ..\..\lib\FailureMechanisms\Macrostability\Deltares.SearchAlgorithms.dll + + False + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Kernel.dll - - ..\..\lib\FailureMechanisms\Macrostability\Deltares.SoilStress.Data.dll + + False + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Preprocessing.dll - + + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Reliability.dll + + + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Reliability.CSharpWrapper.dll + + + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Reliability.Interface.dll + + + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Reliability.Io.dll + + False - ..\..\lib\FailureMechanisms\WtiPipingMerged\Deltares.WTIPiping.Merged.dll + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Standard.dll - + False - ..\..\lib\FailureMechanisms\Macrostability\Deltares.WTIStability.Calculation.Wrapper.dll + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.WaternetCreator.dll - + False - ..\..\lib\FailureMechanisms\Macrostability\Deltares.WTIStability.Data.dll + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.SearchAlgorithms.dll + + ..\..\lib\FailureMechanisms\Macrostability\Deltares.SoilStress.Data.dll + + + False + ..\..\lib\FailureMechanisms\WtiPipingMerged\Deltares.WTIPiping.Merged.dll + @@ -101,17 +125,17 @@ - - + + + + - + - - @@ -164,9 +188,6 @@ - - - Fisheye: Tag 2904 refers to a dead (removed) revision in file `DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/WTIDeserializer.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2904 refers to a dead (removed) revision in file `DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/DamMacroStabilityOutput.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2904 refers to a dead (removed) revision in file `DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/DamMacroStabilityInput.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs =================================================================== diff -u -r2822 -r2904 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 2822) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/ConversionHelper.cs (.../ConversionHelper.cs) (revision 2904) @@ -243,12 +243,7 @@ { {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}, + {MacroStability.Geometry.ShearStrengthModel.CuCalculated, ShearStrengthModel.SuCalculated} }; return translationTable[kernelShearStrengthModel]; } @@ -259,7 +254,9 @@ /// public static MacroStability.Geometry.ShearStrengthModel ConvertToMacroStabilityShearStrengthModel(ShearStrengthModel damShearStrengthModel) { - if (damShearStrengthModel == ShearStrengthModel.SuCalculatedWithYield) + if (damShearStrengthModel == ShearStrengthModel.SuCalculatedWithYield || damShearStrengthModel == ShearStrengthModel.None || + damShearStrengthModel == ShearStrengthModel.PseudoValues || damShearStrengthModel == ShearStrengthModel.StressTable || + damShearStrengthModel == ShearStrengthModel.SuGradient || damShearStrengthModel == ShearStrengthModel.SuMeasured) { throw new ArgumentException(string.Format("Cannot convert dam ShearStrengthModel: {0}", damShearStrengthModel)); } @@ -268,12 +265,7 @@ { {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}, + {ShearStrengthModel.SuCalculated, MacroStability.Geometry.ShearStrengthModel.CuCalculated} }; return translationTable[damShearStrengthModel]; } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInput.cs =================================================================== diff -u -r2002 -r2904 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInput.cs (.../MacroStabilityInput.cs) (revision 2002) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInput.cs (.../MacroStabilityKernelDataInput.cs) (revision 2904) @@ -21,19 +21,30 @@ using Deltares.DamEngine.Calculators.KernelWrappers.Interfaces; using Deltares.DamEngine.Data.General; +using Deltares.MacroStability.CSharpWrapper; namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards { - public class MacroStabilityInput : IKernelDataInput + public class MacroStabilityKernelDataInput : IKernelDataInput { - //ToDo MWDAM-1356: Not clear yet what input must be provided - //probably something like FailureMechanismParametersMStab + private Deltares.MacroStability.CSharpWrapper.Input.MacroStabilityInput input = + new Deltares.MacroStability.CSharpWrapper.Input.MacroStabilityInput(); + + /// - /// Gets or sets the failure mechanisme paramaters m stab. + /// Gets or sets the actual input for the CSharpWrapper. /// /// - /// The failure mechanisme paramaters m stab. + /// The input. /// - public FailureMechanismParametersMStab FailureMechanismParametersMStab { get; set; } + public Deltares.MacroStability.CSharpWrapper.Input.MacroStabilityInput Input + { + get + { + return input; + + } + set { input = value; } + } } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/ConversionHelperTests.cs =================================================================== diff -u -r2825 -r2904 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 2825) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/ConversionHelperTests.cs (.../ConversionHelperTests.cs) (revision 2904) @@ -160,11 +160,7 @@ [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) { @@ -174,11 +170,7 @@ [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) { Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Deltares.DamEngine.Calculators.Tests.csproj =================================================================== diff -u -r2893 -r2904 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Deltares.DamEngine.Calculators.Tests.csproj (.../Deltares.DamEngine.Calculators.Tests.csproj) (revision 2893) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/Deltares.DamEngine.Calculators.Tests.csproj (.../Deltares.DamEngine.Calculators.Tests.csproj) (revision 2904) @@ -36,37 +36,50 @@ False ..\..\lib\FailureMechanisms\DamMacroStability\Deltares.DamMacroStability.Calculator.dll - + False - ..\..\lib\FailureMechanisms\Macrostability\Deltares.MacroStability.Data.dll + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.CSharpWrapper.dll - + False - ..\..\lib\FailureMechanisms\Macrostability\Deltares.MacroStability.Geometry.dll + ..\..\..\MacroStabilityReliability\extern\Macrostability\Deltares.MacroStability.Data.dll - + False - ..\..\lib\FailureMechanisms\Macrostability\Deltares.MacroStability.Kernel.dll + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Geometry.dll - + False - ..\..\lib\FailureMechanisms\Macrostability\Deltares.MacroStability.Preprocessing.dll + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Io.dll - + False + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.Preprocessing.dll - + False - ..\..\lib\FailureMechanisms\Macrostability\Deltares.SoilStress.Data.dll + ..\..\..\MacroStabilityReliability\extern\Macrostability\Deltares.MacroStability.Standard.dll - + False - ..\..\lib\FailureMechanisms\WbiPipingMerged\Deltares.WTIPiping.Merged.dll + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.MacroStability.WaternetCreator.dll - + False - ..\..\lib\FailureMechanisms\Macrostability\Deltares.WTIStability.Data.dll + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.SearchAlgorithms.dll + + False + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.SoilStress.Calculation.dll + + + False + ..\..\lib\FailureMechanisms\MacrostabilityCSharpWrapper\Deltares.SoilStress.Data.dll + + + False + ..\..\lib\FailureMechanisms\WbiPipingMerged\Deltares.WTIPiping.Merged.dll + False ..\packages\CompareNETObjects.3.09.0.0\lib\net45\KellermanSoftware.Compare-NET-Objects.dll Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs =================================================================== diff -u --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs (revision 0) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperInputFromEngine.cs (revision 2904) @@ -0,0 +1,327 @@ +// Copyright (C) Stichting Deltares 2019. All rights reserved. +// +// This file is part of the Dam Engine. +// +// The Dam Engine is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Collections.Generic; +using System.Linq; +using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Data.Geotechnics; +using Waternet = Deltares.DamEngine.Data.Geometry.Waternet; +using Deltares.MacroStability.CSharpWrapper; +using Deltares.MacroStability.CSharpWrapper.Input; + + +namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo +{ + /// + /// Fills the Macro Stability Wrapper from the DAM Engine data + /// + public class FillMacroStabilityWrapperInputFromEngine + { + /// Gets or sets the SoilList DamEngine object + /// The soil list. + public SoilList SoilList { get; set; } + /// Gets or sets the location DamEngine object. + /// The location. + public Location Location { get; set; } + /// Gets or sets the SoilProfile2D DamEngine object. + /// The soil profile2 d. + public SoilProfile2D SoilProfile2D { get; set; } + /// Gets or sets the SurfaceLine2 DamEngine object. + /// The surface line2. + public SurfaceLine2 SurfaceLine2 { get; set; } + /// Gets or sets the waternet. + /// The waternet. + public Waternet Waternet { get; set; } + /// Gets or sets the UpliftVan calculation grid. + /// The uplift van calculation grid. + public UpliftVanCalculationGrid UpliftVanCalculationGrid { get; set; } + /// Gets or sets the traffic load. + /// The traffic load. + public TrafficLoad TrafficLoad { get; set; } + /// Gets or sets the MStab failure mechanism parameters. + /// The MStab failure mechanism parameters. + public FailureMechanismParametersMStab FailureMechanismParametersMStab { get; set; } + + public Deltares.MacroStability.CSharpWrapper.Input.MacroStabilityInput CreateMacroStabilityInput() + { + var macroStabilityInput = new Deltares.MacroStability.CSharpWrapper.Input.MacroStabilityInput(); + macroStabilityInput.StabilityModel = new StabilityInput(); // ToDo check whether this is needed. + macroStabilityInput.PreprocessingInput = new PreprocessingInput(); // ToDo check whether this is needed. + FailureMechanismParametersMStab.MStabParameters.Model = MStabModelType.UpliftVanWti; + TransferStabilityModelProperties(FailureMechanismParametersMStab, macroStabilityInput.StabilityModel); + TransferSoils(SoilList, SoilProfile2D, macroStabilityInput.StabilityModel.Soils); + macroStabilityInput.StabilityModel.ConstructionStages.Add(new ConstructionStage()); // ToDo check whether this is needed. + var lastStage = macroStabilityInput.StabilityModel.ConstructionStages.Last(); + lastStage.SoilProfile = new MacroStability.CSharpWrapper.Input.SoilProfile(); // ToDo check whether this is needed. + TransferSoilProfile(SoilProfile2D, lastStage.SoilProfile); + macroStabilityInput.PreprocessingInput.PreConstructionStages.Add(new PreConstructionStage()); // ToDo check whether this is needed. + var preConstructionLastStage = macroStabilityInput.PreprocessingInput.PreConstructionStages.Last(); + preConstructionLastStage.Surfaceline = new SurfaceLine(); + TransferSurfaceLine(SurfaceLine2, preConstructionLastStage.Surfaceline); + TransferWaternet(Waternet, lastStage.Waternet); + TransferUpliftVanCalculationGrid(UpliftVanCalculationGrid, macroStabilityInput.StabilityModel.UpliftVanCalculationGrid, macroStabilityInput.PreprocessingInput.SearchAreaConditions); + TransferUniformLoads(TrafficLoad, lastStage.UniformLoads); + return macroStabilityInput; + } + + private void TransferStabilityModelProperties(FailureMechanismParametersMStab damFailureMechanismParametersMStab, StabilityInput kernelStabilityInput) + { + kernelStabilityInput.MoveGrid = true; // is not in DamEngine datamodel + kernelStabilityInput.MaximumSliceWidth = 1.0; // is not in DamEngine datamodel + //kernelStabilityInput.SearchAlgorithm = ConversionHelper.ConvertToMacroStabilitySearchMethod( + //failureMechanismParametersMStab.MStabParameters.SearchMethod); + //kernelStabilityInput.ModelOption = ConversionHelper.ConvertToModelOptions( + //failureMechanismParametersMStab.MStabParameters.Model); + //kernelStabilityInput.Orientation = ConversionHelper.ConvertToGridOrientation( + // failureMechanismParametersMStab.MStabParameters.GridPosition); + } + + private void TransferSoils(SoilList damSoilList, Data.Geotechnics.SoilProfile2D damSoilProfile2D, IList kernelSoils) + { + // // Transfer all soils + // if (damSoilList != null) + // { + // foreach (var damSoil in damSoilList.Soils) + // { + // var kernelSoil = ConversionHelper.ConvertToMacroStabilitySoil(damSoil); + // dictSoils.Add(damSoil, kernelSoil); + // } + // } + // + // // Harvest all soils from damSoilProfile2D + // foreach (SoilLayer2D surface in damSoilProfile2D.Surfaces) + // { + // var soil = surface.Soil; + // if (!dictSoils.ContainsKey(soil)) + // { + // Soil macroStabilitySoil = ConversionHelper.ConvertToMacroStabilitySoil(soil); + // dictSoils.Add(soil, macroStabilitySoil); + // } + // } + // + // // Add soils to the kernel soillist + // foreach (KeyValuePair entry in dictSoils) + // { + // kernelSoils.Add(entry.Value); + // } + } + + private void TransferSoilProfile(DamEngine.Data.Geotechnics.SoilProfile2D damSoilProfile2D, MacroStability.CSharpWrapper.Input.SoilProfile kernelSoilProfile) + { + // // Add points + // foreach (var damPoint in damSoilProfile2D.Geometry.Points) + // { + // Point2D kernelPoint2D; + // if (dictPoints.ContainsKey(damPoint)) + // { + // kernelPoint2D = dictPoints[damPoint]; + // } + // else + // { + // kernelPoint2D = new Point2D() { X = damPoint.X, Z = damPoint.Z }; + // dictPoints.Add(damPoint, kernelPoint2D); + // } + // kernelSoilProfile.Geometry.Points.Add(kernelPoint2D); + // } + // + // // Add curves + // foreach (var damCurve in damSoilProfile2D.Geometry.Curves) + // { + // GeometryCurve kernelCurve; + // if (dictCurves.ContainsKey(damCurve)) + // { + // kernelCurve = dictCurves[damCurve]; + // } + // else + // { + // var damHeadPoint = damCurve.HeadPoint; + // var damEndPoint = damCurve.EndPoint; + // var kernelHeadPoint = dictPoints[damHeadPoint]; + // var kernelEndPoint = dictPoints[damEndPoint]; + // kernelCurve = new GeometryCurve() {HeadPoint = kernelHeadPoint, EndPoint = kernelEndPoint}; + // dictCurves.Add(damCurve, kernelCurve); + // } + // kernelSoilProfile.Geometry.Curves.Add(kernelCurve); + // } + // + // // Add loops + // foreach (var damLoop in damSoilProfile2D.Geometry.Loops) + // { + // GeometryLoop kernelLoop; + // if (dictLoops.ContainsKey(damLoop)) + // { + // kernelLoop = dictLoops[damLoop]; + // } + // else + // { + // kernelLoop = new GeometryLoop(){Name = damLoop.Name}; + // foreach (var damCurve in damLoop.CurveList) + // { + // kernelLoop.CurveList.Add(dictCurves[damCurve]); + // } + // + // dictLoops.Add(damLoop, kernelLoop); + // } + // kernelSoilProfile.Geometry.Loops.Add(kernelLoop); + // } + // + // // Add surfaces + // foreach (var damSurface in damSoilProfile2D.Geometry.Surfaces) + // { + // GeometrySurface kernelSurface; + // if (dictSurfaces.ContainsKey(damSurface)) + // { + // kernelSurface = dictSurfaces[damSurface]; + // } + // else + // { + // kernelSurface = new GeometrySurface() { Name = damSurface.Name }; + // kernelSurface.OuterLoop = dictLoops[damSurface.OuterLoop]; + // foreach (var damInnerLoop in damSurface.InnerLoops) + // { + // kernelSurface.InnerLoops.Add(dictLoops[damInnerLoop]); + // } + // dictSurfaces.Add(damSurface, kernelSurface); + // } + // kernelSoilProfile.Geometry.Surfaces.Add(kernelSurface); + // } + // + // // Add soil surfaces + // foreach (var damSoilLayer2D in damSoilProfile2D.Surfaces) + // { + // MacroStability.Geometry.SoilLayer2D kernelSoilLayer2D = new MacroStability.Geometry.SoilLayer2D(); + // kernelSoilLayer2D.GeometrySurface = dictSurfaces[damSoilLayer2D.GeometrySurface]; + // kernelSoilLayer2D.Soil = dictSoils[damSoilLayer2D.Soil]; + // kernelSoilLayer2D.IsAquifer = damSoilLayer2D.IsAquifer; + // kernelSoilLayer2D.WaterpressureInterpolationModel = ConversionHelper.ConvertToMacroStabilityWaterpressureInterpolationModel(damSoilLayer2D.WaterpressureInterpolationModel); + // soilProfile2D.Surfaces.Add(kernelSoilLayer2D); + // } + // kernelSoilProfile.Geometry.Rebox(); // The boundaries should be set correctly + } + + private void TransferSurfaceLine(Data.Geotechnics.SurfaceLine2 damSurfaceLine, SurfaceLine kernelSurfaceLine) + { + // 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 TransferWaternet(Waternet damWaternet, Deltares.MacroStability.CSharpWrapper.Input.Waternet kernelWaternet) + { + // // Properties + // kernelWaternet.IsGenerated = damWaternet.IsGenerated; + // kernelWaternet.UnitWeight = damWaternet.UnitWeight; + // + // // Phreatic Line + // kernelWaternet.PhreaticLine = new PhreaticLine() + // { + // Name = damWaternet.PhreaticLine.Name + // + // }; + // foreach (var damPoint in damWaternet.PhreaticLine.CalcPoints) + // { + // kernelWaternet.PhreaticLine.CalcPoints.Add(new Point2D(damPoint.X, damPoint.Z)); + // } + // dictHeadLines.Add(damWaternet.PhreaticLine, kernelWaternet.PhreaticLine); + // + // // Head Lines + // foreach (var damHeadLine in damWaternet.HeadLineList) + // { + // var kernelHeadLine = new HeadLine() + // { + // Name = damHeadLine.Name + // }; + // foreach (var damPoint in damHeadLine.CalcPoints) + // { + // kernelHeadLine.CalcPoints.Add(new Point2D(damPoint.X, damPoint.Z)); + // } + // kernelWaternet.HeadLineList.Add(kernelHeadLine); + // dictHeadLines.Add(damHeadLine, kernelHeadLine); + // } + // + // // Waternet Lines + // foreach (var damWaternetLine in damWaternet.WaternetLineList) + // { + // var kernelWaternetLine = new WaternetLine() + // { + // Name = damWaternetLine.Name + // }; + // foreach (var damPoint in damWaternetLine.CalcPoints) + // { + // kernelWaternetLine.CalcPoints.Add(new Point2D(damPoint.X, damPoint.Z)); + // } + // + // kernelWaternetLine.HeadLine = dictHeadLines[damWaternetLine.HeadLine]; + // kernelWaternet.WaternetLineList.Add(kernelWaternetLine); + // } + } + + private void TransferUpliftVanCalculationGrid(UpliftVanCalculationGrid damUpliftVanCalculationGrid, Deltares.MacroStability.CSharpWrapper.UpliftVanCalculationGrid kernelUpliftVanCalculationGrid, SearchAreaConditions kernelSearchAreaConditions) + { + // if (damUpliftVanCalculationGrid == null) throw new ArgumentNullException(nameof(damUpliftVanCalculationGrid)); + // if (kernelSlipPlaneUpliftVan == null) throw new ArgumentNullException(nameof(kernelSlipPlaneUpliftVan)); + // if (kernelSearchAreaConditions == null) throw new ArgumentNullException(nameof(kernelSearchAreaConditions)); + // damUpliftVanCalculationGrid.IsAuto = kernelSearchAreaConditions.AutoSearchArea; + // kernelUpliftVanCalculationGrid.SlipPlaneLeftGrid.GridXNumber = damUpliftVanCalculationGrid.LeftGridXCount; + // kernelUpliftVanCalculationGrid.SlipPlaneLeftGrid.GridXLeft = damUpliftVanCalculationGrid.LeftGridXLeft; + // kernelUpliftVanCalculationGrid.SlipPlaneLeftGrid.GridXRight = damUpliftVanCalculationGrid.LeftGridXRight; + // kernelUpliftVanCalculationGrid.SlipPlaneLeftGrid.GridZNumber = damUpliftVanCalculationGrid.LeftGridZCount; + // kernelUpliftVanCalculationGrid.SlipPlaneLeftGrid.GridZTop = damUpliftVanCalculationGrid.LeftGridZTop; + // kernelUpliftVanCalculationGrid.SlipPlaneLeftGrid.GridZBottom = damUpliftVanCalculationGrid.LeftGridZBottom; + // kernelUpliftVanCalculationGrid.SlipPlaneRightGrid.GridXNumber = damUpliftVanCalculationGrid.RightGridXCount; + // kernelUpliftVanCalculationGrid.SlipPlaneRightGrid.GridXLeft = damUpliftVanCalculationGrid.RightGridXLeft; + // kernelUpliftVanCalculationGrid.SlipPlaneRightGrid.GridXRight = damUpliftVanCalculationGrid.RightGridXRight; + // kernelUpliftVanCalculationGrid.SlipPlaneRightGrid.GridZNumber = damUpliftVanCalculationGrid.RightGridZCount; + // kernelUpliftVanCalculationGrid.SlipPlaneRightGrid.GridZTop = damUpliftVanCalculationGrid.RightGridZTop; + // kernelUpliftVanCalculationGrid.SlipPlaneRightGrid.GridZBottom = damUpliftVanCalculationGrid.RightGridZBottom; + // kernelSearchAreaConditions.AutoTangentLines = damUpliftVanCalculationGrid.TangentLineAutomaticAtBoundaries; + // kernelUpliftVanCalculationGrid.SlipPlaneTangentLine.TangentLineNumber = damUpliftVanCalculationGrid.TangentLineCount; + // kernelUpliftVanCalculationGrid.SlipPlaneTangentLine.TangentLineZTop = damUpliftVanCalculationGrid.TangentLineZTop; + // kernelUpliftVanCalculationGrid.SlipPlaneTangentLine.TangentLineZBottom = damUpliftVanCalculationGrid.TangentLineZBottom; + } + + private void TransferUniformLoads(TrafficLoad damTrafficLoad, IList kernelUniformLoads) + { + kernelUniformLoads.Clear(); + if (damTrafficLoad != null) + { + kernelUniformLoads.Add(new UniformLoad() + { + XStart = damTrafficLoad.XStart, + XEnd = damTrafficLoad.XEnd, + Pressure = damTrafficLoad.Pressure, + DistributionAngle = 0.0, + }); + } + } + } +} Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs =================================================================== diff -u -r2896 -r2904 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 2896) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 2904) @@ -91,7 +91,7 @@ kernelWrapper.CreateStabilityCalculator(); // Validate without setting values. Expected error messages. - var macroStabilityInput1 = new MacroStabilityInput(); + var macroStabilityInput1 = new MacroStabilityKernelDataInput(); var macroStabilityOutput1 = new MacroStabilityOutput(); macroStabilityOutput1.CalculationResult = CalculationResult.NoRun; List messages; @@ -100,7 +100,7 @@ Assert.AreEqual(CalculationResult.InvalidInputData, macroStabilityOutput1.CalculationResult); // Validate the input when valid input is provided. Expected no messages. - var macroStabilityInput2 = new MacroStabilityInput(); + var macroStabilityInput2 = new MacroStabilityKernelDataInput(); var macroStabilityOutput2 = new MacroStabilityOutput(); macroStabilityOutput2.CalculationResult = CalculationResult.NoRun; messages.Clear(); @@ -235,11 +235,11 @@ var kernelWrapper = new MacroStabilityInwardsKernelWrapper(); kernelWrapper.CreateStabilityCalculator(); - IKernelDataInput kernelDataInput = new MacroStabilityInput(); + IKernelDataInput kernelDataInput = new MacroStabilityKernelDataInput(); IKernelDataOutput kernelDataOutput = new MacroStabilityOutput(); // Run the dll List messages; - MacroStabilityInput macroStabilityInput = (MacroStabilityInput)kernelDataInput; + MacroStabilityKernelDataInput macroStabilityKernelDataInput = (MacroStabilityKernelDataInput)kernelDataInput; kernelWrapper.tmpPresumeRunSucceeds = false; //ToDo MWDAM-1356 replace by input that makes Execute fail kernelWrapper.Execute(kernelDataInput, kernelDataOutput, out messages); MacroStabilityOutput macroStabilityOutput = (MacroStabilityOutput)kernelDataOutput; @@ -339,18 +339,6 @@ kernelWrapper.PostProcess(null, null, null, "", out results); } - [Test] - [ExpectedException(typeof(NoNullAllowedException), ExpectedMessage = "Geen reken object gedefinieerd voor Macrostabiliteit")] - [SetUICulture("nl-NL")] - public void TestThrowsExceptionWhenDamKernelIsNull() - { - List messages; - var kernelWrapper = new MacroStabilityInwardsKernelWrapper(); - IKernelDataInput kernelDataInput = new DamMacroStabilityInput(); - IKernelDataOutput kernelDataOutput = new DamMacroStabilityOutput(); - kernelWrapper.Validate(kernelDataInput, kernelDataOutput, out messages); - } - private static DamKernelInput CreateDamKernelInputForTest() { var location = DamMacroStabilityTestHelper.CreateLocation(FactoryForSurfaceLines.CreateSurfaceLineTutorial1()); Fisheye: Tag 2904 refers to a dead (removed) revision in file `DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillWtiKernelData.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs =================================================================== diff -u --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs (revision 0) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs (revision 2904) @@ -0,0 +1,39 @@ +// Copyright (C) Stichting Deltares 2019. All rights reserved. +// +// This file is part of the Dam Engine. +// +// The Dam Engine is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo +{ + public class FillEngineFromMacroStabilityWrapperOutput + { + + + public static void FillEngineDataWithResults() + { + + } + } +} Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r2896 -r2904 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 2896) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 2904) @@ -35,7 +35,8 @@ using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Data.Standard; using Deltares.DamEngine.Data.Standard.Calculation; -using Deltares.WTIStability.Calculation.Wrapper; +using Deltares.MacroStability.CSharpWrapper; + using ConversionHelper = Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo.ConversionHelper; using GeometryPoint = Deltares.DamEngine.Data.Geometry.GeometryPoint; using LogMessage = Deltares.DamEngine.Data.Standard.Logging.LogMessage; @@ -45,7 +46,7 @@ { public class MacroStabilityInwardsKernelWrapper : IKernelWrapper { - private WTIStabilityCalculation stabilityCalculator = null; + //private Deltares.MacroStability.CSharpWrapper.Calculator stabilityCalculator; private int lastIterationIndex = 0; /// @@ -72,7 +73,7 @@ /// public PrepareResult Prepare(DamKernelInput damKernelInput, int iterationIndex, out IKernelDataInput kernelDataInput, out IKernelDataOutput kernelDataOutput) { - var macroStabilityInput = new MacroStabilityInput(); + var macroStabilityInput = new MacroStabilityKernelDataInput(); kernelDataInput = macroStabilityInput; var macroStabilityOutput = new MacroStabilityOutput { @@ -98,7 +99,7 @@ var waternet = PlLinesToWaternetConverter.ConvertPlLineToWaternet(plLines, damKernelInput.SubSoilScenario.SoilProfile1D, penetrationLength, left, right); - FillWtiKernelData fillWtiKernelData = new FillWtiKernelData() + FillMacroStabilityWrapperInputFromEngine fillMacroStabilityWrapperFromEngine = new FillMacroStabilityWrapperInputFromEngine() { SoilList = damKernelInput.Location.SoilList, FailureMechanismParametersMStab = this.FailureMechanismParametersMStab, @@ -110,12 +111,13 @@ // ToDo MWDAM-1399: add data for calculation grid Uplift Van // UpliftVanCalculationGrid = expectedUpliftVanCalculationGrid }; - - // ToDo MWDAM-1356: following line is not working yet, first all necessary input must be declared - //KernelModel expectedKernelModel = fillWtiKernelData.CreateKernelModel(); - var xmlInput = CreateXmlInput(macroStabilityInput, FailureMechanismParametersMStab.EmbankmentDesignParameters); - return PrepareKernel(xmlInput); + // ToDo MWDAM-1356: following line is not working yet, first all necessary input must be declared + macroStabilityInput.Input = fillMacroStabilityWrapperFromEngine.CreateMacroStabilityInput(); + // KernelModel expectedKernelModel = fillMacroStabilityWrapperFromEngine.CreateKernelModel(); + // expectedKernelModel. + // var xmlInput = CreateXmlInput(macroStabilityInput, FailureMechanismParametersMStab.EmbankmentDesignParameters); + // return PrepareKernel(xmlInput); } return PrepareResult.NotRelevant; } @@ -129,37 +131,38 @@ return PrepareResult.NotRelevant; } - private PrepareResult PrepareKernel(string xmlInput) - { - ThrowWhenMacroStabilityCalculatorNull(stabilityCalculator); - try - { - // ToDo MWDAM-1356: Not clear yet what parts are required for input. Temporary test code added. - //macroStabilityCalculator.InitializeForDeterministic(xmlInput); //ToDo: uncomment when input is set - //return PrepareResult.Successful; //ToDo: uncomment when input is set - if (tmpPresumePrepareSucceeds) //ToDo: remove the temporary test code when input is set - { - return PrepareResult.Successful; - } - else - { - return PrepareResult.Failed; - } + // private PrepareResult PrepareKernel(string xmlInput) + // { + // try + // { + // var input = new MacroStabilityKernelDataInput(); + // new Calculator(input) + // // ToDo MWDAM-1356: Not clear yet what parts are required for input. Temporary test code added. + // //macroStabilityCalculator.InitializeForDeterministic(xmlInput); //ToDo: uncomment when input is set + // //return PrepareResult.Successful; //ToDo: uncomment when input is set + // if (tmpPresumePrepareSucceeds) //ToDo: remove the temporary test code when input is set + // { + // return PrepareResult.Successful; + // } + // else + // { + // return PrepareResult.Failed; + // } + // + // } + // catch + // { + // return PrepareResult.Failed; + // } + // } - } - catch - { - return PrepareResult.Failed; - } - } + // private string CreateXmlInput(MacroStabilityKernelDataInput macroStabilityKernelDataInput, EmbankmentDesignParameters embankmentDesignParameters) + // { + // string xmlInput = ""; + // //ToDo in MWDAM-1356 + // return xmlInput; + // } - private string CreateXmlInput(MacroStabilityInput macroStabilityInput, EmbankmentDesignParameters embankmentDesignParameters) - { - string xmlInput = ""; - //ToDo in MWDAM-1356 - return xmlInput; - } - /// /// Validates the specified kernel data input. /// @@ -171,7 +174,6 @@ /// public int Validate(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages) { - ThrowWhenMacroStabilityCalculatorNull(stabilityCalculator); if (tmpPresumeInputValid) { messages = new List(); @@ -182,7 +184,7 @@ messages = new List(); messages.Add(new LogMessage(LogMessageType.Error, null, "Not implemented yet")); // Todo MWDAM-1356 : make valid XML, only then following lines can be enabled - // string kernelMessage = macroStabilityCalculator.Validate(); + // string kernelMessage = macroStabilityCalculator.Validate(); // ParseValidationResult(kernelMessage, out messages); MacroStabilityOutput macroStabilityOutput = (MacroStabilityOutput)kernelDataOutput; var numberOfErrors = messages.Count(mt => mt.MessageType == LogMessageType.Error); @@ -198,15 +200,15 @@ internal void ParseValidationResult(string xmlValidationResult, out List messages) { messages = new List(); - var validationResults = WtiDeserializer.DeserializeValidation(xmlValidationResult); - foreach (var result in validationResults) - { - messages.Add(new LogMessage - { - Message = result.Text, - MessageType = ConversionHelper.ConvertKernelValidationResultTypeToLogMessageType(result.MessageType) - }); - } + //var validationResults = WtiDeserializer.DeserializeValidation(xmlValidationResult); + // foreach (var result in validationResults) + // { + // messages.Add(new LogMessage + // { + // Message = result.Text, + // MessageType = ConversionHelper.ConvertKernelValidationResultTypeToLogMessageType(result.MessageType) + // }); + // } } /// @@ -217,18 +219,17 @@ /// The return messages. public void Execute(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out List messages) { - MacroStabilityInput macroStabilityInput = (MacroStabilityInput)kernelDataInput; + MacroStabilityKernelDataInput macroStabilityKernelDataInput = (MacroStabilityKernelDataInput)kernelDataInput; MacroStabilityOutput macroStabilityOutput = (MacroStabilityOutput)kernelDataOutput; - ThrowWhenMacroStabilityKernelInputNull(macroStabilityInput); + ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); messages = new List(); - PerformStabilityCalculation(out messages, macroStabilityOutput, macroStabilityInput); + PerformStabilityCalculation(out messages, macroStabilityOutput, macroStabilityKernelDataInput); } private void PerformStabilityCalculation(out List messages, MacroStabilityOutput macroStabilityOutput, - MacroStabilityInput macroStabilityInput) + MacroStabilityKernelDataInput macroStabilityKernelDataInput) { - ThrowWhenMacroStabilityCalculatorNull(stabilityCalculator); macroStabilityOutput.CalculationResult = CalculationResult.NoRun; macroStabilityOutput.StabilityOutputItems = new List(); messages = new List(); @@ -272,40 +273,40 @@ { messages = new List(); macroStabilityOutputItem = new MacroStabilityOutputItem(); - var calculationResults = WtiDeserializer.DeserializeResult(xmlRunResult); - var slicesCount = calculationResults.Curve.Slices.Count; - if (slicesCount > 0) + // var calculationResults = WtiDeserializer.DeserializeResult(xmlRunResult); + // var slicesCount = calculationResults.Curve.Slices.Count; + // if (slicesCount > 0) + // { + // calculationResults.XMinEntry = calculationResults.Curve.Slices[0].TopLeftX; + // calculationResults.XMaxEntry = calculationResults.Curve.Slices[slicesCount - 1].TopRightX; + // } + // else { - calculationResults.XMinEntry = calculationResults.Curve.Slices[0].TopLeftX; - calculationResults.XMaxEntry = calculationResults.Curve.Slices[slicesCount - 1].TopRightX; - } - else - { macroStabilityOutputItem.CalculationResult = CalculationResult.UnexpectedError; } - macroStabilityOutputItem.CalculationResult = calculationResults.Calculated ? - CalculationResult.Succeeded : CalculationResult.RunFailed; - macroStabilityOutputItem.SafetyFactor = calculationResults.FactorOfSafety; - macroStabilityOutputItem.CircleSurfacePointLeftXCoordinate = calculationResults.XMinEntry; - macroStabilityOutputItem.CircleSurfacePointRightXCoordinate = calculationResults.XMaxEntry; - macroStabilityOutputItem.StabilityModelType = ConversionHelper.ConvertToMStabModelType(calculationResults.ModelOption); - foreach (var message in calculationResults.Messages) - { - messages.Add(new LogMessage - { - Message = message.Message, - MessageType = ConversionHelper.ConvertKernelLogMessageTypeToLogMessageType(message.MessageType) - }); - } + // macroStabilityOutputItem.CalculationResult = calculationResults.Calculated ? + // CalculationResult.Succeeded : CalculationResult.RunFailed; + // macroStabilityOutputItem.SafetyFactor = calculationResults.FactorOfSafety; + // macroStabilityOutputItem.CircleSurfacePointLeftXCoordinate = calculationResults.XMinEntry; + // macroStabilityOutputItem.CircleSurfacePointRightXCoordinate = calculationResults.XMaxEntry; + // macroStabilityOutputItem.StabilityModelType = ConversionHelper.ConvertToMStabModelType(calculationResults.ModelOption); + // foreach (var message in calculationResults.Messages) + // { + // messages.Add(new LogMessage + // { + // Message = message.Message, + // MessageType = ConversionHelper.ConvertKernelLogMessageTypeToLogMessageType(message.MessageType) + // }); + // } } /// /// Creates the calculator for stability based on kernel input. /// public void CreateStabilityCalculator() { - stabilityCalculator = new WTIStabilityCalculation(); + //Calculator.Calculate(); } /// @@ -369,11 +370,11 @@ /// /// Throws the when macro stability kernel input is not assigned. /// - /// The dam macro stability input. + /// The dam macro stability input. /// - public static void ThrowWhenMacroStabilityKernelInputNull(MacroStabilityInput macroStabilityInput) + public static void ThrowWhenMacroStabilityKernelInputNull(MacroStabilityKernelDataInput macroStabilityKernelDataInput) { - if (macroStabilityInput == null) + if (macroStabilityKernelDataInput == null) { throw new NoNullAllowedException(Resources.MacroStabilityKernelWrapper_NoMacroStabilityInputObjectDefined); } @@ -406,19 +407,6 @@ } /// - /// Throws the when macro stability calculator is not assigned. - /// - /// The macro stability calculator. - /// - public static void ThrowWhenMacroStabilityCalculatorNull(WTIStabilityCalculation macroStabilityCalculator) - { - if (macroStabilityCalculator == null) - { - throw new NoNullAllowedException(Resources.MacroStabilityKernelWrapper_NoDamKernelObjectDefinedForMacroStability); - } - } - - /// /// Calculates the design at point. /// /// The dam kernel input. @@ -450,9 +438,9 @@ public bool EvaluateDesign(DamKernelInput damKernelInput, IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, out DesignAdvise designAdvise, out string evaluationMessage) { - MacroStabilityInput macroStabilityInput = kernelDataInput as MacroStabilityInput; + MacroStabilityKernelDataInput macroStabilityKernelDataInput = kernelDataInput as MacroStabilityKernelDataInput; MacroStabilityOutput macroStabilityOutput = kernelDataOutput as MacroStabilityOutput; - ThrowWhenMacroStabilityKernelInputNull(macroStabilityInput); + ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); ThrowWhenMacroStabilityDamKernelInputNull(damKernelInput); @@ -488,8 +476,8 @@ public void PrepareDesign(IKernelDataInput kernelDataInput, IKernelDataOutput kernelDataOutput, DamKernelInput damKernelInput, int iterationIndex, out EmbankmentDesignParameters embankmentDesignParameters) { - MacroStabilityInput macroStabilityInput = kernelDataInput as MacroStabilityInput; - ThrowWhenMacroStabilityKernelInputNull(macroStabilityInput); + MacroStabilityKernelDataInput macroStabilityKernelDataInput = kernelDataInput as MacroStabilityKernelDataInput; + ThrowWhenMacroStabilityKernelInputNull(macroStabilityKernelDataInput); lastIterationIndex = iterationIndex; var location = damKernelInput.Location; @@ -526,9 +514,9 @@ embankmentDesignParameters = FailureMechanismParametersMStab.EmbankmentDesignParameters; embankmentDesignParametersForKernelInput = embankmentDesignParameters; } - var xmlInput = CreateXmlInput(macroStabilityInput, embankmentDesignParametersForKernelInput); - var prepareResult = PrepareKernel(xmlInput); - if (prepareResult != PrepareResult.Successful) +// var xmlInput = CreateXmlInput(macroStabilityKernelDataInput, embankmentDesignParametersForKernelInput); +// var prepareResult = PrepareKernel(xmlInput); +// if (prepareResult != PrepareResult.Successful) { throw new MacroStabilityException(Resources.MacroStabilityKernelWrapper_PrepareForMacroStabilityDidNotSucceed); } Fisheye: Tag 2904 refers to a dead (removed) revision in file `DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/DamMacroStabilityOutputItem.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2904 refers to a dead (removed) revision in file `DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInput.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2904 refers to a dead (removed) revision in file `DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillDamEngineFromWti.cs'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 2904 refers to a dead (removed) revision in file `DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/WTISerializer.cs'. Fisheye: No comparison available. Pass `N' to diff?