https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
AbaqusUMATStress Class Reference

Coupling material to use Abaqus UMAT models in MOOSE. More...

#include <AbaqusUMATStress.h>

Inheritance diagram for AbaqusUMATStress:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 AbaqusUMATStress (const InputParameters &parameters)
 
void initialSetup () override
 check optional material properties for consistency
 
void computeProperties () override
 perform per-element computation/initialization
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialPropertyByName (const std::string &name)
 
void validateDerivativeMaterialPropertyBase (const std::string &base)
 
const MaterialPropertyName derivativePropertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName derivativePropertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName derivativePropertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName derivativePropertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Types

typedef void(* umat_t) (Real STRESS[], Real STATEV[], Real DDSDDE[], Real *SSE, Real *SPD, Real *SCD, Real *RPL, Real DDSDDT[], Real DRPLDE[], Real *DRPLDT, Real STRAN[], Real DSTRAN[], Real TIME[], Real *DTIME, Real *TEMP, Real *DTEMP, Real PREDEF[], Real DPRED[], char *CMNAME, int *NDI, int *NSHR, int *NTENS, int *NSTATV, Real PROPS[], int *NPROPS, Real COORDS[], Real DROT[], Real *PNEWDT, Real *CELENT, Real DFGRD0[], Real DFGRD1[], int *NOEL, unsigned int *NPT, int *LAYER, int *KSPT, int *KSTEP, int *KINC)
 function type for the external UMAT function
 

Protected Member Functions

void initQpStatefulProperties () override
 
void computeQpStress () override
 Compute the stress and store it in the _stress material property for the current quadrature point.
 
virtual void computeQpProperties () override
 
virtual void getAnalysisStepUserObject (const FEProblemBase &fe_problem, const AnalysisStepUserObject *&step_user_object, const std::string &name)
 

Protected Attributes

FileName _plugin
 
DynamicLibraryLoader _library
 
umat_t _umat
 
Real _aqRPL
 Volumetric heat generation per unit time at the end of the increment caused by mechanical working of the material.
 
Real _aqDRPLDT
 Variation of the volumetric heat generation (RPL) with respect to the temperature.
 
Real _aqPNEWDT
 Ratio of suggested new time increment to the time increment being used (out)
 
Real _aqDTIME
 Time increment.
 
Real _aqTEMP
 Temperature at the start of the increment.
 
Real _aqDTEMP
 Increment of temperature.
 
Real _aqCELENT
 Characteristic element length, which is a typical length of a line across an element for a first-order element (unused, set to 1)
 
char _aqCMNAME [80]
 Model name buffer.
 
int _aqNDI
 Number of direct stress components at this point.
 
int _aqNSHR
 Number of engineering shear stress components at this point.
 
int _aqNTENS
 Size of the stress or strain component array (NDI + NSHR).
 
int _aqNSTATV
 Number of solution-dependent state variables that are associated with this material type.
 
int _aqNOEL
 Element number.
 
unsigned int _aqNPT
 Integration point number.
 
int _aqLAYER
 Layer number (for composite shells and layered solids). (not supported)
 
int _aqKSPT
 Section point number within the current layer. (not supported)
 
int _aqKSTEP
 The step number (as per Abaqus definition) can be set by the user.
 
int _aqKINC
 Increment number (_t_step).
 
std::vector< Real > _aqSTATEV
 
std::vector< Real > _aqDDSDDT
 Variation of the stress increments with respect to the temperature.
 
std::vector< Real > _aqDRPLDE
 Variation of RPL with respect to the strain increments.
 
std::vector< Real > _aqSTRAN
 An array containing the total strains at the beginning of the increment.
 
std::vector< Real > _aqDFGRD0
 Array containing the deformation gradient at the beginning of the increment.
 
std::vector< Real > _aqDFGRD1
 Array containing the deformation gradient at the end of the increment.
 
std::vector< Real > _aqSTRESS
 Stress tensor (in: old stress, out: updated stress)
 
std::vector< Real > _aqDDSDDE
 Jacobian matrix of the model (out)
 
std::vector< Real > _aqDSTRAN
 Array of strain increments.
 
std::vector< Real > _aqPROPS
 User-specified array of material constants associated with this user material.
 
std::array< Real, 2 > _aqTIME
 Value of step time at the beginning of the current increment, total time at the beginning of the current increment.
 
std::array< Real, 3 > _aqCOORDS
 An array containing the coordinates of this point.
 
std::vector< Real > _aqDROT
 Rotation increment matrix.
 
int _aqNPROPS
 User-defined number of material constants associated with this user material.
 
std::vector< Real > _aqPREDEF
 Array of interpolated values of predefined field variables at this point at the start of the increment, based on the values read in at the nodes.
 
std::vector< Real > _aqDPRED
 Array of increments of predefined field variables.
 
const MaterialProperty< RankTwoTensor > & _stress_old
 
const MaterialProperty< RankTwoTensor > & _total_strain_old
 
const OptionalMaterialProperty< RankTwoTensor > & _strain_increment
 
MaterialProperty< RankFourTensor > & _jacobian_mult
 Jacobian multiplier.
 
const OptionalMaterialProperty< RankTwoTensor > & _Fbar
 
const OptionalMaterialProperty< RankTwoTensor > & _Fbar_old
 
MaterialProperty< std::vector< Real > > & _state_var
 
const MaterialProperty< std::vector< Real > > & _state_var_old
 
MaterialProperty< Real > & _elastic_strain_energy
 
const MaterialProperty< Real > & _elastic_strain_energy_old
 
MaterialProperty< Real > & _plastic_dissipation
 
const MaterialProperty< Real > & _plastic_dissipation_old
 
MaterialProperty< Real > & _creep_dissipation
 
const MaterialProperty< Real > & _creep_dissipation_old
 
MaterialProperty< Real > & _material_timestep
 recommended maximum timestep for this model under the current conditions
 
const OptionalMaterialProperty< RankTwoTensor > & _rotation_increment
 
const OptionalMaterialProperty< RankTwoTensor > & _rotation_increment_old
 
const VariableValue_temperature
 
const VariableValue_temperature_old
 
const std::vector< const VariableValue * > _external_fields
 
const std::vector< const VariableValue * > _external_fields_old
 
std::vector< VariableName > _external_field_names
 
const std::size_t _number_external_fields
 
const std::vector< MaterialPropertyName > _external_property_names
 
const std::size_t _number_external_properties
 
std::vector< const MaterialProperty< Real > * > _external_properties
 
std::vector< const MaterialProperty< Real > * > _external_properties_old
 
const bool _use_one_based_indexing
 parameter to assist with the transition to 1-based indexing
 
const bool _use_orientation
 Rotation information.
 
const RotationTensor _R
 
MaterialProperty< RankTwoTensor > & _total_rotation
 
const MaterialProperty< RankTwoTensor > & _total_rotation_old
 
const std::string _base_name
 Base name prepended to all material property names to allow for multi-material systems.
 
const MaterialProperty< RankTwoTensor > & _mechanical_strain
 Mechanical strain material property.
 
MaterialProperty< RankTwoTensor > & _stress
 Stress material property.
 
MaterialProperty< RankTwoTensor > & _elastic_strain
 Elastic strain material property.
 
const MaterialProperty< RankTwoTensor > & _extra_stress
 Extra stress tensor.
 
std::vector< const Function * > _initial_stress_fcn
 initial stress components
 
MaterialProperty< RankFourTensor > & _Jacobian_mult
 derivative of stress w.r.t. strain (_dstress_dstrain)
 

Private Member Functions

bool haveMaterialProperty (const std::string &prop_name)
 
std::vector< VariableName > buildVariableVector (const VariableName &c1, const VariableName &c2, const VariableName &c3)
 
void validateCouplingHelper (const MaterialPropertyName &base, const std::vector< VariableName > &c, const System &system, std::vector< VariableName > &missing)
 
bool isNotObjectVariable (const VariableName &name)
 

Private Attributes

const ComputeFiniteStrain::DecompMethod _decomposition_method
 Method being used to compute strain and rotation increments.
 
const AnalysisStepUserObject_step_user_object
 User object that determines step number.
 
FEProblemBase_dmi_fe_problem
 

Detailed Description

Coupling material to use Abaqus UMAT models in MOOSE.

Definition at line 23 of file AbaqusUMATStress.h.

Member Typedef Documentation

◆ umat_t

typedef void(* AbaqusUMATStress::umat_t) (Real STRESS[], Real STATEV[], Real DDSDDE[], Real *SSE, Real *SPD, Real *SCD, Real *RPL, Real DDSDDT[], Real DRPLDE[], Real *DRPLDT, Real STRAN[], Real DSTRAN[], Real TIME[], Real *DTIME, Real *TEMP, Real *DTEMP, Real PREDEF[], Real DPRED[], char *CMNAME, int *NDI, int *NSHR, int *NTENS, int *NSTATV, Real PROPS[], int *NPROPS, Real COORDS[], Real DROT[], Real *PNEWDT, Real *CELENT, Real DFGRD0[], Real DFGRD1[], int *NOEL, unsigned int *NPT, int *LAYER, int *KSPT, int *KSTEP, int *KINC)
protected

function type for the external UMAT function

Definition at line 38 of file AbaqusUMATStress.h.

Constructor & Destructor Documentation

◆ AbaqusUMATStress()

AbaqusUMATStress::AbaqusUMATStress ( const InputParameters parameters)

Definition at line 65 of file AbaqusUMATStress.C.

66 : ComputeGeneralStressBase(parameters),
67 _plugin(getParam<FileName>("plugin")),
68 _library(_plugin + std::string("-") + QUOTE(METHOD) + ".plugin"),
70 _aqNSTATV(getParam<unsigned int>("num_state_vars")),
72 _aqPROPS(getParam<std::vector<Real>>("constant_properties")),
73 _aqNPROPS(_aqPROPS.size()),
74 _stress_old(getMaterialPropertyOld<RankTwoTensor>(_base_name + "stress")),
75 _total_strain_old(getMaterialPropertyOld<RankTwoTensor>(_base_name + "total_strain")),
76 _strain_increment(getOptionalMaterialProperty<RankTwoTensor>(_base_name + "strain_increment")),
77 _jacobian_mult(declareProperty<RankFourTensor>(_base_name + "Jacobian_mult")),
78 _Fbar(getOptionalMaterialProperty<RankTwoTensor>(_base_name + "deformation_gradient")),
79 _Fbar_old(getOptionalMaterialPropertyOld<RankTwoTensor>(_base_name + "deformation_gradient")),
80 _state_var(declareProperty<std::vector<Real>>(_base_name + "state_var")),
81 _state_var_old(getMaterialPropertyOld<std::vector<Real>>(_base_name + "state_var")),
82 _elastic_strain_energy(declareProperty<Real>(_base_name + "elastic_strain_energy")),
83 _elastic_strain_energy_old(getMaterialPropertyOld<Real>(_base_name + "elastic_strain_energy")),
84 _plastic_dissipation(declareProperty<Real>(_base_name + "plastic_dissipation")),
85 _plastic_dissipation_old(getMaterialPropertyOld<Real>(_base_name + "plastic_dissipation")),
86 _creep_dissipation(declareProperty<Real>(_base_name + "creep_dissipation")),
87 _creep_dissipation_old(getMaterialPropertyOld<Real>(_base_name + "creep_dissipation")),
88 _material_timestep(declareProperty<Real>(_base_name + "material_timestep_limit")),
90 getOptionalMaterialProperty<RankTwoTensor>(_base_name + "rotation_increment")),
92 getOptionalMaterialPropertyOld<RankTwoTensor>(_base_name + "rotation_increment")),
93 _temperature(coupledValue("temperature")),
94 _temperature_old(coupledValueOld("temperature")),
95 _external_fields(isCoupled("external_fields") ? coupledValues("external_fields")
96 : std::vector<const VariableValue *>{}),
97 _external_fields_old(isCoupled("external_fields") ? coupledValuesOld("external_fields")
98 : std::vector<const VariableValue *>{}),
100 _external_property_names(getParam<std::vector<MaterialPropertyName>>("external_properties")),
104 _use_one_based_indexing(getParam<bool>("use_one_based_indexing")),
105 _use_orientation(isParamValid("orientation")),
106 _R(_use_orientation ? getParam<RealVectorValue>("orientation") : RealVectorValue(0.0)),
107 _total_rotation(declareProperty<RankTwoTensor>("total_rotation")),
108 _total_rotation_old(getMaterialPropertyOld<RankTwoTensor>("total_rotation")),
110 getParam<MooseEnum>("decomposition_method").getEnum<ComputeFiniteStrain::DecompMethod>())
111{
114 "AbaqusUMATStress has transitioned to 1-based indexing in the element (NOEL) and "
115 "integration point (NPT) numbers to ensure maximum compatibility with legacy UMAT files. "
116 "Please ensure that any new UMAT plugins using these quantities are using the correct "
117 "indexing. 0-based indexing will be deprecated soon.");
118
119 // get material properties
120 for (std::size_t i = 0; i < _number_external_properties; ++i)
121 {
122 _external_properties[i] = &getMaterialProperty<Real>(_external_property_names[i]);
123 _external_properties_old[i] = &getMaterialPropertyOld<Real>(_external_property_names[i]);
124 }
125
126 // Read mesh dimension and size UMAT arrays (we always size for full 3D)
127 _aqNTENS = 6; // Size of the stress or strain component array (NDI+NSHR)
128 _aqNSHR = 3; // Number of engineering shear stress components
129 _aqNDI = 3; // Number of direct stress components (always 3)
130
131 _aqDDSDDT.resize(_aqNTENS);
132 _aqDRPLDE.resize(_aqNTENS);
133 _aqSTRAN.resize(_aqNTENS);
134 _aqDFGRD0.resize(9);
135 _aqDFGRD1.resize(9);
136 _aqDROT.resize(9);
137 _aqSTRESS.resize(_aqNTENS);
138 _aqDDSDDE.resize(_aqNTENS * _aqNTENS);
139 _aqDSTRAN.resize(_aqNTENS);
142}
void mooseDeprecated(Args &&... args)
const OptionalMaterialProperty< RankTwoTensor > & _strain_increment
MaterialProperty< RankTwoTensor > & _total_rotation
const MaterialProperty< Real > & _plastic_dissipation_old
const VariableValue & _temperature_old
const std::vector< const VariableValue * > _external_fields_old
const OptionalMaterialProperty< RankTwoTensor > & _rotation_increment_old
const MaterialProperty< Real > & _creep_dissipation_old
std::vector< Real > _aqDFGRD0
Array containing the deformation gradient at the beginning of the increment.
const MaterialProperty< RankTwoTensor > & _total_strain_old
void(* umat_t)(Real STRESS[], Real STATEV[], Real DDSDDE[], Real *SSE, Real *SPD, Real *SCD, Real *RPL, Real DDSDDT[], Real DRPLDE[], Real *DRPLDT, Real STRAN[], Real DSTRAN[], Real TIME[], Real *DTIME, Real *TEMP, Real *DTEMP, Real PREDEF[], Real DPRED[], char *CMNAME, int *NDI, int *NSHR, int *NTENS, int *NSTATV, Real PROPS[], int *NPROPS, Real COORDS[], Real DROT[], Real *PNEWDT, Real *CELENT, Real DFGRD0[], Real DFGRD1[], int *NOEL, unsigned int *NPT, int *LAYER, int *KSPT, int *KSTEP, int *KINC)
function type for the external UMAT function
std::vector< Real > _aqDROT
Rotation increment matrix.
const RotationTensor _R
std::vector< Real > _aqDDSDDE
Jacobian matrix of the model (out)
std::vector< const MaterialProperty< Real > * > _external_properties_old
DynamicLibraryLoader _library
std::vector< Real > _aqDRPLDE
Variation of RPL with respect to the strain increments.
const std::vector< const VariableValue * > _external_fields
int _aqNTENS
Size of the stress or strain component array (NDI + NSHR).
const OptionalMaterialProperty< RankTwoTensor > & _rotation_increment
const bool _use_orientation
Rotation information.
std::vector< Real > _aqDFGRD1
Array containing the deformation gradient at the end of the increment.
const std::size_t _number_external_properties
std::vector< Real > _aqPROPS
User-specified array of material constants associated with this user material.
MaterialProperty< std::vector< Real > > & _state_var
const MaterialProperty< std::vector< Real > > & _state_var_old
std::vector< Real > _aqDDSDDT
Variation of the stress increments with respect to the temperature.
MaterialProperty< Real > & _creep_dissipation
std::vector< Real > _aqSTRAN
An array containing the total strains at the beginning of the increment.
MaterialProperty< RankFourTensor > & _jacobian_mult
Jacobian multiplier.
const ComputeFiniteStrain::DecompMethod _decomposition_method
Method being used to compute strain and rotation increments.
const VariableValue & _temperature
std::vector< Real > _aqPREDEF
Array of interpolated values of predefined field variables at this point at the start of the incremen...
std::vector< Real > _aqSTATEV
const bool _use_one_based_indexing
parameter to assist with the transition to 1-based indexing
const OptionalMaterialProperty< RankTwoTensor > & _Fbar
int _aqNSHR
Number of engineering shear stress components at this point.
const MaterialProperty< RankTwoTensor > & _total_rotation_old
const MaterialProperty< Real > & _elastic_strain_energy_old
std::vector< Real > _aqDSTRAN
Array of strain increments.
const std::size_t _number_external_fields
int _aqNPROPS
User-defined number of material constants associated with this user material.
int _aqNSTATV
Number of solution-dependent state variables that are associated with this material type.
const MaterialProperty< RankTwoTensor > & _stress_old
std::vector< const MaterialProperty< Real > * > _external_properties
const OptionalMaterialProperty< RankTwoTensor > & _Fbar_old
int _aqNDI
Number of direct stress components at this point.
MaterialProperty< Real > & _elastic_strain_energy
MaterialProperty< Real > & _material_timestep
recommended maximum timestep for this model under the current conditions
MaterialProperty< Real > & _plastic_dissipation
const std::vector< MaterialPropertyName > _external_property_names
std::vector< Real > _aqDPRED
Array of increments of predefined field variables.
std::vector< Real > _aqSTRESS
Stress tensor (in: old stress, out: updated stress)
ComputeFiniteStrain defines a strain increment and rotation increment, for finite strains.
ComputeGeneralStressBase is the direct base class for stress calculator materials that may leverage q...
const std::string _base_name
Base name prepended to all material property names to allow for multi-material systems.
T getFunction(std::string func, bool hard_fail=true)
Get a function/data pointer of type T to a function exported from the loaded library.
VariableValueTempl< false > VariableValue
VectorValue< Real > RealVectorValue

Member Function Documentation

◆ computeProperties()

void AbaqusUMATStress::computeProperties ( )
override

perform per-element computation/initialization

Definition at line 180 of file AbaqusUMATStress.C.

181{
182 // current element "number"
183 _aqNOEL = _current_elem->id() + (_use_one_based_indexing ? 1 : 0);
184
185 // characteristic element length
186 _aqCELENT = std::pow(_current_elem->volume(), 1.0 / _current_elem->dim());
187
189 {
190 // Value of total time at the beginning of the current increment
191 _aqTIME[0] = _t - _dt;
192 }
193 else
194 {
195 const unsigned int start_time_step = _step_user_object->getStep(_t - _dt);
196 const Real step_time = _step_user_object->getStartTime(start_time_step);
197 // Value of step time at the beginning of the current increment
198 _aqTIME[0] = step_time;
199 }
200 // Value of total time at the beginning of the current increment
201 _aqTIME[1] = _t - _dt;
202
203 // Time increment
204 _aqDTIME = _dt;
205
206 // Fill unused characters with spaces (Fortran)
207 std::fill(_aqCMNAME, _aqCMNAME + 80, ' ');
208 std::memcpy(_aqCMNAME, name().c_str(), name().size());
209
210 ComputeGeneralStressBase::computeProperties();
211}
const std::string name
Definition Setup.h:21
int _aqNOEL
Element number.
Real _aqCELENT
Characteristic element length, which is a typical length of a line across an element for a first-orde...
const AnalysisStepUserObject * _step_user_object
User object that determines step number.
char _aqCMNAME[80]
Model name buffer.
Real _aqDTIME
Time increment.
std::array< Real, 2 > _aqTIME
Value of step time at the beginning of the current increment, total time at the beginning of the curr...
unsigned int getStep(const Real &time) const
Real getStartTime(const unsigned int &step) const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ computeQpProperties()

void ComputeGeneralStressBase::computeQpProperties ( )
overrideprotectedvirtualinherited

Definition at line 44 of file ComputeGeneralStressBase.C.

45{
47
48 // Add in extra stress
49 _stress[_qp] += _extra_stress[_qp];
50}
const MaterialProperty< RankTwoTensor > & _extra_stress
Extra stress tensor.
virtual void computeQpStress()=0
Compute the stress and store it in the _stress material property for the current quadrature point.
MaterialProperty< RankTwoTensor > & _stress
Stress material property.

◆ computeQpStress()

void AbaqusUMATStress::computeQpStress ( )
overrideprotectedvirtual

Compute the stress and store it in the _stress material property for the current quadrature point.

Implements ComputeGeneralStressBase.

Definition at line 214 of file AbaqusUMATStress.C.

215{
216 // C uses row-major, whereas Fortran uses column major
217 // therefore, all unsymmetric matrices must be transposed before passing them to Fortran
218 RankTwoTensor FBar_old_fortran = _Fbar_old[_qp].transpose();
219 RankTwoTensor FBar_fortran = _Fbar[_qp].transpose();
220
221 // DROT needed by UMAT will depend on kinematics and whether or not an intermediate configuration
222 // is used
223 RankTwoTensor DROT_fortran;
225 {
226 DROT_fortran = RankTwoTensor::Identity();
227 }
228 else
229 {
230 if (_decomposition_method == ComputeFiniteStrain::DecompMethod::HughesWinget)
231 DROT_fortran = _rotation_increment[_qp].transpose();
232 else
233 DROT_fortran = _rotation_increment_old[_qp].transpose();
234 }
235
236 const Real * myDFGRD0 = &(FBar_old_fortran(0, 0));
237 const Real * myDFGRD1 = &(FBar_fortran(0, 0));
238 const Real * myDROT = &(DROT_fortran(0, 0));
239
240 // More local copies of materials so we can (optionally) rotate
241 RankTwoTensor stress_old = _stress_old[_qp];
242 RankTwoTensor total_strain_old = _total_strain_old[_qp];
243 RankTwoTensor strain_increment = _strain_increment[_qp];
244
245 // check if we need to rotate to intermediate configuration
247 {
248 // keep track of total rotation
250 // rotate stress/strain/increment from reference configuration to intermediate configuration
251 stress_old.rotate(_total_rotation_old[_qp].transpose());
252 total_strain_old.rotate(_total_rotation_old[_qp].transpose());
253
254 if (_decomposition_method == ComputeFiniteStrain::DecompMethod::HughesWinget)
255 strain_increment.rotate(_total_rotation[_qp].transpose());
256 else
257 strain_increment.rotate(_total_rotation_old[_qp].transpose());
258 }
259 else if (_decomposition_method == ComputeFiniteStrain::DecompMethod::HughesWinget)
260 // rotate old stress to reference configuration
261 stress_old.rotate(_rotation_increment[_qp]);
262
263 // copy because UMAT does not guarantee constness
264 for (const auto i : make_range(9))
265 {
266 _aqDFGRD0[i] = myDFGRD0[i];
267 _aqDFGRD1[i] = myDFGRD1[i];
268 _aqDROT[i] = myDROT[i];
269 }
270
271 // Recover "old" state variables
272 for (const auto i : make_range(_aqNSTATV))
273 _aqSTATEV[i] = _state_var_old[_qp][i];
274
275 // Recover "old" energy quantities
279
280 // Pass through updated stress, total strain, and strain increment arrays
281 static const std::array<Real, 6> strain_factor{{1, 1, 1, 2, 2, 2}};
282 // Account for difference in vector order convention: yz, xz, xy (MOOSE) vs xy, xz, yz
283 // (commercial software)
284 static const std::array<std::pair<unsigned int, unsigned int>, 6> component{
285 {{0, 0}, {1, 1}, {2, 2}, {0, 1}, {0, 2}, {1, 2}}};
286
287 for (const auto i : make_range(_aqNTENS))
288 {
289 const auto a = component[i].first;
290 const auto b = component[i].second;
291 _aqSTRESS[i] = stress_old(a, b);
292 _aqSTRAN[i] = total_strain_old(a, b) * strain_factor[i];
293 _aqDSTRAN[i] = strain_increment(a, b) * strain_factor[i];
294 }
295
296 // current coordinates
297 for (const auto i : make_range(Moose::dim))
298 _aqCOORDS[i] = _q_point[_qp](i);
299
300 // zero out Jacobian contribution
301 for (const auto i : make_range(_aqNTENS * _aqNTENS))
302 _aqDDSDDE[i] = 0.0;
303
304 // Set PNEWDT initially to a large value
305 _aqPNEWDT = std::numeric_limits<Real>::max();
306
307 // Temperature
309
310 // Temperature increment
312
313 for (const auto i : make_range(_number_external_fields))
314 {
315 // External field at this step
316 _aqPREDEF[i] = (*_external_fields_old[i])[_qp];
317
318 // External field increments
319 _aqDPRED[i] = (*_external_fields[i])[_qp] - (*_external_fields_old[i])[_qp];
320 }
321
322 for (const auto i : make_range(_number_external_properties))
323 {
324 // External property at this step
326
327 // External property increments
329 (*_external_properties[i])[_qp] - (*_external_properties_old[i])[_qp];
330 }
331
332 // Layer number (not supported)
333 _aqLAYER = -1;
334
335 // Section point number within the layer (not supported)
336 _aqKSPT = -1;
337
338 // Increment number
339 _aqKINC = _t_step;
340 _aqKSTEP = 1;
341
342 // integration point number
343 _aqNPT = _qp + (_use_one_based_indexing ? 1 : 0);
344
345 // Connection to extern statement
346 _umat(_aqSTRESS.data(),
347 _aqSTATEV.data(),
348 _aqDDSDDE.data(),
351 &_creep_dissipation[_qp],
352 &_aqRPL,
353 _aqDDSDDT.data(),
354 _aqDRPLDE.data(),
355 &_aqDRPLDT,
356 _aqSTRAN.data(),
357 _aqDSTRAN.data(),
358 _aqTIME.data(),
359 &_aqDTIME,
360 &_aqTEMP,
361 &_aqDTEMP,
362 _aqPREDEF.data(),
363 _aqDPRED.data(),
364 _aqCMNAME,
365 &_aqNDI,
366 &_aqNSHR,
367 &_aqNTENS,
368 &_aqNSTATV,
369 _aqPROPS.data(),
370 &_aqNPROPS,
371 _aqCOORDS.data(),
372 _aqDROT.data(),
373 &_aqPNEWDT,
374 &_aqCELENT,
375 _aqDFGRD0.data(),
376 _aqDFGRD1.data(),
377 &_aqNOEL,
378 &_aqNPT,
379 &_aqLAYER,
380 &_aqKSPT,
381 &_aqKSTEP,
382 &_aqKINC);
383
384 // Update state variables
385 for (int i = 0; i < _aqNSTATV; ++i)
386 _state_var[_qp][i] = _aqSTATEV[i];
387
388 // Here, we apply UMAT convention: Always multiply _dt by PNEWDT to determine the material time
389 // step MOOSE time stepper will choose the most limiting of all material time step increments
390 // provided
391 _material_timestep[_qp] = _aqPNEWDT * _dt;
392
393 // Get new stress tensor - UMAT should update stress
394 // Account for difference in vector order convention: yz, xz, xy (MOOSE) vs xy, xz, yz
395 // (commercial software)
396 _stress[_qp] = RankTwoTensor(
398
399 // Build Jacobian matrix from UMAT's Voigt non-standard order to fourth order tensor.
400 const unsigned int N = Moose::dim;
401 const unsigned int ntens = N * (N + 1) / 2;
402 const int nskip = N - 1;
403
404 for (const auto i : make_range(N))
405 for (const auto j : make_range(N))
406 for (const auto k : make_range(N))
407 for (const auto l : make_range(N))
408 {
409 if (i == j)
410 _jacobian_mult[_qp](i, j, k, l) =
411 k == l ? _aqDDSDDE[i * ntens + k] : _aqDDSDDE[i * ntens + k + nskip + l];
412 else
413 // i!=j
414 _jacobian_mult[_qp](i, j, k, l) =
415 k == l ? _aqDDSDDE[(nskip + i + j) * ntens + k]
416 : _aqDDSDDE[(nskip + i + j) * ntens + k + nskip + l];
417 }
418
419 // check if we need to rotate from intermediate reference frame
421 {
422 // rotate to current configuration
423 _stress[_qp].rotate(_total_rotation[_qp]);
424 _jacobian_mult[_qp].rotate(_total_rotation[_qp]);
425 }
426 else if (_decomposition_method != ComputeFiniteStrain::DecompMethod::HughesWinget)
427 _stress[_qp].rotate(_rotation_increment[_qp]);
428}
for(PetscInt i=0;i< nvars;++i)
unsigned int dim
std::array< Real, 3 > _aqCOORDS
An array containing the coordinates of this point.
int _aqKINC
Increment number (_t_step).
int _aqKSTEP
The step number (as per Abaqus definition) can be set by the user.
int _aqLAYER
Layer number (for composite shells and layered solids). (not supported)
unsigned int _aqNPT
Integration point number.
Real _aqRPL
Volumetric heat generation per unit time at the end of the increment caused by mechanical working of ...
Real _aqDRPLDT
Variation of the volumetric heat generation (RPL) with respect to the temperature.
Real _aqTEMP
Temperature at the start of the increment.
Real _aqDTEMP
Increment of temperature.
int _aqKSPT
Section point number within the current layer. (not supported)
Real _aqPNEWDT
Ratio of suggested new time increment to the time increment being used (out)
void rotate(const RankTwoTensorTempl< T > &R)
RankTwoTensorTempl< T > transpose() const
static RankTwoTensorTempl Identity()
static constexpr std::size_t dim
T component(const RankTwoTensorTempl< T > &r2tensor, unsigned int i, unsigned int j)
IntRange< T > make_range(T beg, T end)

◆ getAnalysisStepUserObject()

void AnalysisStepUOInterface::getAnalysisStepUserObject ( const FEProblemBase fe_problem,
const AnalysisStepUserObject *&  step_user_object,
const std::string &  name 
)
protectedvirtualinherited

Definition at line 15 of file AnalysisStepUOInterface.C.

18{
19 std::vector<const UserObject *> uos;
20 fe_problem.theWarehouse().query().condition<AttribSystem>("UserObject").queryIntoUnsorted(uos);
21
22 std::vector<const AnalysisStepUserObject *> step_uos;
23 for (const auto & uo : uos)
24 {
25 const AnalysisStepUserObject * possible_step_uo =
26 dynamic_cast<const AnalysisStepUserObject *>(uo);
27 if (possible_step_uo)
28 step_uos.push_back(possible_step_uo);
29 }
30
31 if (step_uos.size() > 1)
32 mooseError("Your input file has multiple AnalysisStepUserObjects. MOOSE currently only support "
33 "one in ",
34 name,
35 ". \n");
36 else if (step_uos.size() == 1)
37 mooseInfo("A AnalysisStepUserObject, has been identified and will be used to drive stepping "
38 "behavior in ",
39 name,
40 ".");
41
42 step_user_object = step_uos.size() == 1 ? step_uos[0] : nullptr;
43}
void mooseInfo(Args &&... args)
void mooseError(Args &&... args)
User object that provides analysis steps given user input.
TheWarehouse & theWarehouse() const
Query query()

Referenced by AnalysisStepPeriod::initialSetup(), initialSetup(), and AbaqusUExternalDB::initialSetup().

◆ initialSetup()

void AbaqusUMATStress::initialSetup ( )
override

check optional material properties for consistency

Definition at line 145 of file AbaqusUMATStress.C.

146{
147 // The _Fbar, _Fbar_old, and _rotation_increment optional properties are only available when an
148 // incremental strain formulation is used. If they are not avaliable we advide the user to
149 // select an incremental formulation.
151 mooseError("AbaqusUMATStress '",
152 name(),
153 "': Incremental strain quantities are not available. You likely are using a total "
154 "strain formulation. Specify `incremental = true` in the tensor mechanics action, "
155 "or use ComputeIncrementalStrain in your input file.");
156
157 // Let's automatically detect uos and identify the one we are interested in.
158 // If there is more than one, we assume something is off and error out.
159 if (!isParamSetByUser("analysis_step_user_object"))
161 else
162 _step_user_object = &getUserObject<AnalysisStepUserObject>("analysis_step_user_object");
163}
virtual void getAnalysisStepUserObject(const FEProblemBase &fe_problem, const AnalysisStepUserObject *&step_user_object, const std::string &name)

◆ initQpStatefulProperties()

void AbaqusUMATStress::initQpStatefulProperties ( )
overrideprotectedvirtual

Reimplemented from ComputeGeneralStressBase.

Definition at line 166 of file AbaqusUMATStress.C.

167{
169
170 // Initialize state variable vector
172 for (const auto i : make_range(_aqNSTATV))
173 _state_var[_qp][i] = 0.0;
174
175 // Initialize total rotation tensor
176 _total_rotation[_qp] = _R;
177}
virtual void initQpStatefulProperties() override
virtual void resize(const std::size_t size) override final

◆ validParams()

InputParameters AbaqusUMATStress::validParams ( )
static

Definition at line 25 of file AbaqusUMATStress.C.

26{
28 params.addClassDescription("Coupling material to use Abaqus UMAT models in MOOSE");
29 params.addRequiredParam<FileName>(
30 "plugin", "The path to the compiled dynamic library for the plugin you want to use");
31 params.addRequiredParam<bool>(
32 "use_one_based_indexing",
33 "Parameter to control whether indexing for element and integration points as presented to "
34 "UMAT models is based on 1 (true) or 0 (false). This does not affect internal MOOSE "
35 "numbering. The option to use 0-based numbering is deprecated and will be removed soon.");
36 params.addRequiredParam<std::vector<Real>>(
37 "constant_properties", "Constant mechanical and thermal material properties (PROPS)");
38 params.addRequiredParam<unsigned int>("num_state_vars",
39 "The number of state variables this UMAT is going to use");
40 params.addCoupledVar("temperature", 0.0, "Coupled temperature");
41 params.addCoupledVar("external_fields",
42 "The external fields that can be used in the UMAT subroutine");
43 params.addParam<std::vector<MaterialPropertyName>>("external_properties", {}, "");
44 params.addParam<MooseEnum>("decomposition_method",
46 "Method to calculate the strain kinematics.");
47 params.addParam<bool>(
48 "use_displaced_mesh",
49 false,
50 "Whether or not this object should use the "
51 "displaced mesh for computing displacements and quantities based on the deformed state.");
52 params.addParam<UserObjectName>(
53 "analysis_step_user_object",
54 "The AnalysisStepUserObject that provides times from simulation loading steps.");
56 "orientation",
57 "Euler angles that describe the orientation of the local material coordinate system.");
58 return params;
59}
static MooseEnum decompositionType()
static InputParameters validParams()
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
void addCoupledVar(const std::string &name, const std::string &doc_string)

Member Data Documentation

◆ _aqCELENT

Real AbaqusUMATStress::_aqCELENT
protected

Characteristic element length, which is a typical length of a line across an element for a first-order element (unused, set to 1)

Definition at line 107 of file AbaqusUMATStress.h.

Referenced by computeProperties(), and computeQpStress().

◆ _aqCMNAME

char AbaqusUMATStress::_aqCMNAME[80]
protected

Model name buffer.

Definition at line 110 of file AbaqusUMATStress.h.

Referenced by computeProperties(), and computeQpStress().

◆ _aqCOORDS

std::array<Real, 3> AbaqusUMATStress::_aqCOORDS
protected

An array containing the coordinates of this point.

Definition at line 181 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDDSDDE

std::vector<Real> AbaqusUMATStress::_aqDDSDDE
protected

Jacobian matrix of the model (out)

Definition at line 165 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDDSDDT

std::vector<Real> AbaqusUMATStress::_aqDDSDDT
protected

Variation of the stress increments with respect to the temperature.

Definition at line 147 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDFGRD0

std::vector<Real> AbaqusUMATStress::_aqDFGRD0
protected

Array containing the deformation gradient at the beginning of the increment.

Definition at line 156 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDFGRD1

std::vector<Real> AbaqusUMATStress::_aqDFGRD1
protected

Array containing the deformation gradient at the end of the increment.

Definition at line 159 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDPRED

std::vector<Real> AbaqusUMATStress::_aqDPRED
protected

Array of increments of predefined field variables.

Definition at line 193 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDROT

std::vector<Real> AbaqusUMATStress::_aqDROT
protected

Rotation increment matrix.

Definition at line 184 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDRPLDE

std::vector<Real> AbaqusUMATStress::_aqDRPLDE
protected

Variation of RPL with respect to the strain increments.

Definition at line 150 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDRPLDT

Real AbaqusUMATStress::_aqDRPLDT
protected

Variation of the volumetric heat generation (RPL) with respect to the temperature.

Definition at line 92 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDSTRAN

std::vector<Real> AbaqusUMATStress::_aqDSTRAN
protected

Array of strain increments.

If thermal expansion is included in the same material definition, these are the mechanical strain increments (the total strain increments minus the thermal strain increments).

Definition at line 172 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDTEMP

Real AbaqusUMATStress::_aqDTEMP
protected

Increment of temperature.

Definition at line 104 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDTIME

Real AbaqusUMATStress::_aqDTIME
protected

Time increment.

Definition at line 98 of file AbaqusUMATStress.h.

Referenced by computeProperties(), and computeQpStress().

◆ _aqKINC

int AbaqusUMATStress::_aqKINC
protected

Increment number (_t_step).

This can be supported. The step number (as per Abaqus definition) is not supported by MOOSE.

Definition at line 141 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqKSPT

int AbaqusUMATStress::_aqKSPT
protected

Section point number within the current layer. (not supported)

Definition at line 134 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqKSTEP

int AbaqusUMATStress::_aqKSTEP
protected

The step number (as per Abaqus definition) can be set by the user.

Definition at line 137 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqLAYER

int AbaqusUMATStress::_aqLAYER
protected

Layer number (for composite shells and layered solids). (not supported)

Definition at line 131 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqNDI

int AbaqusUMATStress::_aqNDI
protected

Number of direct stress components at this point.

Definition at line 113 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqNOEL

int AbaqusUMATStress::_aqNOEL
protected

Element number.

Definition at line 125 of file AbaqusUMATStress.h.

Referenced by computeProperties(), and computeQpStress().

◆ _aqNPROPS

int AbaqusUMATStress::_aqNPROPS
protected

User-defined number of material constants associated with this user material.

Definition at line 187 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqNPT

unsigned int AbaqusUMATStress::_aqNPT
protected

Integration point number.

Definition at line 128 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqNSHR

int AbaqusUMATStress::_aqNSHR
protected

Number of engineering shear stress components at this point.

Definition at line 116 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqNSTATV

int AbaqusUMATStress::_aqNSTATV
protected

Number of solution-dependent state variables that are associated with this material type.

Definition at line 122 of file AbaqusUMATStress.h.

Referenced by computeQpStress(), and initQpStatefulProperties().

◆ _aqNTENS

int AbaqusUMATStress::_aqNTENS
protected

Size of the stress or strain component array (NDI + NSHR).

Definition at line 119 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqPNEWDT

Real AbaqusUMATStress::_aqPNEWDT
protected

Ratio of suggested new time increment to the time increment being used (out)

Definition at line 95 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqPREDEF

std::vector<Real> AbaqusUMATStress::_aqPREDEF
protected

Array of interpolated values of predefined field variables at this point at the start of the increment, based on the values read in at the nodes.

Definition at line 190 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqPROPS

std::vector<Real> AbaqusUMATStress::_aqPROPS
protected

User-specified array of material constants associated with this user material.

Definition at line 175 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqRPL

Real AbaqusUMATStress::_aqRPL
protected

Volumetric heat generation per unit time at the end of the increment caused by mechanical working of the material.

Definition at line 89 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqSTATEV

std::vector<Real> AbaqusUMATStress::_aqSTATEV
protected

Definition at line 144 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqSTRAN

std::vector<Real> AbaqusUMATStress::_aqSTRAN
protected

An array containing the total strains at the beginning of the increment.

Definition at line 153 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqSTRESS

std::vector<Real> AbaqusUMATStress::_aqSTRESS
protected

Stress tensor (in: old stress, out: updated stress)

Definition at line 162 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqTEMP

Real AbaqusUMATStress::_aqTEMP
protected

Temperature at the start of the increment.

Definition at line 101 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqTIME

std::array<Real, 2> AbaqusUMATStress::_aqTIME
protected

Value of step time at the beginning of the current increment, total time at the beginning of the current increment.

Definition at line 178 of file AbaqusUMATStress.h.

Referenced by computeProperties(), and computeQpStress().

◆ _base_name

const std::string ComputeGeneralStressBase::_base_name
protectedinherited

Base name prepended to all material property names to allow for multi-material systems.

Definition at line 43 of file ComputeGeneralStressBase.h.

Referenced by ComputeCosseratLinearElasticStress::initialSetup(), and ComputeLinearElasticStress::initialSetup().

◆ _creep_dissipation

MaterialProperty<Real>& AbaqusUMATStress::_creep_dissipation
protected

Definition at line 216 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _creep_dissipation_old

const MaterialProperty<Real>& AbaqusUMATStress::_creep_dissipation_old
protected

Definition at line 217 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _decomposition_method

const ComputeFiniteStrain::DecompMethod AbaqusUMATStress::_decomposition_method
private

Method being used to compute strain and rotation increments.

Definition at line 256 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _elastic_strain

MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_elastic_strain
protectedinherited

◆ _elastic_strain_energy

MaterialProperty<Real>& AbaqusUMATStress::_elastic_strain_energy
protected

Definition at line 212 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _elastic_strain_energy_old

const MaterialProperty<Real>& AbaqusUMATStress::_elastic_strain_energy_old
protected

Definition at line 213 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _external_field_names

std::vector<VariableName> AbaqusUMATStress::_external_field_names
protected

Definition at line 235 of file AbaqusUMATStress.h.

◆ _external_fields

const std::vector<const VariableValue *> AbaqusUMATStress::_external_fields
protected

Definition at line 231 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _external_fields_old

const std::vector<const VariableValue *> AbaqusUMATStress::_external_fields_old
protected

Definition at line 232 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _external_properties

std::vector<const MaterialProperty<Real> *> AbaqusUMATStress::_external_properties
protected

Definition at line 242 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _external_properties_old

std::vector<const MaterialProperty<Real> *> AbaqusUMATStress::_external_properties_old
protected

Definition at line 243 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _external_property_names

const std::vector<MaterialPropertyName> AbaqusUMATStress::_external_property_names
protected

Definition at line 240 of file AbaqusUMATStress.h.

◆ _extra_stress

const MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_extra_stress
protectedinherited

Extra stress tensor.

Definition at line 53 of file ComputeGeneralStressBase.h.

Referenced by ComputeGeneralStressBase::computeQpProperties().

◆ _Fbar

const OptionalMaterialProperty<RankTwoTensor>& AbaqusUMATStress::_Fbar
protected

Definition at line 205 of file AbaqusUMATStress.h.

Referenced by computeQpStress(), and initialSetup().

◆ _Fbar_old

const OptionalMaterialProperty<RankTwoTensor>& AbaqusUMATStress::_Fbar_old
protected

Definition at line 206 of file AbaqusUMATStress.h.

Referenced by computeQpStress(), and initialSetup().

◆ _initial_stress_fcn

std::vector<const Function *> ComputeGeneralStressBase::_initial_stress_fcn
protectedinherited

initial stress components

Definition at line 56 of file ComputeGeneralStressBase.h.

◆ _jacobian_mult

MaterialProperty<RankFourTensor>& AbaqusUMATStress::_jacobian_mult
protected

Jacobian multiplier.

Definition at line 203 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _Jacobian_mult

MaterialProperty<RankFourTensor>& ComputeGeneralStressBase::_Jacobian_mult
protectedinherited

derivative of stress w.r.t. strain (_dstress_dstrain)

Definition at line 59 of file ComputeGeneralStressBase.h.

Referenced by ComputeStrainIncrementBasedStress::computeQpJacobian(), FiniteStrainHyperElasticViscoPlastic::computeQpJacobian(), ComputeMultipleInelasticStressBase::computeQpJacobianMult(), ComputeMultipleInelasticCosseratStress::computeQpJacobianMult(), ComputeMultiPlasticityStress::computeQpStress(), FiniteStrainPlasticMaterial::computeQpStress(), ComputeCosseratLinearElasticStress::computeQpStress(), ComputeFiniteStrainElasticStress::computeQpStress(), ComputeLinearElasticPFFractureStress::computeQpStress(), ComputeLinearElasticStress::computeQpStress(), ComputeLinearViscoelasticStress::computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStress(), ComputeSmearedCrackingStress::computeQpStress(), ComputeMultipleCrystalPlasticityStress::computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStressIntermediateConfiguration(), ComputeLinearElasticPFFractureStress::computeStrainSpectral(), ComputeLinearElasticPFFractureStress::computeStrainVolDev(), ComputeLinearElasticPFFractureStress::computeStressSpectral(), FiniteStrainUObasedCP::elasticTangentModuli(), FiniteStrainUObasedCP::elastoPlasticTangentModuli(), ComputeMultipleInelasticStressBase::finiteStrainRotation(), ComputeMultiPlasticityStress::postReturnMap(), FiniteStrainCrystalPlasticity::postSolveQp(), FiniteStrainCrystalPlasticity::preSolveQp(), and ComputeMultipleInelasticStressBase::updateQpStateSingleModel().

◆ _library

DynamicLibraryLoader AbaqusUMATStress::_library
protected

Definition at line 80 of file AbaqusUMATStress.h.

◆ _material_timestep

MaterialProperty<Real>& AbaqusUMATStress::_material_timestep
protected

recommended maximum timestep for this model under the current conditions

Definition at line 220 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _mechanical_strain

const MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_mechanical_strain
protectedinherited

◆ _number_external_fields

const std::size_t AbaqusUMATStress::_number_external_fields
protected

Definition at line 238 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _number_external_properties

const std::size_t AbaqusUMATStress::_number_external_properties
protected

Definition at line 241 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _plastic_dissipation

MaterialProperty<Real>& AbaqusUMATStress::_plastic_dissipation
protected

Definition at line 214 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _plastic_dissipation_old

const MaterialProperty<Real>& AbaqusUMATStress::_plastic_dissipation_old
protected

Definition at line 215 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _plugin

FileName AbaqusUMATStress::_plugin
protected

Definition at line 77 of file AbaqusUMATStress.h.

◆ _R

const RotationTensor AbaqusUMATStress::_R
protected

Definition at line 250 of file AbaqusUMATStress.h.

Referenced by initQpStatefulProperties().

◆ _rotation_increment

const OptionalMaterialProperty<RankTwoTensor>& AbaqusUMATStress::_rotation_increment
protected

Definition at line 223 of file AbaqusUMATStress.h.

Referenced by computeQpStress(), and initialSetup().

◆ _rotation_increment_old

const OptionalMaterialProperty<RankTwoTensor>& AbaqusUMATStress::_rotation_increment_old
protected

Definition at line 224 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _state_var

MaterialProperty<std::vector<Real> >& AbaqusUMATStress::_state_var
protected

Definition at line 208 of file AbaqusUMATStress.h.

Referenced by computeQpStress(), and initQpStatefulProperties().

◆ _state_var_old

const MaterialProperty<std::vector<Real> >& AbaqusUMATStress::_state_var_old
protected

Definition at line 209 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _step_user_object

const AnalysisStepUserObject* AbaqusUMATStress::_step_user_object
private

User object that determines step number.

Definition at line 259 of file AbaqusUMATStress.h.

Referenced by computeProperties(), and initialSetup().

◆ _strain_increment

const OptionalMaterialProperty<RankTwoTensor>& AbaqusUMATStress::_strain_increment
protected

Definition at line 200 of file AbaqusUMATStress.h.

Referenced by computeQpStress(), and initialSetup().

◆ _stress

MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_stress
protectedinherited

Stress material property.

Definition at line 48 of file ComputeGeneralStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::computeAdmissibleState(), ComputeMultipleInelasticCosseratStress::computeAdmissibleState(), ComputeGeneralStressBase::computeQpProperties(), ComputeMultiPlasticityStress::computeQpStress(), ComputeStrainIncrementBasedStress::computeQpStress(), FiniteStrainPlasticMaterial::computeQpStress(), computeQpStress(), ComputeCosseratLinearElasticStress::computeQpStress(), ComputeFiniteStrainElasticStress::computeQpStress(), ComputeLinearElasticPFFractureStress::computeQpStress(), ComputeLinearElasticStress::computeQpStress(), ComputeLinearViscoelasticStress::computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStress(), ComputeSmearedCrackingStress::computeQpStress(), ComputeMultipleCrystalPlasticityStress::computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStressIntermediateConfiguration(), ComputeLinearElasticPFFractureStress::computeStrainSpectral(), ComputeLinearElasticPFFractureStress::computeStrainVolDev(), ComputeLinearElasticPFFractureStress::computeStressSpectral(), ComputeCreepPlasticityStress::computeTangentOperators(), ComputeMultipleInelasticStressBase::finiteStrainRotation(), FiniteStrainCrystalPlasticity::initQpStatefulProperties(), FiniteStrainUObasedCP::initQpStatefulProperties(), FiniteStrainHyperElasticViscoPlastic::initQpStatefulProperties(), ComputeGeneralStressBase::initQpStatefulProperties(), ComputeMultiPlasticityStress::postReturnMap(), FiniteStrainCrystalPlasticity::postSolveQp(), FiniteStrainUObasedCP::postSolveQp(), FiniteStrainHyperElasticViscoPlastic::postSolveQp(), ComputeSmearedCrackingStress::updateCrackingStateAndStress(), ComputeCreepPlasticityStress::updateQpState(), ComputeMultipleInelasticStress::updateQpState(), and ComputeMultipleInelasticStressBase::updateQpStateSingleModel().

◆ _stress_old

const MaterialProperty<RankTwoTensor>& AbaqusUMATStress::_stress_old
protected

Definition at line 198 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _temperature

const VariableValue& AbaqusUMATStress::_temperature
protected

Definition at line 227 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _temperature_old

const VariableValue& AbaqusUMATStress::_temperature_old
protected

Definition at line 228 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _total_rotation

MaterialProperty<RankTwoTensor>& AbaqusUMATStress::_total_rotation
protected

Definition at line 251 of file AbaqusUMATStress.h.

Referenced by computeQpStress(), and initQpStatefulProperties().

◆ _total_rotation_old

const MaterialProperty<RankTwoTensor>& AbaqusUMATStress::_total_rotation_old
protected

Definition at line 252 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _total_strain_old

const MaterialProperty<RankTwoTensor>& AbaqusUMATStress::_total_strain_old
protected

Definition at line 199 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _umat

umat_t AbaqusUMATStress::_umat
protected

Definition at line 83 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _use_one_based_indexing

const bool AbaqusUMATStress::_use_one_based_indexing
protected

parameter to assist with the transition to 1-based indexing

Definition at line 246 of file AbaqusUMATStress.h.

Referenced by computeProperties(), and computeQpStress().

◆ _use_orientation

const bool AbaqusUMATStress::_use_orientation
protected

Rotation information.

Definition at line 249 of file AbaqusUMATStress.h.

Referenced by computeQpStress().


The documentation for this class was generated from the following files: