Files
FESADev/phases/analysis-model-objects/step4.md
T
2026-06-09 09:04:21 +09:00

1.4 KiB

Step 4: material-base-interface

Read First

Read these files before editing:

  • /AGENTS.md
  • /docs/AGENT_RULES.md
  • /docs/ARCHITECTURE.md
  • /docs/implementation-plans/analysis-model-objects-implementation-plan.md
  • /include/fesa/core/MaterialDefinition.hpp

Task

Add material model base and linear elastic material model object.

Allowed files:

  • Create /include/fesa/material/Material.hpp
  • Create /include/fesa/material/LinearElasticMaterial.hpp
  • Create /src/material/LinearElasticMaterial.cpp
  • Create /tests/material/material_base_test.cpp
  • Modify /CMakeLists.txt

Required behavior:

  • Material has virtual destructor and MaterialId id() const noexcept.
  • LinearElasticMaterial derives from Material.
  • Stores Young's modulus and Poisson ratio.
  • No constitutive matrix or stress update in this phase.

Tests To Write First

Write /tests/material/material_base_test.cpp before production changes:

  • Access LinearElasticMaterial through const Material&.
  • Verify id, E, and nu.
  • Verify deletion through std::unique_ptr<Material>.

Run targeted build and confirm RED.

Acceptance Criteria

Run:

python scripts/validate_workspace.py
ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R model-object

Update step 4 status.

Do Not

  • Do not implement constitutive matrices, stress updates, or tangent stiffness.