Files
FESADev/phases/abaqus-input-parser/step3.md
T
2026-06-12 17:15:05 +09:00

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 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

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.