2.0 KiB
2.0 KiB
Step 4: material-step-load-parser
Read First
Read these files before editing:
/AGENTS.md/docs/PRD.md/docs/ARCHITECTURE.md/docs/ADR.md/docs/io-definitions/abaqus-input-parser-io.md/src/fesa/model/material.hpp/src/fesa/model/analysis_step.hpp/src/fesa/model/boundary_condition.hpp/src/fesa/model/load.hpp/src/fesa/io/abaqus/input_parser.hpp/src/fesa/io/abaqus/input_parser.cpp
Review completed parser and model tests first.
Task
Extend the parser for the V0 material and history data subset.
Required behavior:
- Parse
*MATERIAL, NAME=<name>and*ELASTICdata into the internal material representation. If the currentMaterialmodel cannot store elastic data, add the smallest semantic extension with tests. - Parse
*STEPand*STATICinto orderedAnalysisStepdefinitions. - Parse
*BOUNDARYrows into step boundary conditions using existingDofComponentmapping. - Parse
*CLOADrows into step concentrated loads using existingDofComponentmapping. - Parse
*OUTPUT,*NODE OUTPUT, and*ELEMENT OUTPUTonly to the extent documented in the I/O contract. If semantic storage is not yet present, record an explicit ignored-with-warning diagnostic rather than inventing output model APIs.
Tests To Write First
Add focused C++ tests before production code:
- model tests for any new material or output request semantic fields;
- parser tests for material/elastic, step/static, boundary, and cload rows.
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 4 status with summary or a concrete error/blocked reason.
Forbidden
- Do not implement analysis execution, assembly, HDF5 writing, or reference comparison in this step.
- Do not mutate reference artifacts.