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

140 lines
6.6 KiB
Markdown

# Abaqus Input Parser I/O Definition
## Metadata
- feature_id: abaqus-input-parser
- status: ready-for-implementation-planning
- owner_agent: io-definition-agent
- date: 2026-06-12
## Abaqus Input Scope
FESA supports only the Abaqus input keyword subset listed here. This document
does not claim full Abaqus compatibility.
| keyword | support_status | level | required_parameters | mapped_internal_concept | unsupported-case behavior |
| --- | --- | --- | --- | --- | --- |
| `*HEADING` | supported | model | none | model title metadata | accepted; title storage may be deferred |
| `*NODE` | supported | model | none | node id and global coordinates | malformed rows are errors |
| `*ELEMENT` | supported | model | `TYPE` | element id, topology, connectivity | missing/unsupported `TYPE` is an error |
| `*NSET` | supported | model | `NSET` | named node set | missing name is an error |
| `*ELSET` | supported | model | `ELSET` | named element set | missing name is an error |
| `*MATERIAL` | supported | model | `NAME` | material identity | missing name is an error |
| `*ELASTIC` | supported | model | none | linear elastic constants | malformed rows are errors |
| section keyword | supported | model | `ELSET`, `MATERIAL` | property assignment | unsupported section type is an error |
| `*STEP` | supported | history | optional `NAME` | analysis step | malformed parameters are errors |
| `*STATIC` | supported | history | none | static procedure marker | unsupported procedures are errors |
| `*BOUNDARY` | supported | model/history | none | prescribed nodal dof values | malformed rows are errors |
| `*CLOAD` | supported | history | none | concentrated nodal load | malformed rows are errors |
| `*OUTPUT` | supported | history | none | output request root | unsupported options warn or error by context |
| `*NODE OUTPUT` | supported | history | none | nodal output request | unsupported quantities warn or error by context |
| `*ELEMENT OUTPUT` | supported | history | none | element output request | unsupported quantities warn or error by context |
Initial V0 element names are two-node line/bar types only: `T2D2`, `T3D2`,
`C3D2`, and `B31`.
## Syntax Policy
- Keywords and parameter names are case-insensitive.
- Keyword lines begin with `*`.
- Comment lines begin with `**` and are ignored.
- Blank lines are ignored.
- Fields are comma-separated. Leading and trailing whitespace around fields is
ignored.
- Empty required fields are parse errors.
- Unsupported keywords are errors unless this contract explicitly marks them as
ignored-with-warning.
- Diagnostics must include severity, a stable code, a human-readable message,
and enough line context to locate the input row.
- Include files are out of scope for this parser phase.
## Model Data Mapping
- Nodes map an Abaqus node label to a FESA node id and three global coordinate
components. Missing trailing coordinate components are interpreted as `0.0`
only when the keyword-specific test documents that behavior.
- Elements map an Abaqus element label, supported element type, and connectivity
labels to a FESA element. Section assignment supplies material/property
linkage in a later parser slice.
- Node sets and element sets preserve deterministic membership order.
- Materials map by Abaqus `NAME`. Linear elastic data maps to the semantic
material contract used by solver implementation.
- Section keywords bind an element set to a material and create the semantic
property assignment needed by the solver.
- The global coordinate system is assumed. Units are user-consistent and are not
converted by the parser.
## History Data Mapping
- `*STEP` begins an ordered analysis step. If no name is provided, the parser
assigns a deterministic step name or id.
- `*STATIC` marks the step as a linear static procedure for V0.
- `*BOUNDARY` maps node id, dof range, and value to prescribed boundary
conditions.
- `*CLOAD` maps node id, dof component, and magnitude to concentrated loads.
- Output request keywords define requested quantities when semantic storage
exists; unsupported quantities must not be silently accepted.
## Internal Model Contract
- `Domain` owns model definition data created from the input file.
- Parsed model objects should be treated as immutable after parsing where
practical.
- `AnalysisStep` owns step-local boundary conditions and loads.
- The parser must not store equation ids on nodes or elements.
- Parser diagnostics are part of the result; callers do not need to inspect
partial `Domain` state to detect failure.
## Output HDF5 Schema
The parser itself does not write HDF5. Solver output remains authoritative in
`results.h5` and follows the project HDF5 contract:
| quantity | dataset_path | location | component policy |
| --- | --- | --- | --- |
| displacement | `/steps/<step>/frames/<frame>/field_outputs/U` | nodal | `U1`, `U2`, `U3` as applicable |
| reaction | `/steps/<step>/frames/<frame>/field_outputs/RF` | nodal | `RF1`, `RF2`, `RF3` as applicable |
| internal force | `/steps/<step>/frames/<frame>/field_outputs/element_forces` | element | feature-specific |
| stress | `/steps/<step>/frames/<frame>/field_outputs/S` | integration point or element | feature-specific |
Required metadata includes schema version, model id, source input identity,
coordinate system, units policy, solver version, step/frame identity, and row
identity fields.
## FESA HDF5 To Reference CSV Comparison Schema
Reference comparison reads `results.h5` and matches deterministic rows against
Abaqus-generated CSV files under `reference/<model-id>/`. This parser phase does
not generate or modify those reference artifacts.
Common row identity:
- sort order: step, frame, entity id, location, component
- node id and element id are Abaqus labels preserved by the parser
- component names follow the HDF5 component policy
CSV files remain:
- `<model-id>_displacements.csv`
- `<model-id>_reactions.csv`
- `<model-id>_internalforces.csv`
- `<model-id>_stresses.csv`
## Validation Rules
- Duplicate node, element, material, property, set, or step labels are errors.
- Missing references are errors.
- Unsupported keywords are errors unless explicitly documented otherwise.
- Malformed numeric fields are errors.
- Parser unit tests must cover valid subset mapping and invalid subset
diagnostics before production parser changes.
- Workspace validation remains `python scripts/validate_workspace.py`.
## Downstream Handoff
Implementation planning should split work into mesh keyword parsing,
diagnostics, set/section mapping, material/history mapping, and integration
validation. Reference model work may later use this subset to prepare
`reference/<model-id>/model.inp`, but this phase must not create or modify
Abaqus reference CSV artifacts.