feat: start abaqus input parser
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# Step 0: io-contract
|
||||
|
||||
## Read First
|
||||
|
||||
Read these files before editing:
|
||||
|
||||
- `/AGENTS.md`
|
||||
- `/docs/PRD.md`
|
||||
- `/docs/ARCHITECTURE.md`
|
||||
- `/docs/ADR.md`
|
||||
- `/docs/SOLVER_AGENT_DESIGN.md`
|
||||
- `/docs/io-definitions/README.md`
|
||||
|
||||
## Task
|
||||
|
||||
Create the feature-level I/O contract for the Abaqus input parser at
|
||||
`/docs/io-definitions/abaqus-input-parser-io.md`.
|
||||
|
||||
The contract must explicitly state that FESA supports only the documented
|
||||
Abaqus keyword subset, not full Abaqus compatibility. Keep this document at a
|
||||
semantic level. Do not design C++ APIs and do not implement parser code in this
|
||||
step.
|
||||
|
||||
Required scope:
|
||||
|
||||
- Model data keywords: `*HEADING`, `*NODE`, `*ELEMENT`, `*NSET`, `*ELSET`,
|
||||
`*MATERIAL`, `*ELASTIC`, and section keywords needed for V0 bar/truss use.
|
||||
- History data keywords: `*STEP`, `*STATIC`, `*BOUNDARY`, `*CLOAD`,
|
||||
`*OUTPUT`, `*NODE OUTPUT`, and `*ELEMENT OUTPUT`.
|
||||
- Syntax policy for comments beginning with `**`, case-insensitive keywords,
|
||||
comma-separated parameters and data, blank lines, unsupported keywords, and
|
||||
parse diagnostics.
|
||||
- Internal semantic mapping to `Domain`, nodes, elements, sets, materials,
|
||||
properties, `AnalysisStep`, boundary conditions, loads, and output requests.
|
||||
- HDF5 and reference CSV comparison schema summary consistent with existing
|
||||
PRD/architecture documents. Do not create or modify reference artifacts.
|
||||
|
||||
## Tests To Write First
|
||||
|
||||
No C++ tests are required in this documentation-only step.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
```powershell
|
||||
python -m unittest discover -s scripts -p "test_*.py"
|
||||
python scripts/validate_workspace.py
|
||||
```
|
||||
|
||||
## Verification Procedure
|
||||
|
||||
1. Run the acceptance criteria commands.
|
||||
2. Confirm the contract does not claim full Abaqus compatibility.
|
||||
3. Confirm every supported keyword has purpose, data requirements, mapping, and
|
||||
unsupported-case behavior.
|
||||
4. Update `phases/abaqus-input-parser/index.json` step 0:
|
||||
- success: `"status": "completed"`, `"summary": "Abaqus input parser I/O contract added"`
|
||||
- error after three attempts: `"status": "error"`, `"error_message": "<specific error>"`
|
||||
- blocked: `"status": "blocked"`, `"blocked_reason": "<specific reason>"`
|
||||
|
||||
## Forbidden
|
||||
|
||||
- Do not implement parser code.
|
||||
- Do not design C++ APIs.
|
||||
- Do not run Abaqus, Nastran, or any reference solver.
|
||||
- Do not generate or modify Abaqus reference CSV files.
|
||||
Reference in New Issue
Block a user