Repository navigation
Add LSDynaUMATTarget backend #4
Copy link
Copy link
Open
Description
Goal
Generate an LS-DYNA user material subroutine. LS-DYNA uses Fortran-callable umatNN entry points (one per material model number, 41–50 are user-defined slots) with yet-another convention.
LS-DYNA UMAT signature (umat41 / umat42 / ... / umat50)
Per the LS-DYNA User-Defined Materials manual:
extern "C" void umat41_(
double *cm, // (lmc) material constants
double *eps, // (nlq, 6) strain increment, block-major
double *sig, // (nlq, 6) stress, in/out
double *epsp, // effective plastic strain (scalar) [for some models]
double *hsv, // (nlq, nhv) history variables
double *dt1siz, // (nlq) timestep size
double *capa, // (nlq, ...) auxiliary
char *etype, // element type tag
double *tt, // current time
double *temps, // temperatures
int *failel, // failure flag
double *cma, // additional material constants
int *qmat); // material model variantBlock-major layout like Abaqus VUMAT, but different convention details:
| Abaqus UMAT | LS-DYNA umatNN | |
|---|---|---|
| Component order (3D) | {11, 22, 33, 12, 13, 23} | {11, 22, 33, 12, 23, 13} (same as ANSYS!) |
| Shear strain | engineering | engineering |
| Strain measure | total + increment | increment only |
| Layout | per-point | block (nlq points) |
| Material constants | PROPS array | cm array (positional) |
| History | STATEV flat | hsv per-point |
| Tangent | required (DDSDDE) | not used (explicit) |
Notable
LS-DYNA is explicit-only by default for user materials (no tangent required). The codegen can skip OutputRole::ConsistentTangent for this target — same simplification as VUMAT.
LS-DYNA component order matches ANSYS — so the Voigt machinery from #3 carries over.
What to emit
targets/lsdyna_umat.hwithLSDynaUMATTarget.extern \"C\"entry point named after the user-material slot number (configurable via target constructor:LSDynaUMATTarget(slot=42)).- Block-major iteration like VUMAT (Add AbaqusVUMATTarget backend (vectorized UMAT) #2).
Acceptance criteria
- Smoke test against LinearElasticShear.
- Test that emits with configurable slot number (e.g.
umat41_vsumat45_). - Voigt machinery shared with ANSYS path.
Dependencies
- Add AbaqusUMATTarget backend #1 first (general Voigt boundary).
- Add AnsysUSERMATTarget backend #3 (ANSYS) shares the component-order convention; either could precede.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
petlenz commentedon May 31, 2026
Tracked as Phase 6 of the NumSim compiler epic #28. Unblocks once Phase 3b (#35) lands; share UMAT scaffolding with #2 / #3.