221 lines
8.1 KiB
Markdown
221 lines
8.1 KiB
Markdown
# 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.
|