Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillDamEngineFromWti.cs =================================================================== diff -u -r2027 -r2030 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillDamEngineFromWti.cs (.../FillDamEngineFromWti.cs) (revision 2027) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillDamEngineFromWti.cs (.../FillDamEngineFromWti.cs) (revision 2030) @@ -25,6 +25,7 @@ using Deltares.DamEngine.Data.Geotechnics; using Deltares.MacroStability.Data; using Deltares.MacroStability.Kernel; +using Deltares.MacroStability.Preprocessing; using Soil = Deltares.MacroStability.Geometry.Soil; using CharacteristicPoint = Deltares.DamEngine.Data.Geotechnics.CharacteristicPoint; using GeometryCurve = Deltares.MacroStability.Geometry.GeometryCurve; @@ -55,6 +56,9 @@ /// Gets or sets the waternet. /// The waternet. public Data.Geometry.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 failure mechanism parameters m stab. /// The failure mechanism parameters for macrostability DamEngine object. public FailureMechanismParametersMStab FailureMechanismParametersMStab { get; set; } @@ -71,17 +75,39 @@ SoilProfile2D = new SoilProfile2D(); SurfaceLine2 = new SurfaceLine2(); Waternet = new Data.Geometry.Waternet(); + UpliftVanCalculationGrid = new UpliftVanCalculationGrid(); FailureMechanismParametersMStab = new FailureMechanismParametersMStab(); TransferWtiStabilityModel(kernelModel.StabilityModel, FailureMechanismParametersMStab); TransferSoils(kernelModel.StabilityModel.Soils); TransferSoilProfile2D(kernelModel.StabilityModel.SoilProfile); TransferSurfaceLine(kernelModel.PreprocessingModel.LastStage.SurfaceLine, SurfaceLine2); TransferWaternet(kernelModel.StabilityModel.LastStage.GeotechnicsData.CurrentWaternet, Waternet); - // TransferLocation(kernelModel, Location); - // TransferSurfaceLine2(kernelModel, SurfaceLine2); - // TransferParametersMStab(kernelModel, FailureMechanismParametersMStab); + TransferUpliftVanCalculationGrid(kernelModel.StabilityModel.SlipPlaneUpliftVan, kernelModel.PreprocessingModel.SearchAreaConditions , UpliftVanCalculationGrid); } + private void TransferUpliftVanCalculationGrid(SlipPlaneUpliftVan kernelSlipPlaneUpliftVan, + SearchAreaConditions kernelSearchAreaConditions, + UpliftVanCalculationGrid damUpliftVanCalculationGrid) + { + damUpliftVanCalculationGrid.IsAuto = kernelSearchAreaConditions.AutoSearchArea; + damUpliftVanCalculationGrid.LeftGridXCount = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXNumber; + damUpliftVanCalculationGrid.LeftGridXLeft = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXLeft; + damUpliftVanCalculationGrid.LeftGridXRight = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXRight; + damUpliftVanCalculationGrid.LeftGridZCount = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZNumber; + damUpliftVanCalculationGrid.LeftGridZTop = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZTop; + damUpliftVanCalculationGrid.LeftGridZBottom = kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZBottom; + damUpliftVanCalculationGrid.RightGridXCount = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridXNumber; + damUpliftVanCalculationGrid.RightGridXLeft = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridXLeft; + damUpliftVanCalculationGrid.RightGridXRight = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridXRight; + damUpliftVanCalculationGrid.RightGridZCount = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridZNumber; + damUpliftVanCalculationGrid.RightGridZTop = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridZTop; + damUpliftVanCalculationGrid.RightGridZBottom = kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridZBottom; + damUpliftVanCalculationGrid.TangentLineAutomaticAtBoundaries = kernelSearchAreaConditions.AutoTangentLines; + damUpliftVanCalculationGrid.TangentLineCount = kernelSlipPlaneUpliftVan.SlipPlaneTangentLine.TangentLineNumber; + damUpliftVanCalculationGrid.TangentLineZTop = kernelSlipPlaneUpliftVan.SlipPlaneTangentLine.TangentLineZTop; + damUpliftVanCalculationGrid.TangentLineZBottom = kernelSlipPlaneUpliftVan.SlipPlaneTangentLine.TangentLineZBottom; + } + private void TransferWaternet(Waternet kernelWaternet, Data.Geometry.Waternet damWaternet) { // Properties @@ -172,16 +198,6 @@ ConversionHelper.ConvertToMStabGridPosition(kernelModelStabilityModel.GridOrientation); } - private void TransferParametersMStab(KernelModel kernelModel, FailureMechanismParametersMStab failureMechanismParametersMStab) - { - throw new System.NotImplementedException(); - } - - private void TransferSurfaceLine2() - { - throw new System.NotImplementedException(); - } - private void TransferSoilProfile2D(MacroStability.Geometry.SoilProfile2D kernelsoilProfile2D) { Dictionary dictPoints = new Dictionary(); @@ -280,9 +296,5 @@ } } - private void TransferLocation(KernelModel kernelModel, Location location) - { - throw new System.NotImplementedException(); - } } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj =================================================================== diff -u -r2002 -r2030 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj (.../Deltares.DamEngine.Calculators.csproj) (revision 2002) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/Deltares.DamEngine.Calculators.csproj (.../Deltares.DamEngine.Calculators.csproj) (revision 2030) @@ -102,6 +102,7 @@ + Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs =================================================================== diff -u -r2027 -r2030 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 2027) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 2030) @@ -22,18 +22,17 @@ using System.Collections.Generic; using System.IO; 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.Geometry; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.TestHelpers.Factories; using Deltares.MacroStability.Data; using Deltares.MacroStability.Geometry; using Deltares.MacroStability.Standard; using KellermanSoftware.CompareNetObjects; -using NUnit.Framework.Constraints; using CharacteristicPointSet = Deltares.MacroStability.Geometry.CharacteristicPointSet; using HeadLine = Deltares.DamEngine.Data.Geometry.HeadLine; using Soil = Deltares.MacroStability.Geometry.Soil; @@ -83,7 +82,8 @@ { // Given DamEngine data (DamProjectData) DamProjectData expectedDamProjectData = CreateExampleDamProjectData(); - Data.Geometry.Waternet expectedWaternet = CreateExampleWaternet(); + Data.Geometry.Waternet expectedWaternet = CreateExampleWaternet(); + UpliftVanCalculationGrid expectedUpliftVanCalculationGrid = CreateExampleUpliftVanCalculationGrid(); Location expectedLocation = expectedDamProjectData.Dike.Locations[0]; SoilList expectedSoilList = expectedDamProjectData.Dike.SoilList; @@ -97,7 +97,8 @@ Location = expectedLocation, SoilProfile2D = expectedSoilProfile2D, SurfaceLine2 = expectedSurfaceLine2D, - Waternet = expectedWaternet + Waternet = expectedWaternet, + UpliftVanCalculationGrid = expectedUpliftVanCalculationGrid }; KernelModel expectedKernelModel = fillWtiKernelData.CreateKernelModel(); @@ -113,21 +114,43 @@ // Then the data models are equal var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; ComparisonResult result; + result = compare.Compare(expectedSurfaceLine2D, fillDamEngineFromWti.SurfaceLine2); + Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SurfaceLine2"); return; + // Then the data models are equal // TODO fix following comparisons. Can be done if all code is implemented 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(expectedSurfaceLine2D, fillDamEngineFromWti.SurfaceLine2); - Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel SurfaceLine2"); result = compare.Compare(expectedParametersMStab, fillDamEngineFromWti.FailureMechanismParametersMStab); Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel FailureMechanismParametersMStab"); } + private UpliftVanCalculationGrid CreateExampleUpliftVanCalculationGrid() + { + var upliftVanCalculationGrid = new UpliftVanCalculationGrid() + { + LeftGridXLeft = 1.1, + LeftGridXRight = 2.1, + LeftGridZTop = 3.1, + LeftGridZBottom = 4.1, + LeftGridXCount = 4, + LeftGridZCount = 6, + + RightGridXLeft = 5.1, + RightGridXRight = 6.1, + RightGridZTop = 7.1, + RightGridZBottom = 8.1, + RightGridXCount = 5, + RightGridZCount = 7, + }; + return upliftVanCalculationGrid; + } + private Data.Geometry.Waternet CreateExampleWaternet() { var waterNet = new Data.Geometry.Waternet() @@ -141,7 +164,7 @@ Name = "Test Phreatic line" }; waterNet.PhreaticLine = phreaticLine; - var headLine = new Data.Geometry.HeadLine() + var headLine = new HeadLine() { Name = "Test Head line" }; @@ -177,7 +200,8 @@ FailureMechanismParametersMStab = fillDamEngineFromWti.FailureMechanismParametersMStab, Location = fillDamEngineFromWti.Location, SoilProfile2D = fillDamEngineFromWti.SoilProfile2D, - SurfaceLine2 = fillDamEngineFromWti.SurfaceLine2 + SurfaceLine2 = fillDamEngineFromWti.SurfaceLine2, + UpliftVanCalculationGrid = fillDamEngineFromWti.UpliftVanCalculationGrid }; KernelModel actualKernelModel = fillWtiKernelData.CreateKernelModel(); string xmlOutput = WtiSerializer.Serialize(actualKernelModel); @@ -193,8 +217,28 @@ actualKernelModel.PreprocessingModel.LastStage.SurfaceLine.CharacteristicPoints); CompareWaternet(expectedKernelModel.StabilityModel.ConstructionStages[0].GeotechnicsData.CurrentWaternet, actualKernelModel.StabilityModel.ConstructionStages[0].GeotechnicsData.CurrentWaternet); + CompareUpliftVanCalculationGrid(expectedKernelModel.StabilityModel.SlipPlaneUpliftVan, actualKernelModel.StabilityModel.SlipPlaneUpliftVan); } + private void CompareUpliftVanCalculationGrid(SlipPlaneUpliftVan expectedSlipPlaneUpliftVan, SlipPlaneUpliftVan actualSlipPlaneUpliftVan) + { + var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; + compare.Config.MembersToIgnore = new List() + { + "TangentLinesBoundaries", // Needed to avoid exception in comparison + "TangentLineXLeft", // not relevant + "TangentLineXRight", // not relevant + "MoveGrid" // not relevant + }; + ComparisonResult result; + result = compare.Compare(expectedSlipPlaneUpliftVan.SlipPlaneTangentLine, actualSlipPlaneUpliftVan.SlipPlaneTangentLine); + Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel UpliftVanCalculationGrid Tangent Lines"); + result = compare.Compare(expectedSlipPlaneUpliftVan.SlipPlaneRightGrid, actualSlipPlaneUpliftVan.SlipPlaneRightGrid); + Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel UpliftVanCalculationGrid Right grid"); + result = compare.Compare(expectedSlipPlaneUpliftVan.SlipPlaneLeftGrid, actualSlipPlaneUpliftVan.SlipPlaneLeftGrid); + Assert.AreEqual(0, result.Differences.Count, "Differences found read/write kernel UpliftVanCalculationGrid Left grid"); + } + private void CompareWaternet(Waternet expectedWaternet, Waternet actualWaternet) { var compare = new CompareLogic { Config = { MaxDifferences = 100 } }; Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/UpliftVanCalculationGrid.cs =================================================================== diff -u --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/UpliftVanCalculationGrid.cs (revision 0) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/UpliftVanCalculationGrid.cs (revision 2030) @@ -0,0 +1,79 @@ +// 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. + +namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon +{ + /// Parameters for the UpliftVan Macrostability kernel; used for IO + public class UpliftVanCalculationGrid + { + /// Gets or sets the IsAuto option. + /// IsAuto. + public bool IsAuto { get; set; } + /// Gets or sets the left grid x left. + /// The left grid x left. + public double LeftGridXLeft { get; set; } + /// Gets or sets the left grid x right. + /// The left grid x right. + public double LeftGridXRight { get; set; } + /// Gets or sets the left grid z top. + /// The left grid z top. + public double LeftGridZTop { get; set; } + /// Gets or sets the left grid z bottom. + /// The left grid z bottom. + public double LeftGridZBottom { get; set; } + /// Gets or sets the left grid x count. + /// The left grid x count. + public int LeftGridXCount { get; set; } + /// Gets or sets the left grid z count. + /// The left grid z count. + public int LeftGridZCount { get; set; } + /// Gets or sets the right grid x left. + /// The right grid x left. + public double RightGridXLeft { get; set; } + /// Gets or sets the right grid x right. + /// The right grid x right. + public double RightGridXRight { get; set; } + /// Gets or sets the right grid z top. + /// The right grid z top. + public double RightGridZTop { get; set; } + /// Gets or sets the right grid z bottom. + /// The right grid z bottom. + public double RightGridZBottom { get; set; } + /// Gets or sets the right grid x count. + /// The right grid x count. + public int RightGridXCount { get; set; } + /// Gets or sets the right grid z count. + /// The right grid z count. + public int RightGridZCount { get; set; } + /// Gets or sets the tangent line z top. + /// The tangent line z top. + public double TangentLineZTop { get; set; } + /// Gets or sets the tangent line z bottom. + /// The tangent line z bottom. + public double TangentLineZBottom { get; set; } + /// Gets or sets the tangent line count. + /// The tangent line count. + public int TangentLineCount { get; set; } + /// Gets or sets the tangent line setting automatic at boundaries. + /// The tangent line setting automatic at boundaries. + public bool TangentLineAutomaticAtBoundaries { get; set; } + } +} Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillWtiKernelData.cs =================================================================== diff -u -r2026 -r2030 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillWtiKernelData.cs (.../FillWtiKernelData.cs) (revision 2026) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillWtiKernelData.cs (.../FillWtiKernelData.cs) (revision 2030) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Collections.Generic; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Geotechnics; @@ -54,9 +55,12 @@ /// Gets or sets the waternet. /// The waternet. public Waternet Waternet { get; set; } - /// Gets or sets the MStab failure mechanism parameters. - /// The MStab failure mechanism parameters. - public FailureMechanismParametersMStab FailureMechanismParametersMStab { get; set; } + /// Gets or sets the UpliftVan calculation grid. + /// The uplift van calculation grid. + public UpliftVanCalculationGrid UpliftVanCalculationGrid { get; set; } + /// Gets or sets the MStab failure mechanism parameters. + /// The MStab failure mechanism parameters. + public FailureMechanismParametersMStab FailureMechanismParametersMStab { get; set; } private Dictionary dictSoils = new Dictionary(); private Dictionary dictPoints = new Dictionary(); @@ -81,18 +85,34 @@ kernelModel.PreprocessingModel.ConstructionStages.Add(new PreprocessingConstructionStage()); kernelModel.PreprocessingModel.LastStage.Locations.Add(new Location()); TransferWaternet(Waternet, kernelModel.StabilityModel.ConstructionStages[0].GeotechnicsData.CurrentWaternet); - TransferLocation(Location, kernelModel.PreprocessingModel.LastStage.Locations); // TODO - TransferPreconsolidationStresses(); // TODO - TransferUniformLoads(); // TODO - TransferConsolidationValues(); // TODO - TransferMultiplicationFactorsCPhiForUplift(); // TODO - TransferSpencerSlipPlanes(); // TODO - TransferUpliftVanCalculationGrid(); // TODO - TransferSlipPlaneConstraints(); // TODO - TransferLevenbergMarquardtOptions(); // TODO + TransferUpliftVanCalculationGrid(UpliftVanCalculationGrid, kernelModel.StabilityModel.SlipPlaneUpliftVan, kernelModel.PreprocessingModel.SearchAreaConditions); return kernelModel; } + private void TransferUpliftVanCalculationGrid(UpliftVanCalculationGrid damUpliftVanCalculationGrid, SlipPlaneUpliftVan kernelSlipPlaneUpliftVan, 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; + kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXNumber = damUpliftVanCalculationGrid.LeftGridXCount; + kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXLeft = damUpliftVanCalculationGrid.LeftGridXLeft; + kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridXRight = damUpliftVanCalculationGrid.LeftGridXRight; + kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZNumber = damUpliftVanCalculationGrid.LeftGridZCount; + kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZTop = damUpliftVanCalculationGrid.LeftGridZTop; + kernelSlipPlaneUpliftVan.SlipPlaneLeftGrid.GridZBottom = damUpliftVanCalculationGrid.LeftGridZBottom; + kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridXNumber = damUpliftVanCalculationGrid.RightGridXCount; + kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridXLeft = damUpliftVanCalculationGrid.RightGridXLeft; + kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridXRight = damUpliftVanCalculationGrid.RightGridXRight; + kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridZNumber = damUpliftVanCalculationGrid.RightGridZCount; + kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridZTop = damUpliftVanCalculationGrid.RightGridZTop; + kernelSlipPlaneUpliftVan.SlipPlaneRightGrid.GridZBottom = damUpliftVanCalculationGrid.RightGridZBottom; + kernelSearchAreaConditions.AutoTangentLines = damUpliftVanCalculationGrid.TangentLineAutomaticAtBoundaries; + kernelSlipPlaneUpliftVan.SlipPlaneTangentLine.TangentLineNumber = damUpliftVanCalculationGrid.TangentLineCount; + kernelSlipPlaneUpliftVan.SlipPlaneTangentLine.TangentLineZTop = damUpliftVanCalculationGrid.TangentLineZTop; + kernelSlipPlaneUpliftVan.SlipPlaneTangentLine.TangentLineZBottom = damUpliftVanCalculationGrid.TangentLineZBottom; + } + private void TransferWaternet(Waternet damWaternet, MacroStability.Geometry.Waternet kernelWaternet) { // Properties @@ -297,54 +317,5 @@ } } - private void TransferSurfaceLine() - { - - } - - private void TransferLocation(Data.General.Location location, IList locations) - { - locations.Add(new Location()); - } - - private void TransferPreconsolidationStresses() - { - - } - - private void TransferUniformLoads() - { - - } - - private void TransferConsolidationValues() - { - - } - - private void TransferMultiplicationFactorsCPhiForUplift() - { - - } - - private void TransferSpencerSlipPlanes() - { - - } - - private void TransferUpliftVanCalculationGrid() - { - - } - - private void TransferSlipPlaneConstraints() - { - - } - - private void TransferLevenbergMarquardtOptions() - { - - } } }