2.0 KiB
2.0 KiB
Step 6: boundary-load-step-storage
Read First
Read these files before editing:
/AGENTS.md/docs/AGENT_RULES.md/docs/ADR.md/docs/ARCHITECTURE.md/docs/implementation-plans/domain-model-foundation-implementation-plan.md/include/fesa/core/Domain.hpp/include/fesa/core/ModelTypes.hpp/tests/core/domain_storage_test.cpp
Task
Add boundary condition, nodal load, and analysis step definition storage.
Allowed files:
- Create
/include/fesa/core/BoundaryCondition.hpp - Create
/include/fesa/core/LoadDefinition.hpp - Create
/include/fesa/core/StepDefinition.hpp - Modify
/include/fesa/core/Domain.hpp - Modify
/src/core/Domain.cpp - Modify
/tests/core/domain_storage_test.cpp
Required behavior:
- A boundary condition stores node id, constrained
Dof, and prescribed value. - A nodal load stores node id,
Dof, and value. - A linear static step definition stores step id, name, boundary condition indices or ids, and load indices or ids.
- Adding BC/load for a missing node throws
std::invalid_argument. - Duplicate step ids throw
std::invalid_argument. - Stored BCs, loads, and steps are returned as const data.
Tests To Write First
Write failing tests before production changes:
- Add and retrieve a boundary condition on an existing node.
- Add and retrieve a nodal load on an existing node.
- Missing-node BC/load throws.
- Add a linear static step referencing stored BC/load entries.
- Duplicate step id throws.
Run targeted CTest and verify RED before implementation.
Acceptance Criteria
Run:
cmake --build build/msvc-debug --config Debug
ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R domain
python scripts/validate_workspace.py
Update /phases/domain-model-foundation/index.json step 6 with completed, error, or blocked.
Do Not
- Do not apply boundary conditions to matrices.
- Do not compute reactions.
- Do not add solver state, displacements, equation ids, or sparse matrix behavior.