Fortran User Material Interface

Overview

Procedures UMAT, UHYPER, and UANISOHYPER_INV are called for user defined materials defining the mechanical, hyperelastic, or anisotropic hyperelastic material responses, respectively. Regardles of the interface procedure used, a fortran compiler must be available for Matmodlab to compile and link user procedures.

Invoking User Materials

User defined materials are invoked using the same MaterialPointSimulator.Material factory method as other materials, but with additional required and optional arguments.

Required MaterialPointSimulator.Material Agruments

  • The model argument must be set to user
  • The parameters must be a ndarray of model constants (specified in the order expected by the model).
  • source_files, a list of model source files. The source files must exist and be readable on the file system.

Optional MaterialPointSimulator.Material Arguments

  • source_directory, is a directory containing source files.
  • param_names, is a list of parameter names in the order expected by the model. If given, parameters must be given as dict of name:value pairs as for builtin models.
  • depvar, is the number of state dependent variables required for the model. Can also be specified as a list of state dependent variable names, specified in the order expected by the model. If given as a list, the number of state variables allocated is inferred from its length. Matmodlab allocates storage for the depvar state dependent variables and initializes their values to 0.
  • behavior, is a string specifying the type of model. Must be one of “mechanical” (default), “hyperelastic”, or “anisohyper”.
  • cmname, is a string giving is the constitutive model name.
  • ordering, is a list of symbolic constants specifying the ordering of second-order symmetric tensors. The default ordering of symmetric second-order tensor components is XX, YY, ZZ, XY, YZ, XZ. The ordering argument can be used to change the ordering to be consistent with the assumptions of the material model.

Example

mps = MaterialPointSimulator('user_material')
parameters = np.array([135e9, 53e9, 200e6])
mps.Material('user', parameters)

Abaqus Users:

Setting the model name to one of “umat”, “uhyper”, or “uanisohyper_inv” is equivalient to model=user”, with behavior=mechanical”, behavior=hyperelastic”, or behavior=anisohyperelastic”, respectively, and ordering=(XX, YY, ZZ, XY, XZ, YZ).

Compiling Fortran Sources

Matmodlab compiles and links material model sources using f2py.