Files
FESADev/docs/linear-static-3d-euler-beam/reference-model.md
T
2026-08-18 02:29:26 +09:00

381 lines
30 KiB
Markdown

# Linear Static 3D Euler Beam Reference Models
## Metadata
- feature_id: `linear-static-3d-euler-beam`
- source_requirement: `docs/linear-static-3d-euler-beam/requirements.md`
- source_research: `docs/linear-static-3d-euler-beam/research.md`
- source_formulation: `docs/linear-static-3d-euler-beam/formulation.md`
- source_numerical_review: `docs/linear-static-3d-euler-beam/numerical-review.md`
- source_io_definition: `docs/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`
- amended_on: `2026-08-18`
- approved_reference_model: `cantilever-beam-b33`
- approved_reference_identity: direct source-node and element-endpoint rows
- reference_baseline: exact current files under `reference/cantilever beam/`
이 문서는 구현 전에 필요한 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이 먼저 통과해야 하며,
수치 비교는 ADR-022의 common family-scale 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`
- historical_schema_record: `abaqus-cae-report-csv-v0` for the 2026-08-09 inventory only
- historical_source_commit: `2b34d0b` for the 2026-08-09 inventory only
- 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; 20-row element-endpoint comparison passed on 2026-08-18
- 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.
For this approved legacy bundle:
- `metadata.json`: absent-allowed under the project-wide optional metadata policy
- `README.md`: N/A
- stress CSV: N/A because beam stress reference comparison is outside the approved V0 scope
This contract records the exact required paths, row identities, comparison quantities, tolerance
policy and the stress N/A reason. Historical schema/provenance fields are retained as dated
inventory only and are not readiness gates. The optional metadata file's absence and the approved
legacy README/stress exclusions do not change the record to `needs-reference-artifacts`.
### Later reference cases and optional metadata
Each later feature requirement names its exact input and comparison CSV paths, required row
identity/components and N/A quantities. Canonical filenames, `README.md`, `metadata.json`,
generator/version, provenance, duplicated unit/schema fields and a portfolio-wide directory layout
are not readiness gates unless that feature explicitly makes one part of its numerical comparison
contract. No agent may invent unknown provenance. If optional metadata exists, inspect it read-only
and report disagreement without rewriting the reference artifacts.
## 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, every declared source identity must be unique, 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, Element Label, Node Label, SF-SF1, SM-SM1, SM-SM2, SM-SM3` | `(Frame, Part Instance Name, Element Label, Node Label)` | 20 rows; 10 B33 elements x 2 connectivity-matched endpoints; 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, `(Part Instance Name, Element Label, Node Label)` is the source
element-endpoint identity. Each B33 element must have exactly two rows whose node labels match its
ordered input connectivity. Every row maps directly to the corresponding HDF5
`[element,endpoint,N/T/My/Mz]` row. Missing, extra, duplicate or connectivity-mismatched endpoint
identity fails as `schema-mismatch` before tolerance. The comparator does not collapse endpoints to
a node station, choose a representative or average values.
## 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 | common translation/rotation family policy | HDF5-to-read-only CSV after artifact/row-set precheck | passed 2026-08-18 |
| 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 | common reaction-force family policy | HDF5-to-read-only CSV plus global equilibrium | passed 2026-08-18 |
| 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 | common reaction-moment family policy | HDF5-to-read-only CSV plus moment equilibrium | passed 2026-08-18 |
| 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` | direct instance + source element + endpoint node; beam local | common section-force family policy | direct HDF5-to-endpoint CSV comparison | passed 2026-08-18 |
| 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` | direct instance + source element + endpoint node; beam local | common section-moment family policy | direct HDF5-to-endpoint CSV comparison | passed 2026-08-18 |
| 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 family, `S=max(abs(Abaqus reference rows))` uses only read-only reference values.
Rows with `abs(reference)<=0.01*S` use `error<=0.01*S`; other rows use relative error `<=0.05`;
the family also requires `RMS(error)/S<=0.01`. A zero-scale family requires exact-zero FESA values.
Every row branch/decision and family scale, near-zero band/count, max absolute error,
scale-relative RMS, worst row/component and zero-scale diagnostic 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 | exact family membership and Abaqus-only scale tests |
| `FESA-REQ-LS3DEB-037` | same comparison fixtures, including boundary and zero-scale families | near-zero, relative-row, scale-relative RMS 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 branch/decision and family 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 direct endpoint projection | exact component mapping plus missing/extra/duplicate/connectivity-mismatch endpoint 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
The following is historical 2026-08-09 pre-implementation inventory evidence. Its 11-row
elemental-force observation is superseded by the 2026-08-18 regenerated 20-row endpoint file:
- 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;
- absent `metadata.json` is allowed by project-wide policy; legacy `README.md` and stress CSV are accepted N/A exceptions;
- no reference value was recalculated and no comparison was performed.
Read-only inspection on `2026-08-18` confirms that the elemental-force CSV has 20 rows,
exactly two connectivity-matched endpoint rows for each of the 10 B33 elements. Displacement and
reaction CSVs remain 11-row source-node tables. The fresh comparison passed on 2026-08-18;
current metrics are recorded in `reference-comparison.md`.
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 use the same
element-endpoint identity and require their own approved reference coverage.
### 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 -> DIRECT ENDPOINT MATCH ->
COMMON FAMILY-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.