# 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//frames//field_outputs/U` | nodal | `U1`, `U2`, `U3` as applicable | | reaction | `/steps//frames//field_outputs/RF` | nodal | `RF1`, `RF2`, `RF3` as applicable | | internal force | `/steps//frames//field_outputs/element_forces` | element | feature-specific | | stress | `/steps//frames//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//`. 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: - `_displacements.csv` - `_reactions.csv` - `_internalforces.csv` - `_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.inp`, but this phase must not create or modify Abaqus reference CSV artifacts.