refactor: extract core domain dof modules

This commit is contained in:
NINI
2026-05-05 01:10:30 +09:00
parent 59dcc77a24
commit fd93bc35b0
20 changed files with 915 additions and 648 deletions
+43 -1
View File
@@ -13,10 +13,52 @@ 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 underway because the current production implementation is concentrated in `include/fesa/fesa.hpp` instead of the module directories documented in `docs/ARCHITECTURE.md`; P1A-00 and P1A-01 are complete, so the next step is P1A-02 Core/Util extraction. `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 architecture/reference gaps R-014, 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 underway because the current production implementation is concentrated in `include/fesa/fesa.hpp` instead of the module directories documented in `docs/ARCHITECTURE.md`; P1A-00, P1A-01, and P1A-02 are complete, so the next step is P1A-03 Math and solver adapter extraction. `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 architecture/reference gaps R-014, 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 - P1A-02 Core domain DOF extraction completed
Author: Codex
Changed files:
- `CMakeLists.txt`
- `include/fesa/Boundary/Boundary.hpp`
- `include/fesa/Core/AnalysisModel.hpp`
- `include/fesa/Core/AnalysisState.hpp`
- `include/fesa/Core/Core.hpp`
- `include/fesa/Core/Dof.hpp`
- `include/fesa/Core/DofManager.hpp`
- `include/fesa/Core/Domain.hpp`
- `include/fesa/Core/Types.hpp`
- `include/fesa/Core/Validation.hpp`
- `include/fesa/Load/Load.hpp`
- `include/fesa/Property/Property.hpp`
- `include/fesa/Util/Diagnostics.hpp`
- `include/fesa/Util/String.hpp`
- `include/fesa/Util/Util.hpp`
- `include/fesa/fesa.hpp`
- `tests/test_core_module_includes.cpp`
- `phases/1-structure-alignment-refactor/index.json`
- `PLAN.md`
- `PROGRESS.md`
Summary:
- Extracted numeric aliases, diagnostics, string/parse helpers, DOF mapping, Domain records, validation helpers, `AnalysisModel`, `AnalysisState`, and `DofManager` from the umbrella header into Core and Util module headers.
- Moved Phase 1 `BoundaryCondition`, `NodalLoad`, and `ShellSection` model records into their Boundary, Load, and Property module headers.
- Added `fesa_core_module_tests`, a direct module include smoke test that does not include `fesa/fesa.hpp` and checks aliases, Domain, diagnostics, DOF mapping, Boundary/Load/Property records, `DofManager`, `AnalysisModel`, and `AnalysisState`.
- Preserved public symbol names and namespace `fesa`; `fesa/fesa.hpp` still works as the umbrella facade.
- Kept lightweight `Material` as a Domain record under Core for now to avoid a Core-to-Material dependency cycle before IO extraction; later material-law helpers remain part of P1A-07.
- Remaining large groups in `fesa.hpp` are Math/solver helpers, IO parser, MITC4 Element helpers, Assembly, Results/reference comparison, and Analysis workflow. `Vec3` arithmetic helpers also remain there until P1A-03 extracts Math.
Verification:
- First ran `python scripts/validate_workspace.py` after adding the direct module include test; it failed as expected because Core/Boundary/Load/Property/Util headers did not yet expose the required symbols.
- After extraction, `python scripts/validate_workspace.py` configured CMake, built `fesa_core`, `fesa_tests`, and `fesa_core_module_tests`, and ran CTest successfully.
- CTest result: 2 test executables passed.
Follow-up:
- Continue with P1A-03 Math and solver adapter extraction.
- Keep R-014 open until P1A-09 independently accepts the final architecture alignment.
### 2026-05-05 - P1A-01 module scaffold and facade completed
Author: Codex