1.9 KiB
1.9 KiB
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
Domainas 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
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.