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

56 lines
1.4 KiB
Markdown

# 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:
```powershell
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.