# Abaqus Input Subset ## Purpose This document defines the Abaqus `.inp` subset supported by FESA Phase 1. FESA aims for strict, explicit compatibility with a small subset rather than partial silent interpretation of the full Abaqus language. ## Source Basis - Abaqus input files use keyword lines, data lines, and comment lines; keyword and parameter names are case-insensitive, comma-separated, and may use continuation lines: https://abaqus-docs.mit.edu/2017/English/SIMACAEMODRefMap/simamod-c-inputsyntax.htm - Abaqus sets are a central reference mechanism for nodes and elements: https://abaqus-docs.mit.edu/2017/English/SIMACAEMODRefMap/simamod-c-inputsyntax.htm - Abaqus shell library documents S4 as a 4-node general-purpose shell and S4R as a reduced-integration shell with hourglass control: https://abaqus-docs.mit.edu/2017/English/SIMACAEELMRefMap/simaelm-r-shellgeneral.htm - Abaqus `*BOUNDARY` direct data lines use node or node set, first DOF, optional last DOF, and optional magnitude: https://abaqus-docs.mit.edu/2017/English/SIMACAEKEYRefMap/simakey-r-boundary.htm - Abaqus `*CLOAD` data lines use node or node set, DOF, and reference load magnitude: https://abaqus-docs.mit.edu/2017/English/SIMACAEKEYRefMap/simakey-r-cload.htm ## Phase 1 Supported Keywords | Keyword | Status | FESA Object | Notes | |---|---|---|---| | `*Node` | Supported | `Node` | 3D coordinates only | | `*Element` | Supported | `Element` | `TYPE=S4` maps to `MITC4` | | `*Nset` | Supported | `NodeSet` | Explicit list and `GENERATE` should be supported | | `*Elset` | Supported | `ElementSet` | Explicit list and `GENERATE` should be supported | | `*Material` | Supported | `Material` | `NAME` required | | `*Elastic` | Supported | `LinearElasticMaterial` | Isotropic `E, nu` only | | `*Shell Section` | Supported | `ShellProperty` | Homogeneous shell section only | | `*Boundary` | Supported | `FixBoundaryCondition` | Direct zero-valued constraints | | `*Cload` | Supported | `NodalLoad` | Concentrated forces/moments | | `*Step` | Supported | `StepDefinition` | Static linear Phase 1 step | | `*Static` | Accepted inside `*Step` | `LinearStaticAnalysis` | Optional for Phase 1 | | `*End Step` | Supported | Step delimiter | Required for explicit step closure | Unsupported keywords must produce a clear diagnostic unless explicitly listed as ignorable metadata. ## General Parser Rules FESA parser rules: - Keyword names and parameter names are case-insensitive. - Keyword lines start with `*`. - Comment lines start with `**` and are ignored. - Data fields are comma-separated. - Empty trailing fields may be ignored. - Numeric data may use decimal or scientific notation. - `D` exponents should be accepted and normalized as `E` exponents. - Keyword continuation with a trailing comma should be supported for keyword lines. - Data continuation should be supported only where this document explicitly allows it. - Abbreviated Abaqus keywords are not supported in Phase 1. Require exact keyword names after case normalization. - Include files through `INPUT=` are not supported in Phase 1. - Part/Assembly/Instance syntax is not supported in Phase 1 unless added by ADR. ## Labels and Names Rules: - Set and material labels are stored case-insensitively by default. - Preserve the original spelling for diagnostics and result metadata. - Labels must start with a letter unless quoted. - Quoted labels may be accepted, but Phase 1 should warn if quoting is required for disambiguation. - Labels beginning and ending with double underscores are reserved and should be rejected. ## `*Node` Supported form: ```text *Node node_id, x, y, z ``` Rules: - `node_id` is signed 64-bit integer. - Coordinates are `double`. - 2D node definitions are not supported for MITC4. - Duplicate node ids are an error. - Node ids need not be contiguous. ## `*Element` Supported form: ```text *Element, type=S4, elset=EALL element_id, n1, n2, n3, n4 ``` Rules: - `TYPE=S4` maps directly to FESA `MITC4`. - `TYPE=S4R` is not supported in Phase 1. It is reserved for future support. - Element and node ids are signed 64-bit integers. - Four node connectivity entries are required. - Duplicate element ids are an error. - Missing nodes are an error. - If `ELSET` is given, the element is added to that element set. - Element node ordering follows Abaqus shell ordering and determines the positive normal by right-hand rule. ## `*Nset` and `*Elset` Supported explicit form: ```text *Nset, nset=FIXED 1, 2, 3, 4 ``` Supported generated form: ```text *Elset, elset=EALL, generate 1, 100, 1 ``` Rules: - Explicit lists may span repeated data lines. - `GENERATE` means `start, end, increment`. - The increment must be positive. - Set references to other sets are not required in Phase 1. - `UNSORTED` is not required in Phase 1. - Duplicates should be deduplicated while preserving a deterministic order for diagnostics. - Missing referenced ids should be reported when the set is consumed by a property, load, or boundary condition. ## `*Material` and `*Elastic` Supported form: ```text *Material, name=STEEL *Elastic E, nu ``` Rules: - Only isotropic linear elasticity is supported in Phase 1. - Temperature dependence, field-variable dependence, orthotropic elasticity, plasticity, density, and damping are unsupported. - `E` must be positive. - `nu` must be in a physically meaningful isotropic range. For Phase 1, reject `nu <= -1.0` or `nu >= 0.5`. ## `*Shell Section` Supported form: ```text *Shell Section, elset=EALL, material=STEEL thickness ``` Rules: - `ELSET` and `MATERIAL` are required. - Homogeneous single-layer shell sections only. - Thickness is `double` and must be positive. - Offsets, composite layups, section integration controls, orientations, temperature-dependent sections, and transverse shear stiffness overrides are unsupported in Phase 1. - Thermal-stress coupling is a future feature and must not be inferred from Phase 1 section data. ## `*Boundary` Supported direct form: ```text *Boundary node_or_nset, first_dof, last_dof, magnitude ``` Rules: - `node_or_nset` may be a node id or node set label. - DOFs are `1..6`. - If `last_dof` is omitted, constrain only `first_dof`. - Phase 1 supports zero-valued constraints. Omitted magnitude means zero. - Nonzero prescribed displacement/rotation is not a Phase 1 requirement. - Type-format boundary labels such as `PINNED`, `XSYMM`, or `ENCASTRE` are not supported unless later documented. - Constrained DOFs are eliminated by `DofManager`. ## `*Cload` Supported form: ```text *Cload node_or_nset, dof, magnitude ``` Rules: - `node_or_nset` may be a node id or node set label. - DOFs are `1..6`. - Translational DOFs define concentrated forces. - Rotational DOFs define concentrated moments. - `FOLLOWER`, `AMPLITUDE`, `OP=NEW`, file-based loads, buoyancy/drag/inertia loads, and cyclic symmetry loads are unsupported in Phase 1. ## `*Step`, `*Static`, and `*End Step` Supported form: ```text *Step, name=Step-1 *Static *Cload ... *Boundary ... *End Step ``` Rules: - Phase 1 supports linear static steps. - `NLGEOM` is ignored only if explicitly false or absent. `NLGEOM=YES` must be rejected until nonlinear analysis is implemented. - Multiple steps may be parsed into `Domain`, but Phase 1 execution may initially support one active static step if documented in implementation steps. - Step activation should feed `AnalysisModel`. ## Diagnostics Required parser diagnostics: - Unknown keyword. - Unsupported keyword parameter. - Missing required parameter. - Duplicate node, element, material, property, or set definition. - Missing node in element connectivity. - Missing set used by shell section, boundary, or load. - Unsupported element type such as `S4R`. - Unsupported material or shell section mode. - Invalid DOF number. - Invalid generated set range. Diagnostic messages should include file path, line number, keyword, and offending token. ## Explicit Non-Goals - Abaqus `Part`, `Assembly`, `Instance`, and instance-qualified labels. - `*Include`. - `S4R`, `S4R5`, `S8R`, triangular shells, solid elements, beam elements. - Pressure loads. - RBE2/RBE3. - Nonzero prescribed displacements. - Amplitudes. - Local coordinate transforms. - Composite shell sections. - Thermal-stress input. - Mesh quality diagnostics.