OpenGeoRock

How we verify OGR Slip2D

Before relying on a factor of safety, you need some evidence that the program behind it calculates correctly. We validate OGR Slip2D against published cases, closed-form solutions and analytic identities. Stored snapshots of the program's own output are not used as references, because a snapshot would preserve any bug present when it was taken.

7
Published cases
12
Method checks
5 265
Tests · v0.1.235
§ 01 — The rule

What counts as a reference

Methods, solvers and formulas are all checked against results that the program did not produce. Four kinds of reference are accepted; a recording of today's output is not one of them.

01

Published cases

Factors of safety from comparative surveys, papers and reference manuals, stored with their source and a tolerance of their own.

02

Closed-form solutions

For the groundwater engine: Darcy flow, layered media and the error-function response to a step change in head.

03

Analytic identities

Results that must hold exactly. For example, active and passive support forces coincide when the target factor is 1.0.

04

Consistency

A long transient has to reproduce the steady state, and a mesh has to keep the area of its region.

If a case fails

A failing case is not edited to make it pass. The fault is either in the code or in the expected value, and the case is there to find out which. Each case carries its own tolerance, set by the quality of its source: a value read off a figure cannot be held to the precision of a tabulated one.

§ 02 — Published benchmarks

Results of the seven published cases

The repository holds each case with its model, its expected values and their source, and the test suite runs all of them. The values below were recomputed with OGR Slip2D 0.1.235, running each case the same way the suite does.

CaseWhat it checksMethodReferenceOGR Slip2DDifferenceTolerance
ACADS 1(a)
Giam & Donald (1989)
The grid search finds the critical circle; homogeneous slope, total stress. Reference: mean of 33 programs.Bishop0.9910.9885−0.25 %2.0 %
Janbu corrected0.9910.9897−0.14 %
Yamagami & Ueta (1988)Two methods at once, so the difference between them is checked as well.Bishop1.3481.3502+0.16 %1.5 %
Ordinary1.2821.2852+0.25 %
ACADS 1(c)
Giam & Donald (1989)
Three layers: regions and material assignment. Reference: Bishop mean of 16 programs.Bishop1.4061.4083+0.16 %1.5 %
Arai & Tagyo (1985), ex. 1A 20 m slope at 1V:1.5H.Bishop1.4511.4123−2.67 %3.5 %
Arai & Tagyo (1985), ex. 3The same slope with a water table, which isolates the effect of pore pressure.Bishop1.1381.1200−1.58 %2.5 %
Reinforcement example (1999)The minimum-depth surface filter reaches the engine.Bishop0.7640.7660+0.26 %1.0 %
ACADS 2(b), Talbingo dam
Giam & Donald (1989)
The methods alone, on the circle the problem states. Bishop against its 11-program mean; the rigorous methods against the referee value.Bishop2.2042.2088+0.22 %2.0 %
Spencer2.292.2918+0.08 %
GLE / Morgenstern–Price2.292.3019+0.52 %
Janbu corrected2.0732.0739+0.05 %

Differences are computed from the unrounded factors of safety.

Why the Arai & Tagyo cases come out lower

Modern reanalyses of both Arai & Tagyo examples agree with each other and give values about 2–3 % below those published in 1985. A search in 1985 used fewer slices and fewer circles, and a finer search finds a lower minimum. The cases keep the published value, with a tolerance that covers that known gap, so they still catch a gross regression without treating the source as more precise than it is.

Method by method

Corps of Engineers #1 and #2 are checked slice by slice against the worked example in Appendix G of USACE EM 1110-2-1902, whose tables give the interslice forces and the normal forces on the slice bases. The test suite contains further checks of the methods on given surfaces.

§ 03 — Closed forms and identities

Checks with a known exact answer

The groundwater engine and several tools are checked against results whose exact value is known. The last column gives the difference from that value in each check.

WhatCheckResult
Confined seepageClosed-form Darcy solution0.000 %
Layered mediaHarmonic and arithmetic averages of conductivity0.000 %
AnisotropyPatch test with Kxy ≠ 0machine precision
Transient seepageError-function response to a step in head0.11 %
Transient at long timeMust reproduce the steady state0.0000 m
Finite-element meshArea equals the area of the region, at every refinementexact
Back analysis of support forceActive and passive forces coincide at a target factor of 1.0exact
Hoek–Brown parametersGSI = 100, D = 0 gives mb = mi, s = 1, a = 0.5exact
DXF round tripSame area, vertices on the originals< 10⁻⁶

Rapid drawdown also reproduces the classical result, although nothing in the model imposes it: the factor of safety is lowest just after the water level drops, and it recovers as the pore pressures dissipate.

§ 04 — The test suite

How the 5 265 tests are organised

  • There is one test file per feature area, and its header states which invariant it protects and why.
  • Each configurable setting has a test that checks it changes the result.
  • Tests restore any state they change, such as the language, the units or the caches. Otherwise unrelated tests could fail, and only when the whole suite is run.
  • The full suite runs before each release. A filtered run says so in its output and does not count as evidence for a release.
  • Continuous integration runs on Python 3.11, 3.12 and 3.13 and also checks the licence header of every file.
Contribute

Contributing a validation case

For us, the most useful contribution is a validation case: a slope whose factor of safety you know from a publication or a hand calculation, together with its source.