Back to home

Verification, quality and transparency

You should not have to believe us. Fourteen worked examples below solve H2Structure's governing calculations a second time — a closed-form solution or a hand calculation with every step of the arithmetic printed — and tabulate the result against what the engine actually produces, with a numeric percent difference on every output parameter. Where the two disagree, the disagreement is published and explained rather than tuned away.

What this is not. It is not every calculation the engine performs, and we have stopped saying it is. It covers the wall, the floor, the weir wall, the bond beam, uplift, the drilled shaft, serviceability, one hydraulic circuit and the two supplementary checks that cover what the strip model cannot see. It does not yet cover bearing, swell, shrinkage-and-temperature steel, the durability factor, the load-combination table, pier groups, the feature model or the quantities. Those are checked by the test suite and by engineering review, not by a published second solution — and the list above is the work queue, in order.

Three of the fourteen examples now carry a second route that shares no algebra with the first — a numerical integration of the pressure diagram, a numerical integration around the half-ring, and the ACI 318-19 §22.2 stress block against the j = 0.90 lever arm. That distinction matters: a second solution written from the same closed form catches a transcription error, but only a genuinely different formulation catches a wrong formula. Extending that treatment to the remaining examples is the next piece of work, and until it is done this page says which rows are which.

1. Every formula is shown, with its code clause

An H2Structure calculation package is a numbered calculation sheet. Every line carries the expression, the value it produced and the code clause it comes from — ACI 318-19 §22.3, ACI 350-20 §7.12, ASCE 7-22 §15.7, ISPSC 2024 §306, IBC 2024 §1808 — so a reviewing engineer can follow the arithmetic line by line and disagree with a specific step rather than with a black box.

Nothing in the structural engine calls a language model. The physics is plain deterministic arithmetic in code that a licensed professional engineer can read. A model reads your drawing and your geotechnical report, drafts and remembers; it does not size a wall.

The sheet runs in these sections:

  • §1–§5 — loads on the governing wall, the wall section search, geometry, floor, bearing and uplift, bond beam and special conditions, and the result.
  • §S0–§S3 — global equilibrium and a sanity check on page one, the explicit load combination table with the governing case named, serviceability (service steel stress, crack width and the environmental durability factor), and a ±20 % / ±40 % geotechnical sensitivity table.
  • §V1–§V5 — the domain of validity: the geometry triage, the supplementary checks the two-dimensional strip idealisation lacks, everything escalated to the engineer of record with a named reason, and a per-element statement of where the idealisation stops being valid.

2. The testing regime

Described concretely, because a vague claim about “rigorous testing” is worth nothing to somebody deciding whether to put a seal on the output.

What runsCountOn
Automated tests, across 27 test files 234Every build
Published verification examples, executed against the live engine 14Every build
Output parameters compared against an independent solution 64Every build
Of those, compared against a route sharing no algebra with the engine 4Every build
Largest difference on any compared parameter 0.55 %Current release
Published disclosures — places we deliberately differ, and why 2Current release

The verification examples are not a document that sits beside the software; they are part of the test suite. Each one runs the live engine, recomputes its independent solution from first principles, and compares. A change that moves any verified number fails the build. A published verification document that could quietly go out of date would be worse than none at all.

Percent difference is reported the way the established verification manuals report it:

% difference = (H2Structure − Independent) / Independent × 100

3. The verification suite

Fourteen examples. Each states a problem — geometry, materials, loading — solves it independently, tabulates the results, and closes with a one-sentence conclusion. Every independent solution is worked from a closed-form or classical result, or from a published methodology cited by clause, and the arithmetic is shown in full so it can be followed without trusting us.

IDExampleParametersMax difference
VE-001Cantilever wall flexure — pool empty, lateral soil plus surcharge50.00 %
VE-002Wall flexural reinforcement and the j = 0.90 lever-arm approximation40.00 %
VE-003Wall one-way shear at the base30.00 %
VE-004Floor slab flexure under buoyant uplift20.00 %
VE-005Global buoyancy and uplift factor of safety40.16 %
VE-006Drilled pier axial capacity — skin friction plus end bearing30.07 %
VE-007Seismic sloshing — Housner impulsive and convective liquid weights20.00 %
VE-008Service-load reinforcement stress by cracked transformed section70.02 %
VE-009Crack width at the water face40.01 %
VE-010Hydraulics — total dynamic head of a filtration circuit90.20 %
VE-011Bond beam as a perimeter tension ring10.00 %
VE-012Weir wall flexure — vanishing edge, water to the crest30.00 %
VE-013Hoop tension in a curved wall40.05 %
VE-014Two-way action at a vertical corner — the limit of the strip idealisation50.01 %

The whole suite, with every problem statement, every step of every independent solution and every comparison table, is a PDF in the same style as the calculation package. Any customer can generate it from their own instance, at /api/verification.pdf, and the machine-readable version is at /api/verification. Ask us for a copy and we will send it.

4. One example, in full

So that the format is not an abstraction, here is VE-001 as it appears in the suite.

Problem description

A shotcrete pool wall is designed for the governing construction condition: the pool is empty and the excavation has been backfilled, so the full lateral earth pressure acts on the outside face with nothing inside to push back. The wall is idealised as a one-foot-wide vertical strip, fixed at the floor slab and free at the top. Lateral soil load is represented by an equivalent fluid pressure growing linearly with depth; the adjacent deck surcharge is carried at rest, uniform over the height.

Pool 40 ft × 20 ft, 3.5 ft to 8.0 ft deep. Shotcrete f′c = 4,000 psi, Grade 60 reinforcement, 3 in earth-side cover. Equivalent fluid pressure 55 pcf, surcharge 100 psf, Ko = 0.5. Governing wall is the deep end: H = 8.0 ft of water plus a 0.5 ft bond beam.

Independent solution

Source. Closed-form statics of a vertical cantilever under a linearly varying pressure plus a uniform pressure, worked in full below. Load factor 1.6 on lateral earth pressure H per ACI 318-19 §5.3.1(b).

#StepArithmeticResult
1Design height of the cantilever: water depth plus the bond beam above the waterlineH = 8.0 + 0.58.50 ft
2Lateral earth pressure at the base of the wallp = EFP·H = 55 × 8.5467.5 psf
3Resultant of the triangular earth pressure, per foot of wallP1 = ½·EFP·H² = 0.5 × 55 × 8.5²1,986.88 lb/ft
4Its line of action above the base (centroid of a triangle)y1 = H/3 = 8.5/32.8333 ft
5Moment from the earth pressureM1 = P1·y1 = 1,986.88 × 2.83335,629.48 lb·ft/ft
6At-rest surcharge pressure, uniform over the heightp_q = Ko·q = 0.5 × 10050.0 psf
7Resultant of the uniform surcharge pressureP2 = p_q·H = 50 × 8.5425.00 lb/ft
8Its line of action above the base (centroid of a rectangle)y2 = H/2 = 8.5/24.2500 ft
9Moment from the surchargeM2 = P2·y2 = 425.00 × 4.25001,806.25 lb·ft/ft
10Total service moment at the base of the wallM = M1 + M27,435.73 lb·ft/ft
11Total service shear at the base of the wallV = P1 + P22,411.88 lb/ft
12Required strength — the load factor on lateral earth pressure is 1.6Mu = 1.6 × 7,435.7311,897.17 lb·ft/ft
13Required shear strengthVu = 1.6 × 2,411.883,859.00 lb/ft

Results comparison

Output parameterH2StructureIndependent% difference
Design wall height H8.500 ft8.500 ft0.00 %
Service moment M at base7,435.7 lb·ft/ft7,435.7 lb·ft/ft0.00 %
Service shear V at base2,411.9 lb/ft2,411.9 lb/ft0.00 %
Required moment Mu11,897.2 lb·ft/ft11,897.2 lb·ft/ft0.00 %
Required shear Vu3,859 lb/ft3,859 lb/ft0.00 %

Conclusion

H2Structure reproduces the closed-form cantilever statics exactly; every output parameter agrees with the independent solution to within 0.00 %.

5. What we publish that is not a pass

A verification document containing only agreements is not evidence of anything. Three rows in the suite are places where H2Structure and the independent solution do not agree. They are printed with the same prominence as the ones that do, and each says whether the difference is a deliberate conservatism or a limit of the idealisation.

  • VE-002 · flexural capacity · +0.55 %. A stated approximation. The engine credits capacity with a lever arm of j = 0.90, which sits slightly above the exact ACI stress-block value at this reinforcement ratio — so it is unconservative by half a percent. It is published rather than tuned because j = 0.90 is the same lever arm used to size the steel, and changing one without the other would make the calculation internally inconsistent. The error grows with reinforcement ratio, and the engineer of record should check capacity by the stress block for any heavily reinforced section.
  • VE-005 · uplift factor of safety · −10.14 %. A stated conservatism. Two uplift factors of safety appear in a package. The one on the calculation sheet omits the bond-beam weight and is therefore the lower, conservative figure; the one on the global equilibrium page carries the complete dead-weight take-off and is the figure the FS ≥ 2.0 criterion is applied to. Both are verified against their own independent arithmetic. Neither is wrong, and the engineer should know which is which.
  • VE-014 · horizontal moment at a corner · −100.00 %. A published limit. The two-dimensional vertical cantilever strip computes no horizontal moment whatsoever, so the difference against the independent solution is minus one hundred per cent. That is the honest statement of what the idealisation omits — see the next section.

6. The domain of validity

An engineer who is told the limits trusts the tool inside them. One who discovers a limit himself never trusts it again. So every calculation package carries a Domain of validity section stating, per element, the idealisation used, the load path it assumes, and the conditions under which it is not valid.

H2Structure designs a pool wall as a two-dimensional vertical cantilever strip. That is normal practice, it is what a hand calculation does, and for a long straight wall away from a corner it is conservative. It stops being conservative the moment the real load path is two-way — and the strip model has no horizontal moment term at all, so it cannot see that case and no amount of extra vertical steel will make it.

Every design is therefore triaged for the conditions below. Each one is either given the supplementary check the strip lacks, or escalated to the reviewing engineer with a named reason — a specific condition, the specific thing the idealisation misses, and what the engineer has to do about it. It is never passed over silently.

Condition detectedWhat the strip idealisation misses
Vertical cornersHorizontal spanning and outward bending at the corner. The strip has no horizontal moment term at all, so the demand is carried by nothing but shrinkage-and-temperature steel.
Re-entrant cornersStress concentration and horizontal spanning into an inside corner formed by a spa, shelf, swim-out or beach entry.
Curved wallsHoop tension when full, which a flexural check cannot see; hoop compression when empty, where the strip is over-conservative.
Vanishing-edge and weir wallsA free top edge, tall and thin, loaded on one face — and a catch basin that removes the passive soil the ordinary wall model relies on.
Deep-to-shallow transitionAn out-of-plane discontinuity and stress concentration where the floor breaks, which independent strips cannot represent.
Raised bond beam or raised wallAn eccentric cantilever above the deck with no soil restraint, delivering a moment into the top of the shell wall.
Benches, steps, swim-outs, spillwaysLocal stiffeners that change the wall’s span rather than merely adding weight; a spillway locally weakens the wall it passes through.

Where the triage runs a supplementary check, it says how good that check is. The corner check estimates the horizontal load share by classical crossing-strip compatibility, which is a stiffness comparison and not a plate solution. Because that number is disclaimed as order-of-magnitude, it is reported as an advisory escalation rather than published as a hard pass or fail — publishing a disclaimed number as a design failure would be over-claiming in the opposite direction.

7. If we find a result-changing bug, we tell you

This is the commitment that matters most, because it answers the real question a professional engineer has about betting a licence on a young product: what happens when you get something wrong?

When a result-changing defect is found, we notify every user holding an affected sealed design directly, with a before-and-after comparison of the values that moved. Not a release note. A message naming your project, the check that changed, and the numbers before and after.

That promise is only worth something if it is mechanically possible to keep, so it is built into the software rather than into a policy document:

  • Every generated package is stamped with the engine version that produced it and a content hash of its governing results — a hash that moves when a result moves and does not move when wording, ordering or presentation changes.
  • A single request — /api/impact/<package_hash> — answers, for one specific sealed package: which changes have been released since it was produced, which of those touch this design type, and what the current engine produces from the package’s exact sealed inputs, parameter by parameter and check by check.
  • The changelog itself is structured data, not prose, which is what makes that answer possible.

We have already used it. The 0.7.0 release doubled the ACI 350 shrinkage-and-temperature steel requirement for a monolithic shell, added crack-control checks that did not previously exist, and raised the required uplift factor of safety from 1.10 to 2.00. Any design sealed before that release can now fail a check it previously passed, and the impact endpoint says so, by name, with the numbers.

8. The engineering changelog

Written for the engineer of record, not for a release feed. Every entry states what changed, whether results change, which design types are affected, and whether it was reporting-only. Two examples from the current release:

ChangeResults changeAffectsDirection
Convective sloshing weight corrected — the rectangular-tank coefficients of ACI 350.3-06 Eq. (9-3) replace the circular-tank coefficients of Eq. (9-4), which had been applied in error. Yes Any design in seismic design category C or above Convective weight, wall pressure and seismic wall demand all increase slightly. Found by verification example VE-007.
Geometry triage and the domain-of-validity statement added. No Every design — new checks appear in the check list and the package No previously reported number moves. A design that passed still passes; it now also carries named items for the engineer of record.

That first entry is worth reading twice. A verification example we wrote in order to publish a document found a real defect in our own code, and the changelog says so, names the example that found it, and names the design types whose numbers move. That is the whole point of publishing verification: not to look rigorous, but to be checkable — by us, and by you.


The full changelog is CHANGELOG.md in the product repository and is served at /api/changelog. The quality and transparency report, with every number counted from the engine at the moment you load it, is on the Quality screen in the application and at /api/quality.

No H2Structure output is a sealed engineering document until it is reviewed, modified as needed and sealed by a licensed professional engineer of record in the governing jurisdiction. Renovatio Intl, Inc. is not an engineering firm.