feat: implement phase 1 solver baseline

This commit is contained in:
NINI
2026-05-01 02:59:28 +09:00
parent 10f1436e0f
commit c5be1f988c
13 changed files with 1960 additions and 84 deletions
+37 -7
View File
@@ -13,10 +13,45 @@ 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
The project is in documentation and readiness planning. Solver implementation has not started. The first stored Abaqus reference pair exists under `references/`: `quad_01.inp` and `quad_01_displacements.csv`.
P1-01 through P1-14 have an initial C++17 implementation with CMake/CTest validation. P1-15 and P1-16 remain blocked because the repository does not yet contain a Phase 1-compatible Abaqus `TYPE=S4` input with matching `*_displacements.csv`; the first stored pair remains `quad_01.inp` and `quad_01_displacements.csv`, with `quad_01.inp` documented as S4R/NLGEOM provenance rather than Phase 1 parser input.
## Completed Work
### 2026-05-01 - P1-01 through P1-14 implementation pass
Author: Codex
Changed files:
- `CMakeLists.txt`
- `include/fesa/fesa.hpp`
- `src/fesa.cpp`
- `tests/test_main.cpp`
- `scripts/validate_workspace.py`
- `README.md`
- `docs/ADR.md`
- `docs/MITC4_FORMULATION.md`
- `PLAN.md`
- `PROGRESS.md`
- `phases/index.json`
- `phases/1-linear-static-mitc4/index.json`
Summary:
- Added a CMake/CTest C++17 build and test harness, and updated `scripts/validate_workspace.py` to run CMake configure, build, and CTest directly.
- Added core numeric aliases, DOF mapping, diagnostics, Domain entities, Abaqus Phase 1 parser, Domain validation, DofManager, dense test matrix, deterministic Gaussian solver, in-memory result model, displacement CSV loader/comparator, MITC4 baseline stiffness kernel, full-system assembly, and `LinearStaticAnalysis`.
- Closed the Phase 1 MITC4 baseline decisions in `docs/MITC4_FORMULATION.md`: midside shear tying interpolation, averaged-edge local basis, 2x2 integration, `drilling_stiffness_scale = 1.0e-6`, and mandatory `U`/`RF` output scope.
- Added ADR-017 for the CMake/CTest build harness and ADR-018 for the Phase 1 MITC4 baseline closure.
- Added tests for parser acceptance/rejection, `quad_01` unsupported provenance, validation diagnostics, DOF reconstruction, singular solve diagnostics, result fields, CSV loading/comparison, MITC4 shape/stiffness behavior, and end-to-end linear static RF recovery.
- Marked phase steps P1-01 through P1-14 completed in `phases/1-linear-static-mitc4/index.json`.
- Marked P1-15 blocked because no Phase 1-compatible Abaqus S4 reference case exists yet; P1-16 remains pending behind that blocker.
Verification:
- `python scripts/validate_workspace.py` configured CMake, built `fesa_core` and `fesa_tests`, and ran CTest successfully.
- CTest result: 1 test executable passed, covering 12 named in-repo test cases.
Follow-up:
- Add at least one Phase 1-compatible Abaqus `TYPE=S4` linear static input and matching `*_displacements.csv`.
- Add or explicitly defer `*_reactions.csv`; current RF validation is by internal full-vector equilibrium/reaction tests.
- After reference artifacts are added, unblock P1-15 and run stored-reference regression, then complete P1-16 evaluator closeout.
### 2026-05-01 - P1-00 Phase 1 sprint contracts generated
Author: Codex
@@ -317,14 +352,9 @@ Verification:
## Known Blockers
- No reaction-force reference artifact exists yet under `references/`.
- 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.
- MITC4 transverse shear tying-point equations are not finalized in `docs/MITC4_FORMULATION.md`.
- MITC4 local shell basis algorithm is not finalized.
- Artificial drilling stiffness default scale is not finalized.
- Build system is not decided.
- Validation script has no concrete build/lint/test commands configured.
- No Phase 1-compatible Abaqus `TYPE=S4` input with matching `*_displacements.csv` exists yet for stored-reference regression.
## Current Risks
- Implementation could start from the `quad_01` reference input without accounting for its unsupported Abaqus features.
- MITC4 formulation could drift if tying-point equations are inferred from memory instead of cited sources.
- Reaction output may be wrong if full-space stiffness/load data is not preserved or reconstructed.
- Large-model support may be weakened if any module narrows ids or sparse indices below int64.