Validation / Dossier
Validation dossier
Fifteen chapters on how FEXLA's finite-element engine and its WRC 537 engine are checked: against closed-form solutions, against ASME PTB-3 worked examples, and against CalculiX, code_aster and MYSTRAN on the same models. Every number names the record it comes from. What disagrees, and what is not checked yet, is in chapter 15.
- Edition
- 1.0
- Date
- 2026-11-01
- Covers
- The FEA workbench's 2026-11-01 release and the WRC 537 engine on this site
Method statement
Checked against referencesWhat FEXLA's finite-element engine is, how this dossier was built, and how to read it.
FEXLA runs its own finite-element engine, written by us in TypeScript and run in your browser. The model is built, meshed and solved on your computer. This dossier records how each part of that engine, and the WRC 537 engine behind the local-stress calculator, has been checked: against closed-form solutions, against ASME PTB-3 worked examples, and against three independent open-source finite-element programs, CalculiX, code_aster and MYSTRAN.
| Part | What it is | Checked in chapter | Record |
|---|---|---|---|
| Shell element | MITC4: four nodes, six degrees of freedom per node, Reissner-Mindlin, mixed-interpolated transverse shear (Dvorkin and Bathe) so thin walls do not lock, a drilling stiffness so plates meet at any angle, offset sections for pads and courses | 2, 3, 4, 5 | C03 |
| Layered shell | The same MITC4 with Simpson points through the thickness, plane-stress J2 plasticity, consistent tangent; used for limit load | 7 | C04 |
| Brick element | C3D8I: eight nodes with nine incompatible modes (Taylor, Beresford and Wilson), static condensation, 2 × 2 × 2 Gauss | 10 | C05 |
| Equation solver | Sparse LDLᵀ: nested-dissection ordering, multifrontal numeric factorisation | 1 | C06 |
| Eigen solver | Lanczos with full reorthogonalisation, shift-invert, follower-pressure stiffness included | 8 | C07 |
| Mesher | Own structured chart mesher: nozzles in an O-grid built to the exact intersection, clips on grid lines, graded away from every junction | 4, 12, 13 | C08 |
Mesh sizing. Next to each junction the first element is the smaller of the wall thickness and a tenth of λ = √(R·t), inside a refined zone of 2.5λ, growing to the smaller of λ and a tenth of R in the far field.
The equation solver was checked by exporting six assembled systems, of 25,717 to 138,331 equations, and solving them again in two independent sparse direct solvers. The answers agree at the round-off floor for the condition numbers involved.
| Model | Equations | Condition no. (est.) | vs SuperLU | vs PARDISO | FEXLA residual | Record |
|---|---|---|---|---|---|---|
| Nozzle on a head | 25,717 | 1.1e10 | 1.8e-11 | 1.8e-11 | 7.0e-13 | R01 |
| Nozzle on a cone | 39,937 | 5.7e10 | 9.4e-12 | 8.0e-12 | 7.7e-13 | R01 |
| I-beam clip | 44,382 | 2.1e8 | 1.5e-12 | 8.5e-13 | 1.1e-12 | R01 |
| Nozzle on a cylinder | 45,667 | 9.5e10 | 2.9e-11 | 2.5e-11 | 7.1e-13 | R01 |
| Nozzle on a cylinder, fine | 118,849 | 4.1e11 | 1.1e-10 | 1.1e-10 | 9.1e-13 | R01 |
| 12 m cylinder | 138,331 | 3.1e12 | 1.0e-10 | 1.4e-10 | 4.9e-13 | R01 |
That check ran on the earlier up-looking factorisation. The multifrontal factorisation now in use is checked against dense elimination in the test suite (record T15); the six-system comparison has not been repeated on it (chapter 15).
How to read the comparisons. In most chapters every program solves exactly FEXLA's model: the same mesh, the same supports and FEXLA's own assembled nodal loads, so a difference comes from the element and the solver, not from the modelling. Where the programs used independent meshes, the chapter says so. "Median element difference" is the median, over the elements carrying at least a quarter of the peak stress, of the difference in surface von Mises stress at the element centre.
Each table row names its record. The record list at the end gives the file each record is kept in, in the FEA repository, in this site's repository, or as a study record. Programs used: CalculiX 2.22, code_aster 17.4.0, MYSTRAN 19.0.0, Gmsh 4.15.2, SciPy 1.18.1 (SuperLU).
What these comparisons are, and are not. They are scripted runs made by the development team and recorded in the reports cited. The verification register also asks for a hand check and a cross-check signed by a named engineer for each feature; those sign-offs are still open (record P02, chapter 15).
Membrane and hand solutions
Checked against referencesThe element and the whole model against closed-form answers.
Before any comparison with another program, the element and the assembled model must reproduce answers known in closed form: the patch tests, the membrane state of a cylinder, the shell benchmarks of Belytschko and of MacNeal and Harder, thermal stress and an offset section.
| Check | Reference | Result | Test bound | Record |
|---|---|---|---|---|
| Membrane patch test | Constant strain | Displacements exact to 1e-12; σx, σy, τxy to 1e-3 MPa | exact | T01 |
| Bending patch test | Constant curvature | Rotations exact to 1e-12; Mx, My, Mxy to 1e-11 | exact | T01 |
| Closed cylinder under pressure (Ri 1000, t 20) | Thin-shell membrane | Exact for the meshed polygon (1e-9); hoop, axial stress and radial growth within 0.2 % of the smooth cylinder; no bending | 0.2 % | T03 |
| Equilibrium of the same model | Applied load = −reactions | Force and moment to 1e-9 of the load; residual below 1e-9 | 1e-9 | T03 |
| Scordelis-Lo roof | 0.3024 | 0.974 of the reference at 16 × 16, 0.991 at 32 × 32 | 3 % at 16 × 16 | T02 |
| Pinched cylinder | 1.8248e-5 | 0.929 at 32 × 64, 0.989 at 64 × 128, converging from below | 8 % at 32 × 64 | T02 |
| Pinched hemisphere | 0.094 | 0.978 at 16 × 64 (0.4 % of 0.0924) | 2.5 % | T02 |
| Long cylinder, outer face hotter | σ = ∓E·α·ΔT / (2(1 − ν)) (Timoshenko) | Both faces, far from the ends | 1 % | T04 |
| Eccentric strip under axial force | Bending P·e (beam theory) | Exact | exact | T05 |
| Small nozzle on a cylinder, far field | Hoop σ = p·Rm/t | Both sides read | 5 % | T14 |
| Radial growth of a nozzle model far from the nozzle | p·R²(1 − ν/2)/(E·t) = 0.1360 mm | 0.1364 mm | — | R01 |
The rectangular box module (VIII-1 Appendix 13) has closed forms of its own. The shell model reproduces them at the same dimensions:
| Line | Sm, App. 13 / FE (psi) | Δ Sm | Sb inner, App. 13 / FE (psi) | Δ Sb | Record |
|---|---|---|---|---|---|
| A.N | 2371.4 / 2371.4 | 0.00 % | −3130.6 / −3155.8 | +0.80 % | R12 |
| A.Q | 2371.4 / 2371.4 | 0.00 % | 23538.8 / 23513.6 | −0.11 % | R12 |
| B.Q | 1885.7 / 1885.7 | 0.00 % | 23538.8 / 23513.6 | −0.11 % | R12 |
| B.M | 1885.7 / 1885.7 | 0.00 % | −18638.8 / −18664.0 | +0.14 % | R12 |
| FV1 in CalculiX S4: displacement at M | 0.32428 / 0.32133 mm | −0.91 % | element median / p90 | 0.42 / 4.84 % | R12 |
The brick element has its own closed-form checks (patch test to 1e-8, a cantilever against Timoshenko, a thick ring against Lamé); they are in chapter 10.
Discontinuity stresses
Checked against referencesBending where the wall changes: a clamped end, a thickness step, a head knuckle.
Local bending at a junction is what a shell model is for. Three cases have answers that do not need another program: a cylinder clamped at its end, a cylinder with a step in thickness, and the knuckle of a formed head checked against an axisymmetric solid.
| Case | Reference | Result | Bound | Record |
|---|---|---|---|---|
| Clamped cylinder end (Ri 1000, t 20, p 1.5 MPa) | Mindlin shell theory | Clamp moment within 0.3 %, shear within 2.5 %; every error falls by more than 2.5× when the element size halves | 0.3 % / 2.5 % | T03 |
| The same | Classical (Kirchhoff) clamp moment | Within 2.5 %; far-field hoop within 0.1 % | 2.5 % | T03 |
| Stepped cylinder under pressure (two courses, centred) | Hand discontinuity solution | Radial growth within 1 % of the free-growth jump; axial moment within 3 % of its peak (measured 6.0 / 2.1 / 1.2 % at size factors 1 / 0.5 / 0.3) | 1 % / 3 % | T06 |
| 2:1 head knuckle, PTB-3 vessel (SCL5) | Axisymmetric solid, 16,463 CAX8 (CalculiX) | PL 17.3 against 18.58 ksi: −7 %; knuckle ID stress range −5 % | — | R08 |
| Head-to-shell tangent line, PTB-3 vessel (SCL6) | The same solid | PL 8.8 against 9.21 ksi: −4 % | — | R08 |
The knuckle reads 5 to 7 % below the solid. The report traces it to the shell idealisation of the head's mid-surface; it is listed as a stated tolerance, to be rechecked on a torispherical head (chapter 15).
Nozzle junction against CalculiX and code_aster
Checked, with open itemsThe same shell models solved by two independent programs, with two shell element families.
The first comparison wrote FEXLA's mesh and nodal loads to CalculiX in two forms: S4 (expanded to C3D8I bricks) and S8R (expanded to C3D20R, mid-side nodes on the flat facets). Displacements agree within about 1 %; FEXLA's peak surface stress lies between the two CalculiX elements in every case.
| Model | Elements | Δu_max S4 / S8R | Peak σ_VM FEXLA (MPa) | S4 | S8R | Element median / p90 (S4) | Record |
|---|---|---|---|---|---|---|---|
| Nozzle on a cylinder | 7,572 | −0.97 / −1.14 % | 576.1 | 597.2 (+3.7 %) | 554.4 (−3.8 %) | 1.3 / 4.9 % | R01 |
| Nozzle on a cylinder, fine | 19,744 | −1.03 / −1.20 % | 596.9 | 618.1 (+3.6 %) | 573.0 (−4.0 %) | 1.3 / 4.8 % | R01 |
| Nozzle on a head | 4,285 | −0.27 / −0.02 % | 626.4 | 644.0 (+2.8 %) | 585.3 (−6.6 %) | 0.8 / 5.5 % | R01 |
| Nozzle on a cone | 6,604 | −1.01 / −1.18 % | 640.1 | 662.7 (+3.5 %) | 613.9 (−4.1 %) | 1.5 / 5.1 % | R01 |
| I-beam clip | 7,336 | −0.70 / +0.22 % | 579.7 | 600.9 (+3.7 %) | 501.0 (−13.6 %) | 0.5 / 3.3 % | R01 |
| Nozzle, pressure applied by CalculiX itself | 7,572 | −0.87 / −1.53 % | 576.1 | 595.4 (+3.4 %) | 551.6 (−4.3 %) | 1.2 / 4.9 % | R01 |
The I-beam clip's S8R peak is at the plate corner on the shell, where the linear-elastic stress is singular and every element type reports a different finite number. It needs a weld-toe or structural-stress reading, not refinement.
The solver check of 2026-10-18 repeated this for every shell capability, with code_aster's Q4G shell (the same MITC4 family, independently written) as well as CalculiX S4. code_aster applies the face pressure itself, so FEXLA's consistent pressure loads are checked too.
| Model | Elements | u_max FEXLA (mm) | CalculiX S4 | code_aster Q4G | Median: CalculiX / code_aster | Record |
|---|---|---|---|---|---|---|
| Nozzle on a cylinder, combined end loads | 7,572 | 1.0719 | 1.0636 | 1.0977 | 0.85 / 2.86 % | R02, R03 |
| Nozzle with pad at a head's pole | 5,896 | 0.7021 | 0.6988 | 0.7026 | 0.34 / 0.25 % | R02, R03 |
| Gusseted agitator nozzle | 7,920 | 0.1929 | 0.1917 | 0.1939 | 0.66 / 0.60 % | R02, R03 |
| Tailing lug between skirt rings | 5,361 | 1.6511 | 1.6593 | 1.6517 | 0.77 / 0.09 % | R02, R03 |
| I-beam clip on a cylinder | 7,336 | 0.3287 | 0.3274 | 0.3331 | 0.58 / 1.49 % | R02, R03 |
Several attachments on one shell. With two nozzles on one cylinder the three formulations (FEXLA, CalculiX S4, S8R) agree on every interaction ratio to within 0.7 % (0.3 % on the finer mesh). On a head and on a flat closure the comparison used independent meshes: CalculiX on Gmsh meshes of second-order triangles, sharing nothing with FEXLA but the geometry, material and loads.
| Case | Measure | FEXLA | CalculiX | Record |
|---|---|---|---|---|
| Two nozzles 335 mm apart along a cylinder | Mid-ligament membrane, ratio to one nozzle | ×1.248 | S4 ×1.250, S8R ×1.247 | R09 |
| The same | Junction, ligament side | ×0.964 | S4 ×0.969, S8R ×0.967 | R09 |
| Two nozzles 38° apart round a cylinder | Mid-ligament membrane | ×1.060 | S4 ×1.062, S8R ×1.068 | R09 |
| Two nozzles on a 2:1 head, independent meshes | Largest displacement | 2.547 mm | 2.524 mm (+0.9 %) | R10 |
| The same | Membrane within one decay length, parent side: median / largest | — | 0.2 / 1.3 % (N1), 0.8 / 1.6 % (N2) | R10 |
| The same | Membrane + bending, nozzle side: median / largest | — | 3.4 / 10.3 % (N1), 5.7 / 8.5 % (N2) | R10 |
| Two nozzles on a clamped flat closure | Largest displacement | 4.651 mm | 4.596 mm (+1.2 %) | R10 |
| Model | Result | Record |
|---|---|---|
| Gusseted nozzle | Flange tilt within 0.5 % (S4 and S8R); element median 0.7 to 0.8 % for S4; field probes away from the gusset corners within 1 to 2 % | R13 |
| Tailing lug between skirt rings | S4 element median 0.6 to 0.8 % (p90 2 to 2.6 %); peak displacement within 1 % | R14 |
| Vessel on legs | S4 element median 0.6 % (p90 1.6 %); displacement within 1 %; local probes 1 to 7 % | R15 |
A published sample from commercial nozzle design software (a hillside nozzle with a pad, moment and force range) was re-run in FEXLA and in CalculiX. The shell side at the junction agrees with the published value within 0.2 % at the default mesh, though it rises 13 % with refinement, so that agreement is partly coincidence. On the nozzle side FEXLA is mesh-converged at 54.5 ksi and CalculiX S4 agrees within 1.7 %, but the published value is 105 ksi, about twice. The sample does not show the modelling choices behind that number; the difference is open (chapter 15).
MYSTRAN
Checked, with open itemsA third program, with its own shell and brick elements and rigid elements for the shell-to-brick ties.
MYSTRAN 19.0.0 solves the same models in bulk-data form: CQUAD4 shells, CHEXA bricks and RBE2 rigid elements. Its quad has no drilling stiffness, so it is the most different of the three shell elements from FEXLA's.
| Model | Elements | u_max FEXLA / MYSTRAN (mm) | Median / p90 element difference | Record |
|---|---|---|---|---|
| Nozzle on a cylinder, combined end loads | 7,572 | 1.0719 / 1.1116 | 3.72 / 20.97 % | R02 |
| Nozzle with pad at a head's pole | 5,896 | 0.7021 / 0.7046 | 0.30 / 0.67 % | R02 |
| Gusseted agitator nozzle | 7,920 | 0.1929 / 0.1947 | 0.70 / 2.60 % | R02 |
| Tailing lug between skirt rings | 5,361 | 1.6511 / 1.6676 | 0.77 / 1.74 % | R02 |
| I-beam clip on a cylinder | 7,336 | 0.3287 / 0.3364 | 1.93 / 5.25 % | R02 |
| Brick cantilever (CHEXA) | 160 | 1.5942 / 1.5482 | 1.93 / 2.04 % | R02 |
| Thick ring under pressure (CHEXA) | 144 | 0.0095 / 0.0095 | 0.06 / 0.09 % | R02 |
| Shells tied to bricks (RBE2) | 400 | 2.4781 / 2.4768 | 0.16 / 0.98 % | R02 |
| Brick submodel, driven cuts, 1 MPa | 5,632 | 1.1975 / 1.1976 | 0.71 / 3.49 % | R02 |
On four of the five shell models MYSTRAN agrees within 0.3 to 1.9 % (median). On the nozzle on a cylinder with combined end loads its displacement is 3.7 % larger and its element differences wider; code_aster is 2.4 % more flexible there too, while CalculiX is within 0.85 %. Two independent elements agree with each other on that one case and not with FEXLA and CalculiX. The likely place is where the nozzle wall meets the shell at right angles, where each element stiffens the in-plane rotation its own way. It is open item Q11 (chapter 15).
MYSTRAN's brick has no incompatible modes, so it is 1.9 % stiffer in the cantilever; on the thick ring it agrees within 0.06 %.
ASME PTB-3 worked examples
Checked, with open itemsThe VIII-2 example problem manual's Part 4 and Part 5 examples, run in FEXLA.
ASME PTB-3-2013 works its Part 5 examples on one vessel: an 84 in inside diameter shell with a 2:1 ellipsoidal top head and a forged 20 in top nozzle, 420 psig. PTB-3 models it with axisymmetric solid elements and reads stress classification lines. FEXLA models it as a shell. To separate the two, an independent axisymmetric solid of the same geometry (16,463 CAX8 elements in CalculiX, with the real 0.75 in and 1.5 in radii) was built and reproduces PTB-3 first.
PTB-3-2013 follows the 2013 edition of VIII-2. FEXLA follows the 2025 edition; where the rules differ (SPL, SPS, the fatigue equations), the comparison is of the stresses, and the report states the edition of each value.
| Location | PTB-3 | Independent solid | FEXLA | FEXLA vs PTB-3 | Record |
|---|---|---|---|---|---|
| Head at the junction, PL (SCL4) | 22.23 | 22.59 | 22.81 | +2.6 % | R08, T09 |
| Nozzle at the junction, PL (SCL3) | 16.08 | 16.38 | 15.35 | −4.5 % | R08, T09 |
| Head P+Q range, 0 to 380 psig (E5.5.3, SCL2) | 29.88 | — | 31.01 | +3.8 % | R08, T09 |
| Remote shell, Pm (same thickness as the solid) | — | 17.13 | 17.13 | 0 % vs solid | R08 |
The head and nozzle PL and the P+Q range are pinned in the test suite (head within 6 %, nozzle within 8 %; record T09). The P+Q range is read as the larger of the weld-toe value and the weld-line structural stress; chapter 9 explains why.
| Example | PTB-3 | FEXLA | Bound | Record |
|---|---|---|---|---|
| E5.2.2 limit load, 2:1 head with nozzle (revolved shell) | 812.8 psi | 811.6 psi (−0.14 %) | ±1.5 % | T12 |
| E4.4.1 external pressure, Do 92.25 in, t 1.0 in, L 636 in, 300 °F | Pa 48.9 psi | 48.9 psi | ±0.3 psi | T08 |
| E5.5.5 location B, Method C: damage (2013 rules / 2025 rules) | 0.2221 | 0.198 (−11 %) | — | R08 |
| E5.5.3 nozzle blend, Method A: Salt at 420 psig | 17.57 ksi | 17.13 ksi | — | R08 |
Before the toe reading was adopted, FEXLA read the junction checks at the mid-surface intersection, inside the 2 in forging wall, and with Tresca: PL came out 32 % high on the head and 67 % high on the nozzle. The PTB-3 runs found that, and the weld-toe reading fixed it. They are the reason the example stays in the test suite.
Limit load
Checked, with open itemsElastic-perfectly plastic collapse (VIII-2 5.2.3) against plastic theory, CalculiX and PTB-3.
The limit-load route uses the layered MITC4 shell with J2 plasticity, small displacements, load control and Newton's method. The limit is the last converged load factor; the load step is cut down to 1e-4 of the reference load, so the limit is bracketed to that, or, where the step guard stops the run first, is a lower bound.
| Model | Elements | Theory | FEXLA | Error | Record |
|---|---|---|---|---|---|
| B1 closed cylinder Ri 500, t 10 | 990 | 5.7160 MPa | 5.7194 | +0.059 % | R07, T11 |
| B2 the same, open | 990 | 4.9505 MPa | 4.9534 | +0.058 % | R07 |
| B3 whole sphere Ri 500, t 10 | 864 | 9.9010 MPa | 9.9058 | +0.048 % | R07 |
| B4 circular plate, simply supported | 4,864 | 0.16292 MPa | 0.162897 | −0.014 % | R07 |
| B5 the same, clamped (quarter plate, 24 + 24) | 1,728 | 0.31380 MPa | 0.32000 | +1.98 % | R07 |
| B6 strip in four-point bending | 640 | 4166.7 N | 4230.9 | +1.54 % | R07 |
| B7 thick cylinder Ro/Ri 1.25 (ring 128 × 2) | 256 | 63.685 MPa | 63.698 | +0.020 % | R07 |
The clamped plate converges slowly with the size of the elements at its rim: +7.8 % on the coarsest full-plate mesh, +2.95 % at size factor 0.7. The 0.12 % above theory in B1, B2 and B7 on 64-facet rings is the faceting of the mesh: a ring of n flat elements carries its hoop force at cos(π/n).
| Case | Reference | FEXLA | Difference | Band | Record |
|---|---|---|---|---|---|
| F1 end-capped cylinder slice | 5.7162 MPa | 5.7229 MPa | +0.116 % | ±0.3 % | R07 |
| F2 strip, four-point bending, M/Mp | 1.0158 | 1.0158 | +0.005 % | ±2 % | R07 |
| F4 cylinder D 1000 × 12 with radial nozzle 219.1 × 8.18 | 4.7840 MPa | 4.6891 MPa | −1.98 % | ±3 % | R07 |
| F6 plate D 1200 × 20 with central nozzle, CalculiX shells | 0.4800 MPa | 0.4111 MPa | −14.4 % | ±3 % | R07 |
| F6 the same as an axisymmetric solid (CAX8R / CAX8) | 0.4235 / 0.4272 MPa | 0.4111 MPa | −2.9 / −3.8 % | ±3 % | R07 |
| PTB-3 E5.2.2 (see chapter 6) | 812.8 psi | 811.6 psi | −0.14 % | ±1.5 % | R07 |
F6 is outside its band against CalculiX's shells. CalculiX joins shells that meet at an angle with a rigid "knot" through the thickness, which moves the hinge of the collapse mechanism from the 8.18 mm nozzle wall into the 20 mm plate. A yield-line estimate with the hinge in the nozzle wall, the same plate and nozzle as an axisymmetric solid with a true T-joint, and a FEXLA run with the knot imitated all point the same way: FEXLA is 2.9 to 3.8 % below the solid, on the safe side. The report asks an engineer to accept the solid as F6's reference; until then it is listed open.
Buckling
Checked, with open itemsLinear eigenvalue buckling and the external-pressure rule against classical solutions and PTB-3.
| Case | Reference | Test bound | Record |
|---|---|---|---|
| Square plate, simply supported, uniaxial compression | 4π²D/b², one half-wave each way; second mode k = 6.25 | 2 % (first), 3 % (second) | T07 |
| Thin cylinder in axial compression | Classical σ = E·t / (R·√(3(1 − ν²))) | 0.95 to 1.10 of classical; no buckling in tension | T07 |
| Long cylinder under pressure that follows the wall | Ring value 3D/R³ (n = 2) | 0.5 % (measured within 0.1 %, record D01) | T07 |
| VIII-2 4.4.5.1 rule, PTB-3 E4.4.1 | Pa 48.9 psi | ±0.3 psi | T08 |
The cylinder's 10 % band is wide on purpose: the classical value has many half-waves, and a coarse mesh resolves them only approximately. The external-pressure buckling load includes the stiffness of pressure that follows the wall; before it was added, the ring case came out n²/(n² − 1) too high (record D01).
Buckling of the skirt access opening job has no independent cross-check yet, and there is no code_aster or MYSTRAN column for buckling (chapter 15).
Fatigue at welds
Checked, with open itemsVIII-2 5.5 Methods A and C, and the structural stress a shell model can give.
A shell model carries no weld and no forging blend. At PTB-3's weld B (head-side toe of the nozzle forging) the shell's surface stress at the toe was 26 % below the solid's structural stress, which would over-predict fatigue life about 2.5×. Thicker bands, symmetric or eccentric, were tried and rejected: each one that raised the toe bending also lowered PL 10 to 15 % below the solid. What works is the equilibrium linearisation on the intersection line, from the element nodal forces: the mesh-insensitive structural stress of VIII-2 5.5.4.4.
| Quantity | Reference | FEXLA | Difference | Record |
|---|---|---|---|---|
| Weld B structural stress σm + σb (ksi) | 34.92 (solid) | 33.81 (33.87 on a finer mesh) | −3 % | R08 |
| E5.5.5 location B, Method C: ΔSess / N | 27.47 / 90,141 | 26.66 / 100,900 | N +12 % | R08 |
| E5.5.5 location B: damage | 0.2221 | 0.198 | −11 % | R08 |
| E5.5.5 location A (nozzle side): damage | 0.0019 | 0.0011 | both negligible | R08 |
| E5.5.3 nozzle blend, Method A, Kf 1.0: Salt at 420 psig | 17.57 ksi | 17.13 ksi | −2.5 % | R08 |
Rule: primary checks (Pm, PL, PL + Pb, local failure) are read at the weld toe; the P + Q range is the larger of the toe and the weld-line value. The −11 % on damage follows from a 3 % lower structural stress raised to the curve's exponent (N ∝ ΔSess^−3.13).
| Check | Result | Record |
|---|---|---|
| Method C at all four E5.5.5 welds, from the example's own σm and σb | Rb, I^(1/mss), ΔSess and N within 0.5 % | T10 |
| 2025 carbon-steel smooth-bar curve against Figure 3-F.1 | Within 2.5 % of the figure's points | R08 |
| E5.5.3 allowable cycles at five amplitudes | Within 9 % (16 % at 15.6 ksi: the 2013 and 2025 editions fit the curve with different equations) | R08 |
| Table 5.8 temperature factors | The table's own example, N_ΔTE = 310 | T10 |
Ratcheting (Bree) has no external cross-check. Its coverage rule (which fatigue event covers which row) is an engineering reading still to be confirmed (chapter 15).
Bricks and stress classification lines
Checked, with open itemsThe C3D8I brick, the shell-driven brick submodel, and Annex 5-A linearisation, against CalculiX and code_aster.
| Model | Mesh | FEXLA | CalculiX | Theory | Record |
|---|---|---|---|---|---|
| Cantilever, tip w (mm) | 40 × 2 × 2 | −1.59303 | −1.59303 | −1.60312 | R04 |
| Thick ring, u_r at the bore (mm) | 12 × 12 × 1 | 0.00952 | 0.00953 | 0.00953 | R04 |
| Distorted 3 × 3 × 3 block, corner u_x (mm) | 27 | −0.00961 | −0.00966 | — | R04 |
| Patch test, inner node moved | 2 × 2 × 2 | Uniform stress to 1e-8 | — | exact | T17 |
On regular meshes FEXLA's brick is identical to CalculiX's (displacement to five digits, centroid stresses to 0.03 %). On the distorted block the two differ by 0.5 % in displacement: CalculiX's C3D8I uses a larger set of incompatible modes than Taylor's nine.
The brick submodel of a nozzle at a head's centre is driven at its cut faces by the shell solution. Its stress classification lines are linearised per VIII-2 Annex 5-A. On the default agitator nozzle (2:1 head ID 2000 × 14, nozzle 406.4 × 12.7), with and without a 700 × 14 pad, under 1 MPa and an 8 kN·m bending moment:
| Case, SCL | FEXLA Pm / Pm+Pb | CalculiX | code_aster HEXA20 | Record |
|---|---|---|---|---|
| No pad, pressure: head wall at √(R·T) | 82.5 / 84.6 | 82.5 / 84.6 | 82.6 / 84.6 | R05, R03 |
| No pad, pressure: neck just above the head | 147.1 / 177.5 | 147.1 / 177.5 | 148.5 / 176.9 | R05, R03 |
| No pad, bending: through the junction | 25.3 / 53.9 | 25.3 / 54.0 | 24.4 / 59.1 | R05, R03 |
| Pad, pressure: head at the pad edge | 80.9 / 121.7 | 80.9 / 122.3 | 80.5 / 121.8 | R05, R03 |
| Pad, bending: neck just above the head | 24.9 / 64.2 | 24.9 / 64.3 | 25.2 / 62.9 | R05, R03 |
| Comparison | Result | Record |
|---|---|---|
| CalculiX C3D8I, every SCL | Membrane, membrane + bending and total within 0.5 %; element centroid von Mises median 0.01 to 0.16 % | R05 |
| code_aster HEXA20, membrane | 1.1 to 1.3 % under pressure; 3.5 to 5.9 % under bending | R03 |
| code_aster HEXA20, membrane + bending | 3.2 to 3.6 % under pressure; 6.7 to 9.6 % under bending (largest on the line through the junction) | R03 |
| FEXLA with 8 bricks through the wall instead of 4 | Every SCL moves 1.5 % or less, except the line through the junction under bending: 53.9 to 56.2 MPa (+4.3 %), toward HEXA20's 59.1 | R03 |
| Full brick model of the vessel against CalculiX | Element fields 0.03 to 0.15 % (median) | R06 |
| Linearisation of a known through-wall field | Membrane, bending and peak within 0.1 % | T16 |
The remaining difference sits on the one line that starts and ends at the sharp corners where the neck meets the head (no fillet weld modelled). The peak stress at those corners is a singularity and is not compared. Whether the default submodel should be finer, or the table should warn on a line that ends at a sharp corner, is open item Q14.
Model length
Checked, with open itemsHow long the shell must be on each side of a nozzle: a study of 472 solves.
A shell model of a nozzle is a cut-out of the vessel, held at its cut ends. If a cut is too close, it holds the shell round where the real vessel would let it oval. The study ran 16 radial nozzles (D/t 50 to 500, d/D 0.1 to 0.8) under pressure, radial force P, longitudinal moment ML and circumferential moment MC alone, with the shell 4 to 100 √(Rm·t) long on each side.
| Load | PL | PL + Pb + Q | Direction | Record |
|---|---|---|---|---|
| Pressure | 0.9 % | 3.1 % | slightly low | S01 |
| ML | 28.9 % | 26.1 % | high (conservative) | S01 |
| MC | 43.1 % | 36.0 % | low (not conservative) | S01 |
| P | 43.5 % | 47.2 % | low (not conservative) | S01 |
Measured against a model 100√(Rm·t) long, 50√(Rm·t) each side brings every load within 5 % for D/t up to 100 (worst 4.7 %, under P). On thinner shells P and MC keep changing out to the ovalisation length Rm·√(Rm/t): at 50√(Rm·t), MC is 7.6 % off at D/t 200 and 14.3 % at D/t 500, P 24 % and 31 %. There the real heads, rings or cone junctions decide, and the tool asks for the real span. The longer model costs elements: the default model grows from 6,480 to 16,932.
A far-field check now reads the hoop membrane at 2.5√(Rm·t) beyond the junction and flags a model more than 5 % off p·Rm/t. The study found the opening itself lowers that value by 1 to 3 % for d/D 0.1 and up to 17 % for d/D 0.8 at D/t 500, so a flag next to a large opening is not always an error.
The new length, the nozzle end choice and the far-field check come with the FEA workbench's 2026-11-01 release. Until that release is live, the workbench cuts the shell at max(4√(Rm·t), d, Rm) each side.
Local refinement and mesh convergence
Checked against referencesIs the default mesh converged, and what the adaptive mesh check adds.
| Mesh | Elements | PL (MPa) | PL + Pb + Q (MPa) | Worst scaled Jacobian | Record |
|---|---|---|---|---|---|
| Size factor 1 (default) | 7,572 | 265.6 | 680.7 | 0.71 | R01 |
| Size factor 0.6 | 19,744 | 266.7 | 680.0 | 0.65 | R01 |
| Size factor 0.5 | 28,016 | 267.0 | 679.8 | 0.44 | R01 |
PL changes 0.5 % and PL + Pb + Q 0.14 % from 7.6k to 28k elements. One reading converges more slowly: the shell-side weld toe at the crotch under a circumferential moment, on a 1000 × 12 shell with a 219.1 × 8.18 nozzle. The adaptive mesh check refines where the recovery spread says the mesh is weakest, and repeats until the governing readings change less than 1 %.
| Mesh | Elements | Von Mises (MPa) | vs fine | Record |
|---|---|---|---|---|
| Default | 7,572 | 239.91 | −4.3 % | D01 |
| Adaptive (two passes) | 7,572 → 9,684 → 10,260 | 251.46 | +0.3 % | D01 |
| Whole mesh at 0.7× | 14,684 | 248.76 | −0.8 % | D01 |
| Fine reference | 51,432 | 250.76 | — | T13 |
The adaptive check adds 2,688 elements where the whole-mesh rerun adds 7,112, and lands within 1 % of the fine mesh; the test suite holds it to that (record T13). The governing pressure and moment readings stay within 1 % of a size factor 0.5 mesh.
Local refinement is built for a single nozzle on a cylinder, cone or flat plate. Elsewhere the check refines the whole mesh 0.7× and says so. The recovery spread of a four-node shell stays 6 to 25 % at junctions even on a converged mesh, so it drives where to refine but is not the stop condition. The adaptive check comes with the FEA workbench's 2026-11-01 release; before it, the check was one whole-mesh rerun at 0.7×.
Mesh and run quality checks
Checked against referencesWhat every run checks before it reports a result.
Every run checks the shape of every element, the conditioning of the factorisation and the balance of loads and reactions. A model that fails a shape limit or is nearly singular is refused, not reported.
| Check | Warn | Fail | Record |
|---|---|---|---|
| Aspect ratio | 5 | 10 | C01 |
| Skew (degrees) | 45 | 60 | C01 |
| Warp (degrees) | 5 | 10 | C01 |
| Scaled Jacobian (lower is worse) | 0.7 | 0.5 | C01 |
| Size change to a neighbour | 1.5 | 2 | C01 |
| Pivot ratio of the factorisation | — | 1e7: the model is refused as nearly singular | C02 |
| A zero pivot or an unrestrained model | — | reported, naming the equation, not solved | T15 |
| Applied loads against reactions, every combination | — | must cancel | T18 |
Why a structured mesh at the junction. The same nozzle model was meshed independently in Gmsh with the same size rule and analysed by the same solver. Where Gmsh's mesh is good, the global response agrees within 0.5 %. At the weld line its unstructured quads degenerate, exactly where the code check reads stresses:
| Mesh | Elements | PL (MPa) | PL + Pb + Q (MPa) | Worst scaled Jacobian | Record |
|---|---|---|---|---|---|
| FEXLA, size factor 0.5 | 28,016 | 267.0 | 679.8 | 0.44 | R01 |
| Gmsh quasi-structured | 25,067 | 268.4 (+0.5 %) | 719.0 (+5.8 %) | 0.00 | R01 |
| Gmsh Frontal-Delaunay ×0.5 | 16,974 | 350.7 (+31 %) | 2033 (×3) | 0.00 | R01 |
The same comparison found a defect in FEXLA's own mesher: below size factor 0.5 the four corners of the O-grid folded. The shape check caught it and refused the model, so no wrong result reached a user. A local smoothing pass fixed it the same day: the nozzle now meshes validly down to size factor 0.3 (worst scaled Jacobian 0.77), and the default answer did not change (PL + Pb + Q 680.74 against 680.73 MPa).
WRC 537 engine
Checked, with open itemsThe local-stress engine against reference calculations, closed forms, and the FEA solver.
The WRC 537 engine behind the calculator is recomputed on every build against the same geometry, loads and pressure run in commercial design software. A result that moves more than 0.3 % from the reference, or past a documented exception, fails the build. The table below is computed from that matrix when this page is built.
| Attachment | Tables | Rm/T or Υ | Pl + Pb + Q | Pl | Record |
|---|---|---|---|---|---|
| Rectangular clip on a cylinder | 9 | 5.0 – 150.5 | 0.005 % / 0.01 % | 0.003 % / 0.02 % | W01 |
| Round nozzle on a cylinder | 50 | 5.5 – 150.5 | 0.003 % / 0.09 % | 0.007 % / 1.48 % | W01 |
| Round nozzle on a cone | 14 | 11.8 – 41.8 | 0.005 % / 0.68 % | 0.010 % / 0.96 % | W01 |
| Round nozzle on a formed head | 23 | 5.5 – 11.3 | 0.041 % / 0.15 % | 0.009 % / 0.14 % | W01 |
| All | 96 | 0.005 % / 0.68 % | 0.007 % / 1.48 % | W01 |
Every deviation above 0.3 % sits in the pressure stress intensity factor I of VIII-2 4.5, not in WRC 537. The full list, case by case, is on the validation page.
| Where | Difference | Largest effect | Record |
|---|---|---|---|
| Cylinder nozzle, at the pad edge | The reference applies I = 1.0199 at the pad edge; the engine uses I = 1 there | Pl up to 1.48 % lower | W02 |
| Padded offset nozzle (case 13, N2) | I = 1.0309 in the engine against 1.0432 (1.2 % lower) | Pl up to 1.1 % lower | W02 |
| Cone nozzle, axis perpendicular to the vessel axis (N7, N9) | I 1.1 % lower | Pl up to 0.96 % lower | W02 |
| Offset nozzles with a partial-penetration weld (case 13, N1, N3) | The engine applies the VIII-2 4.5.6 offset rule (I about 2 % and 8 % higher, conservative); the reference treats them as radial. The matrix records them as the reference ran them | matched exactly as run | W02 |
| Check | Result | Record |
|---|---|---|
| Shear V/(π·r₀·T) and torsion Mt/(2π·r₀²·T) at a round attachment | To 1e-9 | W04 |
| Pressure alone: P·Ri/T and P·Ri/(2T) on the corroded wall, I on the hoop term at A/B and the axial term at C/D | Exact | W04 |
| Linearity: doubling every load doubles every stress component (nozzle and clip) | Exact | W04 |
| Symmetry: ML alone antisymmetric A↔B and zero at C/D; MC alone antisymmetric C↔D and zero at A/B | Exact | W04 |
| A published independent WRC 537 implementation (tutorial example of commercial analysis software): shear and torsion terms | Equal (70 / 27 / 772 psi) | W04 |
| The same: longitudinal-axis bending terms | Within 5 % | W04 |
| Use-case sweep: 96 inputs × 18 variants, trace and plain mode | All 3,456 runs finite (after one fix for P = 0) | W03 |
The rest of that published example differs: it prints one radial-load membrane value for all eight points, and derives its stress factors from the fillet radius. Without the bulletin's curve data in the repository the remaining gap was not resolved; it is open question Q-034.
WRC 537 against FEXLA's own FEA. Five round nozzles on cylinders (no pressure, loads at the junction, Kn = Kb = 1) were solved by both tools. The ratio is WRC 537 over FEA:
| Geometry (shell ID × T, nozzle OD × t, mm) | β | γ | S / (PL+Pb+Q): P · ML · MC | Pl / PL: P · ML · MC | Record |
|---|---|---|---|---|---|
| G1 1000 × 12, 219.1 × 8.18 | 0.189 | 42 | 1.26 · 0.96 · 0.87 | 0.91 · 0.98 · 0.58 | W03 |
| G2 1000 × 12, 114.3 × 6.02 | 0.099 | 42 | 1.50 · 0.86 · 1.10 | 0.64 · 0.83 · 0.30 | W03 |
| G3 1000 × 12, 406.4 × 9.53 | 0.351 | 42 | 1.41 · 0.99 · 0.91 | 1.09 · 0.87 · 1.02 | W03 |
| G4 2000 × 10, 219.1 × 8.18 | 0.095 | 100 | 1.02 · 0.79 · 0.80 | 1.03 · 1.11 · 0.59 | W03 |
| G5 600 × 20, 168.3 × 7.11 | 0.238 | 16 | 1.13 · 0.60 · 0.90 | 0.51 · 0.47 · 0.38 | W03 |
Under a radial load WRC 537 is above FEA in every case (1.02 to 1.50). Under moments it is up to 40 % below, the worst for the thick shell with a thin nozzle (G5, t/T 0.36), the known weak case of the bulletin method. With ML and MC together the FEA peak lies between WRC 537's four points, so the gap grows (0.69 for G1 with all six loads). The engine matches the reference software here; it is the method that differs. This is why the calculator offers the same case as a shell model, and why five nozzles are not yet a comparison over the bulletin's curve range (chapter 15).
Known gaps and open items
OpenWhat is not checked yet, what disagrees, and what an engineer still has to sign.
Every item below is either a difference that is not explained to our satisfaction, a check that has not been run, or a choice an engineer still has to confirm. They are published so a reviewer can weigh them.
| Item | What is open | Record |
|---|---|---|
| Q11: nozzle on a cylinder, MYSTRAN and code_aster | Both 2.4 to 3.7 % more flexible than FEXLA and CalculiX on this one case. Next: each end load alone, mesh refinement at the junction, a commercial FE program as a further opinion. | P01 |
| Q14: brick SCL through the junction under bending | Membrane + bending up to 9.6 % from code_aster HEXA20 on the line that ends at the sharp neck-to-head corners. Next: refine along the wall and round the axis. | P01 |
| Q13: brick submodel choices | Cut positions, nodal averaging, no fillet weld in the submodel, the SCL set. Each to be confirmed by moving the cuts and comparing with a full solid. | P01 |
| Published sample, nozzle side | FEXLA 54.5 ksi (CalculiX within 1.7 %) against the published 105 ksi. The sample does not show the modelling behind its number. | R11 |
| Limit load F6 against CalculiX shells | −14.4 % against S8R shells, −2.9 % against the axisymmetric solid. The solid is the better reference; an engineer is to accept it. | R07 |
| Head knuckle | −5 to −7 % against an axisymmetric solid; to recheck on a torispherical head. | R08 |
| Pinched cylinder benchmark | The test holds it at 8 % on its 32 × 64 mesh (it converges to 1.1 % at 64 × 128). | T02 |
| Model length on thin shells | At 50√(Rm·t), P is 24 to 31 % and MC 7.6 to 14.3 % off a 100√(Rm·t) model for D/t 200 to 500. The real span has to be entered. | S01 |
| WRC 537: Q-034, Q-035, Q-021 | The published independent implementation differs on membrane and transverse-axis terms; which Pl convention to show; golden cases from the reference spreadsheet no longer match and are to be re-baselined or retired. | W05 |
| Check | Status | Record |
|---|---|---|
| Engineer sign-off | The verification register's hand checks and FE cross-checks by a named engineer are open for every feature. The comparisons in this dossier are the development team's scripted runs. | P02 |
| Burst tests | No comparison with measured burst pressures. It needs elastic-plastic analysis with a true stress-strain curve (VIII-2 5.2.4), which FEXLA does not do yet; the 5.2.3 limit load is a lower bound and does not compare with burst. | S02 |
| WRC 537 against FEA over the curve range | Five cylinder nozzles only (chapter 14). Radial nozzles and clips over γ 10 to 300 and β 0.1 to 0.5 are planned. | S02 |
| WRC 537 against the bulletin's own worked examples | Not in the test suite. The engine is checked against reference software, closed forms and one published implementation. | W03 |
| Equation solver on the multifrontal factor | The six-system comparison ran on the earlier factorisation; the current one is checked against dense elimination only. | R01 |
| Commercial FE program on the gusset and tailing-lug decks | Decks written; not run, as no licence is on hand. | R02 |
| code_aster for buckling, plasticity and thermal | Not run: the four-program check covers linear static shells and bricks. | R03 |
| Skirt access opening buckling | Browser values only; no independent model. | P02 |
| Not done | Detail | Record |
|---|---|---|
| Large displacement, contact, arc length | Limit load is small-displacement with load control; post-limit paths are not traced. | R07 |
| Elastic-plastic analysis (5.2.4) | Refused by the limit-load job until its true stress-strain milestone. | T12 |
| Brick model: thermal, fatigue, buckling, limit load, the Part 5 verdict | These stay on the shell model; the brick page refuses them rather than report a brick number. | P01 |
| Ratcheting coverage rule | Which fatigue event covers which ratcheting row is an engineering reading to be confirmed. | P02 |
Record list and revisions
Each record is a file kept with the source code: FEA is the finite-element repository, WRC this site's repository (with the WRC 537 engine), and Study a study record kept beside them, so the file behind every number can be found.
| Record | Kept in | File | What it holds |
|---|---|---|---|
| R01 | FEA | files/FEA_Validation_Report_2026-10-03.md | Sparse solver against SuperLU and PARDISO; shell element against CalculiX S4 and S8R; structured mesher against Gmsh (2026-10-03) |
| R02 | FEA | files/FEXLA_Three_Solver_Check_2026-10-18.md | Every capability on one mesh in CalculiX 2.22 and MYSTRAN 19.0.0 (2026-10-18) |
| R03 | FEA | files/FEXLA_code_aster_Check_2026-10-18.md | code_aster 17.4 as a fourth program; SCL comparison on the brick submodel (2026-10-18) |
| R04 | FEA | files/FEXLA_Brick_Element_Validation_2026-10-17.md | C3D8I brick element against theory and CalculiX C3D8I (2026-10-17) |
| R05 | FEA | files/FEXLA_Brick_Submodel_2026-10-18.md | Brick submodel of a nozzle junction with SCLs against CalculiX (2026-10-18) |
| R06 | FEA | files/FEXLA_Brick_Module_2026-10-18.md | Full brick model against CalculiX (2026-10-18) |
| R07 | FEA | files/FEXLA_Nonlinear_Validation_2026-10-11.md | Limit load: closed-form benchmarks B1-B9, CalculiX F1-F6, PTB-3 E5.2.2 (2026-10-11/12) |
| R08 | FEA | files/FEXLA_PTB3_Part5_Iterations_2026-10-08.md | ASME PTB-3 Part 5 examples E5.2.1, E5.5.3, E5.5.5 against the shell model and an axisymmetric solid (2026-10-08) |
| R09 | FEA | files/FEXLA_TwoAttachment_CalculiX_2026-10-10.md | Two nozzles on one cylinder against CalculiX S4 and S8R (2026-10-10) |
| R10 | FEA | files/FEXLA_MultiAttachment_Heads_CalculiX_2026-10-26.md | Two nozzles on a head and on a flat closure against CalculiX on independent Gmsh meshes (2026-10-26) |
| R11 | FEA | files/FEXLA_Published_Sample_Comparison_2026-10-09.md | A published sample of commercial nozzle design software, re-run in FEXLA and CalculiX (2026-10-09) |
| R12 | FEA | files/FEXLA_Box_FEA_Validation_2026-10-12.md | Rectangular box (VIII-1 Appendix 13) cases FV1-FV10 against the closed forms and CalculiX (2026-10-12) |
| R13 | FEA | files/FEXLA_Gusset_CalculiX_2026-10-17.md | Gusseted nozzle against CalculiX S4 and S8R (2026-10-17) |
| R14 | FEA | files/FEXLA_Ring_Lug_Validation_2026-10-17.md | Tailing lug between skirt rings against CalculiX (2026-10-17) |
| R15 | FEA | files/FEXLA_Leg_Support_2026-10-18.md | Vessel on legs against CalculiX S4 (2026-10-18) |
| T01 | FEA | packages/fea-solver/test/element.test.ts | MITC4 element: symmetry, rigid-body modes, membrane and bending patch tests |
| T02 | FEA | packages/fea-solver/test/benchmarks.test.ts | Shell obstacle course: Scordelis-Lo roof, pinched cylinder, pinched hemisphere |
| T03 | FEA | packages/fea-solver/test/cylinder.test.ts | Closed cylinder: membrane, equilibrium, clamped end against Mindlin and Kirchhoff theory |
| T04 | FEA | packages/fea-solver/test/thermal.test.ts | Thermal strain: free and restrained expansion, through-wall gradient (Timoshenko) |
| T05 | FEA | packages/fea-solver/test/offset.test.ts | Offset (eccentric) section against beam theory |
| T06 | FEA | packages/fea-solver/test/courses.test.ts | Stepped cylinder against the hand discontinuity solution |
| T07 | FEA | packages/fea-solver/test/buckling.test.ts | Eigenvalue buckling: plate, cylinder in axial compression, ring under external pressure |
| T08 | FEA | packages/fea-solver/test/externalPressure.test.ts | VIII-2 4.4.5.1 external pressure rule; PTB-3 E4.4.1 |
| T09 | FEA | packages/fea-solver/test/toe.test.ts | Weld-toe reading; PTB-3 E5.2.1 and E5.5.3 at the blend toes |
| T10 | FEA | packages/fea-solver/test/fatigue.test.ts | Fatigue curves, Methods A and C; PTB-3 E5.5.3 and E5.5.5 |
| T11 | FEA | packages/fea-solver/test/nlDriver.test.ts | Limit-load benchmarks B1-B9 on coarse meshes |
| T12 | FEA | packages/fea-solver/test/nlAssess.test.ts | Limit-load checks (VIII-2 5.2.3); PTB-3 E5.2.2 |
| T13 | FEA | packages/fea-solver/test/adaptiveRefine.test.ts | Adaptive local refinement against a fine mesh |
| T14 | FEA | packages/fea-solver/test/farField.test.ts | Far-field hoop stress check against p·Rm/t |
| T15 | FEA | packages/fea-solver/test/sparse.test.ts | Sparse LDLᵀ against dense elimination; zero-pivot and unrestrained detection |
| T16 | FEA | packages/fea-solver/test/submodel.test.ts | Annex 5-A linearisation, brick submodel checks |
| T17 | FEA | packages/fea-solver/test/hex8.test.ts | C3D8I brick: patch test, cantilever, thick ring, prescribed displacements |
| T18 | FEA | packages/fea-solver/test/equilibrium.test.ts | Applied loads and reactions cancel in every combination |
| C01 | FEA | packages/fea-kernel/src/quality.ts | QUALITY_LIMITS: element shape warn and fail limits |
| C02 | FEA | packages/fea-solver/src/solve.ts | MAX_PIVOT_RATIO: refusal of a nearly singular model |
| C03 | FEA | packages/fea-solver/src/shell4.ts | MITC4 shell element (Dvorkin-Bathe), drilling stiffness, offset sections |
| C04 | FEA | packages/fea-solver/src/nonlinear/ | Layered MITC4 section, J2 plasticity, Newton load control |
| C05 | FEA | packages/fea-solver/src/hex8.ts | C3D8I brick with incompatible modes |
| C06 | FEA | packages/fea-solver/src/sparse.ts | Multifrontal sparse LDLᵀ with nested-dissection ordering |
| C07 | FEA | packages/fea-solver/src/buckling.ts | Lanczos eigenvalue buckling |
| C08 | FEA | packages/fea-kernel/src/mesher.ts | Structured chart mesher and its sizing rule |
| S01 | Study | STUDY_MODEL_LENGTH_2026-10-31.md (script packages/fea-solver/scripts/modelLengthStudy.ts) | Model-length study: 16 radial nozzles, 472 solves (2026-10-31) |
| S02 | Study | STUDY_A_B_2026-10-31.md §A1.2 | Solver study: what is missing (burst tests, WRC 537 against FEA over the curve range) |
| D01 | FEA | files/devlog/2026-10.md | Dev log entries of 2026-10-31 (adaptive refinement, model length, shell courses) and the external-pressure buckling entry |
| P01 | FEA | apps/fea-web/lib/verify/plan.ts | Verification plan, items Q11, Q13, Q14, Q16, Q17 |
| P02 | FEA | files/FEA_Verification_Register_2026-10.md | Verification register: automated tests, hand checks and FE cross-checks per feature |
| W01 | WRC | packages/wrc537-engine/test/reference-validation/reference-2026-matrix.json | 96 reference tables from commercial design software, recomputed on every build (referenceMatrix.test.ts) |
| W02 | WRC | files/Reference_Validation_Report_2026-10-02.md | Reference validation, cases 1-13, and the known differences in the pressure factor I |
| W03 | WRC | files/VALIDATION_REPORT_2026-10-11.md | Engine validation status: matrix, independent checks, use-case sweep, WRC 537 against the FEA solver |
| W04 | WRC | packages/wrc537-engine/test/independentChecks.test.ts | Closed forms, linearity and symmetry; a published independent implementation |
| W05 | WRC | files/OPEN_QUESTIONS.md | Open questions Q-021, Q-034, Q-035 |
| Edition | Date | Change |
|---|---|---|
| 1.0 | 2026-11-01 | First edition. Built from the 15 reports, the solver test suite and two studies listed in the record list. |
This is edition 1.0 of 2026-11-01. A new edition is issued when a check is added or a result changes; earlier editions stay listed here.
The WRC 537 reference cases one by one are on the validation page. How each tool computes is in the method notes. Have a reference calculation of your own? Send it and we will run it.