Abaqus UMAT and UHYPER Migration Boundary¶
What “compatible” should mean¶
AgentFEM should not advertise arbitrary Abaqus user subroutines as directly portable merely because their Fortran entry-point names are known. A credible bridge must preserve the material-point contract:
- old and new deformation gradients, time, temperature, field variables, properties, and state variables enter one update;
- the update returns Cauchy stress, updated state, energy, and an algorithmic tangent in a declared tensor convention;
- the global nonlinear driver stores state at quadrature points, commits it only after a converged increment, and uses the returned tangent consistently;
- one-point, one-element, and full load-path comparisons establish equivalence.
constitutive.user_material now records this solver-neutral boundary. It is an
interface contract, not an executable Abaqus runtime.
Why UHYPER is the first practical bridge¶
UHYPER is narrower than UMAT. It describes isotropic hyperelastic energy and its derivatives with respect to invariants. That maps naturally to AgentFEM/UFL energy formulations and has no general inelastic stress-history algorithm to reproduce. A first adapter can therefore:
- compile a restricted UHYPER routine into a shared library;
- call it at selected invariants;
- map the returned energy derivatives into an AgentFEM constitutive law;
- compare stress and tangent over prescribed deformation paths;
- validate a single finite element before a periodic cell.
Why UMAT requires a constitutive driver¶
UMAT is a stateful integration algorithm. Abaqus calls it at every material
point and expects updated Cauchy stress, STATEV, and DDSDDE. A useful bridge
therefore requires more than a Python wrapper:
- quadrature-point storage for stress and state variables;
- trial/commit/rollback semantics across Newton iterations;
- Abaqus tensor ordering and engineering-shear conversion;
- finite-rotation and objective-rate conventions;
- the exact meaning of the old/new deformation gradients;
- handling of time-step suggestions and possibly nonsymmetric tangents;
- explicit policy for Abaqus utility calls, includes, orientations, thermal coupling, and element-dependent modified deformation gradients.
A routine limited to the standard arguments, PROPS, and STATEV is a
reasonable first migration target. Routines that call Abaqus utilities or
depend on solver internals need source-level adaptation and cannot be promised
as drop-in compatible.
Progressive implementation route¶
| Stage | Deliverable | Evidence gate |
|---|---|---|
| 0 | Solver-neutral material-point input/output contract | validation tests |
| 1 | UHYPER energy adapter | deformation-path stress/tangent comparison |
| 2 | Quadrature state, trial/commit/rollback | one-element inelastic test |
| 3 | Restricted UMAT shared-library adapter | identical material-point paths |
| 4 | Global nonlinear integration | one-element and benchmark agreement |
| 5 | Wider Abaqus conventions and utilities | capability matrix per routine |
The important architectural decision is that AgentFEM's global solver consumes the neutral material-point protocol. Native Python/C++ materials and Abaqus adapters become alternative providers behind the same boundary. This avoids making the public model language depend on Abaqus, while preserving a realistic route for valuable user-material libraries.