Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs =================================================================== diff -u -r4669 -r4776 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 4669) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 4776) @@ -30,12 +30,16 @@ using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Data.Standard.Logging; using Deltares.DamEngine.TestHelpers.Factories; +using Deltares.MacroStability.CSharpWrapper; using Deltares.MacroStability.CSharpWrapper.Input; using Deltares.MacroStability.CSharpWrapper.Output; using KellermanSoftware.CompareNetObjects; using NUnit.Framework; using CharacteristicPointType = Deltares.DamEngine.Data.Geotechnics.CharacteristicPointType; +using Point2D = Deltares.DamEngine.Data.Geometry.Point2D; +using Slice = Deltares.MacroStability.CSharpWrapper.Output.Slice; using Soil = Deltares.DamEngine.Data.Geotechnics.Soil; +using UpliftVanCalculationGrid = Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.UpliftVanCalculationGrid; namespace Deltares.DamEngine.Calculators.Tests.KernelWrappers.MacroStabilityCommon; @@ -114,8 +118,7 @@ //ToDo fill this MacroStabilityOutput expectedKernelOutput = CreateKernelOutputForTest(testNumber); var engineOutput = new Calculators.KernelWrappers.MacroStabilityInwards.MacroStabilityOutput(); - List logMessages; - FillEngineFromMacroStabilityWrapperOutput.FillEngineDataWithResults(expectedKernelOutput, engineOutput, out logMessages); + FillEngineFromMacroStabilityWrapperOutput.FillEngineDataWithResults(expectedKernelOutput, engineOutput, out List logMessages); MacroStabilityOutput kernelOutput = FillMacroStabilityWrapperOutputFromEngine.FillMacroStabilityWrapperOutput(engineOutput, logMessages); var compare = new CompareLogic @@ -125,9 +128,8 @@ MaxDifferences = 100 } }; - ComparisonResult result; - result = compare.Compare(expectedKernelOutput, kernelOutput); - Assert.That(result.Differences.Count, Is.EqualTo(0), "Differences found read/write kernel Output"); + ComparisonResult result = compare.Compare(expectedKernelOutput, kernelOutput); + Assert.That(result.Differences, Is.Empty, "Differences found read/write kernel Output"); } private static UpliftVanCalculationGrid CreateExampleUpliftVanCalculationGrid() @@ -208,7 +210,7 @@ } } - private void CompareTrafficLoad(TrafficLoad expectedTrafficLoad, TrafficLoad actualTrafficLoad) + private static void CompareTrafficLoad(TrafficLoad expectedTrafficLoad, TrafficLoad actualTrafficLoad) { var compare = new CompareLogic { @@ -240,19 +242,22 @@ private static void CompareUpliftVanCalculationGrid(UpliftVanCalculationGrid expectedSlipPlaneUpliftVan, UpliftVanCalculationGrid actualSlipPlaneUpliftVan, bool isAutoTangentLine) { - Assert.That(actualSlipPlaneUpliftVan.LeftGridXLeft, Is.EqualTo(expectedSlipPlaneUpliftVan.LeftGridXLeft)); - Assert.That(actualSlipPlaneUpliftVan.LeftGridXRight, Is.EqualTo(expectedSlipPlaneUpliftVan.LeftGridXRight)); - Assert.That(actualSlipPlaneUpliftVan.LeftGridZTop, Is.EqualTo(expectedSlipPlaneUpliftVan.LeftGridZTop)); - Assert.That(actualSlipPlaneUpliftVan.LeftGridZBottom, Is.EqualTo(expectedSlipPlaneUpliftVan.LeftGridZBottom)); - Assert.That(actualSlipPlaneUpliftVan.LeftGridXCount, Is.EqualTo(expectedSlipPlaneUpliftVan.LeftGridXCount)); - Assert.That(actualSlipPlaneUpliftVan.LeftGridZCount, Is.EqualTo(expectedSlipPlaneUpliftVan.LeftGridZCount)); + Assert.Multiple(() => + { + Assert.That(actualSlipPlaneUpliftVan.LeftGridXLeft, Is.EqualTo(expectedSlipPlaneUpliftVan.LeftGridXLeft)); + Assert.That(actualSlipPlaneUpliftVan.LeftGridXRight, Is.EqualTo(expectedSlipPlaneUpliftVan.LeftGridXRight)); + Assert.That(actualSlipPlaneUpliftVan.LeftGridZTop, Is.EqualTo(expectedSlipPlaneUpliftVan.LeftGridZTop)); + Assert.That(actualSlipPlaneUpliftVan.LeftGridZBottom, Is.EqualTo(expectedSlipPlaneUpliftVan.LeftGridZBottom)); + Assert.That(actualSlipPlaneUpliftVan.LeftGridXCount, Is.EqualTo(expectedSlipPlaneUpliftVan.LeftGridXCount)); + Assert.That(actualSlipPlaneUpliftVan.LeftGridZCount, Is.EqualTo(expectedSlipPlaneUpliftVan.LeftGridZCount)); - Assert.That(actualSlipPlaneUpliftVan.RightGridXLeft, Is.EqualTo(expectedSlipPlaneUpliftVan.RightGridXLeft)); - Assert.That(actualSlipPlaneUpliftVan.RightGridXRight, Is.EqualTo(expectedSlipPlaneUpliftVan.RightGridXRight)); - Assert.That(actualSlipPlaneUpliftVan.RightGridZTop, Is.EqualTo(expectedSlipPlaneUpliftVan.RightGridZTop)); - Assert.That(actualSlipPlaneUpliftVan.RightGridZBottom, Is.EqualTo(expectedSlipPlaneUpliftVan.RightGridZBottom)); - Assert.That(actualSlipPlaneUpliftVan.RightGridXCount, Is.EqualTo(expectedSlipPlaneUpliftVan.RightGridXCount)); - Assert.That(actualSlipPlaneUpliftVan.RightGridZCount, Is.EqualTo(expectedSlipPlaneUpliftVan.RightGridZCount)); + Assert.That(actualSlipPlaneUpliftVan.RightGridXLeft, Is.EqualTo(expectedSlipPlaneUpliftVan.RightGridXLeft)); + Assert.That(actualSlipPlaneUpliftVan.RightGridXRight, Is.EqualTo(expectedSlipPlaneUpliftVan.RightGridXRight)); + Assert.That(actualSlipPlaneUpliftVan.RightGridZTop, Is.EqualTo(expectedSlipPlaneUpliftVan.RightGridZTop)); + Assert.That(actualSlipPlaneUpliftVan.RightGridZBottom, Is.EqualTo(expectedSlipPlaneUpliftVan.RightGridZBottom)); + Assert.That(actualSlipPlaneUpliftVan.RightGridXCount, Is.EqualTo(expectedSlipPlaneUpliftVan.RightGridXCount)); + Assert.That(actualSlipPlaneUpliftVan.RightGridZCount, Is.EqualTo(expectedSlipPlaneUpliftVan.RightGridZCount)); + }); if (!isAutoTangentLine) { @@ -304,7 +309,7 @@ List expectedCalcPoints = expectedHeadLine.CalcPoints; int expectedNrOfCalcPoints = expectedCalcPoints.Count; List actualCalcPoints = actualHeadLine.CalcPoints; - Assert.That(actualCalcPoints.Count, Is.EqualTo(expectedNrOfCalcPoints)); + Assert.That(actualCalcPoints, Has.Count.EqualTo(expectedNrOfCalcPoints)); for (var i = 0; i < expectedNrOfCalcPoints; i++) { Point2D expectedCoordinate = expectedCalcPoints[i]; @@ -314,7 +319,7 @@ } } - private void CompareSurfaceLine(SurfaceLine2 expectedSurfaceLine2, SurfaceLine2 actualSurfaceLine2) + private static void CompareSurfaceLine(SurfaceLine2 expectedSurfaceLine2, SurfaceLine2 actualSurfaceLine2) { CharacteristicPointSet expectedCharacteristicPoints = expectedSurfaceLine2.CharacteristicPoints; CharacteristicPointSet actualCharacteristicPoints = actualSurfaceLine2.CharacteristicPoints; @@ -330,10 +335,10 @@ "Owner" }; ComparisonResult result = compare.Compare(expectedCharacteristicPoints, actualCharacteristicPoints); - Assert.That(result.Differences.Count, Is.EqualTo(0), "Differences found read/write kernel SurfaceLine"); + Assert.That(result.Differences, Is.Empty, "Differences found read/write kernel SurfaceLine"); } - private void CompareSoilProfile2D(SoilProfile2D expectedSoilProfile, SoilProfile2D actualSoilProfile) + private static void CompareSoilProfile2D(SoilProfile2D expectedSoilProfile, SoilProfile2D actualSoilProfile) { var compare = new CompareLogic { @@ -345,12 +350,12 @@ compare.Config.MembersToIgnore = soilParametersToIgnore; compare.Config.MembersToIgnore.Add("Name"); ComparisonResult result = compare.Compare(expectedSoilProfile, actualSoilProfile); - Assert.That(result.Differences.Count, Is.EqualTo(0), "Differences found read/write kernel SoilProfile2D"); + Assert.That(result.Differences, Is.Empty, "Differences found read/write kernel SoilProfile2D"); } - private void CompareSoilModel(SoilList expectedSoils, SoilList actualSoils) + private static void CompareSoilModel(SoilList expectedSoils, SoilList actualSoils) { - Assert.That(actualSoils.Soils.Count, Is.EqualTo(expectedSoils.Soils.Count), "Soil Count does not match"); + Assert.That(actualSoils.Soils, Has.Count.EqualTo(expectedSoils.Soils.Count), "Soil Count does not match"); foreach (Soil expectedSoil in expectedSoils.Soils) { Soil actualSoil = actualSoils.Soils.SingleOrDefault(soil => soil.Name.Equals(expectedSoil.Name)); @@ -364,23 +369,26 @@ }; compare.Config.MembersToIgnore = soilParametersToIgnore; ComparisonResult result = compare.Compare(expectedSoil, actualSoil); - Assert.That(result.Differences.Count, Is.EqualTo(0), "Differences found read/write kernel SoilModel"); + Assert.That(result.Differences, Is.Empty, "Differences found read/write kernel SoilModel"); } } - private void CompareStabilityModel(FailureMechanismParametersMStab expectedStabilityModel, FailureMechanismParametersMStab actualStabilityModel) + private static void CompareStabilityModel(FailureMechanismParametersMStab expectedStabilityModel, FailureMechanismParametersMStab actualStabilityModel) { - Assert.That(actualStabilityModel.MStabParameters.SearchMethod, Is.EqualTo(expectedStabilityModel.MStabParameters.SearchMethod)); - Assert.That(actualStabilityModel.MStabParameters.Model, Is.EqualTo(expectedStabilityModel.MStabParameters.Model)); - Assert.That(actualStabilityModel.MStabParameters.GridPosition, Is.EqualTo(expectedStabilityModel.MStabParameters.GridPosition)); + Assert.Multiple(() => + { + Assert.That(actualStabilityModel.MStabParameters.SearchMethod, Is.EqualTo(expectedStabilityModel.MStabParameters.SearchMethod)); + Assert.That(actualStabilityModel.MStabParameters.Model, Is.EqualTo(expectedStabilityModel.MStabParameters.Model)); + Assert.That(actualStabilityModel.MStabParameters.GridPosition, Is.EqualTo(expectedStabilityModel.MStabParameters.GridPosition)); + }); } private DamProjectData CreateExampleDamProjectData() { return FactoryForDamProjectData.CreateExampleDamProjectData(); } - private MacroStabilityOutput CreateKernelOutputForTest(int choice) + private static MacroStabilityOutput CreateKernelOutputForTest(int choice) { var output = new MacroStabilityOutput(); var messagesOutput = new List(); @@ -394,14 +402,7 @@ SafetyFactor = 3.856, ModelOptionType = StabilityModelOptionType.UpliftVan }; - var dualSlidingCircleMinimumSafetyCurve = new DualSlidingCircleMinimumSafetyCurve - { - ActiveCircleCenter = new MacroStability.CSharpWrapper.Point2D(10, 10), - ActiveCircleRadius = 8, - PassiveCircleCenter = new MacroStability.CSharpWrapper.Point2D(22, 11), - PassiveCircleRadius = 7 - }; - output.StabilityOutput.MinimumSafetyCurve = dualSlidingCircleMinimumSafetyCurve; + output.StabilityOutput.MinimumSafetyCurve = SetupUpliftDualSlidingCircle(); } else if (choice == 2) { @@ -437,7 +438,90 @@ output.StabilityOutput.SafetyFactor = double.NaN; output.StabilityOutput.Messages = messagesOutput; } - + return output; } + + private static DualSlidingCircleMinimumSafetyCurve SetupUpliftDualSlidingCircle() + { + var dualSlidingCircleMinimumSafetyCurve = new DualSlidingCircleMinimumSafetyCurve + { + ActiveCircleCenter = new MacroStability.CSharpWrapper.Point2D(10, 10), + ActiveCircleRadius = 8, + PassiveCircleCenter = new MacroStability.CSharpWrapper.Point2D(22, 11), + PassiveCircleRadius = 7 + }; + List slices = CreateSlices(); + dualSlidingCircleMinimumSafetyCurve.Slices = slices; + + return dualSlidingCircleMinimumSafetyCurve; + } + + private static List CreateSlices() + { + var slices = new List(); + for (var i = 1; i < 6; i++) + { + var slice = new Slice + { + BottomLeftPoint = new MacroStability.CSharpWrapper.Point2D(-1 * i, 1 * i), + BottomRightPoint = new MacroStability.CSharpWrapper.Point2D(-2 * i, 2 * i), + TopLeftPoint = new MacroStability.CSharpWrapper.Point2D(-3 * i, 3 * i), + TopRightPoint = new MacroStability.CSharpWrapper.Point2D(-4 * i, 4 * i), + Name = "Slice" + i, + POP = 1.11 * i, + YieldStress = 2.22 * i, + OCR = 3.33 * i, + ResultantForce = 4.44 * i, + ResultantMoment = 5.55 * i, + ResultantAngle = 6.66 * i, + CohesionInput = 7.77 * i, + CohesionOutput = 8.88 * i, + FrictionAngleInput = 9.99 * i, + FrictionAngleOutput = 10.10 * i, + DilatancyInput = 11.11 * i, + SuInput = 12.12 * i, + SuOutput = 13.13 * i, + ShearStrengthModelType = ShearStrengthModelType.MohrCoulomb, + ShearStressInput = 14.14 * i, + ShearStressOutput = 15.15 * i, + Weight = 16.16 * i, + TotalPorePressure = 17.17 * i, + EffectiveStress = 18.18 * i, + HydrostaticPorePressure = 19.19 * i, + PiezometricPorePressure = 20.20 * i, + ExcessPorePressure = 21.21 * i, + DegreeOfConsolidationPorePressure = 22.22 * i, + PorePressureDueToDegreeOfConsolidationLoad = 23.23 * i, + LoadStress = 24.24 * i, + SoilStress = 25.25 * i, + TotalStress = 26.26 * i, + PorePressure = 27.27 * i, + VerticalPorePressure = 28.28 * i, + HorizontalPorePressure = 29.29 * i, + ExternalLoad = 30.30 * i, + NormalStress = 31.31 * i, + LeftForce = 32.32 * i, + LeftForceY = 33.33 * i, + LeftForceAngle = 34.34 * i, + RightForce = 35.35 * i, + RightForceY = 36.36 * i, + RightForceAngle = 37.37 * i, + HorizontalSoilQuakeStress = 38.38 * i, + VerticalSoilQuakeStress = 39.39 * i, + WaterQuakeStress = 40.40 * i, + RatioCuPc = 41.41 * i, + StrengthIncreaseExponent = 42.42 * i, + UpliftFactor = 43.43 * i, + UpliftReductionFactor = 44.44 * i, + ArcLength = 45.45 * i, + BottomAngle = 46.46 * i, + TopAngle = 47.47 * i, + Width = 48.48 * i + }; + slices.Add(slice); + } + + return slices; + } } \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperOutputFromEngine.cs =================================================================== diff -u -r4729 -r4776 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperOutputFromEngine.cs (.../FillMacroStabilityWrapperOutputFromEngine.cs) (revision 4729) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperOutputFromEngine.cs (.../FillMacroStabilityWrapperOutputFromEngine.cs) (revision 4776) @@ -31,7 +31,7 @@ namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo; /// -/// Fills the the MacroStabilityWrapper output with Fills the engine results +/// Fills the MacroStabilityWrapper output with Fills the engine results /// public class FillMacroStabilityWrapperOutputFromEngine { @@ -97,66 +97,70 @@ private static void FillSlices(MacroStabilityOutputItem outputItem, MacroStabilityOutput kernelOutput) { + var slices = new List(); foreach (StabilityResultSlice resultSlice in outputItem.ResultSlices) { - var slice = new Slice(); - slice.TopLeftPoint = new Point2D(resultSlice.TopLeftPoint.X, resultSlice.TopLeftPoint.Z); - slice.TopRightPoint = new Point2D(resultSlice.TopRightPoint.X, resultSlice.TopRightPoint.Z); - slice.BottomLeftPoint = new Point2D(resultSlice.BottomLeftPoint.X, resultSlice.BottomLeftPoint.Z); - slice.BottomRightPoint = new Point2D(resultSlice.BottomRightPoint.X, resultSlice.BottomRightPoint.Z); - slice.Name = resultSlice.Name; - slice.Width = resultSlice.Width; - slice.ArcLength = resultSlice.ArcLength; - slice.TopAngle = resultSlice.TopAngle; - slice.BottomAngle = resultSlice.BottomAngle; - slice.CohesionInput = resultSlice.CohesionInput; - slice.CohesionOutput = resultSlice.CohesionOutput; - slice.FrictionAngleInput = resultSlice.FrictionAngleInput; - slice.FrictionAngleOutput = resultSlice.FrictionAngleOutput; - slice.YieldStress = resultSlice.YieldStress; - slice.OCR = resultSlice.OCR; - slice.POP = resultSlice.POP; - slice.DegreeOfConsolidationPorePressure = resultSlice.DegreeOfConsolidationPorePressure; - slice.PorePressureDueToDegreeOfConsolidationLoad = resultSlice.PorePressureDueToDegreeOfConsolidationLoad; - slice.DilatancyInput = resultSlice.DilatancyInput; - slice.ExternalLoad = resultSlice.ExternalLoad; - slice.HydrostaticPorePressure = resultSlice.HydrostaticPorePressure; - slice.LeftForce = resultSlice.LeftForce; - slice.LeftForceAngle = resultSlice.LeftForceAngle; - slice.LeftForceY = resultSlice.LeftForceY; - slice.RightForce = resultSlice.RightForce; - slice.RightForceAngle = resultSlice.RightForceAngle; - slice.RightForceY = resultSlice.RightForceY; - slice.LoadStress = resultSlice.LoadStress; - slice.NormalStress = resultSlice.NormalStress; - slice.PorePressure = resultSlice.PorePressure; - slice.HorizontalPorePressure = resultSlice.HorizontalPorePressure; - slice.VerticalPorePressure = resultSlice.VerticalPorePressure; - slice.PiezometricPorePressure = resultSlice.PiezometricPorePressure; - slice.EffectiveStress = resultSlice.EffectiveStress; - slice.ExcessPorePressure = resultSlice.ExcessPorePressure; - slice.ShearStressInput = resultSlice.ShearStressInput; - slice.ShearStressOutput = resultSlice.ShearStressOutput; - slice.SoilStress = resultSlice.SoilStress; - slice.TotalPorePressure = resultSlice.TotalPorePressure; - slice.TotalStress = resultSlice.TotalStress; - slice.Weight = resultSlice.Weight; - slice.SuInput = resultSlice.SuInput; - slice.SuOutput = resultSlice.SuOutput; - slice.ShearStrengthModelType = - ConversionHelper.ConvertToMacroStabilityShearStrengthModel(resultSlice.ShearStrengthModel); - slice.HorizontalSoilQuakeStress = resultSlice.HorizontalSoilQuakeStress; - slice.StrengthIncreaseExponent = resultSlice.StrengthIncreaseExponent; - slice.UpliftFactor = resultSlice.UpliftFactor; - slice.VerticalSoilQuakeStress = resultSlice.VerticalSoilQuakeStress; - slice.WaterQuakeStress = resultSlice.WaterQuakeStress; - slice.UpliftReductionFactor = resultSlice.UpliftReductionFactor; - slice.RatioCuPc = resultSlice.RatioCuPc; - slice.ResultantForce = resultSlice.ResultantForce; - slice.ResultantMoment = resultSlice.ResultantMoment; - slice.ResultantAngle = resultSlice.ResultantAngle; - kernelOutput.StabilityOutput.MinimumSafetyCurve.Slices.ToList().Add(slice); + var slice = new Slice + { + TopLeftPoint = new Point2D(resultSlice.TopLeftPoint.X, resultSlice.TopLeftPoint.Z), + TopRightPoint = new Point2D(resultSlice.TopRightPoint.X, resultSlice.TopRightPoint.Z), + BottomLeftPoint = new Point2D(resultSlice.BottomLeftPoint.X, resultSlice.BottomLeftPoint.Z), + BottomRightPoint = new Point2D(resultSlice.BottomRightPoint.X, resultSlice.BottomRightPoint.Z), + Name = resultSlice.Name, + Width = resultSlice.Width, + ArcLength = resultSlice.ArcLength, + TopAngle = resultSlice.TopAngle, + BottomAngle = resultSlice.BottomAngle, + CohesionInput = resultSlice.CohesionInput, + CohesionOutput = resultSlice.CohesionOutput, + FrictionAngleInput = resultSlice.FrictionAngleInput, + FrictionAngleOutput = resultSlice.FrictionAngleOutput, + YieldStress = resultSlice.YieldStress, + OCR = resultSlice.OCR, + POP = resultSlice.POP, + DegreeOfConsolidationPorePressure = resultSlice.DegreeOfConsolidationPorePressure, + PorePressureDueToDegreeOfConsolidationLoad = resultSlice.PorePressureDueToDegreeOfConsolidationLoad, + DilatancyInput = resultSlice.DilatancyInput, + ExternalLoad = resultSlice.ExternalLoad, + HydrostaticPorePressure = resultSlice.HydrostaticPorePressure, + LeftForce = resultSlice.LeftForce, + LeftForceAngle = resultSlice.LeftForceAngle, + LeftForceY = resultSlice.LeftForceY, + RightForce = resultSlice.RightForce, + RightForceAngle = resultSlice.RightForceAngle, + RightForceY = resultSlice.RightForceY, + LoadStress = resultSlice.LoadStress, + NormalStress = resultSlice.NormalStress, + PorePressure = resultSlice.PorePressure, + HorizontalPorePressure = resultSlice.HorizontalPorePressure, + VerticalPorePressure = resultSlice.VerticalPorePressure, + PiezometricPorePressure = resultSlice.PiezometricPorePressure, + EffectiveStress = resultSlice.EffectiveStress, + ExcessPorePressure = resultSlice.ExcessPorePressure, + ShearStressInput = resultSlice.ShearStressInput, + ShearStressOutput = resultSlice.ShearStressOutput, + SoilStress = resultSlice.SoilStress, + TotalPorePressure = resultSlice.TotalPorePressure, + TotalStress = resultSlice.TotalStress, + Weight = resultSlice.Weight, + SuInput = resultSlice.SuInput, + SuOutput = resultSlice.SuOutput, + ShearStrengthModelType = ConversionHelper.ConvertToMacroStabilityShearStrengthModel(resultSlice.ShearStrengthModel), + HorizontalSoilQuakeStress = resultSlice.HorizontalSoilQuakeStress, + StrengthIncreaseExponent = resultSlice.StrengthIncreaseExponent, + UpliftFactor = resultSlice.UpliftFactor, + VerticalSoilQuakeStress = resultSlice.VerticalSoilQuakeStress, + WaterQuakeStress = resultSlice.WaterQuakeStress, + UpliftReductionFactor = resultSlice.UpliftReductionFactor, + RatioCuPc = resultSlice.RatioCuPc, + ResultantForce = resultSlice.ResultantForce, + ResultantMoment = resultSlice.ResultantMoment, + ResultantAngle = resultSlice.ResultantAngle + }; + slices.Add(slice); } + + kernelOutput.StabilityOutput.MinimumSafetyCurve.Slices = slices; } private static void FillUpliftVan(MacroStabilityOutputItem outputItem, MacroStabilityOutput kernelOutput)