56 lines
1.4 KiB
Markdown
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.
|