53 lines
1.4 KiB
Markdown
53 lines
1.4 KiB
Markdown
# Step 1: property-base-interface
|
|
|
|
## Read First
|
|
|
|
Read these files before editing:
|
|
|
|
- `/AGENTS.md`
|
|
- `/docs/AGENT_RULES.md`
|
|
- `/docs/implementation-plans/property-model-foundation-implementation-plan.md`
|
|
- `/include/fesa/core/ModelTypes.hpp`
|
|
- `/include/fesa/property/ShellProperty.hpp`
|
|
- `/tests/property/shell_property_test.cpp`
|
|
- `/CMakeLists.txt`
|
|
|
|
## Task
|
|
|
|
Add the runtime property base interface.
|
|
|
|
Required API:
|
|
|
|
- File: `/include/fesa/property/Property.hpp`
|
|
- Namespace: `fesa::property`
|
|
- `enum class PropertyKind { Shell };`
|
|
- `class Property`
|
|
- virtual destructor;
|
|
- `virtual PropertyId id() const noexcept = 0;`
|
|
- `virtual PropertyKind kind() const noexcept = 0;`
|
|
|
|
Rules:
|
|
|
|
- Use `fesa::core::PropertyId`.
|
|
- Do not add section stiffness or material behavior.
|
|
- Keep this header independent from HDF5, MKL, TBB, and parser headers.
|
|
|
|
## Tests To Write First
|
|
|
|
- Add `/tests/property/property_base_test.cpp`.
|
|
- Test that a small derived class can be used through `const Property&`.
|
|
- Test virtual deletion through `std::unique_ptr<Property>`.
|
|
|
|
## 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 implementation and confirm the expected compile failure.
|
|
2. Keep all code C++17/MSVC-compatible.
|
|
3. Update `phases/property-model-foundation/index.json` for this step result.
|