Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs =================================================================== diff -u -r3323 -r3407 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 3323) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapperTests.cs (.../MacroStabilityInwardsKernelWrapperTests.cs) (revision 3407) @@ -29,6 +29,7 @@ using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.General.Results; +using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Data.Standard.Calculation; using Deltares.DamEngine.Interface; @@ -125,11 +126,16 @@ List results; macroStabilityOutput.CalculationResult = CalculationResult.Succeeded; var macroStabilityOutputItem = new MacroStabilityOutputItem(); + macroStabilityOutputItem.StabilityModelType = MStabModelType.UpliftVan; macroStabilityOutputItem.CalculationResult = CalculationResult.Succeeded; macroStabilityOutput.UpliftSituation = new UpliftSituation { IsUplift = true }; macroStabilityOutputItem.SafetyFactor = 2.34; macroStabilityOutput.StabilityOutputItems = new List(); macroStabilityOutput.StabilityOutputItems.Add(macroStabilityOutputItem); + macroStabilityOutput.StabilityOutputItems[0].ActiveCenterPoint = new Point2D(10,10); + macroStabilityOutput.StabilityOutputItems[0].ActiveCenterPointRadius = 8; + macroStabilityOutput.StabilityOutputItems[0].PassiveCenterPoint = new Point2D(22,11); + macroStabilityOutput.StabilityOutputItems[0].PassiveCenterPointRadius = 7; kernelWrapper.PostProcess(kernelInput, macroStabilityOutput, designScenario, "", out results); Assert.IsTrue(results.Count > 0); foreach (var result in results) @@ -140,6 +146,13 @@ Assert.AreEqual(2.34, result.StabilityDesignResults.SafetyFactor, diff); Assert.AreEqual(kernelInput.Location.SurfaceLine, result.StabilityDesignResults.RedesignedSurfaceLine); Assert.AreEqual(kernelInput.SubSoilScenario.ToString(), result.ProfileName); + Assert.AreEqual(MStabModelType.UpliftVan, result.StabilityDesignResults.StabilityModelType); + Assert.AreEqual(10, result.StabilityDesignResults.ActiveCenterPoint.X); + Assert.AreEqual(10, result.StabilityDesignResults.ActiveCenterPoint.Z); + Assert.AreEqual(8, result.StabilityDesignResults.ActiveCenterPointRadius); + Assert.AreEqual(22, result.StabilityDesignResults.PassiveCenterPoint.X); + Assert.AreEqual(11, result.StabilityDesignResults.PassiveCenterPoint.Z); + Assert.AreEqual(7, result.StabilityDesignResults.PassiveCenterPointRadius); } } @@ -232,6 +245,12 @@ { Assert.AreEqual(CalculationResult.Succeeded, result.CalculationResult); Assert.AreEqual(1.5211, result.StabilityDesignResults.SafetyFactor, diff); + Assert.AreEqual(50.5, result.StabilityDesignResults.ActiveCenterPoint.X, diff); + Assert.AreEqual(12, result.StabilityDesignResults.ActiveCenterPoint.Z, diff); + Assert.AreEqual(22, result.StabilityDesignResults.ActiveCenterPointRadius, diff); + Assert.AreEqual(50.5, result.StabilityDesignResults.PassiveCenterPoint.X); + Assert.AreEqual(2.2, result.StabilityDesignResults.PassiveCenterPoint.Z); + Assert.AreEqual(12.2, result.StabilityDesignResults.PassiveCenterPointRadius); } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r3362 -r3407 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 3362) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 3407) @@ -309,7 +309,7 @@ MacroStabilityOutput macroStabilityOutput = kernelDataOutput as MacroStabilityOutput; ThrowWhenMacroStabilityKernelOutputNull(macroStabilityOutput); designResults = new List(); - if (macroStabilityOutput.StabilityOutputItems.Count > 0) + if (macroStabilityOutput != null && macroStabilityOutput.StabilityOutputItems.Count > 0) { var macroStabilityOutputItem = macroStabilityOutput.StabilityOutputItems[0]; if (macroStabilityOutputItem != null) @@ -318,6 +318,20 @@ FillDesignResult(macroStabilityOutputItem, designResult); designResult.StabilityDesignResults.NumberOfIterations = lastIterationIndex; designResult.StabilityDesignResults.UpliftSituation = macroStabilityOutput.UpliftSituation; + if ((macroStabilityOutputItem.StabilityModelType == MStabModelType.Bishop) || (macroStabilityOutputItem.StabilityModelType == MStabModelType.UpliftVan)) + { + designResult.StabilityDesignResults.ActiveCenterPoint = + macroStabilityOutputItem.ActiveCenterPoint; + designResult.StabilityDesignResults.ActiveCenterPointRadius = + macroStabilityOutputItem.ActiveCenterPointRadius; + } + if (macroStabilityOutputItem.StabilityModelType == MStabModelType.UpliftVan) + { + designResult.StabilityDesignResults.PassiveCenterPoint = + macroStabilityOutputItem.PassiveCenterPoint; + designResult.StabilityDesignResults.PassiveCenterPointRadius = + macroStabilityOutputItem.PassiveCenterPointRadius; + } designResults.Add(designResult); } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperOutputFromEngine.cs =================================================================== diff -u -r3004 -r3407 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperOutputFromEngine.cs (.../FillMacroStabilityWrapperOutputFromEngine.cs) (revision 3004) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillMacroStabilityWrapperOutputFromEngine.cs (.../FillMacroStabilityWrapperOutputFromEngine.cs) (revision 3407) @@ -22,6 +22,7 @@ using System.Collections.Generic; using System.Linq; using Deltares.DamEngine.Data.Standard.Logging; +using Deltares.MacroStability.CSharpWrapper; using Deltares.MacroStability.CSharpWrapper.Output; using MacroStabilityOutput = Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards.MacroStabilityOutput; @@ -42,6 +43,28 @@ var outputItem = output.StabilityOutputItems.First(); kernelOutput.StabilityOutput.SafetyFactor = outputItem.SafetyFactor; kernelOutput.StabilityOutput.ModelOptionType = ConversionHelper.ConvertToModelOptionsOutput(outputItem.StabilityModelType); + if (kernelOutput.StabilityOutput.ModelOptionType == StabilityModelOptionType.Bishop && outputItem.ActiveCenterPoint != null) + { + var msc = new SlidingCircleMinimumSafetyCurve + { + Center = new Point2D(outputItem.ActiveCenterPoint.X, outputItem.ActiveCenterPoint.Z), + Radius = outputItem.ActiveCenterPointRadius + }; + kernelOutput.StabilityOutput.MinimumSafetyCurve = msc; + } + if (kernelOutput.StabilityOutput.ModelOptionType == StabilityModelOptionType.UpliftVan && outputItem.ActiveCenterPoint != null && outputItem.PassiveCenterPoint != null) + { + var msc = new DualSlidingCircleMinimumSafetyCurve + { + ActiveCircleCenter = + new Point2D(outputItem.ActiveCenterPoint.X, outputItem.ActiveCenterPoint.Z), + ActiveCircleRadius = outputItem.ActiveCenterPointRadius, + PassiveCircleCenter = + new Point2D(outputItem.PassiveCenterPoint.X, outputItem.PassiveCenterPoint.Z), + PassiveCircleRadius = outputItem.PassiveCenterPointRadius + }; + kernelOutput.StabilityOutput.MinimumSafetyCurve = msc; + } // Todo rest of kernel output to be converted later. } else Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs =================================================================== diff -u -r3038 -r3407 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs (.../FillEngineFromMacroStabilityWrapperOutput.cs) (revision 3038) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityWrapperOutput.cs (.../FillEngineFromMacroStabilityWrapperOutput.cs) (revision 3407) @@ -22,7 +22,11 @@ using System.Collections.Generic; using System.Linq; using Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards; +using Deltares.DamEngine.Data.General; using Deltares.DamEngine.Data.Standard.Logging; +using Deltares.MacroStability.CSharpWrapper; +using Deltares.MacroStability.CSharpWrapper.Output; +using MacroStabilityOutput = Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards.MacroStabilityOutput; namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityCommon.MacroStabilityIo { @@ -55,7 +59,32 @@ StabilityModelType = ConversionHelper.ConvertToMStabModelTypeFromOutput(kernelOutput.StabilityOutput.ModelOptionType) }; + + if (outputItem.StabilityModelType == MStabModelType.Bishop) + { + var msc = (SlidingCircleMinimumSafetyCurve)kernelOutput.StabilityOutput.MinimumSafetyCurve; + if (msc != null && msc.Center != null) + { + outputItem.ActiveCenterPoint = new Data.Geometry.Point2D(msc.Center.X, msc.Center.Z); + outputItem.ActiveCenterPointRadius = msc.Radius; + } + } + + if (outputItem.StabilityModelType == MStabModelType.UpliftVan) + { + var msc = (DualSlidingCircleMinimumSafetyCurve)kernelOutput.StabilityOutput.MinimumSafetyCurve; + if (msc != null && msc.ActiveCircleCenter != null && msc.PassiveCircleCenter != null) + { + outputItem.ActiveCenterPoint = + new Data.Geometry.Point2D(msc.ActiveCircleCenter.X, msc.ActiveCircleCenter.Z); + outputItem.ActiveCenterPointRadius = msc.ActiveCircleRadius; + outputItem.PassiveCenterPoint = + new Data.Geometry.Point2D(msc.PassiveCircleCenter.X, msc.PassiveCircleCenter.Z); + outputItem.PassiveCenterPointRadius = msc.PassiveCircleRadius; + } + } macroStabilityOutput.StabilityOutputItems.Add(outputItem); + if (kernelOutput.StabilityOutput.Messages != null && kernelOutput.StabilityOutput.Messages.Any()) { logMessages = new List(); Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityOutputItem.cs =================================================================== diff -u -r2001 -r3407 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityOutputItem.cs (.../MacroStabilityOutputItem.cs) (revision 2001) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityOutputItem.cs (.../MacroStabilityOutputItem.cs) (revision 3407) @@ -20,6 +20,7 @@ // All rights reserved. using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Standard.Calculation; namespace Deltares.DamEngine.Calculators.KernelWrappers.MacroStabilityInwards @@ -66,5 +67,38 @@ /// public MStabModelType StabilityModelType { get; set; } + /// + /// Gets or sets the location (X,Z) of the center point of the active slip circle. + /// + /// + /// The location (X,Z) of the center point of the active slip circle. + /// + public Point2D ActiveCenterPoint { get; set; } + + /// + /// Gets or sets the radius of the active slip circle. + /// + /// + /// The radius of the active slip circle. + /// + public double ActiveCenterPointRadius { get; set; } + + /// + /// Gets or sets the location (X,Z) of the center point of the passive slip circle. + /// + /// + /// The location (X,Z) of the center point of the passive slip circle. + /// + public Point2D PassiveCenterPoint { get; set; } + + /// + /// Gets or sets the radius of the passive slip circle. + /// + /// + /// The radius of the passive slip circle. + /// + public double PassiveCenterPointRadius { get; set; } + + } } Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs =================================================================== diff -u -r3088 -r3407 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 3088) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityIoTests.cs (.../MacroStabilityIoTests.cs) (revision 3407) @@ -370,6 +370,14 @@ SafetyFactor = 3.856, ModelOptionType = StabilityModelOptionType.UpliftVan }; + var msc = new DualSlidingCircleMinimumSafetyCurve + { + ActiveCircleCenter = new MacroStability.CSharpWrapper.Point2D(10, 10), + ActiveCircleRadius = 8, + PassiveCircleCenter = new MacroStability.CSharpWrapper.Point2D(22, 11), + PassiveCircleRadius = 7 + }; + output.StabilityOutput.MinimumSafetyCurve = msc; } else if (choice == 2) {