Validation

Where a published source states the result of a worked example, this page puts that result beside the one StrataPlot computes. Every number in the right-hand columns is asserted by automated tests that run in CI on every change to this site’s code, against the same modules the site loads, so the two columns cannot drift apart without the build going red. Where a comparison is weaker than it looks — a digitised figure rather than a published table, an input the source never stated, a value the source never printed — it is said so under the table rather than left for a reader to discover.

  • Published is the value as the source prints it, at the precision the source prints it to.
  • StrataPlot is what the tool computes, quoted to one more figure than the source where that is meaningful.
  • Test tolerance is the bound the automated test enforces. It is the real strength of each claim, and it is stated even where it is embarrassing.

Hoek-Brown Envelopes

Open the tool

The 2002 paper closes with a worked example, and both halves of it — a tunnel at 100 m and a disturbed 100 m slope in the same rock — are reproduced end to end, through the same code path the tool uses. Row 1 of the dataset the tool ships with is that example, so opening the page and changing nothing puts the paper on screen.

The worked example of §7 — tunnel and slope

Source.
Hoek, E., Carranza-Torres, C. & Corkum, B. (2002). Hoek-Brown failure criterion — 2002 edition. In: Hammah, R., Bawden, W., Curran, J. & Telesnicki, M. (eds), Proceedings of NARMS-TAC 2002, Mining Innovation and Technology, Toronto, 10 July 2002, pp. 267–273. University of Toronto.
Method.
σci = 50 MPa, mi = 10 and GSI = 45 entered as the paper states them; the equivalent Mohr-Coulomb fit taken over 0 < σ′3 < σ′3max with σ′3max from the paper’s own equation 18 for the tunnel and equation 19 for the slope.
QuantityPublishedStrataPlotTest tolerance
Tunnel, D = 0 — friction angle φ′47.16°47.155°± 0.05°
Tunnel, D = 0 — cohesion c′0.58 MPa0.5834 MPa± 0.005 MPa
Slope, D = 1 — friction angle φ′27.61°27.610°± 0.05°
Slope, D = 1 — cohesion c′0.35 MPa0.3480 MPa± 0.005 MPa
The paper prints: "the equivalent friction angle is φ′ = 47.16° while the cohesive strength is c′ = 0.58 MPa … a highly disturbed slope of 100 m height, with a disturbance factor of D = 1, has an equivalent friction angle of φ′ = 27.61° and a cohesive strength of c′ = 0.35 MPa."
ConstantPaper equationStrataPlotTest tolerance
mb (D = 0)eq 31.402560± 5×10⁻⁶
s (D = 0)eq 40.00221808± 5×10⁻⁹
aeq 50.508086± 5×10⁻⁶
mb (D = 1)eq 30.196718± 5×10⁻⁷
s (D = 1)eq 41.04464×10⁻⁴± 5×10⁻¹⁰
Global rock mass strength σ′cmeq 177.8098 MPa± 0.005 MPa
σ′3max, tunnel at γH = 2.7 MPaeq 181.3525 MPa± 0.005 MPa
Leading coefficient, tunnel relationeq 180.47± 5×10⁻¹¹
Leading coefficient, slope relationeq 190.72± 5×10⁻¹¹
The constants on the path from GSI to the Mohr-Coulomb fit, each pinned separately so that a right answer cannot come out of two compensating errors. None of these is printed in §7 — every one is recomputed from the paper’s own equations.
  • The paper does not state the unit weight it used, and equations 18 and 19 both need one. 0.027 MN/m³ — the usual default for rock — reproduces both halves of the example, which is what confirms the reading. That inference is the one soft spot in this comparison and it is named in the test rather than buried.
  • Rows 2 and 3 of the shipped dataset are invented, and so is the intact modulus on row 1: the paper gives no modulus, and none is needed for c′ or φ′. Only row 1 is the published example.
  • The figure itself prints φ′ to one decimal and c′ to three — 47.2 and 0.583 — because that is the precision the numbers deserve on a drawing. The table above is the underlying computation.
  • The rock-mass modulus (Hoek & Diederichs, 2006) is implemented and tested for its limits, its routing and one known typographical error in the 2018 preprint, but there is no published worked example behind it. No agreement is claimed for it here.

Asserted by src/plots/hoek-brown/__tests__/compute.test.ts

Ground Reaction Curve

Open the tool

Three separate published sources, checked separately: a fully worked circular-shaft example, the support-capacity table that example draws on, and a second worked example from a different publication with different ground. The closed-form solution underneath all three is Duncan Fama (1993).

The circular shaft of Figure 9.6

Source.
Hoek, E., Kaiser, P.K. & Bawden, W.F. (1995). Support of Underground Excavations in Hard Rock, chapter 9. The worked example printed as Figure 9.6. · Duncan Fama, M.E. (1993). Numerical modelling of yield zones in weak rock. In: Comprehensive Rock Engineering (ed. J.A. Hudson), 2, 49–75. Pergamon, Oxford.
Method.
A 6 m diameter shaft (ro = 3 m) in blocky sandstone, c = 2.6 MPa, φ = 30°, po = 10 MPa, with E = 1000 MPa and ν = 0.25 as printed in the figure. All eleven plotted points are checked; three are shown here.
QuantityPublishedStrataPlotTest tolerance
Rock mass strength σcm9.01 MPa9.007 MPa± 0.005 MPa
Ratio k3.003.000± 5×10⁻⁷
Critical pressure pcr2.75 MPa2.748 MPa± 0.005 MPa
Plastic radius at pi = 03.81 m3.807 m± 0.05 m
Wall displacement at pi = 047 mm46.9 mm± 0.5 mm
Plastic radius at pi = 1.374 MPa3.33 m3.332 m± 0.05 m
Wall displacement at pi = 1.374 MPa34 mm34.2 mm± 0.5 mm
Plastic radius at pi = 2.749 MPa3.00 m3.000 m± 0.05 m
Wall displacement at pi = 2.749 MPa27 mm27.2 mm± 0.5 mm
Equilibrium support pressureabout 0.3 MPa0.298 MPa± 0.05 MPa
Equilibrium displacementapproximately 43 mm43.4 mm± 0.5 mm
The figure prints the plastic radius to two decimals of a metre and the wall displacement to the nearest millimetre.
  • The eleven-point table is checked at ± 0.05 m on the plastic radius. That is ten times looser than the two decimals the figure prints, and it is the weakest tolerance anywhere on this page. The displacement bound of ± 0.5 mm is the figure’s own printed precision.
  • The equilibrium point is computed with the bolt capacity and elastic range taken as Table 9.1 prints them — psm = 0.34 MPa, usm = 21 mm — so it exercises the ground curve and the equilibrium solver, not the bolt-capacity calculation.
  • One number does not reproduce. The text puts the ratio of bolt capacity to the pressure required for equilibrium at "approximately 2"; this implementation computes 1.14 for the same intersection. The intersection itself — pressure and displacement — reproduces, and the disagreement in the derived ratio is recorded by the test rather than tuned away.

Asserted by src/plots/grc/__tests__/physics.test.ts

The support capacities of Table 9.1

Source.
Hoek, E., Kaiser, P.K. & Bawden, W.F. (1995). Support of Underground Excavations in Hard Rock, chapter 9. Table 9.1, and its note 1 on bolt length and spacing.
Method.
Every capacity entry in Table 9.1 for the two support types this tool offers is recomputed from geometry and material properties and compared with the printed value. Thirty-five entries in total.
EntriesWhat is comparedAgreement
15 — shotcrete and concrete rings, 3 configurations × 5 tunnel diametersMaximum support pressure psmwithin 0.006 MPa of the printed value
The same 15Maximum elastic displacement usm14 within the table’s own ± 0.5 mm rounding; the fifteenth, one-day shotcrete at 12 m, computes 9.4 mm against a printed 10
20 — mechanically anchored rockbolts, 4 bolt sizes × 5 tunnel diametersMaximum support pressure psmwithin 0.005 MPa plus 2 % of the printed value
  • Poisson’s ratio for the ring is taken as 0.2. The table does not print it, and it is what sets the displacement agreement above.
  • Bolt elastic displacements are not claimed. Table 9.1 prints them to the nearest millimetre, and inverting different rows implies an anchor constant anywhere between about 0.03 and 0.06 m/MN — there is nothing precise enough there to test against.
  • The 34 mm bolt is entered at a 0.34 MN pull-out load rather than the 0.35 its own row label carries. Taking the label literally puts the whole row about 3 % out; the table’s capacity entries are only consistent with 0.34.

Asserted by src/plots/grc/__tests__/physics.test.ts

The weak-rock tunnel of Practical Rock Engineering, chapter 12

Source.
Hoek, E. Tunnels in weak rock. Practical Rock Engineering, chapter 12 — equations 5 to 7 and the spreadsheet printed as Figure 4 of that chapter.
Method.
ro = 3.0 m, po = 2.0 MPa, ν = 0.30, E = 749.9 MPa, pi = 0, driven from the chapter’s own fitted strength (c′ = 0.22 MPa, φ′ = 24.72°).
QuantityPublishedStrataPlotTest tolerance
σcm0.69 MPa0.687 MPa± 0.005 MPa
Ratio k2.442.438± 0.005
Critical pressure pcr0.96 MPa0.964 MPa± 0.005 MPa
Plastic radius at pi = 06.43 m6.467 mwithin 1.5 %
Wall displacement at pi = 030.60 mm30.90 mmwithin 1.5 %
  • This comparison is deliberately not end to end. The chapter’s spreadsheet fits Mohr-Coulomb by an eight-point least-squares regression under the 1997 criterion, and this tool uses the 2002 closed form instead. Feeding it the chapter’s own c′ and φ′ isolates the part under test — the Duncan Fama solution — from the part that has legitimately moved on since. The chapter’s σci, GSI and mi are not used.
  • The 1.5 % band is not a matter of taste. The chapter prints c′ and φ′ to two decimals and the solution is sensitive to them: ± 0.005 MPa on the cohesion alone moves the plastic radius by about 0.4 %.

Asserted by src/plots/grc/__tests__/physics.test.ts

Kinematic Analysis

Open the tool

There is no published worked example behind this tool, and none is claimed. Kinematic analysis has no worked numerical example in the literature the way the Hoek-Brown criterion does — what the references supply is the definition of each criterion and the drawing convention for each construction. So what is validated here is the geometry: two independent derivations of the same envelope held against each other, and every threshold checked against arithmetic written out longhand.

The daylight envelope, derived two ways

Source.
Goodman, R.E. (1989). Introduction to Rock Mechanics, 2nd edn, Wiley, chapter 8 — daylighting, and the Goodman & Bray interlayer-slip condition. · Rocscience Dips v8 documentation, Planes → Display Daylight Envelope — the construction and the drawing convention.
Method.
The envelope is drawn as Dips documents it: walk the slope great circle and map each (trend, plunge) to (trend + 180, 90 − plunge). The zone arithmetic does not use that curve — it uses the algebraic form θ(Δ) = arctan(tan ψf · cos Δ). Both are evaluated at 720 points around a 135/60 face and compared. If either is wrong, they disagree.
PropertyExpectedWorst disagreement found
Envelope polar angle at 720 points around the facethe two constructions coincidebelow 1×10⁻⁹ degrees
Both ends of the envelopeclose on the centre of the netwithin 5×10⁻¹⁰ degrees
Far extreme of the envelopethe pole of the slope face itself, 315/30within 5×10⁻¹⁰ degrees in trend and in plunge
The identity Dips states, dip vector (t, p) → pole (t + 180, 90 − p)holds exactlywithin 5×10⁻¹⁰ degrees
  • This is an internal cross-check between two independent formulations, not a comparison against published output. What it proves is that the envelope drawn on the figure and the envelope the classification arithmetic uses are the same curve — which is the failure mode that would otherwise produce a plot where the points and the shading disagree.

Asserted by src/plots/kinematic/__tests__/compute.test.ts

Every threshold, against hand arithmetic

Source.
Wyllie, D.C. & Mah, C.W. (2004). Rock Slope Engineering: Civil and Mining, 4th edn, Spon Press, §2.5 — the conditions for planar sliding (ψf > ψp > φ, within ±20° of the face dip direction), wedge sliding (ψfi > ψi > φ) and flexural toppling ((90 − ψp) + φ < ψf). · Goodman, R.E. (1989). Introduction to Rock Mechanics, 2nd edn, Wiley, chapter 8. · Hudson, J.A. & Harrison, J.P. (1997). Engineering Rock Mechanics — the direct-toppling test. · Rocscience Dips v8 documentation, Kinematic Analysis pages — planar sliding, wedge sliding, flexural toppling, direct toppling.
Method.
A reference slope of 135/60 with φ = 35° and lateral limits of ± 20°. Each threshold is computed longhand in the test, written out in the comment beside it, and the engine is required to land on it.
QuantityHand calculationStrataPlotTest tolerance
Apparent dip of the face at Δ = 20°arctan(tan 60° · cos 20°)58.4333°± 0.0005°
Apparent dip of the face at Δ = 60°arctan(tan 60° · cos 60°)40.8934°± 0.0005°
Daylight envelope / friction cone crossingcos Δc = tan 35° / tan 60° = 0.4042766.16°± 0.05°
Flexural toppling slip limitψf − φ = 25°25.000°± 5×10⁻¹⁰°
Flexural toppling threshold on the dip axis90 + φ − ψf = 65°critical at 66°, not at 64°the correct side of the boundary
Equal-area plotting radius at 35° from centre√2 · sin(35°/2)0.42526± 5×10⁻⁵
Equal-angle plotting radius at 35° from centretan(35°/2)0.31530± 5×10⁻⁵
  • No page or figure numbers are given for the textbook references, because the implementation records none. What those sources supply is the criterion; it is the criterion that is tested.
  • Every classification boundary is tested from both sides — a joint at φ + 0.1° is critical and one at φ − 0.1° is not — including the case a "dip flatter than the face" shortcut gets wrong, where the face’s apparent dip off-axis is what governs.
  • The dataset the tool ships with is synthetic: nineteen planes chosen so that each one lands on a known side of a known construction. It is not field data and it is not from a publication.

Asserted by src/plots/kinematic/__tests__/compute.test.ts, src/plots/kinematic/__tests__/render.test.tsx

Plasticity Chart

Open the tool

The fine-grained branch of the Unified Soil Classification System is defined by two straight lines and three thresholds, so there is nothing to approximate: every boundary is tested from both sides, including the ones that only bite in the sixteenth decimal place.

Boundary cases of the Casagrande chart

Source.
ASTM D2487, Standard Practice for Classification of Soils for Engineering Purposes (Unified Soil Classification System), Figure 3 — the fine-grained branch.
Method.
Each boundary is approached from both sides and landed on exactly: the A-line, the U-line, the LL = 50 divide, and the PI 4–7 band above the A-line where D2487 assigns the dual symbol CL-ML.
Boundary caseLL, PID2487StrataPlot
Exactly on the A-line40, 14.6CLCL
A hair below the A-line40, 14.5MLML
Exactly on LL = 50, above the A-line50, 22CHCH
Exactly on LL = 50, below the A-line50, 21MHMH
A hair below the LL = 50 divide49.9, 22CLCL
Bottom of the CL-ML band20, 4CL-MLCL-ML
Top of the CL-ML band20, 7CL-MLCL-ML
A hair below the band20, 3.9MLML
A hair above the band20, 7.1CLCL
Where the A-line rises through the band32, 4.5MLML
Still inside the band, A-line at 6.5729, 6.9CL-MLCL-ML
PI above 7 but below the A-line38, 8MLML
High plasticity, below the A-line62, 24MHMH
Liquid limit and plasticity index in per cent. The last two columns are identical in every row, which is the point of the table.
LineD2487 equationPI at LL = 50Test tolerance
A-linePI = 0.73 (LL − 20)21.9± 5×10⁻¹¹
U-linePI = 0.9 (LL − 8)37.8± 5×10⁻¹¹
The two lines the chart is made of, checked against their published equations at three points each.
  • Only the fine-grained branch is implemented: CL, CH, ML, MH and the CL-ML dual symbol. The chart cannot separate organic soils from ML and MH — D2487 does that with the oven-dried liquid-limit ratio, which is not a plot input — and the coarse-grained branch needs a grading rather than an Atterberg pair. CL-ML is the only dual symbol produced.
  • The implementation cites ASTM D2487 without an edition year, so no edition is claimed here.
  • A point sitting exactly on the A-line is classified onto the clay side, and that convention is tested at the level of the floating-point representation: 0.73 × 20 evaluates to 14.599999999999998, and without an explicit tolerance that sample would come back ML instead of CL. It is the kind of defect that produces one wrong row in a hundred and is never noticed.
  • A physically impossible sample — above the U-line — is classified and flagged rather than refused, because a laboratory result that plots there is usually a transcription error worth seeing on the chart.

Asserted by src/plots/atterberg/__tests__/compute.test.ts, src/plots/atterberg/__tests__/render.test.tsx

CPT Profile

Open the tool

Two very different claims sit in this tool, and they are worth separating. The soil behaviour type chart is a digitisation of a printed figure, and everything below says so. The soil behaviour type index is a published equation with exactly one right answer, and is asserted as tightly as arithmetic allows.

The soil behaviour type chart — a digitisation, and what that is worth

Source.
Robertson, P.K., Campanella, R.G., Gillespie, D. & Greig, J. (1986). Use of Piezometer Cone Data. In: Use of In Situ Tests in Geotechnical Engineering (In Situ ’86), ASCE Geotechnical Special Publication No. 6, Blacksburg, Virginia, pp. 1263–1280. · The same chart is reproduced as the simplified soil behaviour type classification chart in Lunne, T., Robertson, P.K. & Powell, J.J.M. (1997), Cone Penetration Testing in Geotechnical Practice.
Method.
Robertson et al. published a figure, not a table of vertices. The zone boundaries here are explicit straight lines in log-log space defined by named anchor points, so that a reviewer can read what was assumed instead of reverse-engineering a list of coordinates. What is tested is what a digitisation can honestly promise.
CheckExpectedResult
Fifteen readings, each unambiguously inside one zonethe published zoneall fifteen correct
Every point of a 41 × 41 grid across the charta zone for every point — no hole in the chart1,681 of 1,681 classified
Zones reached across a 121 × 121 sweepall twelvetwelve
Friction ratio increasing at constant cone resistancethe zone number never increasesmonotonic across eight steps, six distinct zones
A reading off the edge of the chartclamped to the edge and flagged as clampedflagged
Chart domain the boundaries were digitised insideRf 0.1–10 %, qc 0.1–100 MPaas stated
Readingqc (MPa)Rf (%)Zone
Quick clay — very low friction at very low resistance0.50.41
Sensitive silty clay0.350.71
Peat0.38.32
Organic clay0.87.52
Stiff clay2.04.53
Soft marine clay0.64.63
Silty clay1.23.54
Clayey silt2.22.65
Sandy silt3.01.86
Silty sand8.01.157
Slightly silty sand12.00.758
Dense clean sand25.00.489
Gravelly sand40.00.210
Very stiff overconsolidated clay25.05.011
Cemented sand30.02.012
The fifteen anchor readings. Rf = fs / qc × 100, with qc in MPa and fs in kPa.
  • A reading that plots well inside a zone is classified reliably. A reading within roughly one printed line-width of a boundary — about ± 0.05 of a log cycle, or about 12 % in Rf — may fall either side of it here and in the original. The figure this tool draws carries that caveat in its own footer: "zone boundaries digitised from the published chart — a reading within one line-width of a boundary may fall either side of it." Do not build an argument on a single reading sitting on a zone edge; that is what the interpreted layer summary is for.
  • Every implementation of this chart, including the commercial ones, is somebody’s digitisation of a printed curve. This one is no exception. The digitisation constants — the eight separator positions at qc = 1 MPa, the constant 25 % lean per decade of qc, and the two overconsolidation lines — are written out in the source. They are disclosed, not validated: there is nothing published to validate them against.
  • It is a soil behaviour type chart, not a grading. It reports how the ground behaved against a cone, which is usually but not always what a sieve would have said. Robertson says so himself, repeatedly.
  • The zones overlap by design — the two overconsolidation bands sit over the others — and a fixed precedence order resolves which one wins. That precedence is part of the digitisation, not a property of the published figure.

Asserted by src/plots/cpt/__tests__/robertson.test.ts, src/plots/cpt/__tests__/render.test.tsx

The soil behaviour type index Ic

Source.
Robertson, P.K. & Wride, C.E. (1998). Evaluating cyclic liquefaction potential using the cone penetration test. Canadian Geotechnical Journal 35(3), 442–459, eq. (4) and Table 1. · Restated with the same constants in Robertson, P.K. (2009). Canadian Geotechnical Journal 46(11), 1337–1355.
Method.
One reading worked through the published expression by hand in the test — the arithmetic is written out line by line in the comment above it, so the assertion is a check and not a tautology — and every zone boundary of Table 1 approached from both sides.
QuantityHand calculationStrataPlotTest tolerance
Corrected resistance qt5000 + 200(1 − 0.80) = 5040 kPa5040 kPa± 5×10⁻⁷
Normalised resistance Qt4860 / 120 = 40.540.5± 5×10⁻⁷
Normalised friction ratio Fr60 / 4860 × 100 = 1.2346 %1.234568 %± 5×10⁻⁶
Soil behaviour type index Ic2.27752.2780± 0.0005
SBTn zone5 — sand mixtures5exact
qc 5 MPa, fs 60 kPa, u2 200 kPa, cone net area ratio 0.80, σv0 180 kPa, σ′v0 120 kPa.
IcZoneDescription
below 1.317Gravelly sand to dense sand
1.31 to 2.056Sands — clean sand to silty sand
2.05 to 2.605Sand mixtures
2.60 to 2.954Silt mixtures
2.95 to 3.603Clays
3.60 and above2Organic soils
Every boundary of Robertson & Wride Table 1, tested from both sides.
  • Ic needs a vertical stress, which a cone does not measure. It is computed here from a constant bulk unit weight the user types in and a water-table depth, not from anything measured, and the figure says so where the Ic track is switched on.
  • Robertson notes that Ic does not define zones 1, 8 or 9. A reading whose real behaviour is one of those three still gets an Ic here, and the zone it maps to will be wrong.
  • There is no unit-weight correlation in this tool. Unit weight is an input, clamped to 10–24 kN/m³.

Asserted by src/plots/cpt/__tests__/robertson.test.ts

Soil Texture Triangle

Open the tool

The twelve USDA texture classes are defined by inequalities on sand, silt and clay per cent, so they can be transcribed rather than digitised. What is proved is coverage: no composition anywhere in the triangle is left without a class, and the polygons drawn on the figure are the polygons the classifier uses.

Complete coverage of the texture triangle

Source.
Soil Survey Manual, USDA Agriculture Handbook 18 — the twelve soil texture classes and the rules that generate the published triangle.
Method.
The class definitions are transcribed as inequalities (for example, sand: sand ≥ 85 and silt + 1.5 × clay < 15). Coverage is then checked exhaustively rather than by sampling.
CheckExpectedResult
Every composition on a 1 % lattice — 5,151 pointsa class for every one0 unclassified
Classes reached across the triangleall twelvetwelve
The drawn polygons, sampled at every field labelthe field the classifier namesagree at all twelve labels
More than 1,000 compositions on a 2 % latticethe single drawn field containing the point is the field the classifier namesagree
Every field polygonvertices sum to 100 %within 5×10⁻⁷
SandSiltClayClass
9055sand
10000sand
82135loamy sand
80155loamy sand
652510sandy loam
404020loam
206515silt loam
5887silt
01000silt
601525sandy clay loam
333334clay loam
105733silty clay loam
52840sandy clay
84547silty clay
202060clay
00100clay
Sixteen reference compositions spanning all twelve classes, in per cent. Derived from the Handbook’s rule text, not lifted from worked examples in it.
  • This is a coverage and self-consistency proof, not a measurement against a published figure. The Handbook prints rules and a triangle; the rules are what is transcribed, and the triangle is what those rules draw.
  • A composition landing exactly on a line has to go somewhere, and the order the rules are evaluated in decides where: the finer class on the clay boundaries, the coarser class on the sand boundaries. That is the order that reproduces the published triangle. It is a stated convention, not a tested one.
  • The implementation cites Agriculture Handbook 18 without a year, edition or page, so none is claimed here.

Asserted by src/plots/ternary/__tests__/compute.test.ts

QFL Diagram

Open the tool

The seven Dickinson provenance fields, and the five boundary segments that close them. This is a digitisation and is described as one: Dickinson et al. published a figure, so the coordinates below are somebody’s reading of a printed line, and the coordinates used are stated in full so that a reviewer can disagree with them.

The five published boundary segments

Source.
Dickinson, W.R. et al. (1983). Provenance of North American Phanerozoic sandstones in relation to tectonic setting. Geological Society of America Bulletin 94, 222–235.
Method.
The five boundary segments are held as endpoint coordinates in Q-F-L per cent, taken from the digitisation distributed as ProvenanceTernary.csv with the Provenance dataset; the seven fields are the polygons those segments close. The intersection of the first two lines, at (51.551, 39.826, 8.623), is computed rather than read off.
SegmentFromToSeparates
Line 197, 0, 30, 85, 15continental block from everything else
Line 255, 45, 025, 0, 75recycled orogen from arc, and transitional continental from basement uplift
Line 382, 18, 079.617, 15.293, 5.089craton interior from transitional continental
Line 417.674, 69.443, 12.88333.377, 12.832, 53.791dissected arc from transitional arc
Line 50, 50, 5025, 0, 75transitional arc from undissected arc
Endpoints as (Q, F, L) in per cent.
QFLField
10000craton interior
9451craton interior
88102craton interior
72253transitional continental
60355transitional continental
35605basement uplift
01000basement uplift
70822recycled orogen
45550recycled orogen
384022dissected arc
154540transitional arc
82270undissected arc
00100undissected arc
Thirteen compositions across the diagram, in per cent, each asserted against the field it should fall in.
  • The coordinates are a digitisation, and not one made here: they come from a published digitisation of the 1983 figure rather than from the paper, which prints no coordinate table. They are in the source as literal numbers, which is the only form in which a reader can check them.
  • A sample landing exactly on a boundary is assigned to the nearest field rather than left unclassified, so the gap-free coverage of the triangle — 1,326 compositions on a 2 % lattice, none unclassified — is partly a property of that fallback rather than purely of the polygons.
  • Field vertices are asserted to sum to 100 % within 0.005, which is looser than the equivalent check on the USDA triangle for exactly the reason above: these coordinates came off a figure.

Asserted by src/plots/ternary/__tests__/compute.test.ts, src/plots/ternary/__tests__/render.test.tsx

Piper Diagram

Open the tool

Shared by the Piper, Stiff and Schoeller diagrams, which all read one analysis through one conversion. The equivalent weights are tabulated values and are asserted exactly; the water-type naming is the standard dominance rule; the Piper projection is cross-checked against an independent solve of its own geometry.

Equivalent weights and the charge-balance error

Source.
Hem, J.D. (1985). Study and Interpretation of the Chemical Characteristics of Natural Water. USGS Water-Supply Paper 2254, table 4. · Freeze, R.A. & Cherry, J.A. (1979). Groundwater, appendix III. · Charge balance in the half-sum form given by Hem (1985) and APHA Standard Methods 1030E.
Method.
Concentrations are converted from mg/L to meq/L by the tabulated equivalent weight of each ion — the formula weight divided by the absolute charge. Each conversion is checked against a concentration chosen to give a whole number of milliequivalents, so an error in a weight cannot hide.
IonEquivalent weight (g/eq)Test concentration (mg/L)meq/L
Ca20.0440.082
Mg12.1524.302
Na22.9922.991
K39.1039.101
Cl35.4535.451
SO₄48.0396.062
HCO₃61.02100.001.6388
CO₃30.0030.001
Every conversion is asserted to within 5×10⁻¹¹ meq/L, except bicarbonate at 100 mg/L, which is asserted to within 5×10⁻⁵ against the 1.639 meq/L quoted in the standard texts. Each conversion also round-trips back to mg/L within 5×10⁻⁹.
CaseExpectedStrataPlotTest tolerance
A perfectly balanced analysis0 %0 %exact
5 meq cations against 5 meq anions, from mg/L0 %0 %± 5×10⁻⁹
12 against 820 %20 %± 5×10⁻¹¹
8 against 12−20 %−20 %± 5×10⁻¹¹
Every sample of the shipped example datasetinside ± 1 %inside ± 1 %
CBE % = 100 × (Σ cations − Σ anions) / (Σ cations + Σ anions), in meq/L. Analyses beyond ± 10 % are flagged, not rejected — a flagged analysis still plots, because seeing where it plots is usually how the transcription error gets found.
  • The implementation cites Water-Supply Paper 2254 without an edition, so none is claimed here.
  • Below-detection notation such as "<0.5" is substituted by half the reporting limit and flagged as a warning, which is the usual convention (Helsel, 2005). That substitution is a convention, not a measurement.

Asserted by src/plots/hydrochem/__tests__/compute.test.ts

Hydrochemical facies naming

Source.
Back, W. (1966). Hydrochemical facies and ground-water flow patterns in northern part of Atlantic Coastal Plain. USGS Professional Paper 498-A.
Method.
The ion group holding more than 50 % of the cation (or anion) milliequivalents names the water; when no group reaches 50 %, the two largest are hyphenated in decreasing order. Cations are grouped Ca, Mg and Na+K; anions HCO₃+CO₃, SO₄ and Cl — the same groupings the Piper triangles use.
Cations (Ca / Mg / Na+K)Anions (HCO₃ / SO₄ / Cl)Water type
80 / 10 / 1070 / 20 / 10Ca-HCO3
5 / 5 / 905 / 10 / 85Na-Cl
72 / 18 / 1020 / 69 / 11Ca-SO4
49 / 44 / 789 / 7 / 4Ca-Mg-HCO3
44 / 21 / 3541 / 35 / 24Ca-Na-HCO3-SO4
50 / 30 / 2050 / 30 / 20Ca-Mg-HCO3-SO4
33.4 / 33.3 / 33.333.4 / 33.3 / 33.3Ca-Mg-HCO3-SO4
Compositions in meq %, cations then anions.
  • Exactly 50 % is not dominance. The row above with 50 / 30 / 20 on both sides comes back hyphenated, which is the boundary case the rule is usually stated too loosely to settle.
  • A three-way tie is broken deterministically in Ca, Mg, Na and HCO₃, SO₄, Cl order, so the same analysis always produces the same name. That is an implementation decision, not something Back specifies.
  • The implementation records this rule as the common Piper-diagram convention with an author-year note. What is tested is the dominance rule, not any particular figure from that paper.

Asserted by src/plots/hydrochem/__tests__/compute.test.ts

The Piper projection

Source.
Piper, A.M. (1944). A graphic procedure in the geochemical interpretation of water-analyses. Transactions, American Geophysical Union 25(6), 914–928 — the construction itself. · The layout as implemented: two equilateral base triangles of side 1 separated by exactly one side length, which is the only spacing for which the 60° projection rays out of the two triangles meet inside a rhombus whose lower vertex sits level with the triangle apexes.
Method.
The diamond coordinate is computed from a closed form obtained by intersecting the 60° ray rising to the right out of the cation point with the 60° ray rising to the left out of the anion point. The test does not use that closed form: it solves the two-ray intersection directly, from the raw triangle coordinates, and compares.
CheckExpectedAgreement
Closed form against a direct ray solve, over the eight-sample example datasetidenticalbetter than 5×10⁻¹¹
A pure Ca-HCO₃ waterleft vertex of the diamondwithin 5×10⁻¹¹
A pure Na-Cl waterright vertexwithin 5×10⁻¹¹
A pure Ca-SO₄ watertop vertexwithin 5×10⁻¹¹
A pure Na-HCO₃ waterbottom vertexwithin 5×10⁻¹¹
A 50/50 mixturethe centre of the diamondwithin 5×10⁻¹³
Every sample of the example datasetinside the rhombuswithin 1×10⁻⁹
The diamond’s lower vertexlevel with the two triangle apexeswithin 5×10⁻¹³
Distances in triangle side lengths.
  • This is an internal cross-check of two independent derivations of the same coordinate, evaluated over the eight samples of the example dataset. It proves the projection is self-consistent and that the four end members land on the four vertices. It is not a comparison against a published plot, and no published plot carries coordinates to compare against.

Asserted by src/plots/hydrochem/__tests__/compute.test.ts

What this page does not say

Agreement with a worked example is evidence that the equations were transcribed and wired up correctly. It is not evidence that the equations are the right ones for your ground, that the parameters you type in are defensible, or that the answer means what you want it to mean. Every tool on this site is a plotting and calculation aid, and none of it is a substitute for engineering judgement.

Tools that do not appear here have no published worked example behind them. They are tested — the suite is the same suite — but internal consistency is a different claim from reproducing a paper, and this page only makes the second one.