Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs =================================================================== diff -u -r3683 -r3688 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 3683) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators/KernelWrappers/MacroStabilityInwards/MacroStabilityInwardsKernelWrapper.cs (.../MacroStabilityInwardsKernelWrapper.cs) (revision 3688) @@ -23,7 +23,6 @@ using System.Collections.Generic; using System.Data; using System.IO; -using System.Linq; using System.Text.RegularExpressions; using Deltares.DamEngine.Calculators.DikesDesign; using Deltares.DamEngine.Calculators.KernelWrappers.Common; @@ -106,21 +105,8 @@ { case MStabModelType.Bishop: { - // Define slip circle Bishop - var slipCircleDefinition = damKernelInput.DamFailureMechanismeCalculationSpecification - .FailureMechanismParametersMStab.MStabParameters.SlipCircleDefinition; - var minimumCircleDepth = damKernelInput.DamFailureMechanismeCalculationSpecification - .FailureMechanismParametersMStab.MStabParameters.CalculationOptions.MinimalCircleDepth; - var bishopCalculationGrid = BishopGridCreator.DetermineGridsFromSettings( - slipCircleDefinition, damKernelInput.Location.SurfaceLine); - var centerOfLeftGridXCoordinate = (bishopCalculationGrid.GridXLeft + bishopCalculationGrid.GridXRight) * 0.5; - var soilProfile1DAtCenterOfLeftGridXCoordinate = - damKernelInput.SubSoilScenario.DetermineSoilProfile1DAtX(centerOfLeftGridXCoordinate, damKernelInput.Location.SurfaceLine, - damKernelInput.Location.GetDikeEmbankmentSoil()); - BishopGridCreator.DetermineTangentLines(bishopCalculationGrid, slipCircleDefinition, - soilProfile1DAtCenterOfLeftGridXCoordinate, minimumCircleDepth); - - fillMacroStabilityWrapperFromEngine.BishopCalculationGrid = bishopCalculationGrid; + fillMacroStabilityWrapperFromEngine.BishopCalculationGrid = + FillBishopCalculationGrid(damKernelInput); break; } case MStabModelType.UpliftVan: @@ -132,39 +118,9 @@ { return PrepareResult.NotRelevant; } - - // Define traffic load - TrafficLoad trafficLoad = null; - if (damKernelInput.Location.StabilityOptions != null && damKernelInput.Location.StabilityOptions.TrafficLoad.HasValue && - !(Math.Abs(damKernelInput.Location.StabilityOptions.TrafficLoad.Value) < 1e-6)) - { - trafficLoad = new TrafficLoad - { - Pressure = damKernelInput.Location.StabilityOptions.TrafficLoad.Value, - XStart = damKernelInput.Location.SurfaceLine - .CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).X, - XEnd = damKernelInput.Location.SurfaceLine - .CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X - }; - } - - // Define slip circle UpliftVan - var slipCircleDefinition = damKernelInput.DamFailureMechanismeCalculationSpecification - .FailureMechanismParametersMStab.MStabParameters.SlipCircleDefinition; - var minimumCircleDepth = damKernelInput.DamFailureMechanismeCalculationSpecification - .FailureMechanismParametersMStab.MStabParameters.CalculationOptions.MinimalCircleDepth; - var upliftVanCalculationGrid = UpliftVanGridCreator.DetermineGridsFromSettings( - slipCircleDefinition, damKernelInput.Location.SurfaceLine); - var centerOfLeftGridXCoordinate = - (upliftVanCalculationGrid.LeftGridXLeft + upliftVanCalculationGrid.LeftGridXRight) * 0.5; - var soilProfile1DAtCenterOfLeftGridXCoordinate = - damKernelInput.SubSoilScenario.DetermineSoilProfile1DAtX(centerOfLeftGridXCoordinate, damKernelInput.Location.SurfaceLine, - damKernelInput.Location.GetDikeEmbankmentSoil()); - UpliftVanGridCreator.DetermineTangentLines(upliftVanCalculationGrid, slipCircleDefinition, - soilProfile1DAtCenterOfLeftGridXCoordinate, minimumCircleDepth); - - fillMacroStabilityWrapperFromEngine.TrafficLoad = trafficLoad; - fillMacroStabilityWrapperFromEngine.UpliftVanCalculationGrid = upliftVanCalculationGrid; + + fillMacroStabilityWrapperFromEngine.TrafficLoad = FillTrafficLoad(damKernelInput); + fillMacroStabilityWrapperFromEngine.UpliftVanCalculationGrid = FillUpliftVanCalculationGrid(damKernelInput); break; } default: @@ -218,9 +174,6 @@ File.WriteAllText(fileNameForCalculation, inputAsXml); - - - if (inputAsXml.Length > 10) { return PrepareResult.Successful; @@ -236,6 +189,63 @@ } } + private BishopCalculationGrid FillBishopCalculationGrid(DamKernelInput damKernelInput) + { + var slipCircleDefinition = damKernelInput.DamFailureMechanismeCalculationSpecification + .FailureMechanismParametersMStab.MStabParameters.SlipCircleDefinition; + var minimumCircleDepth = damKernelInput.DamFailureMechanismeCalculationSpecification + .FailureMechanismParametersMStab.MStabParameters.CalculationOptions.MinimalCircleDepth; + var bishopCalculationGrid = BishopGridCreator.DetermineGridsFromSettings( + slipCircleDefinition, damKernelInput.Location.SurfaceLine); + var centerOfLeftGridXCoordinate = (bishopCalculationGrid.GridXLeft + bishopCalculationGrid.GridXRight) * 0.5; + var soilProfile1DAtCenterOfLeftGridXCoordinate = + damKernelInput.SubSoilScenario.DetermineSoilProfile1DAtX(centerOfLeftGridXCoordinate, damKernelInput.Location.SurfaceLine, + damKernelInput.Location.GetDikeEmbankmentSoil()); + BishopGridCreator.DetermineTangentLines(bishopCalculationGrid, slipCircleDefinition, + soilProfile1DAtCenterOfLeftGridXCoordinate, minimumCircleDepth); + + return bishopCalculationGrid; + } + + private MacroStabilityCommon.UpliftVanCalculationGrid FillUpliftVanCalculationGrid(DamKernelInput damKernelInput) + { + var slipCircleDefinition = damKernelInput.DamFailureMechanismeCalculationSpecification + .FailureMechanismParametersMStab.MStabParameters.SlipCircleDefinition; + var minimumCircleDepth = damKernelInput.DamFailureMechanismeCalculationSpecification + .FailureMechanismParametersMStab.MStabParameters.CalculationOptions.MinimalCircleDepth; + var upliftVanCalculationGrid = UpliftVanGridCreator.DetermineGridsFromSettings( + slipCircleDefinition, damKernelInput.Location.SurfaceLine); + var centerOfLeftGridXCoordinate = + (upliftVanCalculationGrid.LeftGridXLeft + upliftVanCalculationGrid.LeftGridXRight) * 0.5; + var soilProfile1DAtCenterOfLeftGridXCoordinate = + damKernelInput.SubSoilScenario.DetermineSoilProfile1DAtX(centerOfLeftGridXCoordinate, + damKernelInput.Location.SurfaceLine, + damKernelInput.Location.GetDikeEmbankmentSoil()); + UpliftVanGridCreator.DetermineTangentLines(upliftVanCalculationGrid, slipCircleDefinition, + soilProfile1DAtCenterOfLeftGridXCoordinate, minimumCircleDepth); + + return upliftVanCalculationGrid; + } + + private TrafficLoad FillTrafficLoad(DamKernelInput damKernelInput) + { + TrafficLoad trafficLoad = null; + if (damKernelInput.Location.StabilityOptions != null && damKernelInput.Location.StabilityOptions.TrafficLoad.HasValue && + !(Math.Abs(damKernelInput.Location.StabilityOptions.TrafficLoad.Value) < 1e-6)) + { + trafficLoad = new TrafficLoad + { + Pressure = damKernelInput.Location.StabilityOptions.TrafficLoad.Value, + XStart = damKernelInput.Location.SurfaceLine + .CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).X, + XEnd = damKernelInput.Location.SurfaceLine + .CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X + }; + } + + return trafficLoad; + } + /// /// Validates the specified kernel data input. ///