2.2 KiB
2.2 KiB
Step 2: load-boundary-runtime-storage
Read First
Read these files before editing:
/AGENTS.md/docs/AGENT_RULES.md/docs/implementation-plans/domain-runtime-storage-implementation-plan.md/include/fesa/core/Domain.hpp/include/fesa/load/Load.hpp/include/fesa/load/NodalLoad.hpp/include/fesa/boundary/BoundaryCondition.hpp/include/fesa/boundary/SinglePointConstraint.hpp/src/core/Domain.cpp/tests/core/domain_storage_test.cpp/tests/core/domain_model_object_test.cpp
Task
Make runtime load and boundary objects the canonical Domain storage.
Required API shape:
std::size_t Domain::addLoad(std::unique_ptr<fesa::load::Load> load)const fesa::load::Load* Domain::findLoad(std::size_t index) const noexceptconst fesa::load::Load& Domain::load(std::size_t index) conststd::size_t Domain::loadCount() const noexceptstd::size_t Domain::addBoundaryCondition(std::unique_ptr<fesa::boundary::BoundaryCondition> boundary)const fesa::boundary::BoundaryCondition* Domain::findBoundaryCondition(std::size_t index) const noexceptconst fesa::boundary::BoundaryCondition& Domain::boundaryCondition(std::size_t index) conststd::size_t Domain::boundaryConditionCount() const noexcept
Rules:
- Reject null load and boundary pointers.
NodalLoadmust reference an existing node.SinglePointConstraintmust reference an existing node.- Duplicate
(node, dof)nodal loads must throw. - Duplicate
(node, dof)single-point constraints must throw. - Runtime load and boundary storage must not use
core::NodalLoadDefinitionorcore::BoundaryCondition.
Tests To Write First
- Rewrite or extend
/tests/core/domain_storage_test.cppso load and boundary storage uses runtime objects. - Add missing-node tests for
NodalLoadandSinglePointConstraintruntime insertion.
Acceptance Criteria
ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R "domain|model-object"
python scripts/validate_workspace.py
Verification Notes
- Run targeted CTest before production edits and confirm failure.
- Keep solver state out of
Domain. - Update
phases/domain-runtime-storage/index.jsonfor this step result.