feat: add property model foundation
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# Step 0: property-base-contract
|
||||
|
||||
## Read First
|
||||
|
||||
Read these files before editing:
|
||||
|
||||
- `/AGENTS.md`
|
||||
- `/docs/PLAN.md`
|
||||
- `/docs/PROGRESS.md`
|
||||
- `/docs/WORKNOTE.md`
|
||||
- `/docs/AGENT_RULES.md`
|
||||
- `/docs/ARCHITECTURE.md`
|
||||
- `/docs/ADR.md`
|
||||
- `/docs/implementation-plans/domain-runtime-storage-implementation-plan.md`
|
||||
- `/include/fesa/property/ShellProperty.hpp`
|
||||
- `/include/fesa/core/Domain.hpp`
|
||||
- `/src/core/Domain.cpp`
|
||||
|
||||
## Task
|
||||
|
||||
Create `/docs/implementation-plans/property-model-foundation-implementation-plan.md`.
|
||||
|
||||
The plan must define the runtime property model contract:
|
||||
|
||||
- `Property` is the base class for element properties and sections.
|
||||
- `PropertyKind` identifies concrete property families; phase 1 supports only `Shell`.
|
||||
- `ShellProperty` derives from `Property`.
|
||||
- `Domain` owns property objects through RAII.
|
||||
- `Domain` validates duplicate property ids and missing material ids.
|
||||
- `Element::propertyId()` remains an id reference; elements do not own property objects.
|
||||
|
||||
Keep out of scope:
|
||||
|
||||
- shell section stiffness;
|
||||
- material constitutive matrices;
|
||||
- shear correction;
|
||||
- element formulation;
|
||||
- assembly, solver, HDF5 output, and reference comparison.
|
||||
|
||||
## Tests To Write First
|
||||
|
||||
- Documentation-only step. No C++ test is required in this step.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
```powershell
|
||||
python -m unittest discover -s scripts -p "test_*.py"
|
||||
```
|
||||
|
||||
## Verification Notes
|
||||
|
||||
1. Confirm the plan does not change MITC4 formulation or tolerance policy.
|
||||
2. Confirm the plan keeps solver state out of `Domain`.
|
||||
3. Update `phases/property-model-foundation/index.json` for this step result.
|
||||
Reference in New Issue
Block a user