63 lines
1.9 KiB
Markdown
63 lines
1.9 KiB
Markdown
# Step 3: sets-and-section-properties
|
|
|
|
## Read First
|
|
|
|
Read these files before editing:
|
|
|
|
- `/AGENTS.md`
|
|
- `/docs/ARCHITECTURE.md`
|
|
- `/docs/ADR.md`
|
|
- `/docs/io-definitions/abaqus-input-parser-io.md`
|
|
- `/src/fesa/model/domain.hpp`
|
|
- `/src/fesa/model/element.hpp`
|
|
- `/src/fesa/model/property.hpp`
|
|
- `/src/fesa/io/abaqus/input_parser.hpp`
|
|
- `/src/fesa/io/abaqus/input_parser.cpp`
|
|
|
|
Review completed parser tests and phase summaries first.
|
|
|
|
## Task
|
|
|
|
Extend the model and parser only as needed to represent set membership and
|
|
section-to-property assignment for V0 bar/truss models.
|
|
|
|
Required behavior:
|
|
|
|
- Parse `*NSET, NSET=<name>` node membership rows.
|
|
- Parse `*ELSET, ELSET=<name>` element membership rows.
|
|
- Parse one V0 section keyword that assigns a material name to an element set.
|
|
Prefer the smallest section subset compatible with the current V0 element
|
|
path.
|
|
- Preserve deterministic member ordering as read, unless the I/O contract
|
|
explicitly states otherwise.
|
|
- Keep `Domain` as the owner of model definition data. Do not store equation ids
|
|
on nodes or elements.
|
|
|
|
## Tests To Write First
|
|
|
|
Add focused C++ tests before production code:
|
|
|
|
- a model test for any new set/section semantic model API;
|
|
- a parser test proving `*NSET`, `*ELSET`, and the selected section keyword map
|
|
into the semantic model.
|
|
|
|
Run targeted CTest and confirm the tests fail before implementation.
|
|
|
|
## Acceptance Criteria
|
|
|
|
```powershell
|
|
ctest --test-dir build/msvc-debug --output-on-failure -C Debug -R "(model_|abaqus_input_parser_)"
|
|
python -m unittest discover -s scripts -p "test_*.py"
|
|
python scripts/validate_workspace.py
|
|
```
|
|
|
|
## Verification Procedure
|
|
|
|
Update step 3 status with summary or a concrete error/blocked reason.
|
|
|
|
## Forbidden
|
|
|
|
- Do not parse materials beyond names needed for section linkage.
|
|
- Do not add loads, boundary conditions, or analysis steps.
|
|
- Do not generate or modify reference artifacts.
|