test: onboard quad02 reaction reference
This commit is contained in:
+41
-3
@@ -13,10 +13,48 @@ Every new agent session must read this file together with `PLAN.md` before plann
|
||||
- Do not remove history unless the user explicitly asks for archival cleanup.
|
||||
|
||||
## Current Status
|
||||
Phase 1 has a completed rebaseline execution path in `phases/1-linear-static-mitc4-rebaseline`. Steps 0 through 15 are complete, and P1R-15 recorded a pass-with-documented-gaps evaluator closeout. The follow-up architecture refactor phase in `phases/1-structure-alignment-refactor` is also complete; P1A-09 recorded a passing architecture evaluator closeout, `include/fesa/fesa.hpp` is now an include-only facade, production symbols are separated under module ownership, and R-014 is closed. `quad_02_phase1.inp` is the normalized Phase 1-compatible input path for the stored `quad_02` S4 reference pair, while the original `quad_02.inp` remains preserved unsupported provenance. Core numeric aliases, DOF mapping, validation harness, model diagnostic context, the Phase 1 parser/domain subset, validation/singular diagnostics, DofManager/reaction foundation, minimum result model metadata, displacement CSV comparator foundation, MITC4 geometry/director scaffolding, MITC4 displacement/strain/tying row scaffolding, MITC4 material/transform/integration scaffolding, MITC4 stiffness/drilling/internal-force scaffolding, MITC4 patch/locking-sensitivity tests, full-space assembly, reduced projection, sparse-pattern scaffold, solver adapter injection, full-vector internal/reaction force state, active AnalysisModel construction, input-to-AnalysisState-to-U/RF result workflow, and the first stored Abaqus displacement regression have been revalidated. Full PRD Phase 1 completion still depends on the open reference gaps R-010 and R-013. The old `phases/1-linear-static-mitc4` path is historical and superseded after the MITC4 formulation reset.
|
||||
Phase 1 has a completed rebaseline execution path in `phases/1-linear-static-mitc4-rebaseline`. Steps 0 through 15 are complete, and P1R-15 recorded a pass-with-documented-gaps evaluator closeout. The follow-up architecture refactor phase in `phases/1-structure-alignment-refactor` is also complete; P1A-09 recorded a passing architecture evaluator closeout, `include/fesa/fesa.hpp` is now an include-only facade, production symbols are separated under module ownership, and R-014 is closed. `quad_02_phase1.inp` is the normalized Phase 1-compatible input path for the stored `quad_02` S4 reference pair, while the original `quad_02.inp` remains preserved unsupported provenance. `quad_02_reactionforces.csv` is now onboarded as the paired Abaqus RF/RM artifact and the Results module can load and compare reaction CSV files, but the current node-wise RF comparison does not pass and R-010 remains open for triage. Core numeric aliases, DOF mapping, validation harness, model diagnostic context, the Phase 1 parser/domain subset, validation/singular diagnostics, DofManager/reaction foundation, minimum result model metadata, displacement and reaction CSV comparator foundation, MITC4 geometry/director scaffolding, MITC4 displacement/strain/tying row scaffolding, MITC4 material/transform/integration scaffolding, MITC4 stiffness/drilling/internal-force scaffolding, MITC4 patch/locking-sensitivity tests, full-space assembly, reduced projection, sparse-pattern scaffold, solver adapter injection, full-vector internal/reaction force state, active AnalysisModel construction, input-to-AnalysisState-to-U/RF result workflow, and the first stored Abaqus displacement regression have been revalidated. Full PRD Phase 1 completion still depends on the open reference gaps R-010 and R-013. The old `phases/1-linear-static-mitc4` path is historical and superseded after the MITC4 formulation reset.
|
||||
|
||||
## Completed Work
|
||||
|
||||
### 2026-05-05 - quad_02 reaction CSV comparison onboarded with mismatch recorded
|
||||
Author: Codex
|
||||
|
||||
Changed files:
|
||||
- `AGENTS.md`
|
||||
- `docs/README.md`
|
||||
- `docs/NUMERICAL_CONVENTIONS.md`
|
||||
- `docs/ABAQUS_INPUT_SUBSET.md`
|
||||
- `docs/VERIFICATION_PLAN.md`
|
||||
- `docs/RESULTS_SCHEMA.md`
|
||||
- `docs/MITC4_FORMULATION.md`
|
||||
- `references/README.md`
|
||||
- `references/quad_02_notes.md`
|
||||
- `references/quad_02_reactionforces.csv`
|
||||
- `include/fesa/Results/ReferenceComparison.hpp`
|
||||
- `tests/test_results_module_includes.cpp`
|
||||
- `tests/test_main.cpp`
|
||||
- `PLAN.md`
|
||||
- `PROGRESS.md`
|
||||
|
||||
Summary:
|
||||
- Onboarded `references/quad_02_reactionforces.csv` as the Abaqus RF/RM reference artifact paired with the stored `quad_02` S4 case.
|
||||
- Added reaction CSV schema support for columns `Node Label`, `RF-RF1`, `RF-RF2`, `RF-RF3`, `RM-RM1`, `RM-RM2`, and `RM-RM3`, mapped to FESA `RF` components `RFX`, `RFY`, `RFZ`, `RMX`, `RMY`, and `RMZ`.
|
||||
- Added `CsvReactionTable`, `loadReactionCsv*`, and `compareReactions` to the Results reference-comparison module.
|
||||
- Added tests for reaction CSV required columns, duplicate-node diagnostics, node-id-based RF comparison, wrong metadata rejection, and `quad_02_reactionforces.csv` fixture discovery.
|
||||
- Ran the `quad_02_phase1.inp` analysis path and compared FESA `RF` against the stored Abaqus RF/RM CSV. The comparison currently fails node-wise; this is recorded as a known R-010 verification gap rather than hidden by loose tolerances.
|
||||
- First observed mismatch: node `1` `RFZ`, expected `6860.0`, actual `6652.459896`. Observed maximum absolute error is about `612.751347`, and maximum relative error is about `0.494032` with `abs_tol = 1.0e-6`, `rel_tol = 1.0e-5`, `reference_scale = 1.0`.
|
||||
- Kept `quad_02.inp` as unsupported provenance; the executable Phase 1 input remains `quad_02_phase1.inp`.
|
||||
|
||||
Verification:
|
||||
- First ran `python scripts\validate_workspace.py` after adding reaction comparison tests; it failed as expected because the reaction CSV API did not exist yet.
|
||||
- After adding the API, `python scripts\validate_workspace.py` exposed the current RF mismatch in the strict node-wise comparison.
|
||||
- The final validation records the RF mismatch as a known gap test and passes: CMake configured, `fesa_core` and all test executables built, and CTest reported 9 of 9 test executables passed.
|
||||
|
||||
Follow-up:
|
||||
- Keep R-010 open until the `quad_02` node-wise RF mismatch is explained or fixed.
|
||||
- Do not tune reaction tolerances or drilling stiffness simply to make this RF case pass.
|
||||
|
||||
### 2026-05-05 - P1A-09 Architecture evaluator closeout completed
|
||||
Author: Codex
|
||||
|
||||
@@ -1229,7 +1267,7 @@ Verification:
|
||||
- `python scripts/validate_workspace.py` ran, but reported no configured validation commands.
|
||||
|
||||
## Known Blockers
|
||||
- A reaction-force CSV may be present as untracked local reference input, but no reaction-force artifact has been onboarded with documented schema, tolerance, and automated comparison yet.
|
||||
- `quad_02_reactionforces.csv` is onboarded and comparable, but the current FESA node-wise `RF` result does not pass against Abaqus RF/RM values.
|
||||
- The PRD target of three stored Phase 1 reference cases is not yet satisfied; only `quad_02_phase1` is an active stored displacement regression.
|
||||
- The current initial `quad_01.inp` reference contains `S4R`, `Part/Assembly/Instance`, `*Density`, and `NLGEOM=YES`, so it is not a Phase 1 parser acceptance case as-is.
|
||||
|
||||
@@ -1237,6 +1275,6 @@ Verification:
|
||||
- Implementation could start from the `quad_01` reference input without accounting for its unsupported Abaqus features.
|
||||
- Implementation could treat the old MITC4 kernel as authoritative even though it conflicts with the revised formulation contract.
|
||||
- Future work could accidentally parse the original `quad_02.inp` instead of the normalized `quad_02_phase1.inp` before parser compatibility is explicitly expanded.
|
||||
- Reaction output may be wrong if full-space stiffness/load data is not preserved or reconstructed.
|
||||
- Reaction output may remain Abaqus-incompatible at node level until the `quad_02` RF mismatch is explained.
|
||||
- Large-model support may be weakened if any module narrows ids or sparse indices below int64.
|
||||
- Future source/body hardening could accidentally change behavior if inline module implementations are moved into `.cpp` files without preserving the current characterization and `quad_02_phase1` regression tests.
|
||||
|
||||
Reference in New Issue
Block a user