140 lines
6.6 KiB
Markdown
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.
|