Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityKernelOutput.cs =================================================================== diff -u -r6482 -r6518 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityKernelOutput.cs (.../FillEngineFromMacroStabilityKernelOutput.cs) (revision 6482) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityCommon/MacroStabilityIo/FillEngineFromMacroStabilityKernelOutput.cs (.../FillEngineFromMacroStabilityKernelOutput.cs) (revision 6518) @@ -56,87 +56,102 @@ { if (stabilityOutput.ModelOption == StabilityModelOption.Bishop) { - var slidingCircleMinimumSafetyCurve = (SlidingCircleMinimumSafetyCurveType) stabilityOutput.MinimumSafetyCurve; - macroStabilityOutputItem.StabilityModelType = StabilityModelType.Bishop; - macroStabilityOutputItem.ActiveCenterPoint = new Point2D(slidingCircleMinimumSafetyCurve.Center.X, slidingCircleMinimumSafetyCurve.Center.Z); - macroStabilityOutputItem.ActiveCenterPointRadius = slidingCircleMinimumSafetyCurve.Radius; + TransferPropertiesBishopSlipPlane(stabilityOutput, macroStabilityOutputItem); } else if (stabilityOutput.ModelOption == StabilityModelOption.UpliftVan) { - var dualSlidingCircleMinimumSafetyCurve = (DualSlidingCircleMinimumSafetyCurveType) stabilityOutput.MinimumSafetyCurve; - macroStabilityOutputItem.StabilityModelType = StabilityModelType.UpliftVan; - macroStabilityOutputItem.ActiveCenterPoint = new Point2D(dualSlidingCircleMinimumSafetyCurve.ActiveCircleCenter.X, dualSlidingCircleMinimumSafetyCurve.ActiveCircleCenter.Z); - macroStabilityOutputItem.ActiveCenterPointRadius = dualSlidingCircleMinimumSafetyCurve.ActiveCircleRadius; - macroStabilityOutputItem.PassiveCenterPoint = new Point2D(dualSlidingCircleMinimumSafetyCurve.PassiveCircleCenter.X, dualSlidingCircleMinimumSafetyCurve.PassiveCircleCenter.Z); - macroStabilityOutputItem.PassiveCenterPointRadius = dualSlidingCircleMinimumSafetyCurve.PassiveCircleRadius; + TransferPropertiesUpliftVanSlipPlane(stabilityOutput, macroStabilityOutputItem); } if (stabilityOutput.MinimumSafetyCurve.Slices != null) { - macroStabilityOutputItem.ResultSlices = new List(); - foreach (MinimumSafetyCurveBaseTypeSlice slice in stabilityOutput.MinimumSafetyCurve.Slices) - { - var resultSlice = new StabilityResultSlice - { - TopLeftPoint = new Point2D(slice.TopLeftPoint.X, slice.TopLeftPoint.Z), - TopRightPoint = new Point2D(slice.TopRightPoint.X, slice.TopRightPoint.Z), - BottomLeftPoint = new Point2D(slice.BottomLeftPoint.X, slice.BottomLeftPoint.Z), - BottomRightPoint = new Point2D(slice.BottomRightPoint.X, slice.BottomRightPoint.Z), - Name = slice.Name, - Width = slice.Width, - ArcLength = slice.ArcLength, - TopAngle = slice.TopAngle, - BottomAngle = slice.BottomAngle, - CohesionInput = slice.CohesionInput, - CohesionOutput = slice.CohesionOutput, - FrictionAngleInput = slice.FrictionAngleInput, - FrictionAngleOutput = slice.FrictionAngleOutput, - YieldStress = slice.YieldStress, - OCR = slice.OCR, - POP = slice.POP, - DegreeOfConsolidationPorePressure = slice.DegreeOfConsolidationPorePressure, - PorePressureDueToDegreeOfConsolidationLoad = slice.PorePressureDueToDegreeOfConsolidationLoad, - DilatancyInput = slice.DilatancyInput, - ExternalLoad = slice.ExternalLoad, - HydrostaticPorePressure = slice.HydrostaticPorePressure, - LeftForce = slice.LeftForce, - LeftForceAngle = slice.LeftForceAngle, - LeftForceY = slice.LeftForceY, - RightForce = slice.RightForce, - RightForceAngle = slice.RightForceAngle, - RightForceY = slice.RightForceY, - LoadStress = slice.LoadStress, - NormalStress = slice.NormalStress, - PorePressure = slice.PorePressure, - HorizontalPorePressure = slice.HorizontalPorePressure, - VerticalPorePressure = slice.VerticalPorePressure, - PiezometricPorePressure = slice.PiezometricPorePressure, - EffectiveStress = slice.EffectiveStress, - ExcessPorePressure = slice.ExcessPorePressure, - ShearStressInput = slice.ShearStressInput, - ShearStressOutput = slice.ShearStressOutput, - SoilStress = slice.SoilStress, - TotalPorePressure = slice.TotalPorePressure, - TotalStress = slice.TotalStress, - Weight = slice.Weight, - SuInput = slice.SuInput, - SuOutput = slice.SuOutput, - ShearStrengthModel = OutputConversionHelper.ConvertToDamShearStrengthModel(slice.ShearStrengthModel), - HorizontalSoilQuakeStress = slice.HorizontalSoilQuakeStress, - StrengthIncreaseExponent = slice.StrengthIncreaseExponent, - UpliftFactor = slice.UpliftFactor, - VerticalSoilQuakeStress = slice.VerticalSoilQuakeStress, - WaterQuakeStress = slice.WaterQuakeStress, - UpliftReductionFactor = slice.UpliftReductionFactor, - RatioCuPc = slice.RatioCuPc, - ResultantForce = slice.ResultantForce, - ResultantMoment = slice.ResultantMoment, - ResultantAngle = slice.ResultantAngle - }; - macroStabilityOutputItem.ResultSlices.Add(resultSlice); - } - macroStabilityOutputItem.CircleSurfacePointRightXCoordinate = stabilityOutput.MinimumSafetyCurve.Slices[^1].TopRightPoint.X; + TransferPropertiesSlices(stabilityOutput, macroStabilityOutputItem); } } } + + private static void TransferPropertiesSlices(StabilityOutputType stabilityOutput, MacroStabilityOutputItem macroStabilityOutputItem) + { + macroStabilityOutputItem.ResultSlices = new List(); + foreach (MinimumSafetyCurveBaseTypeSlice slice in stabilityOutput.MinimumSafetyCurve.Slices) + { + var resultSlice = new StabilityResultSlice + { + TopLeftPoint = new Point2D(slice.TopLeftPoint.X, slice.TopLeftPoint.Z), + TopRightPoint = new Point2D(slice.TopRightPoint.X, slice.TopRightPoint.Z), + BottomLeftPoint = new Point2D(slice.BottomLeftPoint.X, slice.BottomLeftPoint.Z), + BottomRightPoint = new Point2D(slice.BottomRightPoint.X, slice.BottomRightPoint.Z), + Name = slice.Name, + Width = slice.Width, + ArcLength = slice.ArcLength, + TopAngle = slice.TopAngle, + BottomAngle = slice.BottomAngle, + CohesionInput = slice.CohesionInput, + CohesionOutput = slice.CohesionOutput, + FrictionAngleInput = slice.FrictionAngleInput, + FrictionAngleOutput = slice.FrictionAngleOutput, + YieldStress = slice.YieldStress, + OCR = slice.OCR, + POP = slice.POP, + DegreeOfConsolidationPorePressure = slice.DegreeOfConsolidationPorePressure, + PorePressureDueToDegreeOfConsolidationLoad = slice.PorePressureDueToDegreeOfConsolidationLoad, + DilatancyInput = slice.DilatancyInput, + ExternalLoad = slice.ExternalLoad, + HydrostaticPorePressure = slice.HydrostaticPorePressure, + LeftForce = slice.LeftForce, + LeftForceAngle = slice.LeftForceAngle, + LeftForceY = slice.LeftForceY, + RightForce = slice.RightForce, + RightForceAngle = slice.RightForceAngle, + RightForceY = slice.RightForceY, + LoadStress = slice.LoadStress, + NormalStress = slice.NormalStress, + PorePressure = slice.PorePressure, + HorizontalPorePressure = slice.HorizontalPorePressure, + VerticalPorePressure = slice.VerticalPorePressure, + PiezometricPorePressure = slice.PiezometricPorePressure, + EffectiveStress = slice.EffectiveStress, + ExcessPorePressure = slice.ExcessPorePressure, + ShearStressInput = slice.ShearStressInput, + ShearStressOutput = slice.ShearStressOutput, + SoilStress = slice.SoilStress, + TotalPorePressure = slice.TotalPorePressure, + TotalStress = slice.TotalStress, + Weight = slice.Weight, + SuInput = slice.SuInput, + SuOutput = slice.SuOutput, + ShearStrengthModel = OutputConversionHelper.ConvertToDamShearStrengthModel(slice.ShearStrengthModel), + HorizontalSoilQuakeStress = slice.HorizontalSoilQuakeStress, + StrengthIncreaseExponent = slice.StrengthIncreaseExponent, + UpliftFactor = slice.UpliftFactor, + VerticalSoilQuakeStress = slice.VerticalSoilQuakeStress, + WaterQuakeStress = slice.WaterQuakeStress, + UpliftReductionFactor = slice.UpliftReductionFactor, + RatioCuPc = slice.RatioCuPc, + ResultantForce = slice.ResultantForce, + ResultantMoment = slice.ResultantMoment, + ResultantAngle = slice.ResultantAngle + }; + macroStabilityOutputItem.ResultSlices.Add(resultSlice); + } + macroStabilityOutputItem.CircleSurfacePointRightXCoordinate = stabilityOutput.MinimumSafetyCurve.Slices[^1].TopRightPoint.X; + } + + private static void TransferPropertiesUpliftVanSlipPlane(StabilityOutputType stabilityOutput, MacroStabilityOutputItem macroStabilityOutputItem) + { + var dualSlidingCircleMinimumSafetyCurve = (DualSlidingCircleMinimumSafetyCurveType) stabilityOutput.MinimumSafetyCurve; + macroStabilityOutputItem.StabilityModelType = StabilityModelType.UpliftVan; + macroStabilityOutputItem.ActiveCenterPoint = new Point2D(dualSlidingCircleMinimumSafetyCurve.ActiveCircleCenter.X, dualSlidingCircleMinimumSafetyCurve.ActiveCircleCenter.Z); + macroStabilityOutputItem.ActiveCenterPointRadius = dualSlidingCircleMinimumSafetyCurve.ActiveCircleRadius; + macroStabilityOutputItem.PassiveCenterPoint = new Point2D(dualSlidingCircleMinimumSafetyCurve.PassiveCircleCenter.X, dualSlidingCircleMinimumSafetyCurve.PassiveCircleCenter.Z); + macroStabilityOutputItem.PassiveCenterPointRadius = dualSlidingCircleMinimumSafetyCurve.PassiveCircleRadius; + } + + private static void TransferPropertiesBishopSlipPlane(StabilityOutputType stabilityOutput, MacroStabilityOutputItem macroStabilityOutputItem) + { + var slidingCircleMinimumSafetyCurve = (SlidingCircleMinimumSafetyCurveType) stabilityOutput.MinimumSafetyCurve; + macroStabilityOutputItem.StabilityModelType = StabilityModelType.Bishop; + macroStabilityOutputItem.ActiveCenterPoint = new Point2D(slidingCircleMinimumSafetyCurve.Center.X, slidingCircleMinimumSafetyCurve.Center.Z); + macroStabilityOutputItem.ActiveCenterPointRadius = slidingCircleMinimumSafetyCurve.Radius; + } } \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs =================================================================== diff -u -r6442 -r6518 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs (.../DesignCalculator.cs) (revision 6442) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/DikesDesign/DesignCalculator.cs (.../DesignCalculator.cs) (revision 6518) @@ -149,10 +149,10 @@ { // Check if the subSoilScenario is applicable for the failuremechanism that is being calculated if (location.Segment.SoilProfileProbabilities[subSoilScenarioIndex].SegmentFailureMechanismType.HasValue && - (location.Segment.SoilProfileProbabilities[subSoilScenarioIndex].SegmentFailureMechanismType.Value.In( - ConversionHelper.ConvertToSegmentFailureMechanismType(damProjectData.DamProjectCalculationSpecification - .CurrentSpecification.FailureMechanismSystemType), - SegmentFailureMechanismType.All))) + location.Segment.SoilProfileProbabilities[subSoilScenarioIndex].SegmentFailureMechanismType.Value.In( + ConversionHelper.ConvertToSegmentFailureMechanismType(damProjectData.DamProjectCalculationSpecification + .CurrentSpecification.FailureMechanismSystemType), + SegmentFailureMechanismType.All)) { SoilGeometryProbability soiProfileProbability = location.Segment.SoilProfileProbabilities[subSoilScenarioIndex]; for (var designScenarioIndex = 0; designScenarioIndex < location.Scenarios.Count; designScenarioIndex++)