OpenGeoRock
3.4

Slip-surface search

Describes OGR Slip2D 0.1.235

The factor of safety of a slope is the lowest value over all the slip surfaces along which the ground could fail, and no formula gives the surface that has it. OGR Slip2D finds it by searching: it generates trial surfaces, computes the factor of safety of each and reports the lowest. The seven methods differ in how they generate the trial surfaces; the chapter also covers the controls that restrict them, the optimisation of non-circular results and the checks that show whether the minimum has been found.

A circular slip surface is fixed by three numbers, the centre (xc, yc)(x_c,\ y_c) and the radius RR; a non-circular one by the coordinates of its vertices. The factor of safety FF of Section 3.1 is a function of those numbers, and the quantity a slope stability analysis reports is its minimum over the surfaces considered,

Fc=min⁡s ∈ SF(s)F_c = \min_{s\,\in\,\mathcal{S}} F(s)

where

S\mathcal{S}
set of kinematically admissible trial surfaces the search generates
FcF_c
factor of safety of the critical surface, the lowest found

F(s)F(s) has no closed form, it changes abruptly where a surface starts to cross another layer or the water table, and it often has several local minima: a shallow mechanism in the face of the slope and a deep one through a weak foundation can both be minima, each surrounded by surfaces with higher factors. A method that only walks downhill from one starting surface finds the minimum of the basin it starts in (Greco, 1996). Every search therefore combines two things in different proportions: coverage of the space of plausible surfaces, so that no basin is left unvisited, and refinement of the best region it finds (Cheng et al., 2007).

The result of any search is the lowest factor among the surfaces it tried. It is the global minimum only if the search reached the surface that has it, and Section 3.4.8 describes how to check that it did. Table 3.4.1 summarises the seven methods.

Table 3.4.1 The seven searches of OGR Slip2D 0.1.235 with the project's default settings. The population is the number of trial surfaces generated; for the grid search, 13 × 13 centres with 11 radii each.
SearchSurfacesHow the trial surfaces are generatedPopulationOptimisation
Grid
grid
circularcircles about a grid of centres, a bracket of radii at each1859—
Slope
slope
circularrandom exit point, entry point and exit angle, then a local refinement5000 + refinement—
Auto Refine
auto_refine
bothcircles between divisions of the slope, narrowed to the best divisions at each iteration4500on for non-circular
Particle Swarm
particle_swarm
botha swarm of circles moving towards the best positions found2500on
Block
block
non-circularvertices from the Block Search objects, ends projected to the ground5000off
Path
path
non-circulara walk of equal segments from the toe, turning upwards5000 validoff
Simulated Annealing
simulated_annealing
non-circularvery fast simulated annealing, then a local Monte Carlo refinementset by the generation stepson
In OGR Slip2D

The surface type and the search method are chosen in Surfaces → Surface Options…. Each method of slices selected in the project runs its own search, so different methods can return different critical surfaces. Grid and Auto Refine are deterministic; the other five draw random numbers from the project's seed (Analysis → Project Settings…, Random Numbers, pseudo-random with seed 10116 by default), so a run can be reproduced. Every search evaluates its candidates through the same two functions, evaluate_circle and evaluate_surface, which is where the filters of Section 3.4.6 and the admissibility checks of Section 3.3.4 to Section 3.3.6 are applied, so they act identically on every search, on the optimisation and on the probabilistic re-evaluations. When a seismic analysis mode asks for the critical seismic coefficient, every search minimises kyk_y instead of FF (Section 3.9).

Source: ogr_slip2d/search.py · ogr_slip2d/analysis_runner.py · ogr_core/project/settings.py

3.4.2Circular surfaces#

The slip surface of a circle is its lower arc between two consecutive points where it crosses the ground. A circle that crosses the ground more than twice defines several separate sliding masses, as on a benched slope; each is analysed and the one with the lowest factor is kept. Two cases need a rule of their own:

  • Reverse curvature. When an end of the arc lies above the centre, the arc would turn back over itself. By default a dry vertical tension crack is placed where the arc becomes vertical, at xc∓Rx_c \mp R, and the mass ends there; the option Create tension crack for reverse curvature can be cleared to discard such circles instead.
  • Leaving the soil. A mass whose arc passes below the lower edge of the External Boundary is discarded, because there is no soil there, unless Composite Surfaces is on (Section 3.4.4).

A trial circle whose factor of safety comes out below 0.2 or above 100 is counted as invalid by every circular search.

The classical search for circular surfaces evaluates circles about every centre of a rectangular grid, with a set of radii at each centre (Figure 3.4.1). With nxn_x and nyn_y intervals the grid has (nx+1)(ny+1)(n_x + 1)(n_y + 1) centres. At each centre CC the radii span a bracket fixed by the slope surface, the part of the ground profile between the Slope Limits:

δ=0.05 (dmax−dmin),rmin=dmin+δ,rmax=dmax−δ\delta = 0.05\,(d_{max} - d_{min}), \qquad r_{min} = d_{min} + \delta, \qquad r_{max} = d_{max} - \delta
rk=rmin+(rmax−rmin)knr,k=0, 1, …, nrr_k = r_{min} + \left(r_{max} - r_{min}\right)\dfrac{k}{n_r}, \qquad k = 0,\ 1,\ \dots,\ n_r

where

dmind_{min}
distance from CC to the nearest point of the slope surface, whether a vertex or the foot of a perpendicular (m)
dmaxd_{max}
distance from CC to the nearer of the two limit points at the ends of the slope surface (m)
nrn_r
Radius Increment: the number of intervals between rminr_{min} and rmaxr_{max}, so each centre has nr+1n_r + 1 circles

Since the limit points belong to the slope surface, dmax≥dmind_{max} \ge d_{min} always holds and every centre generates its nr+1n_r + 1 circles. The number of circles generated is therefore

N=(nx+1)(ny+1)(nr+1)N = (n_x + 1)(n_y + 1)(n_r + 1)

which is 1859 with the default 12 × 12 grid and Radius Increment of 10. When two windows of Slope Limits are declared, the bracket is instead the range of radii whose circle enters the soil in one window and leaves it in the other.

Grid search: a grid of slip centres above a slope; at one centre, five circles with radii spaced between the distance to the nearest point of the slope surface and the distance to the nearer slope limit; the largest passes below the base of the model and is discarded below the base of the model: discarded dmin dmax C slope limit slope limit grid of slip centres (nx + 1) × (ny + 1)
Figure 3.4.1 Grid search with 4 × 2 intervals (15 centres) and a Radius Increment of 4 on a test slope. At the centre CC the bracket of Eq. (3.4.2) runs from dmind_{min}, to the nearest point of the slope surface, to dmaxd_{max}, to the nearer slope limit; of the four circles analysed, the one with the lowest factor of safety is drawn in red; the largest, which passes below the base of the model, is discarded. Radii and arcs computed by OGR Slip2D 0.1.235.
Limit-equilibrium analysis computed by OGR Slip2D: 156 of 169 grid centres with a valid circle, critical factor of safety 1.290 (spencer)
Figure 3.4.2 Grid search on the two-layer slope of the quick start: the automatic 12 × 12 grid (169 centres, 11 radii each), each centre coloured by the lowest factor of safety of its circles, from red near the minimum to green; the 60 lowest of those minima drawn as arcs, and the critical circle with its slices, centred at (60.0, 47.6) with a radius of 31.2 m (Spencer, F=1.290F = 1.290). Computed by OGR Slip2D 0.1.235.
Table 3.4.2 Grid search settings (Surfaces → Surface Options…, Surfaces → Auto Grid, Surfaces → Add Grid…).
SettingDefaultMeaning
Number of centres nx, nyn_x,\ n_y12, 12intervals of the grid; at least 2 each
Grid extentAuto Gridxx from xmin+0.2 Δxx_{min} + 0.2\,\Delta x to xmax−0.2 Δxx_{max} - 0.2\,\Delta x, yy from ymaxy_{max} to ymax+0.8 Δyy_{max} + 0.8\,\Delta y, over the bounding box of the model
Radius Increment nrn_r10intervals between the smallest and largest radius
Composite Surfacesoffcircles below the base of the model follow it (Section 3.4.4)
Create tension crack for reverse curvatureonotherwise reverse-curvature circles are discarded
In OGR Slip2D

The bracket rule, including the 5 % inset of Eq. (3.4.2), was set from measurements, which the source code records. A grid of 400 circles or more is evaluated in parallel processes (up to 8, using by default half of the logical processors, Project Settings → Advanced), and the result is identical to the sequential run. When the critical centre lies on the edge of the grid the analysis notes say so, because a minimum on the boundary of the searched region is the best of what was searched, not necessarily the lowest.

Source: ogr_slip2d/search.py (GridSearch)

Instead of placing centres, the slope search draws circles that are sure to daylight on the slope. It locates the slope face, the steepest run of the ground profile, with its toe, crest, inclination β\beta and horizontal width ww, and for each trial surface draws at random

  • an exit point on the ground between 0.8w0.8w beyond the toe and 0.6w0.6w into the face;
  • an entry point on the ground between 0.4w0.4w below the crest and 1.5w1.5w beyond it;
  • the inclination θ\theta of the arc at the exit point, between the Lower and the Upper Angle.

Both points are kept within the ground profile. The circle through the two points with that tangent at the exit has its centre where the normal to the tangent at the exit meets the perpendicular bisector of the chord. It is rejected if the centre lies below either point, if the two points are less than 0.5 m apart horizontally, or if its radius exceeds 50 times the height of the model. The 8 circles with the lowest factors then go through a local refinement of 120 random steps each, moving the centre and the radius by up to max⁡(0.15R, 1 m)\max(0.15R,\ 1\ \text{m}), a range that shrinks linearly to zero over the steps, and keeping every step that lowers the factor.

Table 3.4.3 Slope search settings.
SettingDefaultMeaning
Number of Surfaces5000circles drawn before the refinement
Upper Angleoff: max⁡(β−5∘, 5∘)\max(\beta - 5^\circ,\ 5^\circ)upper limit of θ\theta
Lower Angleoff: −45°lower limit of θ\theta; the window is always widened down to at least −70°
Composite Surfaces, tension crack for reverse curvatureoff, onas for the grid search

The Slope Limits do not steer where this search draws its points; they still filter the surfaces it finds, as for every search, and the analysis notes say so when limits are set.

Auto refine search#

The auto refine search narrows the search, iteration by iteration, to the parts of the slope that produce the lowest factors. At each iteration:

  1. The search area, at first the slope surface between the Slope Limits, is divided into dd divisions of equal length measured along the ground, and the midpoint of each is taken on the ground.
  2. For every pair of divisions, ncn_c circles are drawn through the two midpoints. With ℓ\ell the chord between them and ω\omega its inclination, each circle is fixed by its half central angle θ\theta, the angle between chord and tangent, spaced evenly over [1∘, 90∘−∣ω∣−1∘][1^\circ,\ 90^\circ - |\omega| - 1^\circ], from an almost flat circle to one whose centre is level with the upper point:
    R=ℓ2sin⁡θ,h=ℓ2tan⁡θR = \dfrac{\ell}{2\sin\theta}, \qquad h = \dfrac{\ell}{2\tan\theta}
    with the centre on the upper side of the chord at distance hh from its midpoint.
  3. Each division is ranked by the lowest factor of safety among the circles that end in it, and the best fraction of the divisions is kept. The divisions kept, joined into contiguous runs, become the search area of the next iteration; the discarded ones stay discarded.

Every iteration generates

Nit=(d2) ncN_{it} = \binom{d}{2}\,n_c

circles, 450 with the defaults, and the full number of iterations always runs. Ranking a division by the lowest factor of its circles rather than by their average is a deliberate choice recorded in the source: the average was measured to favour the divisions in the middle of the slope, whose circles reach every other division, and failed to move the search towards minima at the ends of the slope.

The non-circular variant generates the same circles and refines the same way, but converts each circle into a polyline of NvN_v vertices at equal central angles along its arc and computes the factor of safety of the polyline. Every vertex is a mandatory slice boundary, so the number of slices must be at least Nv−1N_v - 1 or every surface is refused; the analysis warns when that is the case. Optimisation (Section 3.4.7) is on by default for this variant.

Table 3.4.4 Auto refine search settings.
SettingDefaultMeaning
Divisions along slope dd10at least 2
Circles per division ncn_c10circles per pair of divisions
Number of Iterations10always run in full
Divisions to use in next iteration50 %kept between 10 % and 95 %
Vertices along surface NvN_v12non-circular variant only; at least 3
Composite Surfacesoffcircular variant

Particle swarm search#

Particle swarm optimisation (Kennedy & Eberhart, 1995) moves a population of candidate solutions through the search space, each one drawn towards the best positions found so far. In OGR Slip2D each particle is a circle, described by a point S=(u1,u2,u3)\mathbf{S} = (u_1, u_2, u_3) of the unit cube that maps onto the exit abscissa, the entry abscissa and the exit angle of the slope search above, over the same exit and entry ranges. The angle range is [−85∘, 85∘][-85^\circ,\ 85^\circ] unless the Upper or Lower Angle of the slope search is set. Particle ii moves as

Sit+1=Sit+Vit\mathbf{S}_{i}^{t+1} = \mathbf{S}_{i}^{t} + \mathbf{V}_{i}^{t}
Vit={r1(SG−Sit)+r2(SB,i−Sit)one minimumr1(N1−Sit)+r2(N2−Sit)several minima\mathbf{V}_i^{t} = \begin{cases} r_1\left(\mathbf{S}_G - \mathbf{S}_i^{t}\right) + r_2\left(\mathbf{S}_{B,i} - \mathbf{S}_i^{t}\right) & \text{one minimum} \\[4pt] r_1\left(\mathbf{N}_{1} - \mathbf{S}_i^{t}\right) + r_2\left(\mathbf{N}_{2} - \mathbf{S}_i^{t}\right) & \text{several minima} \end{cases}

where

SG, SB,i\mathbf{S}_G,\ \mathbf{S}_{B,i}
best position found by the whole swarm, and by particle ii
N1, N2\mathbf{N}_1,\ \mathbf{N}_2
best positions of the two particles nearest to ii, by Euclidean distance in the unit cube
r1, r2r_1,\ r_2
random numbers uniform in [0, 1)[0,\ 1), drawn for each particle at each iteration

The update has no inertia weight and no constriction factor, unlike the canonical algorithm. A particle that leaves the cube is reflected back into it, and one whose circle cannot be analysed keeps its place with an infinite factor of safety, so the swarm keeps its size. Drawing each particle towards its nearest neighbours instead of towards the global best is what lets the swarm settle on several minima at once (Qu, Suganthan & Das, 2013). With the enhanced algorithm, the default, the fifth of the swarm with the highest factors is relocated at random at the end of each iteration, so that a swarm collapsed onto one basin keeps probing elsewhere.

To report several minima the final positions are grouped by the species-seed procedure of Li (2004): sorted by factor of safety, the best ungrouped particle starts a group and takes every particle within the grouping radius of it, and so on. The radius is a percentage of the diagonal of the unit cube. Two mechanisms with similar factors in different parts of the slope are two answers; the factor of safety plays no part in the grouping.

Table 3.4.5 Particle swarm search settings.
SettingDefaultMeaning
Number of particles50at least 3
Number of iterations50each particle is evaluated once per iteration
Report several minima (Number of Mins)offoff: one minimum, the global one
Grouping radius10 %of the diagonal of the unit cube
Use enhanced PSO algorithmonProject Settings → Advanced; relocates 20 % of the swarm each iteration
In OGR Slip2D

The particles are always circles, and the search is offered under both surface types. Optimise Surfaces is on by default for it: each reported minimum is converted into a polyline of 13 points on its own arc and optimised (Section 3.4.7), so the surface reported can be non-circular even when the surface type is Circular. With several minima requested and optimisation turned off, the analysis notes warn that the search is then hunting local minima, and the lowest of them need not be the global one. The relocated fraction of 20 % is the program's own choice.

Source: ogr_slip2d/particle_swarm.py

3.4.3Non-circular surfaces#

A non-circular surface is a polyline from the ground to the ground, single-valued in xx. Each of its vertices, and each material boundary or water table it crosses, is a mandatory slice boundary, so a surface with more segments than the number of slices allows is dropped, and the analysis notes say how many were. A polyline has no centre about which to take moments: the methods that use moment equilibrium take them about the point set with Surfaces → Slope Limits → Define Moment Axis…, or, by default, about a point built for each surface from its entry–exit chord, displaced from the midpoint of the chord by the chord itself rotated through 90° (Eq. (3.2.8)).

Moment axis

The program's source records (D47) that a method satisfying moment equilibrium only depends on where that point is. On one verification surface a polyline inscribed in the critical circle gave, with the automatic axis, factors 4.7 % (Ordinary) and 4.2 % (Bishop) below the circle, however finely it was divided, while Spencer, which also satisfies force equilibrium, stayed within 0.1 % of it. Compare a non-circular result with Spencer or GLE/Morgenstern–Price (Section 3.2.5, Section 3.2.6).

The block search builds surfaces of the sliding-block type, an active wedge, a central block and a passive wedge, from objects drawn on the model where the user expects the surface to run. Each object gives every trial surface one or more vertices:

  • a window, any closed polygon, gives one vertex at a random point inside it;
  • a line gives one vertex at a random point along it; the surface does not follow the line;
  • a point gives itself, with no random number drawn;
  • a polyline gives two points along it, each drawn anywhere on it, on its end segment or fixed at its end vertex, as chosen separately for the left and the right point, and every vertex of the polyline between them: the surface follows the polyline between its two points, as along a weak seam.

The vertices are sorted by xx. From the leftmost a straight segment rises at the Left Projection Angle until it meets the ground, and from the rightmost one at the Right Projection Angle; both are measured counter-clockwise from the positive xx axis, 135° and 45° by default (Figure 3.4.3). Either angle may be given as a range, from which a value is drawn for each surface. A candidate is discarded if a vertex lies above the ground or outside the External Boundary, if an end does not daylight within the Slope Limits, or, with Convex Surfaces Only, if the polyline is not convex. No other object may overlap the horizontal extent of a polyline object, so that its stretch is never cut by a vertex from elsewhere.

Block search on a test slope: a window near the toe, a polyline along a seam and a point under the crest; one trial surface takes a random point in the window, two points on the polyline with the vertex between them, and the point, and is projected to the ground at 135 degrees on the left and 45 degrees on the right; other trial surfaces in green 135° 45° window polyline point
Figure 3.4.3 Block search with a window, a polyline and a point (dashed outlines). The surface drawn in black takes one random point in the window, two random points on the polyline with the polyline's vertex between them, and the point, and is projected to the ground at the default angles of 135° and 45°. Other trial surfaces of the same run are drawn in green. Computed by OGR Slip2D 0.1.235.

With Multiple Groups on, the objects are partitioned by their Group ID and the search runs once per group, using only that group's objects, with the Number of Surfaces divided equally between the groups (the remainder goes to the first); the critical surface is the lowest of all groups. Its intended use is several weak layers searched at once, one polyline per layer.

Table 3.4.6 Block search settings and objects (Surfaces → Add Block Search Window / Line / Point / Polyline).
SettingDefaultMeaning
Number of Surfaces5000candidates generated, valid or not
Left Projection Angle, start and end135°, 135°a range draws a random angle per surface
Right Projection Angle, start and end45°, 45°idem
Convex Surfaces Onlyoffrejects polylines with a reflex vertex
Multiple Groupsoffone search per Group ID
Implicit Region Bands3used only when no object is drawn
In OGR Slip2D

A window is sampled by rejection over its bounding box, 50 tries, after which the mean of its vertices is used. The ground crossing of each projected end is found by stepping along the ray in increments of 0.5 model units. When no Block Search object is drawn, OGR Slip2D falls back on a region of its own choosing: a box over the slope face, from 0.3 face widths before it to 0.5 beyond and from 5 % to 75 % of the model height, tiled into the Implicit Region Bands, with one random vertex in each band at least 10 % of the model height below the ground. This fallback is not a documented form of the method, and the analysis notes say so on every such run.

Source: ogr_slip2d/search.py (BlockSearch) · ogr_core/geometry/block_object.py

The path search grows irregular surfaces segment by segment from the toe, in the manner of the random generators of irregular surfaces introduced by Boutrup & Lovell (1980) (Figure 3.4.4):

  1. Initiation. A point is drawn at random on the ground in the half of the Slope Limits nearer the toe, or, with two windows of limits, in the window nearer the toe.
  2. First segment. Its inclination is drawn between a lower angle, 45° below the horizontal by default, and an upper angle, max⁡(β−5∘, 5∘)\max(\beta - 5^\circ,\ 5^\circ) by default, with β\beta the inclination of the slope face; angles are measured in the direction from toe to crest, so a positive one rises towards the crest.
  3. Next segments. All segments have the same length
L=max⁡(0.3 H,  0.05 (xR−xL),  10−3)L = \max\left(0.3\,H,\ \ 0.05\,(x_R - x_L),\ \ 10^{-3}\right)

unless a length is set, where HH is the relief of the ground profile between the Slope Limits xLx_L and xRx_R. Each new direction may only rotate upwards, which keeps the surface concave upwards:

θj+1=min⁡(80∘, max⁡(θj,  θlo+pj q(55∘−θlo)+εj))\theta_{j+1} = \min\left(80^\circ,\ \max\left(\theta_j,\ \ \theta_{lo} + p_j^{\,q}\left(55^\circ - \theta_{lo}\right) + \varepsilon_j\right)\right)

where

θlo\theta_{lo}
lower angle of the first segment
pjp_j
fraction of the horizontal distance from the initiation point to a target behind the crest already covered, from 0 to 1
qq
depth factor drawn once per surface, uniform in [0.55, 1.6][0.55,\ 1.6]: small values turn up early (shallow surfaces), large ones late (deep surfaces)
εj\varepsilon_j
random jitter, uniform in [−0.12, 0.18][-0.12,\ 0.18] rad

The surface ends where a segment reaches the ground, at the exact crossing. It is discarded if a vertex goes below the floor (the Minimum Elevation if set, otherwise the bottom of the External Boundary), if it has not re-emerged after 30 segments, if its exit lies outside the Slope Limits, if a vertex leaves the External Boundary, or, with Convex Surfaces Only, if an interior vertex lies above the entry–exit chord. The Number of Surfaces counts valid surfaces: generation continues until that many have been analysed, up to 20 times as many attempts.

Path search on a test slope: the initiation range is the toe-side half of the slope limits; one surface starts on the ground, leaves at an angle inside the window from minus 45 degrees to beta minus 5 degrees, and continues in segments of equal length turning upwards until it reaches the ground near the crest; other surfaces in green initiation range: toe-side half of the Slope Limits −45° β − 5° L H
Figure 3.4.4 Path search on a test slope of height H=15H = 15 m: segments of L=0.3H=4.5L = 0.3H = 4.5 m start in the toe-side half of the Slope Limits, with the first one inside the angle window shown dashed, and rotate upwards until they reach the ground. Other surfaces of the same run are drawn in green. Computed by OGR Slip2D 0.1.235.
Limit-equilibrium analysis computed by OGR Slip2D: 5000 valid non-circular surfaces, critical factor of safety 0.978 (spencer)
Figure 3.4.5 Path search through a weak seam: the embankment on soft clay of example 2, without its berm. Of the 5 000 valid surfaces the 60 lowest are drawn; the critical one (Spencer, F=0.978F = 0.978) runs along the seam, dotted, for almost 9 m, as the critical surface of the block search of the same model does (F=0.988F = 0.988). Computed by OGR Slip2D 0.1.235.
Table 3.4.7 Path search settings.
SettingDefaultMeaning
Number of Surfaces5000valid surfaces; at most 20 × as many attempts
Upper Angle (Initial Angle at Toe)off: max⁡(β−5∘, 5∘)\max(\beta - 5^\circ,\ 5^\circ)a value is an absolute angle, counter-clockwise from +x+x, converted to the toe-to-crest direction
Lower Angle (Initial Angle at Toe)off: 45° below the horizontalidem
Segment Lengthautomatic, Eq. (3.4.9)a manual value replaces it
Convex Surfaces Onlyoffinterior vertices must lie below the entry–exit chord
In OGR Slip2D

The depth factor, the turning schedule towards a target behind the crest and the 80° ceiling of Eq. (3.4.10) are the program's own heuristics for producing surfaces that re-emerge within the limits; the limit of 30 segments is a guard against walks that never re-emerge, deliberately independent of the number of slices. A Path Search does not optimise its surfaces unless Optimize Surfaces is ticked.

Source: ogr_slip2d/search.py (PathSearch)

Simulated annealing search#

The simulated annealing search treats the vertices of one polyline as the variables of a global optimisation, following the hybrid method of Su (2009): a global phase of very fast simulated annealing (Ingber, 1989), followed by a local Monte Carlo refinement (Greco, 1996).

Variables. The surface has NN vertices. The two ends start at the toe and the crest of the slope face, kept within the Slope Limits. The N−2N - 2 interior vertices are free: vertex mm stays within the mm-th of N−1N - 1 equal divisions of the horizontal distance between the ends, and its elevation between the floor max⁡(ymin, ye−0.15 (ymax−ye))\max\left(y_{min},\ y_e - 0.15\,(y_{max} - y_e)\right), with yey_e the elevation of the lower end and ymin, ymaxy_{min},\ y_{max} the bottom and top of the model, and a level 5 % of the model height below the ground. Each variable is normalised and kept within [0.001, 0.999][0.001,\ 0.999]. The search starts from a bowl-shaped surface hanging below the chord, valid by construction, drawn with a random depth and asymmetry.

Global phase. Each step perturbs every normalised variable pp with the generator of very fast simulated annealing, and accepts the new surface with probability PP:

Δp=sgn⁡ ⁣(u−12)Tg[(1+1Tg)∣2u−1∣−1],u∼U(0, 1)\Delta p = \operatorname{sgn}\!\left(u - \tfrac{1}{2}\right) T_g\left[\left(1 + \dfrac{1}{T_g}\right)^{|2u - 1|} - 1\right], \qquad u \sim \mathcal{U}(0,\ 1)
P={1ΔF≤011+exp⁡(ΔF/Ta)ΔF>0P = \begin{cases} 1 & \Delta F \le 0 \\[4pt] \dfrac{1}{1 + \exp\left(\Delta F / T_a\right)} & \Delta F > 0 \end{cases}

where

Tg, TaT_g,\ T_a
generation and acceptance temperatures, starting at 1 and at the factor of safety of the starting surface
ΔF\Delta F
factor of safety of the new surface minus that of the best surface so far

The steps are grouped in K=max⁡(4, ⌊Ngen/50⌋)K = \max(4,\ \lfloor N_{gen}/50 \rfloor) cycles; cycle kk makes max⁡(10, ⌊N0/2k−1⌋)\max\left(10,\ \lfloor N_0/2^{k-1}\rfloor\right) steps, with N0=max⁡(20, ⌊Ngen/K⌋)N_0 = \max(20,\ \lfloor N_{gen}/K \rfloor) and NgenN_{gen} the number of generation steps. At the end of each cycle both temperatures are multiplied by the factor of the schedule of Su (2009),

T←T exp⁡(−c k1/n),n=2 (N−2)T \leftarrow T\,\exp\left(-c\,k^{1/n}\right), \qquad n = 2\,(N - 2)

and the acceptance temperature is halved if more than twice as many surfaces were accepted as rejected in the cycle, or doubled if fewer than half as many. The phase stops when the best factor has not improved by more than the tolerance in the chosen number of consecutive cycles, or when the cycles run out.

Local phase. Starting from the best surface, each vertex in turn tries the eight moves of its neighbourhood, (Nx, Ny)∈{−1,0,1}2(N_x,\ N_y) \in \{-1, 0, 1\}^2 without (0, 0)(0,\ 0), of size NxRxΔxN_x R_x \Delta_x and NyRyΔyN_y R_y \Delta_y with RR random in [−0.5, 0.5][-0.5,\ 0.5] (at least 0.1 in magnitude). The best improving move is taken and then repeated in the same direction, up to five times, while it keeps improving; if no move improves, the step sizes of that vertex are multiplied by 0.25. The steps start at 5 % of the model width. The end vertices move along the ground, in xx only and within the Slope Limits. The phase stops when every step has fallen below 0.1×0.1\times the tolerance times the model width, after 15 passes over the vertices, or after 2Ngen2N_{gen} evaluations.

Throughout, a candidate is used only if its vertices advance in xx, its interior vertices lie below the entry–exit chord, it has a single low point, its sliding mass is not smaller than the minimum area, it stays inside the External Boundary and its factor of safety lies between 0.5 and 100. A surface that fails the admissibility checks is counted but never guides the search.

Table 3.4.8 Simulated annealing search settings.
SettingDefaultMeaning
Initial number of surface vertices NN8at least 4
Number of annealing generation steps NgenN_{gen}1000fixes the cycles and steps of the global phase and the evaluation budget of the local one; with 1000, at most 257 global steps and 2000 local evaluations
Number of factors of safety compared before stopping5consecutive cycles without improvement
Tolerance for stopping criterion10−4smallest improvement that counts
Coefficient in temperature reduction cc8kept between 1 and 10
Convex Surfaces Onlyoffrejects candidates whose turning changes sign
In OGR Slip2D

The factor of Eq. (3.4.13) is applied to the temperatures reached at the end of the previous cycle, so after kk cycles the reduction is exp⁡(−c∑j=1kj1/n)\exp\left(-c\sum_{j=1}^{k} j^{1/n}\right). Optimize Surfaces is on by default for this search. With focus objects the annealing filters its path as well as its answer, so a narrow focus can leave it with no surface even where one exists; the analysis notes say so.

Source: ogr_slip2d/search.py (SimulatedAnnealingSearch)

3.4.4Composite surfaces and weak layers#

Composite surfaces#

A circle that dips below the lower edge of the External Boundary is discarded, because there is no soil there to shear. With Composite Surfaces on, it is instead clipped to that edge, so that a bedrock horizon modelled as the base of the External Boundary guides a circular search:

ys(x)=max⁡(yarc(x), ybase(x))y_s(x) = \max\left(y_{arc}(x),\ y_{base}(x)\right)

where ybasey_{base} is the lower envelope of the External Boundary. The maximum follows the base wherever the arc dips below it, however many times. On the stretches along the base the normal to a slice no longer passes through the centre, so moments are taken with the general equilibrium of Fredlund & Krahn (1977), about the centre of the circle. The option appears in the panels of the Grid, Slope and Auto Refine searches and is off by default; while it is on it applies to every circle analysed.

Weak layers#

A weak layer is a line drawn with Boundaries → Add Weak Layer and given a material: a joint, a bedding plane or a geomembrane interface, along which a slip surface can run instead of cutting across it. It never divides the model into regions. Any trial surface of any search that a weak layer reaches is replaced by

ys(x)=max⁡(y0(x), max⁡w ∈ W yw(x))y_s(x) = \max\left(y_0(x),\ \max_{w\,\in\,\mathcal{W}}\ y_w(x)\right)

where

y0y_0
the trial surface as generated
W, yw\mathcal{W},\ y_w
the active weak layers and their elevation

so that the surface runs along a layer wherever the layer is above it, with the strength of the layer's material there, and returns to the trial surface, or climbs to a higher layer, where it crosses it again. Which layers are active is decided by Weak Layer Handling in Surface Options:

  • Always snap to highest layer (default): every layer that touches the surface is active, and the surface follows the highest; one evaluation per surface.
  • Automatic case generation: every combination of the layers that touch the surface, active or not, is evaluated, including none, and the lowest factor is kept; 2n2^n evaluations for nn layers. A layer is considered to touch the surface if it would clip it on its own. Above the Most layers to combine (6 by default, so 64 cases) the surface falls back to the highest layer, and the analysis notes say so.

Where a layer ends, the surface drops back to the trial surface down a vertical step. A clipped surface is discarded if any slice base is steeper than the Maximum slice base angle (80° by default, Project Settings → Advanced); a value of 90° or more, or of zero, removes this ceiling. It applies only to surfaces a weak layer has clipped. On every surface, for the methods it screens, the m-alpha check acts as a ceiling of about 78.5° on bases in a material with ϕ=0\phi = 0 (Section 3.3.5).

In OGR Slip2D

Weak layers are applied inside the single evaluation step every search uses, so a model without weak layers evaluates the surfaces as they are generated. The analysis warns about a weak layer without a material, which would change the geometry of the surfaces but carry no strength of its own, and about one lying entirely above the ground.

Source: ogr_slip2d/weak_layers.py · ogr_slip2d/surface.py

3.4.5Focus objects#

A focus object restricts a search to surfaces that interact with a region the engineer cares about: a weak layer, a structure, a point where a crack was observed. There are four kinds, created from Surfaces → Focus Search, and a surface must satisfy every enabled object. The tests depend on what the search generates (Table 3.4.9): a circle is judged as a whole circle, by its centre and radius, and a polyline by its vertices and segments.

Table 3.4.9 Focus objects and the test a trial surface must pass. tt is the capture tolerance, 0.5 m by default.
ObjectCircle (centre CC, radius RR)Polyline
Focus Window (polygon)some point of the circle lies inside it (72 points checked)a vertex lies inside it or a segment crosses its edge
Focus Line (segment)the segment crosses the circlea segment of the surface intersects it; a touch counts
Focus Point∣ ∣P−C∣−R ∣≤t\big|\,|P - C| - R\,\big| \le tthe surface passes within tt of the point
Focus Tangent (line)distance from CC to the infinite line within tt of RRreaches the infinite line within tt and does not cross it by more than tt

Focus objects filter the trial surfaces before their factor of safety is computed, which is what makes them cheap: rejecting a surface costs a few distance calculations, evaluating it a full slicing and iteration. They act in every search, at generation; the walks of the slope-search refinement, the simulated annealing and the optimisation never take a step that leaves them, and a particle of the swarm that leaves them scores as invalid. Surfaces removed by a focus are counted apart from invalid ones, so the populations of a focused and an unfocused run stay comparable. Surfaces the user defines by hand are not filtered.

In OGR Slip2D

A focus object narrows the surfaces a search keeps; it does not generate them, so a Focus Point or a Focus Tangent does not reduce a grid search to one circle per centre, as a generating rule would. The tangency test for a polyline, touching the line without crossing it, is the program's own reading, since tangency is otherwise defined for circles. For the simulated annealing and particle swarm searches, which walk from one candidate to the next, a narrow focus can cut the walk off before it reaches a qualifying surface, and the analysis notes warn of it; a Grid, Path or Block Search reaches a tightly focused region more reliably.

Source: ogr_slip2d/focus.py

3.4.6Slope limits and surface filters#

Slope limits#

The Slope Limits are two abscissae between which a slip surface may daylight. By default they are automatic, at the two ends of the ground profile; Surfaces → Slope Limits → Define Limits… sets them, and a second pair can be added on top of the first to define two separate windows, for instance one at the toe and one at the crest. They do two jobs:

  • Filter. For every search and every surface type, both ends of each sliding mass must daylight inside one of the windows; both ends may lie in the same window.
  • Generation. The searches that build their candidates from the ground use them as the stretch of ground to work on: the grid search for its radii, the auto refine search for its divisions, the path search for its initiation range and segment length, the simulated annealing for the range of its end vertices. The slope search and the particle swarm draw their circles from the slope face instead, and the block search from its objects.

A second window defined without the first is ignored, with a note.

Surface filters#

Three filters in Surface Options discard surfaces before they are solved:

  • Minimum elevation: the lowest point the surface actually reaches, computed exactly from its geometry, may not lie below this elevation.
  • Minimum depth: the greatest vertical distance from the surface to the ground, over all slices, must exceed this value, which removes shallow skins.
  • Minimum area: the area of the sliding mass,
A=∑ibi max⁡(0, hi) ≥ AminA = \sum_{i} b_i\,\max\left(0,\ h_i\right) \ \ge\ A_{min}

with bib_i and hih_i the width and height of each slice. When the filter is not set, each search uses its own value (Table 3.4.10); a value of zero is treated as not set.

Table 3.4.10 Minimum area applied when the Minimum area filter is not set.
SearchGridSlopeAuto RefineParticle SwarmBlockPathSimulated Annealing
AminA_{min} (m²)1.01.00.51.02.01.01.0

Every search except the simulated annealing, which uses 0.5 to 100, also counts as invalid a surface whose factor of safety comes out below 0.2 or above 100. A surface removed by a filter is counted as invalid, so the total number of surfaces a search generated does not change when a filter is set. Besides the filters, a trial surface is also dropped when the slicer cannot divide it into at least three slices with the number of slices set, and a surface that fails the m-alpha or the Tensile Stress Check after its factor of safety has converged is kept in the results but can never be the critical surface (Section 3.3.5 and Section 3.3.6).

Slip surfaces defined by hand, with Surfaces → Add Surface (centre and radius)… or Add Surface (three points), are evaluated with every search of a circular analysis, pass the same filters (but not the focus objects) and compete for the minimum; when one of them is the critical surface, the analysis notes say so.

3.4.7Optimisation of non-circular surfaces#

A non-circular search returns the best of the surfaces it generated, which can usually be improved by moving its vertices. Optimize Surfaces does this with the random walk of Greco (1996): perturb one vertex at random, recompute the factor of safety, keep the change if it lowers it.

  1. The surface is first given 12 vertices, by repeatedly halving its longest segment. Its two end vertices stay fixed.
  2. Each pass visits the movable vertices in random order. A trial position is drawn in a random direction at a distance between 0.2 and 1 times the current step, and accepted if the surface remains single-valued in xx, no concave angle between adjacent segments exceeds the limit, the surface is valid and admissible, and its factor of safety is lower.
  3. The step starts at 5 % of the length of the surface. After a pass that improves nothing it is multiplied by the Step Reduction Factor, down to 0.2 % of the length.
  4. The walk stops when the factor of safety of the last pass differs from the mean of the last five passes, the current one included, by less than the tolerance, or when the maximum number of evaluations is reached:
∣ Fk−15∑j=k−4kFj ∣<ε\left|\,F_k - \dfrac{1}{5}\sum_{j=k-4}^{k} F_j\,\right| < \varepsilon

Finally, with Snap Shallow Surfaces to Slope, interior vertices that lie less than a small distance below the ground are moved onto it, the zero-thickness ends this leaves are trimmed, and the surface is evaluated again; the factor of safety can rise as a result.

Table 3.4.11 Optimize Surfaces settings (Optimize Surfaces Settings, from Surface Options).
SettingDefaultMeaning
Optimize Surfaceson for Simulated Annealing, Particle Swarm and non-circular Auto Refine; off for Block and Pathoffered for non-circular surfaces only; ignored, with a note, by the Grid, Slope and circular Auto Refine searches
Surfaces to OptimizeGlobal Minimumor All, or those with a factor of safety less than a value (1.5)
Maximum iterations4000evaluations of the factor of safety
Tolerance ε\varepsilon10−9Eq. (3.4.17), counted in passes
Step Reduction Factor0.5applied after an unproductive pass
Maximum concave angleon, 5°largest concave angle between adjacent segments; unticked, 0°. The starting surface's own sharpest concave angle is always allowed
Explore All Vertices Before Moving Surfaceoffon: each vertex is probed with three random moves, the best of each is remembered and all are applied at once
Snap Shallow Surfaces to Slopeon, automatic distanceautomatic: 10−3 of the relief of the ground
Use checks for depth, elevation, concave surfaceonoff: the walk ignores Minimum elevation, Minimum depth and the concave limit
In OGR Slip2D

The optimisation runs after the search, on the surfaces selected; only the best walk is added to the results, and only if it improves on what the search found, so the report can say that the critical surface came from the optimisation. When the particle swarm reports several minima, each is optimised and kept. The walks use the project's seed, the same for every surface walked. Surfaces → Optimize Surfaces… applies the same optimisation, with the project's settings, to the critical non-circular surface of a method after an analysis.

Source: ogr_slip2d/optimize.py · ogr_core/project/settings.py (optimize_enabled_for)

3.4.8Checking that the search has found the minimum#

No search proves that it has found the global minimum. The following checks, all available in the program, make it likely (Duncan, Wright & Brandon, 2014):

  • Read the analysis notes. They say when the critical centre of a grid lies on its edge, when surfaces were dropped because they could not be sliced or left the model, when a filter or a focus may have removed the mechanism, when the reported surface leaves the ground at 85° or steeper so that its factor depends on the number of slices, and when it rests on an m-alpha below 0.5.
  • Refine the search and compare. A finer grid, more radii, more surfaces or more iterations should not lower the minimum materially. If they do, the search was too coarse.
  • Change the seed. For the random searches, a different seed, or the Random option of the Random Numbers page, should land on a similar minimum.
  • Use more than one search. Compare a circular with a non-circular search, and a grid with a slope or swarm search. The particle swarm with several minima shows whether other mechanisms with similar factors exist elsewhere on the slope.
  • Compare methods. Spencer and GLE/Morgenstern–Price satisfy both equilibria; a moment-only result on a non-circular surface should be checked against them (Section 3.4.3).
  • Test the mechanism you suspect. Define it by hand as a user surface; it is evaluated alongside the search and competes for the minimum.
  • Look at all the surfaces. In the interpretation window, Data → All Surfaces draws every valid surface analysed and Data → Minimum Surfaces the lowest one at each grid centre (Section 2.8); they show whether the minimum is isolated or lies in a broad, well-sampled region.

3.4.9References#

  • Boutrup, E. & Lovell, C.W. (1980). Searching techniques in slope stability analysis. Engineering Geology, 16(1–2), 51–61.
  • Cheng, Y.M., Li, L. & Chi, S.C. (2007). Performance studies on six heuristic global optimization methods in the location of critical slip surface. Computers and Geotechnics, 34(6), 462–484.
  • Duncan, J.M., Wright, S.G. & Brandon, T.L. (2014). Soil Strength and Slope Stability, 2nd ed. Wiley.
  • Fredlund, D.G. & Krahn, J. (1977). Comparison of slope stability methods of analysis. Canadian Geotechnical Journal, 14(3), 429–439.
  • Greco, V.R. (1996). Efficient Monte Carlo technique for locating critical slip surface. Journal of Geotechnical Engineering, ASCE, 122(7), 517–525.
  • Ingber, L. (1989). Very fast simulated re-annealing. Mathematical and Computer Modelling, 12(8), 967–973.
  • Kennedy, J. & Eberhart, R. (1995). Particle swarm optimization. Proceedings of the IEEE International Conference on Neural Networks, Perth, 4, 1942–1948.
  • Li, X. (2004). Adaptively choosing neighbourhood bests using species in a particle swarm optimizer for multimodal function optimization. In Genetic and Evolutionary Computation – GECCO 2004, Lecture Notes in Computer Science 3102, 105–116. Springer.
  • Qu, B.Y., Suganthan, P.N. & Das, S. (2013). A distance-based locally informed particle swarm model for multimodal optimization. IEEE Transactions on Evolutionary Computation, 17(3), 387–402.
  • Su, X. (2009). Global Optimization of General Failure Surfaces in Slope Analysis by Hybrid Simulated Annealing. 2B Work Report, Faculty of Engineering, University of Waterloo, Waterloo, Ontario.