From fc1e1531b8a30a9d8db28dfcaca4a19eafabdafe Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Sun, 9 Aug 2026 03:29:44 +0900 Subject: [PATCH] feat(linear-static-3d-euler-beam): step 5 - reference-model-contract --- ...r-static-3d-euler-beam-reference-models.md | 420 ++++++++++++++++++ 1 file changed, 420 insertions(+) create mode 100644 docs/reference-models/linear-static-3d-euler-beam-reference-models.md diff --git a/docs/reference-models/linear-static-3d-euler-beam-reference-models.md b/docs/reference-models/linear-static-3d-euler-beam-reference-models.md new file mode 100644 index 0000000..819a441 --- /dev/null +++ b/docs/reference-models/linear-static-3d-euler-beam-reference-models.md @@ -0,0 +1,420 @@ +# Linear Static 3D Euler Beam Reference Models + +## Metadata + +- feature_id: `linear-static-3d-euler-beam` +- source_requirement: `docs/requirements/linear-static-3d-euler-beam.md` +- source_research: `docs/research/linear-static-3d-euler-beam-research.md` +- source_formulation: `docs/formulations/3d-isoparametric-euler-beam-formulation.md` +- source_numerical_review: `docs/numerical-reviews/linear-static-3d-euler-beam-review.md` +- source_io_definition: `docs/io-definitions/linear-static-3d-euler-beam-io.md` +- approved_design: `docs/superpowers/specs/2026-08-08-linear-static-3d-euler-beam-design.md` +- status: `ready-for-implementation-planning` +- owner_agent: `reference-model-agent` +- date: `2026-08-09` +- approved_reference_model: `cantilever-beam-b33` +- approved_reference_schema: `abaqus-cae-report-csv-v0` +- reference_baseline: `reference/cantilever beam/` at source commit `2b34d0b` + +이 문서는 구현 전에 필요한 code verification, analytical solution verification 및 +approved B33 reference comparison의 모델·artifact 계약을 정의한다. 이 status는 모델과 +테스트를 구현 계획으로 넘길 준비가 되었다는 뜻일 뿐, FESA 결과 비교, physics sanity, +release readiness 또는 Abaqus full compatibility의 pass를 뜻하지 않는다. + +## Reference Strategy + +### Code verification + +요소 수식과 solver infrastructure를 외부 reference 값 없이 직접 검사한다. Hermite +보간, `theta_y=-dw/dx`, 4x12 `B`, 12x12 closed-form stiffness, 2-point Gauss, six rigid +modes/rank 6, positive deformation energy, local/global transform, constant local line-load +kernel, constrained partition, deterministic assembly 및 HDF5 schema가 대상이다. Numerical +Review의 `NR-T01`부터 `NR-T11`까지를 구현 전 RED test inventory로 사용한다. + +### Analytical solution verification + +서로 분리된 axial, torsion, local y bending, local z bending cantilever와 rigidly rotated +beam을 사용한다. 각 모델은 displacement/rotation, reaction, end action, section +resultant, residual 및 해당되는 axial `S11`을 upstream closed form과 비교한다. Nonzero +prescribed displacement는 partition 식을, constant local line load는 formulation-only +equivalent-vector 식을 검증한다. 이 모델들은 Abaqus CSV를 요구하지 않는 code/solution +test fixtures이며 reference artifact bundle로 가장하지 않는다. + +### B33 reference comparison + +논리 모델 `cantilever-beam-b33`의 exact read-only legacy bundle만 사용하여 FESA +`results.h5`의 displacement, reaction 및 endpoint section resultant를 Abaqus/CAE report +CSV row와 비교한다. Artifact precheck와 exact row-set matching이 먼저 통과해야 하며, +수치 비교는 component-scale mixed tolerance를 사용한다. Axial `S11` output은 필수지만 +Abaqus beam stress comparison은 명시적 N/A다. + +### Excluded validation scope + +실험 자료에 대한 physical validation, Abaqus/Nastran 실행, 새로운 reference 값 생성, +deep-beam/Timoshenko validation, warping, `I12!=0`, instance transform, nonlinear/dynamic +behavior는 이 portfolio에 포함하지 않는다. + +## Model Inventory + +| model_id | category | purpose | target quantities or tests | required artifacts | status | +| --- | --- | --- | --- | --- | --- | +| `smoke-b33-cli` | smoke | 단일 B33 deck의 parse-to-HDF5와 mandatory output 확인 | CLI, diagnostics, HDF5 paths/identity/atomicity | implementation test fixture; Abaqus CSV N/A | planned | +| `cv-b33-shape-stiffness` | code verification | Hermite, `B`, closed-form stiffness, 2-point Gauss와 signed line-load kernel 격리 | `NR-T01`, `NR-T03`, `NR-T06` | in-process test data; reference bundle N/A | planned | +| `cv-b33-patch-rigid-assembly` | patch test | constant strain/curvature, six rigid modes, rank/energy와 deterministic assembly 확인 | `NR-T02`, `NR-T04`, `NR-T11` | implementation test mesh; Abaqus CSV N/A | planned | +| `an-b33-axial-cantilever` | analytical | axial response와 centroidal axial stress 확인 | `UX`, `RF1`, `N`, `FX`, `S11`, residual | analytical test fixture; Abaqus CSV N/A | planned | +| `an-b33-torsion-cantilever` | analytical | Saint-Venant torsion response 확인 | `URX`, `RM1`, `T`, `MX`, residual | analytical test fixture; Abaqus CSV N/A | planned | +| `an-b33-local-y-bending` | analytical | local `+y` force와 `Iz=I22` bending 확인 | `UY`, `URZ`, `RF2`, `RM3`, `Mz`, `FY`, residual | analytical test fixture; Abaqus CSV N/A | planned | +| `an-b33-local-z-bending` | analytical | local `+z` force와 `Iy=I11`, `theta_y=-w'` 확인 | `UZ`, `URY`, `RF3`, `RM2`, `My`, `FZ`, `S11`, residual | analytical test fixture; Abaqus CSV N/A | planned | +| `an-b33-rotated-space` | analytical | non-axis-aligned 3D beam의 transform와 energy invariance 확인 | transformed displacement/reaction/resultant, work, energy, `NR-T05` | analytical test fixture; Abaqus CSV N/A | planned | +| `an-b33-prescribed-displacement` | analytical | nonzero `dc` effective RHS, full reconstruction와 reaction 확인 | `df`, `dc`, `K*d-F`, `NR-T09` | analytical algebra fixture; Abaqus CSV N/A | planned | +| `an-b33-line-load-kernel` | analytical | formulation-only constant local line-load equivalent vector 확인 | signed 12-component vector, mesh convergence negative/positive control | element unit fixture; `*DLOAD` reference N/A | planned | +| `neg-b33-input-contract` | negative/invalid-input | unsupported/malformed input과 model-validation diagnostic 확인 | B31, second step, transform, nested assembly, `I12`, geometry, property, keyword cases | invalid input fixtures; result CSV N/A | planned | +| `cantilever-beam-b33` | benchmark and regression | approved Abaqus B33 nodal/section rows와 end-to-end 회귀 비교 | displacement, reaction, section resultant; stress N/A | exact legacy four-file bundle | inventory-ready; comparison not run | + +`planned` analytical/code rows do not have missing reference artifacts: their acceptance source is +the reviewed formulation or an exact invariant. Only a model intended for Abaqus reference +comparison is subject to the CSV bundle requirement. + +## Model Records + +### Code and patch verification records + +| model_id | analysis and element | material/section | boundary/load | expected target and tolerance | source | +| --- | --- | --- | --- | --- | --- | +| `smoke-b33-cli` | single linear static, two-node `B33` minimum deck | finite positive isotropic `E,nu,A,Iy,Iz,J`, `I12=0` | stable cantilever constraint and one `*CLOAD` | mandatory HDF5 inventory, identity and finite rows; exact schema | requirements and I/O definition | +| `cv-b33-shape-stiffness` | free two-node Euler beam element | unequal positive `EA,GJ,EIy,EIz` to expose component swaps | no global BC/load; direct element states and local line load | matrix/Gauss/line-load normalized error `<=1e-12`; signed components exact by contract | formulation sections 8-13; `NR-T01/T03/T06` | +| `cv-b33-patch-rigid-assembly` | one/multiple identity-oriented B33 elements | positive, well-scaled properties | rigid translation/rotation and constant strain/curvature fields | rigid residual `<=1e-10`, rank 6, positive deformation energy; identical CSR structure and values normalized `<=1e-12` | numerical review `NR-T02/T04/T11` | + +### Analytical inventory + +All analytical beam records use a straight prismatic B33 member, homogeneous isotropic linear +elasticity with positive `E,G,A,Iy,Iz,J`, `I12=0`, small displacement/rotation and a fixed root. +Signs follow the approved local `(x,y,z)=(t,n1,t x n1)` convention. + +| model_id | boundary conditions and load | target quantity/test | analytical target | tolerance/status | +| --- | --- | --- | --- | --- | +| `an-b33-axial-cantilever` | root DOFs fixed; free-end local axial force `Px` | tip `UX`, root `RF1`, constant `N`, outward `FX`, centroid `S11`, residual | `u(L)=Px*L/(E*A)` with force equilibrium and `S11=N/A` | relative `1e-9`; residual normalized `1e-10`; planned | +| `an-b33-torsion-cantilever` | root fixed; free-end local torque `Mx` | tip `URX`, root `RM1`, constant `T`, outward `MX`, residual | `theta_x(L)=Mx*L/(G*J)` with torque equilibrium | relative `1e-9`; residual normalized `1e-10`; planned | +| `an-b33-local-y-bending` | root fixed; free-end force `Py` along local `+y` | tip `UY`, `URZ`, root `RF2/RM3`, endpoint `Mz/FY`, residual | `v(L)=Py*L^3/(3*E*Iz)`, `theta_z(L)=Py*L^2/(2*E*Iz)` | relative `1e-9`; end-sign normalized `1e-12`; planned | +| `an-b33-local-z-bending` | root fixed; free-end force `Pz` along local `+z` | tip `UZ`, `URY`, root `RF3/RM2`, endpoint `My/FZ`, section-point `S11`, residual | `w(L)=Pz*L^3/(3*E*Iy)`, `theta_y(L)=-Pz*L^2/(2*E*Iy)` | relative `1e-9`; end-sign normalized `1e-12`; planned | +| `an-b33-rotated-space` | rigidly rotate the axial/torsion/two-bending fixtures to a non-axis-aligned direction | `R*R^T`, `det(R)`, transformed displacement/reaction/resultant, work and energy | inverse-rotated physical results equal axis-aligned cases; `det(R)=+1` | normalized `1e-12`; planned | +| `an-b33-prescribed-displacement` | stable free/constrained partition with nonzero `dc`, finite `Ff` and `Fc` | effective RHS, `df`, full `d`, constrained reaction and free residual | `rhs=Ff-Kfc*dc`, `Rc=Kcf*df+Kcc*dc-Fc` | normalized `1e-10`; planned | +| `an-b33-line-load-kernel` | element-level constant local `[px,py,pz,mx]`; no parser/CLI `*DLOAD` | all 12 equivalent nodal components and signed end moments | formulation section 12.2 closed-form vector | normalized `1e-12`; planned | + +The rotated record covers transformation rather than Abaqus instance transforms. The line-load +record covers only the element kernel and must be paired with a negative parser test proving that +`*DLOAD` remains unsupported. + +### Invalid-input record + +`neg-b33-input-contract` is a table-driven portfolio. Each case uses the smallest otherwise-valid +single-step deck and changes only the named condition. + +| case | expected result | +| --- | --- | +| `TYPE=B31` | `unsupported-element-formulation`; no Euler element | +| second `*STEP` | `unsupported-multiple-step`; no solve/output | +| instance translation or rotation data | `unsupported-instance-transform` | +| nested assembly/dependent mesh semantic | structured unsupported diagnostic | +| `I12!=0` | `unsupported-coupled-section` model failure | +| nonpositive `E,G,A,Iy,Iz,J` | `invalid-beam-property` model failure | +| zero/near-zero length | `invalid-beam-length` at the approved scale-aware boundary | +| zero/tangent-parallel guide vector | `invalid-beam-guide-vector` at the approved projection boundary | +| `*DLOAD` or unlisted model-affecting keyword | `unsupported-keyword`; no distributed-load Domain object | +| malformed row, duplicate entity or dangling reference | input failure with source-backed deterministic diagnostic | +| missing/extra/duplicate/nonfinite/schema- or identity-mismatched reference row | comparison precheck failure before tolerance evaluation | + +### Approved reference record: `cantilever-beam-b33` + +- category: benchmark and regression +- purpose: end-to-end B33 displacement, reaction and section-resultant comparison +- analysis_type: single linear static +- element_type: ten straight two-node `TYPE=B33` elements, source labels 1 through 10 +- geometry: global x-axis cantilever, total length 10 m, eleven source nodes +- material: `E=2.1e11`, `nu=0.3`, SI +- section: `A=1`, `I11=0.0833333`, `I12=0`, `I22=0.0833333`, `J=0.140833`; `n1=(0,1,0)` +- boundary_conditions: source node 1, DOFs 1 through 6 fixed +- load: source node 11, global DOF 3, magnitude `-1e6` N +- model_id: `cantilever-beam-b33` +- logical_schema: `abaqus-cae-report-csv-v0` +- source_commit: `2b34d0b` +- generator: `Abaqus/CAE Learning Edition 2024` +- units: SI +- nodal_coordinate_system: global Cartesian +- section_force_coordinate_system: beam local +- step_name: `Step-1` +- increment: `1` +- step_time: `1.0` +- artifact_status: all four exact paths present; structural precheck observed; FESA comparison not run +- stress: N/A for Abaqus reference comparison; mandatory FESA `S11` remains covered by unit/analytical and HDF5 schema tests + +The input and CSV numeric reference values are not recalculated, repaired, rounded, clamped or +otherwise re-derived by this contract. + +## Abaqus Input Requirements + +The approved input is exactly +`reference/cantilever beam/cantilever beam.inp`. Read-only inspection confirms that it contains +`*ELEMENT, TYPE=B33` and remains within the V0 supported subset plus the documented warning +no-op output-request allowlist. Its single identity instance is `PART-1_1-1`; its canonical result +identity is `(Step-1, frame 0)` from increment 1, step time 1.0. + +For later reference models: + +- `model.inp` shall use only the feature-approved Abaqus keyword subset. +- Model data shall define nodes, B33 connectivity, sets, material, general section and orientation. +- History data shall define exactly one `*STEP, *STATIC`, supported boundary conditions and nodal + loads. +- `TYPE=B31`, instance transform, nested assembly, `I12!=0` and `*DLOAD` are not admissible ways + to create a positive V0 reference model. +- Abaqus output requests may be present for human generation of required CSVs, but they are + warning no-ops for FESA and never select mandatory HDF5 output. + +## Artifact Bundle Contract + +### Approved legacy exception + +The following exact paths are the entire approved read-only bundle: + +```text +reference/cantilever beam/cantilever beam.inp +reference/cantilever beam/cantilever beam displacements.csv +reference/cantilever beam/cantilever beam reactions.csv +reference/cantilever beam/cantilever beam elemental forces.csv +``` + +These files shall not be generated, modified, renamed, corrected or restored by an agent or +Harness. Their spaces and existing CAE report headers are legacy aliases, not a naming pattern for +new models. + +Only for this approved legacy bundle: + +- `metadata.json`: N/A +- `README.md`: N/A +- stress CSV: N/A because beam stress reference comparison is outside the approved V0 scope + +The approved design and this contract jointly replace those missing files by recording model ID, +provenance, generator, source commit, units, coordinate systems, step/frame identity, logical CSV +schema, exact inventory, tolerance policy and the stress N/A reason. Their absence therefore does +not change the legacy record to `needs-reference-artifacts`. + +### Future reference bundles + +Every later reference model shall use this structure unless its approved requirement explicitly +marks a quantity N/A: + +```text +reference/ + / + model.inp + metadata.json + _displacements.csv + _reactions.csv + _internalforces.csv + _stresses.csv + README.md +``` + +CSV names are canonical `_*.csv` names. `metadata.json` and `README.md` are mandatory. +A quantity CSV may be omitted only when the upstream acceptance contract explicitly records N/A +and gives its verification replacement. Missing required files keep that model at +`needs-reference-artifacts`. + +## Metadata JSON Contract + +`metadata.json` is N/A only for `cantilever-beam-b33`. Every later bundle shall include at least: + +```json +{ + "feature_id": "linear-static-3d-euler-beam", + "model_id": "", + "artifact_status": "needs-reference-artifacts | ready-for-verification", + "input_file": "model.inp", + "abaqus_version": "", + "generation_owner": "", + "generation_date": "", + "source_commit": "", + "units": "", + "coordinate_system": "", + "analysis_type": "single linear static", + "element_types": ["B33"], + "step_name": "Step-1", + "increment": 1, + "step_time": 1.0, + "output_requests": ["U", "RF", "SF"], + "reference_csv_schema_version": "", + "reference_csv_files": [""], + "tolerance_policy": "", + "limitations": [""] +} +``` + +No agent may invent unknown provenance fields or mark a bundle ready merely because filenames +exist. + +## Abaqus Reference CSV Requirements + +Header comparison trims whitespace around each comma-separated field but does not rename fields. +For every file, `Frame` must normalize exactly from +`Increment 1: Step Time = 1.000` to `(Step-1, frame 0)`, `Part Instance Name` must resolve to the +preserved instance identity, `Node Label` must be a unique source-node station, and all projected +numeric values must be finite. + +| exact legacy path | expected trimmed header | unique row key | observed inventory | +| --- | --- | --- | --- | +| `reference/cantilever beam/cantilever beam displacements.csv` | `Frame, Part Instance Name, Node Label, U-U1, U-U2, U-U3, UR-UR1, UR-UR2, UR-UR3` | `(Frame, Part Instance Name, Node Label)` | 11 rows; header/key/finite/arity checks observed | +| `reference/cantilever beam/cantilever beam reactions.csv` | `Frame, Part Instance Name, Node Label, RF-RF1, RF-RF2, RF-RF3, RM-RM1, RM-RM2, RM-RM3` | `(Frame, Part Instance Name, Node Label)` | 11 rows; header/key/finite/arity checks observed | +| `reference/cantilever beam/cantilever beam elemental forces.csv` | `Frame, Part Instance Name, Node Label, SF-SF1, SM-SM1, SM-SM2, SM-SM3` | `(Frame, Part Instance Name, Node Label)` | 11 rows; header/key/finite/arity checks observed | + +The wide-row key becomes unique canonical component rows after adding `quantity` and `component`. +Missing, extra, duplicate, nonfinite, header/schema or identity mismatch stops comparison as +`needs-reference-artifacts` or `schema-mismatch`. No bad or near-zero row may be silently dropped. + +For the elemental-force CSV, source node station is not an element-end identity. A boundary +station uses its only incident endpoint. An interior station may collapse exactly two endpoints +only when chain connectivity, section and local axes are consistent and the station has no +concentrated force/moment. The two positive-local-x section-cut values must first agree within the +approved component tolerance. If they agree, choose the endpoint with smaller stable internal +element ID; never average. Reversed orientation, branch, section jump, local-axis discontinuity or +loaded interior station requires an element-aware future schema and is a `schema-mismatch` under +this legacy schema. + +## Coverage Matrix + +The authoritative comparison source is FESA HDF5, not an extracted FESA CSV. Dataset paths use +the canonical V0 step identity. + +| verification quantity | requirement ids | model_id | FESA HDF5 dataset | legacy CSV and components | row identity/location | tolerance | verification method | status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| nodal displacement/rotation | 003, 029-031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/nodal/displacement` | `reference/cantilever beam/cantilever beam displacements.csv`: `U-U1/U-U2/U-U3 -> UX/UY/UZ`, `UR-UR1/UR-UR2/UR-UR3 -> URX/URY/URZ` | preserved instance + source node; global nodal | `1e-9 + 1e-6*reference_scale` per displacement/rotation component | HDF5-to-read-only CSV after artifact/row-set precheck | ready for implementation planning; comparison not run | +| nodal reaction force | 007, 027, 029-031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/nodal/reaction` | `reference/cantilever beam/cantilever beam reactions.csv`: `RF-RF1/RF-RF2/RF-RF3 -> RF1/RF2/RF3` | preserved instance + source node; global nodal | `1e-3 + 1e-6*reference_scale` per force component | HDF5-to-read-only CSV plus global equilibrium | ready for implementation planning; comparison not run | +| nodal reaction moment | 007, 027, 029-031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/nodal/reaction` | `reference/cantilever beam/cantilever beam reactions.csv`: `RM-RM1/RM-RM2/RM-RM3 -> RM1/RM2/RM3` | preserved instance + source node; global nodal | `1e-3 + 1e-6*reference_scale` per moment component | HDF5-to-read-only CSV plus moment equilibrium | ready for implementation planning; comparison not run | +| section axial force | 031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/element/section_resultant` | `reference/cantilever beam/cantilever beam elemental forces.csv`: `SF-SF1 -> N` | positive-local-x endpoint projected to eligible source node station | `1e-3 + 1e-6*reference_scale` for `N` | endpoint consistency, deterministic station selection, HDF5-to-CSV | ready for implementation planning; comparison not run | +| section moments/torsion | 031, 036-042 | `cantilever-beam-b33` | `/steps/Step-1/frames/0/element/section_resultant` | `reference/cantilever beam/cantilever beam elemental forces.csv`: `SM-SM1 -> My`, `SM-SM2 -> Mz`, `SM-SM3 -> T` | positive-local-x endpoint projected to eligible source node station; beam local | `1e-3 + 1e-6*reference_scale` separately for `My`, `Mz`, `T` | endpoint consistency, deterministic station selection, HDF5-to-CSV | ready for implementation planning; comparison not run | +| equilibrium end action | 031, 035, 043 | analytical models and physics portfolio | `/steps/Step-1/frames/0/element/end_force_local` | Abaqus CSV N/A for direct outward-action comparison | element endpoint `xi=-1,+1`; local outward action `[FX,FY,FZ,MX,MY,MZ]` | analytical normalized `1e-12`; residual `1e-10` | unit/analytical end-sign tests and later physics sanity | planned | +| generalized strain/resultant | 029, 031, 035 | code and analytical models | `/steps/Step-1/frames/0/element/generalized_strain` and `/steps/Step-1/frames/0/element/generalized_resultant` | Abaqus CSV N/A | two Gauss points; beam local | matrix/formulation normalized `1e-12`, analytical relative `1e-9` | formulation/unit/HDF5 schema tests | planned | +| axial stress | 029, 032, 035 | axial/local-z analytical models | `/steps/Step-1/frames/0/element/stress_s11` | stress CSV N/A; Abaqus beam stress reference comparison N/A | element, Gauss point, input section point or `fesa-default` centroid | analytical relative `1e-9`; exact unit/row schema | unit/analytical recovery and HDF5 schema tests | planned; reference N/A | + +For every matched reference group, +`reference_scale=max(abs(Abaqus reference rows))` for the same model, step/frame, quantity and +component, and `row_tolerance=absolute_floor+1e-6*reference_scale`. Abaqus values alone set the +scale. A zero scale uses only the floor. Every row decision and max absolute, component-scale +normalized, RMS, norm and worst-row/component metrics must be reported. + +### Complete must-requirement coverage + +Every approved `must` requirement is connected below to a model/test/quantity or an explicit +non-reference governance check. `N/A` means that an Abaqus CSV is not the applicable evidence; +it does not waive the requirement. + +| requirement | model/test/quantity or explicit N/A | planned verification | +| --- | --- | --- | +| `FESA-REQ-LS3DEB-001` | `smoke-b33-cli`; `neg-b33-input-contract` second-step case | positive single-step and structured rejection test | +| `FESA-REQ-LS3DEB-002` | all analytical B33 records | model-validation and formulation scope tests; CSV N/A except approved benchmark | +| `FESA-REQ-LS3DEB-003` | all code/analytical records; displacement/reaction rows | exact DOF/component-order tests | +| `FESA-REQ-LS3DEB-004` | axial, torsion and both bending records | four independent analytical solution tests | +| `FESA-REQ-LS3DEB-005` | `smoke-b33-cli`, `cantilever-beam-b33` | B33 semantic mapping and artifact type precheck | +| `FESA-REQ-LS3DEB-006` | `neg-b33-input-contract` B31 case | exact `unsupported-element-formulation` test | +| `FESA-REQ-LS3DEB-007` | four cantilevers and prescribed-displacement record | DOF 1..6 load/BC and nonzero `dc` tests | +| `FESA-REQ-LS3DEB-008` | `an-b33-line-load-kernel`; negative `*DLOAD` case | closed-form vector and unsupported parser tests; reference CSV N/A | +| `FESA-REQ-LS3DEB-009` | `smoke-b33-cli`, keyword table tests, approved legacy input | exact positive keyword inventory | +| `FESA-REQ-LS3DEB-010` | parser code-verification cases | case/comment/source-label preservation tests; CSV N/A | +| `FESA-REQ-LS3DEB-011` | analytical load/BC decks and invalid arity/target cases | target expansion and row grammar tests | +| `FESA-REQ-LS3DEB-012` | both bending and rotated-space records | property/axis mapping and transform checks | +| `FESA-REQ-LS3DEB-013` | all analytical records; invalid property cases | `G` calculation and positive property tests | +| `FESA-REQ-LS3DEB-014` | `neg-b33-input-contract` geometry cases; `NR-T05` | exact scale-aware length/projection boundary tests | +| `FESA-REQ-LS3DEB-015` | multi-instance semantic fixture and all HDF5/reference identities | stable source/internal identity tests | +| `FESA-REQ-LS3DEB-016` | multi-instance semantic fixture | distinct deterministic identity test; reference CSV N/A | +| `FESA-REQ-LS3DEB-017` | invalid instance-transform case | exact diagnostic test | +| `FESA-REQ-LS3DEB-018` | invalid nested/dependent cases | structured unsupported tests | +| `FESA-REQ-LS3DEB-019` | `cantilever-beam-b33` input and allowlist table cases | warning/no-op and no semantic-effect tests | +| `FESA-REQ-LS3DEB-020` | unknown-keyword negative case and `smoke-b33-cli` | error plus mandatory-output independence test | +| `FESA-REQ-LS3DEB-021` | Domain/AnalysisModel code-verification fixture | non-copy/non-mutation ownership tests; CSV N/A | +| `FESA-REQ-LS3DEB-022` | DOF/scatter/reconstruction code-verification fixture | DofManager ownership and exact mapping tests; CSV N/A | +| `FESA-REQ-LS3DEB-023` | `smoke-b33-cli` and HDF5 state fixture | required/excluded state allocation tests; CSV N/A | +| `FESA-REQ-LS3DEB-024` | `cv-b33-patch-rigid-assembly`, `NR-T11` | repeated thread-count CSR determinism test; CSV N/A | +| `FESA-REQ-LS3DEB-025` | math/adapter dependency fixtures | storage/layout and public dependency review; CSV N/A | +| `FESA-REQ-LS3DEB-026` | orchestration event-trace fixture | exact factorize-before-load order test; CSV N/A | +| `FESA-REQ-LS3DEB-027` | `an-b33-prescribed-displacement` | effective RHS, reconstruction and residual reaction test | +| `FESA-REQ-LS3DEB-028` | `smoke-b33-cli` writer failure/success fixtures | authoritative output and atomicity tests; CSV N/A | +| `FESA-REQ-LS3DEB-029` | HDF5 rows in this Coverage Matrix | exact path/shape/component schema test | +| `FESA-REQ-LS3DEB-030` | `smoke-b33-cli`; `cantilever-beam-b33` provenance | ordinary unit label and external SI metadata tests | +| `FESA-REQ-LS3DEB-031` | all code/analytical models and three legacy CSV quantities | recovery component/location and mandatory-output tests | +| `FESA-REQ-LS3DEB-032` | axial/local-z analytical stress; HDF5 `stress_s11` | stress unit/analytical/schema tests; Abaqus stress comparison N/A | +| `FESA-REQ-LS3DEB-033` | `smoke-b33-cli`, diagnostic negative cases | CLI exit-code/field/order integration tests; CSV N/A | +| `FESA-REQ-LS3DEB-034` | every implementation model/test | per-step RED/GREEN/VERIFY and full MSVC/CTest evidence; model CSV N/A | +| `FESA-REQ-LS3DEB-035` | `NR-T01` through `NR-T11` and analytical inventory | exact numerical criteria in model records | +| `FESA-REQ-LS3DEB-036` | `cantilever-beam-b33` and comparison-policy unit fixtures | Abaqus-only component scale and exact formula tests | +| `FESA-REQ-LS3DEB-037` | same comparison fixtures, including zero-scale groups | exact SI floors and zero-scale tests | +| `FESA-REQ-LS3DEB-038` | malformed reference cases in `neg-b33-input-contract` | pre-tolerance fail-fast and no-clamp/no-drop tests | +| `FESA-REQ-LS3DEB-039` | verification-report schema fixture | every row decision and aggregate/worst metrics test | +| `FESA-REQ-LS3DEB-040` | exact legacy Artifact Bundle Contract | inventory plus `git diff --exit-code -- reference/` process check | +| `FESA-REQ-LS3DEB-041` | approved artifact precheck | four files, B33, exact headers, unique keys, finite values | +| `FESA-REQ-LS3DEB-042` | three comparison quantities and station normalization | exact component mapping, endpoint consistency and no-average tests | +| `FESA-REQ-LS3DEB-043` | gate audit; later physics portfolio | reference execution N/A at this step; enforce build/test -> comparison -> physics -> release order | +| `FESA-REQ-LS3DEB-044` | process/Git diff audit and limitations review | no reference execution/mutation and no out-of-scope support claim | + +## Artifact Acceptance Checklist + +Read-only inventory inspection on `2026-08-09` established the following pre-implementation facts: + +- all four exact legacy paths exist; +- the input declares `TYPE=B33`; +- each CSV trimmed header matches the documented `abaqus-cae-report-csv-v0` inventory; +- each CSV has 11 data rows with a unique `(Frame, Part Instance Name, Node Label)` key; +- every projected numeric field is finite and every row has the header arity; +- generator, source commit, SI units, coordinates, step/increment/time and tolerance provenance are + recorded in the approved design and this contract; +- legacy `metadata.json`, `README.md` and stress CSV are accepted N/A exceptions; +- no reference value was recalculated and no comparison was performed. + +Before an actual comparison, tooling must repeat all artifact checks, verify the exact Frame and +instance identities, compare the complete projected row sets, and stop on any failure. The Step AC +must also show no working-tree diff under `reference/`. Passing this checklist is not a reference +comparison pass. + +## Open Issues and Downstream Handoff + +### Open issues + +- No missing artifact or user decision blocks implementation planning for the approved legacy + model. +- `NR-O01` (official oneMKL PARDISO contract) and `NR-O02` (deterministic duplicate-reduction + algorithm) remain implementation-planning inputs, not reference artifact defects. +- Future reversed, branched, loaded-interior or section-jump reference models require an + element-aware canonical CSV schema; the legacy node-station schema must not be generalized. + +### Implementation Planning Agent + +Use this order for tests that must fail before their production implementation: + +1. Hermite/DOF/sign and `B` checks. +2. Gauss/closed stiffness, rigid modes, rank and energy. +3. Rotation/local-axis and signed line-load kernel. +4. Axial, torsion, local-y and local-z analytical cantilevers. +5. Nonzero prescribed displacement, SPD/residual and deterministic assembly. +6. Parser invalid-input portfolio and CLI/HDF5 output contract. +7. Legacy artifact precheck, row projection and tolerance/report policy. + +Keep reference comparison after the full MSVC build/test gate and do not require new Abaqus +artifacts for code/analytical fixtures. + +### Reference Verification Agent + +Run `ARTIFACT CHECK -> HDF5 ROW PROJECTION -> EXACT ROW-SET CHECK -> ENDPOINT CONSISTENCY -> +COMPONENT-SCALE COMPARE -> REPORT`. Use only the exact legacy files and the HDF5 paths/component +mappings in the Coverage Matrix. Do not synthesize `SF2/SF3` or stress rows, clamp values, omit +rows, average interior endpoints, or change the approved tolerance. + +### Physics Evaluation Agent + +Only after reference comparison passes, check global force/moment equilibrium, reaction sign, +displacement direction, bending symmetry, outward end action versus positive-face section +resultant consistency, and normalized residual. The approved reference model is one local-z +bending cantilever; broader physical coverage comes from the analytical portfolio, not an inflated +claim about the single CSV bundle. + +### I/O Definition Agent + +No upstream contract revision is requested. If a future reference model needs an element-aware row +identity, define and approve that schema separately without changing the read-only legacy aliases.