- constant_propertiesConstant mechanical and thermal material properties (PROPS)
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Constant mechanical and thermal material properties (PROPS)
- num_state_varsThe number of state variables this UMAT is going to use
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:The number of state variables this UMAT is going to use
- pluginUEL plugin file
C++ Type:FileName
Unit:(no unit assumed)
Controllable:No
Description:UEL plugin file
AbaqusUserElement
Coupling UserObject to use Abaqus UEL plugins in MOOSE
Description
The AbaqusUserElement
user object is used to execute Abaqus UEL plugins that users code with the purpose of building finite element kinematics (i.e. interpolation functions), numerical treatments (e.g. locking correction), Jacobian of the forces with respect to the displacements and the forces themselves. These plug-ins can be coded in Fortran (.f
and .f90
file extensions) or C/C++ (.c
and .C
file extensions) and can be located in the plugins
directory of the app or another appropriate directory such as examples
.
Note that one can combine a UEL routine with UMAT routines such that the UEL coder is responsible for calling a UMAT routine compiled within the same plugin.
When state variables are needed, the user is responsible for prescribing them in the input files via num_state_vars =
in the AbaqusUserElement
user object.
Various forms of verification of this interface have been carried out. The most general is that defined by a beam subjected to external loading. The internal forces are a function of strain-dependent state variables and two external fields that vary spatially. Results between a UEL of triangular elements and the corresponding model set up in MOOSE with a call to an equivalent UMAT routine match to a relative tolerance of .
The input file that calls the UEL does so from the AbaqusUserElement
block:
The equivalent input file that performs all the setup in MOOSE, except the computation of internal forces, uses the AbaqusUMATStress
plugin.
Interface
The UEL plugin entry function signature is defined in the AbaqusUserElement.h
header file
Output parameters
The UEL routine sets RHS
, AMATRX
, SVARS
, ENERGY
, and PNEWDT
RHS
is the residual contribution for the DOFs associated with the current elementAMATRX
are the Jacobian contributions for the DOFs associated with the current elementSVARS
are stateful properties (persistent across timesteps) that are managed by the user object similar to stateful material properties in MOOSEENERGY
array of 6 energy quantities (currently not used by MOOSE)Kinetic energy.
Elastic strain energy.
Creep dissipation.
Plastic dissipation.
Viscous dissipation.
Artificial strain energy stemming from e.g. artificial stiffness to control singular modes
Electrostatic energy
Incremental work done by loads applied through the UEL routine
PNEWDT
is a new recommended simulation time step (currently not used by MOOSE)
Input parameters
Please consult the Abaqus user manual for more documentation on the UEL plugin parameters.
Input Parameters
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Unit:(no unit assumed)
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- external_fieldsAuxiliary field variables (or 'predifined field variables') passed to the UEL plugin. Some plugins may assume that the first field is temperature when there are multiple external fields.
C++ Type:std::vector<AuxVariableName>
Unit:(no unit assumed)
Controllable:No
Description:Auxiliary field variables (or 'predifined field variables') passed to the UEL plugin. Some plugins may assume that the first field is temperature when there are multiple external fields.
- jtype0Abaqus element type integer
Default:0
C++ Type:int
Unit:(no unit assumed)
Controllable:No
Description:Abaqus element type integer
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
- variablesNonlinear coupled variables
C++ Type:std::vector<NonlinearVariableName>
Unit:(no unit assumed)
Controllable:No
Description:Nonlinear coupled variables
Optional Parameters
- absolute_value_vector_tagsThe tags for the vectors this residual object should fill with the absolute value of the residual contribution
C++ Type:std::vector<TagName>
Unit:(no unit assumed)
Controllable:No
Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution
- extra_matrix_tagsThe extra tags for the matrices this Kernel should fill
C++ Type:std::vector<TagName>
Unit:(no unit assumed)
Controllable:No
Description:The extra tags for the matrices this Kernel should fill
- extra_vector_tagsThe extra tags for the vectors this Kernel should fill
C++ Type:std::vector<TagName>
Unit:(no unit assumed)
Controllable:No
Description:The extra tags for the vectors this Kernel should fill
- matrix_tagssystemThe tag for the matrices this Kernel should fill
Default:system
C++ Type:MultiMooseEnum
Unit:(no unit assumed)
Controllable:No
Description:The tag for the matrices this Kernel should fill
- vector_tagsnontimeThe tag for the vectors this Kernel should fill
Default:nontime
C++ Type:MultiMooseEnum
Unit:(no unit assumed)
Controllable:No
Description:The tag for the vectors this Kernel should fill
Tagging Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
Default:0
C++ Type:int
Unit:(no unit assumed)
Controllable:No
Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
- force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
- force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.