Files
FESADev/phases/domain-model-foundation/step6.md
T
2026-06-08 16:40:04 +09:00

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.