50 lines
1.4 KiB
Markdown
50 lines
1.4 KiB
Markdown
# Step 2: shell-property-polymorphism
|
|
|
|
## Read First
|
|
|
|
Read these files before editing:
|
|
|
|
- `/AGENTS.md`
|
|
- `/docs/AGENT_RULES.md`
|
|
- `/docs/implementation-plans/property-model-foundation-implementation-plan.md`
|
|
- `/include/fesa/property/Property.hpp`
|
|
- `/include/fesa/property/ShellProperty.hpp`
|
|
- `/src/property/ShellProperty.cpp`
|
|
- `/tests/property/shell_property_test.cpp`
|
|
|
|
## Task
|
|
|
|
Make `ShellProperty` derive from `Property`.
|
|
|
|
Required behavior:
|
|
|
|
- `ShellProperty::id()` overrides `Property::id()`.
|
|
- `ShellProperty::kind()` returns `PropertyKind::Shell`.
|
|
- `ShellProperty` keeps `materialId()` and `thickness()` accessors.
|
|
- Constructor still rejects `thickness <= 0.0`.
|
|
|
|
Rules:
|
|
|
|
- Do not rename `ShellProperty` in this phase.
|
|
- Do not add shell section stiffness.
|
|
- Do not add material lookup inside `ShellProperty`; Domain validates cross references.
|
|
|
|
## Tests To Write First
|
|
|
|
- Extend `/tests/property/shell_property_test.cpp`.
|
|
- Test `const Property& base = shell_property` exposes id and kind.
|
|
- Preserve positive-thickness validation tests.
|
|
|
|
## Acceptance Criteria
|
|
|
|
```powershell
|
|
ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R model-object
|
|
python scripts/validate_workspace.py
|
|
```
|
|
|
|
## Verification Notes
|
|
|
|
1. Run targeted CTest before production edits and confirm failure.
|
|
2. Keep `ShellProperty` free of solver state.
|
|
3. Update `phases/property-model-foundation/index.json` for this step result.
|