fix: add abaqus uel wrapper contract
This commit is contained in:
@@ -54,7 +54,7 @@ The wrapper must keep `aba_param.inc` / `ABA_PARAM.INC` as an Abaqus/Standard in
|
||||
| `MCRD` | `>= 3` | read only `COORDS(1:3,1:2)` |
|
||||
| `NPROPS` | `9` | reject anything else |
|
||||
| `NJPROP` | `0` | first scope uses no integer properties |
|
||||
| `NSVARS` | `0` | first scope stores no persistent state |
|
||||
| `NSVARS` | `>= 1` | Abaqus `*USER ELEMENT` state-variable allocation must be positive; first scope leaves allocated `SVARS` entries unchanged |
|
||||
| `NRHS` | `1` | reject multi-RHS procedures |
|
||||
| `MLVARX` | `>= 12` | required for `RHS(1:12,1)` and `DU(1:12,1)` addressing |
|
||||
| `NDLOAD` | `0` | element-generated distributed loads are unsupported |
|
||||
@@ -137,7 +137,7 @@ The reference model plan should use this `.inp` subset.
|
||||
| `*ELEMENT` | supported | `TYPE=U1` or the approved user element type, optional `ELSET` | two-node UEL connectivity | connectivity order defines local axis 1 |
|
||||
| `*ELSET` | supported | `ELSET` | element set | needed for `*UEL PROPERTY` |
|
||||
| `*NSET` | supported | `NSET` | node set | recommended for BC/load/output selection |
|
||||
| `*USER ELEMENT` | supported | `TYPE=U1`, `NODES=2`, `COORDINATES=3`, `PROPERTIES=9`, `VARIABLES=0` | UEL declaration | omit `UNSYMM`; omit `I PROPERTIES` |
|
||||
| `*USER ELEMENT` | supported | `TYPE=U1`, `NODES=2`, `COORDINATES=3`, `PROPERTIES=9`, `VARIABLES=1` | UEL declaration | omit `UNSYMM`; omit `I PROPERTIES`; `SVARS(1)` is unused |
|
||||
| `*UEL PROPERTY` | supported | `ELSET` | real property assignment | data order is `PROPS(1:9)` |
|
||||
| `*BOUNDARY` | supported | standard nodal DOF constraints | essential boundary conditions | DOFs 1-6 allowed |
|
||||
| `*CLOAD` | supported | standard nodal concentrated load | external nodal loads/moments | loads are assembled by Abaqus outside UEL |
|
||||
@@ -161,7 +161,7 @@ Unsupported in first scope:
|
||||
The reference input deck should declare the user element with this logical content:
|
||||
|
||||
```text
|
||||
*USER ELEMENT, TYPE=U1, NODES=2, COORDINATES=3, PROPERTIES=9, VARIABLES=0
|
||||
*USER ELEMENT, TYPE=U1, NODES=2, COORDINATES=3, PROPERTIES=9, VARIABLES=1
|
||||
1, 2, 3, 4, 5, 6
|
||||
```
|
||||
|
||||
@@ -183,11 +183,11 @@ Line breaks may follow Abaqus input formatting rules, but the logical property o
|
||||
| --- | --- | --- |
|
||||
| `RHS(MLVARX,*)` | output | Initialize requested storage to zero every call; for supported residual requests, set `RHS(1:12,1) = -K_global*U(1:12)`. |
|
||||
| `AMATRX(NDOFEL,NDOFEL)` | output | Initialize all `12x12` entries to zero every call; for supported stiffness requests, set all entries to `K_global`. |
|
||||
| `SVARS(*)` | input/output | unused; require `NSVARS=0`; do not store diagnostics in first scope. |
|
||||
| `SVARS(*)` | input/output | unused; require `NSVARS>=1` for Abaqus keyword compatibility; do not store diagnostics in first scope. |
|
||||
| `ENERGY(8)` | input/output | set `ENERGY(1:8)=0.0` every supported call; do not use as validation evidence in first scope. |
|
||||
| `NDOFEL` | input | must equal `12`. |
|
||||
| `NRHS` | input | must equal `1`. |
|
||||
| `NSVARS` | input | must equal `0`. |
|
||||
| `NSVARS` | input | must be at least `1`. |
|
||||
| `PROPS(*)` | input | must contain the 9 real values defined above. |
|
||||
| `NPROPS` | input | must equal `9`. |
|
||||
| `COORDS(MCRD,NNODE)` | input | read `COORDS(1:3,1)` and `COORDS(1:3,2)` as original global node coordinates. |
|
||||
@@ -218,6 +218,8 @@ The first-scope wrapper supports only small-displacement static calls:
|
||||
|
||||
- require `LFLAGS(2)=0`
|
||||
- support `LFLAGS(3)=1`, `2`, or `5`
|
||||
- require `LFLAGS(1)=1` or `2` for static procedure calls
|
||||
- require `LFLAGS(4)=0` for general-step behavior, not perturbation-only output
|
||||
- require `NRHS=1`
|
||||
|
||||
Contribution rules:
|
||||
@@ -242,7 +244,7 @@ Invalid input must be caught before matrix assembly. The implementation may choo
|
||||
| `UEL3DEB-E003` | `MCRD < 3` | fatal missing 3D coordinates |
|
||||
| `UEL3DEB-E004` | `NPROPS /= 9` | fatal wrong real property count |
|
||||
| `UEL3DEB-E005` | `NJPROP /= 0` | fatal unsupported integer properties |
|
||||
| `UEL3DEB-E006` | `NSVARS /= 0` | fatal unsupported state variables |
|
||||
| `UEL3DEB-E006` | `NSVARS < 1` | fatal missing Abaqus state-variable allocation |
|
||||
| `UEL3DEB-E007` | `NRHS /= 1` | fatal unsupported RHS count |
|
||||
| `UEL3DEB-E008` | `MLVARX < 12` | fatal invalid RHS/DU leading dimension |
|
||||
| `UEL3DEB-E009` | any required coordinate, `U`, or `PROPS` value is NaN or infinite | fatal nonfinite input |
|
||||
@@ -253,6 +255,8 @@ Invalid input must be caught before matrix assembly. The implementation may choo
|
||||
| `UEL3DEB-E014` | `LFLAGS(2) /= 0` | fatal unsupported large-displacement or non-small-displacement request |
|
||||
| `UEL3DEB-E015` | unsupported `LFLAGS(3)` | fatal unsupported contribution request |
|
||||
| `UEL3DEB-E016` | `NDLOAD /= 0` | fatal unsupported element load input |
|
||||
| `UEL3DEB-E017` | `LFLAGS(1)` is not `1` or `2` | fatal unsupported non-static procedure request |
|
||||
| `UEL3DEB-E018` | `LFLAGS(4) /= 0` | fatal unsupported perturbation-output request |
|
||||
|
||||
For valid supported calls, the wrapper should set deterministic outputs for the requested contribution and should not modify `PNEWDT`.
|
||||
|
||||
@@ -358,7 +362,7 @@ Each external reference model must include metadata fields sufficient for `scrip
|
||||
### Reference Model Agent
|
||||
|
||||
- Use the keyword subset and property order in this document for `model.inp` examples.
|
||||
- Include no-Abaqus tests for exact `PROPS(1:9)` mapping, `NJPROP=0`, `NSVARS=0`, `NDOFEL=12`, `NNODE=2`, and active DOF order.
|
||||
- Include no-Abaqus tests for exact `PROPS(1:9)` mapping, `NJPROP=0`, `NSVARS>=1`, `NDOFEL=12`, `NNODE=2`, and active DOF order.
|
||||
- Include negative tests for every `UEL3DEB-E###` validation rule that is practical in the no-Abaqus harness.
|
||||
- Define benchmark-specific CSV filenames and near-zero absolute reaction tolerances.
|
||||
- Keep external artifact generation outside this repository.
|
||||
|
||||
Reference in New Issue
Block a user