026-G08 Linear Buckling Contract¶
Status¶
026-G08 is PASS_WITH_LIMITATIONS by explicit Owner closeout. This
document defines the contract and summarizes the archived evidence; the active
machine-readable decision is recorded in
qualification/0_2_6/g08_owner_final_review.json. The earlier
g08_owner_closeout.json remains retained historical evidence.
Audited route¶
The public route is linear_buckling, dispatched by
src/solveur/core/router.py to LinearBucklingSolver in
src/solveur/core/analyses/buckling.py. The current implementation:
- accepts one homogeneous family from
TET4,TET10,HEX8orHEX20; - requires one homogeneous
isotropic_3dmaterial; - accepts nodal dead loads and rejects distributed loads;
- solves a proportional preload through the existing Full Newton path;
- forms the initial-stress geometric contribution through the existing Total-Lagrangian assembly;
- uses SciPy sparse eigen routes (
eigsh, with the controlledeigsshift-invert fallback for an indefinite bracket); - returns the first critical tangent-instability factor and one normalized mode.
This is a linearized first-instability calculation. It is not a post-buckling, collapse, arc-length, physical-validation or general stability claim. Beam, shell and discrete elements are not supported by this solid route.
Historical evidence¶
The 0.2.5 record contains bounded TET4 Euler evidence, a bounded assembled-mesh
trend, and a CalculiX adapter that can generate same-model solid decks. Those
records remain historical and bounded. They are not silently promoted to a
0.2.6 gate result. The existing Code_Aster structural adapter explicitly
records that it has no equivalent 3D solid eigen-buckling modelisation for this
comparison; that row is NOT_APPLICABLE, not PASS.
Requirements and policies¶
The machine-readable contract is qualification/0_2_6/g08_requirements.json.
The case-to-requirement mapping is
qualification/0_2_6/g08_case_registry.json. The Owner bounded policy review
is recorded in qualification/0_2_6/g08_owner_contract_review.json.
| Requirement | Evidence required | Policy status |
|---|---|---|
G08-001 |
input-scope and invalid-input matrix | existing implementation scope |
G08-002 |
preload equilibrium and initial-stress tangent diagnostics | existing policy reference; no new numeric band |
G08-003 |
analytical/reference critical factor | OWNER_APPROVED_BOUNDED; case-defined before execution, sign-consistent |
G08-004 |
mode residual, norm and free-DOF mapping | OWNER_APPROVED_BOUNDED; normalized residual bands with near-zero rule |
G08-005 |
compatible mesh sequence and successive factor changes | OWNER_APPROVED_BOUNDED; at least three levels and final adjacent change <=1% when eligible |
G08-006 |
first-mode normalization and deterministic replay | OWNER_APPROVED_BOUNDED; first mode only |
G08-007 |
fail-closed structured failure behavior | existing exact invariant policy |
G08-008 |
formulation-compatible external comparison | OWNER_APPROVED_BOUNDED; CalculiX when comparable, Code_Aster non-comparable is skipped |
G08-009 |
SHA, environment, command and artifact digest | existing V&V provenance contract |
The bounded policy review is approved, but case-specific analytical and external tolerances must still be declared before execution and cannot be changed after observing results. No policy may be converted into a numerical PASS by a runner without its required evidence.
Execution evidence¶
The controlled execution record is archived in
qualification/0_2_6/g08_execution_evidence.json, with the concise report in
qualification/0_2_6/g08_execution_evidence.md. On source SHA
6589443e1404a2749ac6c0a9b911f00dd9cb8753, the campaign executed 23 cases:
21 PASS, 2 controlled expected failures and 0 FAIL. All four families were
run on four mesh levels, and deterministic first-mode replay was checked for
each family within the declared floating-point tolerance.
The TET4 Euler record passed its existing case-specific analytical screen.
CalculiX completed comparable TET4, TET10 and HEX8 rows; the HEX20 deck
failed in the external tool and is retained as an explicit blocked row. This
is partial external evidence, not a universal correlation claim. The mesh
final-adjacent <=1% eligibility is reached by TET4 only in this campaign;
TET10, HEX8 and HEX20 remain bounded trend evidence.
Supplemental mesh extension¶
The supplemental extension is archived in
qualification/0_2_6/g08_mesh_extension_evidence.json and
qualification/0_2_6/g08_mesh_extension_evidence.md. It reuses the historical
levels 1/2/4/8 and executes levels 16 and 32 for TET10, HEX8 and HEX20 on
source SHA 151662ac4781718a7fbe3d1e527675ec9e513ad4, with dirty=false.
All 12 extension observations, including deterministic replays, passed. The
direct level-16-to-level-32 changes are TET10 0.081448%, HEX8 0.167113%
and HEX20 0.912621%, classified CONVERGED_BOUNDED under the unchanged
Owner policy. This supplemental evidence does not alter the historical Owner
closeout or promote any family retrospectively. HEX20 remains bounded evidence
with strong coarse-history sensitivity, no comparable high-order analytical
oracle, and a BLOCKED_EXTERNAL_TOOL CalculiX retry.
Targeted HEX20 CalculiX rescue¶
The blocked HEX20 buckling retry was reproduced as a verification-deck defect:
the C3D20 continuation line began with an empty field. The correction is limited
to src/solveur/verification/calculix_buckling_025.py; no FEM formulation,
eigensolver or solver behavior changed. The regression test is
tests/unit/test_calculix_buckling_025.py.
The controlled rescue evidence is archived in
qualification/0_2_6/g08_hex20_calculix_rescue_evidence.json and
qualification/0_2_6/g08_hex20_calculix_rescue_evidence.md. It runs the same
HEX20/C3D20 model at one, two and four cells, with deterministic replays. The
QF / CalculiX factor differences are 1.696%, 2.094% and 0.738%,
respectively, inside the pre-existing 10% bounded correlation screen.
First-mode comparisons are reported after arbitrary eigenvector sign alignment
without inventing an external MAC threshold.
This rescue resolves the malformed-deck blocker for the tested cases, but it
does not rewrite the historical closeout, promote HEX20 automatically, or
change the G08 status from PASS_WITH_LIMITATIONS. Mesh-sensitivity limits,
the failed high-order analytical screen and the lack of a Code_Aster equivalent
remain explicit.
Independent high-order analytical screen¶
The supplemental analytical evidence is archived in
qualification/0_2_6/g08_high_order_analytical_evidence.json and
qualification/0_2_6/g08_high_order_analytical_evidence.md. It declares a
fixed-free homogeneous isotropic solid column, Pcr = pi^2 E I / (4 L^2),
E=1e6, L=4, b=h=0.5, and a uniformly distributed compressive nodal
dead load before execution. The signed reference total is F_REFERENCE_TOTAL =
-1.0; the physical comparison is Pcr_QF = abs(lambda * F_REFERENCE_TOTAL).
TET10, HEX8 and HEX20 are each tested at lengthwise levels 1, 2 and 3, with a
replay of the final level. A separate diagnostic uses two axial cells and one,
two and three layers in each transverse direction.
The superseded screen used a positive total UX load (tension) and compared its
factor directly with positive Euler Pcr; that comparison is therefore marked
invalid and is not used as evidence. In the corrected compression screen,
TET10 reaches 3.269% Euler error at axial level 3 and HEX20 reaches 3.622%,
while HEX8 remains at 298.413% at that level. All reported modes are
global-bending candidates, residuals are finite, and final-level replays are
deterministic. The transverse diagnostic leaves TET10 and HEX20 between 5.162%
and 7.709% error, while HEX8 remains above 667%. This is retained as a
diagnostic result: it corrects the benchmark normalization/load-definition
error, does not alter the G08 policy or solver, and does not automatically
promote any family. The remaining HEX8 discrepancy is a real analytical-screen
limitation requiring separate investigation; it is not converted into a solver
defect by this evidence alone.
Euler pre-validation and HEX8 cross-check¶
The consolidated pre-validation is archived in
qualification/0_2_6/g08_euler_prevalidation_evidence.json and
qualification/0_2_6/g08_euler_prevalidation_evidence.md. It preserves the
historical TET4 evidence and records provisional family decisions without
changing the Owner closeout: TET4 PREQUALIFIED_BOUNDED, TET10 and HEX20
PASS_WITH_LIMITATIONS, and HEX8 MORE_EVIDENCE_REQUIRED.
For HEX8, the same-model CalculiX C3D8 cross-check passes at one and two axial
cells, with relative QF/CalculiX factor differences of 3.84e-6 and 4.07e-6.
Both codes remain much stiffer than the Euler screening value on this solid
mesh. The first mode remains a global-bending candidate, the assembled K_G
is symmetric with the expected destabilizing negative direction, and the load
sum is the same signed compression in both decks. The bounded diagnosis is
therefore LOCKING_LIKELY, also described as a low-order solid-discretization
limitation for this benchmark. This is diagnostic evidence only: it does not
modify the buckling formulation, create a universal locking threshold, or
promote HEX8.
Active Owner final review¶
The active Owner review is archived in
qualification/0_2_6/g08_owner_final_review.json, with the readable
record in 0_2_6_g08_owner_final_review.md. It confirms
PASS_WITH_LIMITATIONS without lowering the contract and makes the family
boundary explicit: TET4 is QUALIFIED_BOUNDED, TET10 and HEX20 are
PASS_WITH_LIMITATIONS, and HEX8 is MORE_EVIDENCE_REQUIRED. HEX8 remains
outside the qualified family subset because its corrected Euler screen is still
298.413% from the continuum oracle, even though the same-model C3D8 check
agrees with QF within 0.0003835% and 0.0004065%. That agreement supports a
low-order discretization/locking diagnosis; it does not promote HEX8 or prove a
QF defect.
The active requirement disposition is six OWNER_APPROVED_FULL requirements
(G08-001, G08-002, G08-004, G08-006, G08-007, G08-009) and three
OWNER_APPROVED_BOUNDED requirements (G08-003, G08-005, G08-008). The
superseded positive-load Euler screen is explicitly excluded from active
metrics. The bounded claim remains limited to first linearized factor/first
mode, homogeneous isotropic solid, nodal dead loads, sparse SciPy, and the
tested domain; it is not a general physical-validation claim.
Historical Owner closeout¶
The Owner decision is PASS_WITH_LIMITATIONS, with no solver or numerical
formulation change. TET4 is QUALIFIED_BOUNDED for the tested first
linearized tangent-instability factor and first mode. TET10 and HEX8 are
PASS_WITH_LIMITATIONS: their routes and CalculiX rows passed, but their final
mesh changes are 3.177% and 2.636%, respectively, above the quantitative 1%
eligibility band. HEX20 is MORE_EVIDENCE_REQUIRED because its final mesh
change is 13.940% and its CalculiX row is BLOCKED_EXTERNAL_TOOL.
Requirement disposition is six fully satisfied and three satisfied only within
bounded limitations (G08-003, G08-005, G08-008). The qualified bounded
scope is therefore TET4, homogeneous isotropic 3D material, nodal dead loads,
sparse SciPy, first factor and first mode. TET10/HEX8 evidence remains
explicitly limited, and HEX20 is not qualified.
The numerical evidence is tied to EXECUTION_SOURCE_SHA =
6589443e1404a2749ac6c0a9b911f00dd9cb8753 with dirty=false. The later
documentation/Owner commit is separate and does not replace that execution
SHA. This closeout does not claim post-buckling, multi-mode qualification,
Code_Aster correlation, or general physical validation.
Case plan¶
The registry deliberately separates executable definitions from results:
| State | Meaning | Count |
|---|---|---|
READY |
controlled definition exists and may be executed by the future G08 runner | 3 |
PLANNED |
evidence definition exists but execution is deferred to G08 | 9 |
NOT_APPLICABLE |
outside the current contract or no comparable formulation exists | 2 |
NOT_SUPPORTED |
current route explicitly does not support the requested combination | 2 |
The planned mesh work uses coarse/medium/fine/refined where a compatible factory can provide those levels. A future campaign must record DOF, critical factor, mode diagnostics, residuals, mesh quality, timing and provenance at each level. The four-level sequence is a plan, not a claim of convergence.
External correlation¶
CalculiX is an available supporting route for comparable solid decks and
remains subject to the external policy. Code_Aster is retained in the matrix,
but the controlled audit currently identifies no equivalent 3D solid
eigen-buckling modelisation. Any unavailable or non-comparable external case
must be recorded as SKIPPED_NOT_COMPARABLE or an equivalent explicit skip;
it cannot be counted as PASS.
Dependencies and closure boundary¶
G08 execution depends on the clean baseline and V&V foundation gates
026-G00 through 026-G03. It does not require 026-G07 to be silently
closed, and G07 evidence cannot be used as a substitute for buckling evidence.
The contract itself did not close G08; closeout required archived results,
approved policies, final-SHA provenance and the explicit Owner decision now
recorded in the closeout artifact.
Out of scope: nonlinear/post-buckling response, imperfection-sensitive collapse, arc-length/path following, finite-kinematic J2, shell/beam/discrete buckling through this route, and general physical validation.