https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | 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

enum  ConstantTypeEnum { ConstantTypeEnum::NONE, ConstantTypeEnum::ELEMENT, ConstantTypeEnum::SUBDOMAIN }
 
enum  TEST_TYPE
 
typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 
typedef DataFileName DataFileParameterType
 

Public Member Functions

 AbaqusUMATStress (const InputParameters &parameters)
 
void initialSetup () override
 check optional material properties for consistency More...
 
void computeProperties () override
 perform per-element computation/initialization More...
 
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)
 
virtual const dof_id_typegetElementID (const std::string &id_parameter_name, unsigned int comp=0) const override
 
dof_id_type getElementID (const Elem *elem, unsigned int elem_id_index) const
 
virtual const dof_id_typegetElementIDNeighbor (const std::string &id_parameter_name, unsigned int comp=0) const override
 
virtual const dof_id_typegetElementIDByName (const std::string &id_parameter_name) const override
 
virtual const dof_id_typegetElementIDNeighborByName (const std::string &id_parameter_name) const override
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialProperty (const std::string &name, MaterialData &material_data, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialProperty (const std::string &name, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialProperty (const std::string &name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialProperty (const std::string &name, MaterialData &material_data, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialProperty (const std::string &name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialProperty (const std::string &name, const unsigned int state=0)
 
const ADMaterialProperty< T > & getADMaterialProperty (const std::string &name, MaterialData &material_data)
 
const ADMaterialProperty< T > & getADMaterialProperty (const std::string &name)
 
const ADMaterialProperty< T > & getADMaterialProperty (const std::string &name)
 
const MaterialProperty< T > & getMaterialPropertyOld (const std::string &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOld (const std::string &name)
 
const MaterialProperty< T > & getMaterialPropertyOld (const std::string &name)
 
const MaterialProperty< T > & getMaterialPropertyOlder (const std::string &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOlder (const std::string &name)
 
const MaterialProperty< T > & getMaterialPropertyOlder (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data, const unsigned int state)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const std::string &name, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const std::string &name, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const std::string &prop_name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const std::string &prop_name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const std::string &prop_name)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const std::string &prop_name)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const std::string &prop_name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const std::string &prop_name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const std::string &prop_name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const std::string &prop_name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name)
 
MaterialBasegetMaterial (const std::string &name)
 
MaterialBasegetMaterialByName (const std::string &name, bool no_warn=false, bool no_dep=false)
 
MaterialBasegetMaterialByName (const std::string &name, bool no_warn=false)
 
MaterialBasegetMaterialByName (const std::string &name, bool no_warn=false)
 
virtual bool isBoundaryMaterial () const override
 
virtual const std::unordered_set< unsigned int > & getMatPropDependencies () const override
 
virtual void subdomainSetup () override
 
bool ghostable () const override final
 
virtual void resolveOptionalProperties () override
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty ()
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty ()
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty ()
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialPropertyByName (const std::string &prop_name)
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialPropertyByName (const std::string &prop_name)
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialPropertyByName (const std::string &prop_name)
 
const MaterialProperty< T > & getZeroMaterialProperty (Ts... args)
 
const MaterialProperty< T > & getZeroMaterialProperty (Ts... args)
 
const MaterialProperty< T > & getZeroMaterialProperty (Ts... args)
 
virtual void initStatefulProperties (unsigned int n_points)
 
virtual bool isInterfaceMaterial ()
 
virtual void resetProperties ()
 
virtual void computePropertiesAtQp (unsigned int qp)
 
const MaterialProperty< T > & getZeroMaterialPropertyByName (Ts... args)
 
virtual const std::set< std::string > & getRequestedItems () override
 
virtual const std::set< std::string > & getSuppliedItems () override
 
const std::set< unsigned int > & getSuppliedPropIDs ()
 
void checkStatefulSanity () const
 
std::set< OutputName > getOutputs ()
 
bool hasStatefulProperties () const
 
void setFaceInfo (const FaceInfo &fi)
 
std::unordered_map< SubdomainID, std::vector< MaterialBase *> > buildRequiredMaterials (bool allow_stateful=true)
 
void setActiveProperties (const std::unordered_set< unsigned int > &needed_props)
 
bool forceStatefulInit () const
 
virtual bool enabled () const
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
virtual const std::string & name () const
 
std::string typeAndName () const
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
const InputParametersparameters () const
 
MooseObjectName uniqueName () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &nm) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void mooseError (Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
const std::vector< SubdomainName > & blocks () const
 
unsigned int numBlocks () const
 
virtual const std::set< SubdomainID > & blockIDs () const
 
unsigned int blocksMaxDimension () const
 
bool hasBlocks (const SubdomainName &name) const
 
bool hasBlocks (const std::vector< SubdomainName > &names) const
 
bool hasBlocks (const std::set< SubdomainName > &names) const
 
bool hasBlocks (SubdomainID id) const
 
bool hasBlocks (const std::vector< SubdomainID > &ids) const
 
bool hasBlocks (const std::set< SubdomainID > &ids) const
 
bool isBlockSubset (const std::set< SubdomainID > &ids) const
 
bool isBlockSubset (const std::vector< SubdomainID > &ids) const
 
bool hasBlockMaterialProperty (const std::string &prop_name)
 
const std::set< SubdomainID > & meshBlockIDs () const
 
virtual bool blockRestricted () const
 
virtual void checkVariable (const MooseVariableFieldBase &variable) const
 
virtual const std::set< BoundaryID > & boundaryIDs () const
 
const std::vector< BoundaryName > & boundaryNames () const
 
unsigned int numBoundaryIDs () const
 
bool hasBoundary (const BoundaryName &name) const
 
bool hasBoundary (const std::vector< BoundaryName > &names) const
 
bool hasBoundary (const BoundaryID &id) const
 
bool hasBoundary (const std::vector< BoundaryID > &ids, TEST_TYPE type=ALL) const
 
bool hasBoundary (const std::set< BoundaryID > &ids, TEST_TYPE type=ALL) const
 
bool isBoundarySubset (const std::set< BoundaryID > &ids) const
 
bool isBoundarySubset (const std::vector< BoundaryID > &ids) const
 
bool hasBoundaryMaterialProperty (const std::string &prop_name) const
 
virtual bool boundaryRestricted () const
 
const std::set< BoundaryID > & meshBoundaryIDs () const
 
virtual bool checkVariableBoundaryIntegrity () const
 
virtual void timestepSetup ()
 
virtual void jacobianSetup ()
 
virtual void residualSetup ()
 
virtual void customSetup (const ExecFlagType &)
 
const ExecFlagEnumgetExecuteOnEnum () const
 
const std::set< MooseVariableFieldBase *> & getMooseVariableDependencies () const
 
std::set< MooseVariableFieldBase *> checkAllVariables (const DofObjectType &dof_object, const std::set< MooseVariableFieldBase * > &vars_to_omit={})
 
std::set< MooseVariableFieldBase *> checkVariables (const DofObjectType &dof_object, const std::set< MooseVariableFieldBase * > &vars_to_check)
 
void addMooseVariableDependency (MooseVariableFieldBase *var)
 
void addMooseVariableDependency (const std::vector< MooseVariableFieldBase * > &vars)
 
const std::vector< MooseVariableScalar *> & getCoupledMooseScalarVars ()
 
const std::set< TagID > & getScalarVariableCoupleableVectorTags () const
 
const std::set< TagID > & getScalarVariableCoupleableMatrixTags () const
 
const ADVariableValuegetADDefaultValue (const std::string &var_name) const
 
const FunctiongetFunction (const std::string &name) const
 
const FunctiongetFunctionByName (const FunctionName &name) const
 
bool hasFunction (const std::string &param_name) const
 
bool hasFunctionByName (const FunctionName &name) const
 
UserObjectName getUserObjectName (const std::string &param_name) const
 
const T & getUserObject (const std::string &param_name, bool is_dependency=true) const
 
const T & getUserObjectByName (const UserObjectName &object_name, bool is_dependency=true) const
 
const UserObjectgetUserObjectBase (const std::string &param_name, bool is_dependency=true) const
 
const UserObjectgetUserObjectBaseByName (const UserObjectName &object_name, bool is_dependency=true) const
 
bool isImplicit ()
 
Moose::StateArg determineState () const
 
bool isDefaultPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
bool hasPostprocessor (const std::string &param_name, const unsigned int index=0) const
 
bool hasPostprocessorByName (const PostprocessorName &name) const
 
std::size_t coupledPostprocessors (const std::string &param_name) const
 
const PostprocessorName & getPostprocessorName (const std::string &param_name, const unsigned int index=0) const
 
const VectorPostprocessorValuegetVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool hasVectorPostprocessor (const std::string &param_name, const std::string &vector_name) const
 
bool hasVectorPostprocessor (const std::string &param_name) const
 
bool hasVectorPostprocessorByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool hasVectorPostprocessorByName (const VectorPostprocessorName &name) const
 
const VectorPostprocessorName & getVectorPostprocessorName (const std::string &param_name) const
 
virtual void meshChanged ()
 
void buildOutputHideVariableList (std::set< std::string > variable_names)
 
void setRandomResetFrequency (ExecFlagType exec_flag)
 
unsigned long getRandomLong () const
 
Real getRandomReal () const
 
unsigned int getSeed (std::size_t id)
 
unsigned int getMasterSeed () const
 
bool isNodal () const
 
ExecFlagType getResetOnTime () const
 
void setRandomDataPointer (RandomData *random_data)
 
virtual unsigned int getElementIDIndex (const std::string &id_parameter_name, unsigned int comp=0) const
 
virtual unsigned int getElementIDIndexByName (const std::string &id_name) const
 
bool hasElementID (const std::string &id_name) const
 
dof_id_type maxElementID (unsigned int elem_id_index) const
 
dof_id_type minElementID (unsigned int elem_id_index) const
 
bool areElemIDsIdentical (const std::string &id_name1, const std::string &id_name2) const
 
std::unordered_map< dof_id_type, std::set< dof_id_type > > getElemIDMapping (const std::string &id_name1, const std::string &id_name2) const
 
std::set< dof_id_typegetAllElemIDs (unsigned int elem_id_index) const
 
std::set< dof_id_typegetElemIDsOnBlocks (unsigned int elem_id_index, const std::set< SubdomainID > &blks) const
 
const std::unordered_map< std::string, std::vector< MooseVariableFieldBase *> > & getCoupledVars () const
 
const std::vector< MooseVariableFieldBase *> & getCoupledMooseVars () const
 
const std::vector< MooseVariable *> & getCoupledStandardMooseVars () const
 
const std::vector< VectorMooseVariable *> & getCoupledVectorMooseVars () const
 
const std::vector< ArrayMooseVariable *> & getCoupledArrayMooseVars () const
 
void addFEVariableCoupleableVectorTag (TagID tag)
 
void addFEVariableCoupleableMatrixTag (TagID tag)
 
std::set< TagID > & getFEVariableCoupleableVectorTags ()
 
const std::set< TagID > & getFEVariableCoupleableVectorTags () const
 
std::set< TagID > & getFEVariableCoupleableMatrixTags ()
 
const std::set< TagID > & getFEVariableCoupleableMatrixTags () const
 
auto & getWritableCoupledVariables () const
 
bool hasWritableCoupledVariables () const
 
const ADVectorVariableValuegetADDefaultVectorValue (const std::string &var_name) const
 
const ADVariableGradientgetADDefaultGradient () const
 
const ADVectorVariableGradientgetADDefaultVectorGradient () const
 
const ADVariableSecondgetADDefaultSecond () const
 
const ADVectorVariableCurlgetADDefaultCurl () const
 
std::pair< const MaterialProperty< T > *, std::set< SubdomainID > > getBlockMaterialProperty (const MaterialPropertyName &name)
 
std::set< SubdomainIDgetMaterialPropertyBlocks (const std::string &name)
 
std::vector< SubdomainName > getMaterialPropertyBlockNames (const std::string &name)
 
std::set< BoundaryIDgetMaterialPropertyBoundaryIDs (const std::string &name)
 
std::vector< BoundaryName > getMaterialPropertyBoundaryNames (const std::string &name)
 
void checkBlockAndBoundaryCompatibility (std::shared_ptr< MaterialBase > discrete)
 
void statefulPropertiesAllowed (bool)
 
bool getMaterialPropertyCalled () const
 
const GenericMaterialProperty< T, is_ad > & getPossiblyConstantGenericMaterialPropertyByName (const MaterialPropertyName &prop_name, MaterialData &material_data, const unsigned int state)
 
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 GenericOptionalMaterialProperty< T, is_ad > & getGenericOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
const GenericOptionalMaterialProperty< T, is_ad > & getGenericOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
const OptionalMaterialProperty< T > & getOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
const OptionalMaterialProperty< T > & getOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
const OptionalADMaterialProperty< T > & getOptionalADMaterialProperty (const std::string &name)
 
const OptionalADMaterialProperty< T > & getOptionalADMaterialProperty (const std::string &name)
 
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOld (const std::string &name)
 
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOld (const std::string &name)
 
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOlder (const std::string &name)
 
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOlder (const std::string &name)
 
MaterialProperty< T > & declarePropertyByName (const std::string &prop_name)
 
MaterialProperty< T > & declarePropertyByName (const std::string &prop_name)
 
MaterialProperty< T > & declareProperty (const std::string &name)
 
MaterialProperty< T > & declareProperty (const std::string &name)
 
ADMaterialProperty< T > & declareADPropertyByName (const std::string &prop_name)
 
ADMaterialProperty< T > & declareADPropertyByName (const std::string &prop_name)
 
ADMaterialProperty< T > & declareADProperty (const std::string &name)
 
ADMaterialProperty< T > & declareADProperty (const std::string &name)
 
auto & declareGenericProperty (const std::string &prop_name)
 
auto & declareGenericProperty (const std::string &prop_name)
 
GenericMaterialProperty< T, is_ad > & declareGenericPropertyByName (const std::string &prop_name)
 
GenericMaterialProperty< T, is_ad > & declareGenericPropertyByName (const std::string &prop_name)
 
const DistributiongetDistribution (const std::string &name) const
 
const T & getDistribution (const std::string &name) const
 
const DistributiongetDistribution (const std::string &name) const
 
const T & getDistribution (const std::string &name) const
 
const DistributiongetDistributionByName (const DistributionName &name) const
 
const T & getDistributionByName (const std::string &name) const
 
const DistributiongetDistributionByName (const DistributionName &name) const
 
const T & getDistributionByName (const std::string &name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
const PostprocessorValuegetPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOld (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOld (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOlder (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOlder (const std::string &param_name, const unsigned int index=0) const
 
virtual const PostprocessorValuegetPostprocessorValueByName (const PostprocessorName &name) const
 
virtual const PostprocessorValuegetPostprocessorValueByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOldByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOldByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOlderByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOlderByName (const PostprocessorName &name) const
 
bool isVectorPostprocessorDistributed (const std::string &param_name) const
 
bool isVectorPostprocessorDistributed (const std::string &param_name) const
 
bool isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const
 
bool isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const
 
bool hasMaterialProperty (const std::string &name)
 
bool hasMaterialProperty (const std::string &name)
 
bool hasMaterialPropertyByName (const std::string &name)
 
bool hasMaterialPropertyByName (const std::string &name)
 
bool hasADMaterialProperty (const std::string &name)
 
bool hasADMaterialProperty (const std::string &name)
 
bool hasADMaterialPropertyByName (const std::string &name)
 
bool hasADMaterialPropertyByName (const std::string &name)
 
bool hasGenericMaterialProperty (const std::string &name)
 
bool hasGenericMaterialProperty (const std::string &name)
 
bool hasGenericMaterialPropertyByName (const std::string &name)
 
bool hasGenericMaterialPropertyByName (const std::string &name)
 
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
 
PenetrationLocatorgetPenetrationLocator (const BoundaryName &primary, const BoundaryName &secondary, Order order)
 
PenetrationLocatorgetQuadraturePenetrationLocator (const BoundaryName &primary, const BoundaryName &secondary, Order order)
 
NearestNodeLocatorgetNearestNodeLocator (const BoundaryName &primary, const BoundaryName &secondary)
 
NearestNodeLocatorgetQuadratureNearestNodeLocator (const BoundaryName &primary, const BoundaryName &secondary)
 
bool requiresGeometricSearch () const
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters validParams ()
 
static std::deque< MaterialBase *> buildRequiredMaterials (const Consumers &mat_consumers, const std::vector< std::shared_ptr< MaterialBase >> &mats, const bool allow_stateful)
 
static bool restricted (const std::set< BoundaryID > &ids)
 
static void sort (typename std::vector< T > &vector)
 
static void sortDFS (typename std::vector< T > &vector)
 
static void cyclicDependencyError (CyclicDependencyException< T2 > &e, const std::string &header)
 
static std::string deduceFunctorName (const std::string &name, const InputParameters &params)
 

Public Attributes

 ALL
 
 ANY
 
const ConsoleStream _console
 

Static Public Attributes

static constexpr PropertyValue::id_type default_property_id
 
static constexpr PropertyValue::id_type zero_property_id
 

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 More...
 
enum  QP_Data_Type
 

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. More...
 
virtual void computeQpProperties () override
 
virtual void checkMaterialProperty (const std::string &name, const unsigned int state) override
 
virtual const MaterialDatamaterialData () const override
 
virtual MaterialDatamaterialData () override
 
virtual const QBase & qRule () const override
 
virtual void resetQpProperties ()
 
virtual const FEProblemBasemiProblem () const
 
virtual FEProblemBasemiProblem ()
 
bool isPropertyActive (const unsigned int prop_id) const
 
void registerPropName (const std::string &prop_name, bool is_get, const unsigned int state)
 
void checkExecutionStage ()
 
void checkExecutionStage ()
 
void markMatPropRequested (const std::string &)
 
virtual bool hasBlockMaterialPropertyHelper (const std::string &prop_name)
 
void initializeBlockRestrictable (const MooseObject *moose_object)
 
Moose::CoordinateSystemType getBlockCoordSystem ()
 
bool hasBoundaryMaterialPropertyHelper (const std::string &prop_name) const
 
bool isCoupledScalar (const std::string &var_name, unsigned int i=0) const
 
unsigned int coupledScalarComponents (const std::string &var_name) const
 
unsigned int coupledScalar (const std::string &var_name, unsigned int comp=0) const
 
libMesh::Order coupledScalarOrder (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarValue (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadCoupledScalarValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< is_ad > & coupledGenericScalarValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const
 
const VariableValuecoupledVectorTagScalarValue (const std::string &var_name, TagID tag, unsigned int comp=0) const
 
const VariableValuecoupledMatrixTagScalarValue (const std::string &var_name, TagID tag, unsigned int comp=0) const
 
const VariableValuecoupledScalarValueOld (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarValueOlder (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDot (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadCoupledScalarDot (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotDot (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotOld (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotDu (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotDotDu (const std::string &var_name, unsigned int comp=0) const
 
const MooseVariableScalargetScalarVar (const std::string &var_name, unsigned int comp) const
 
bool checkVar (const std::string &var_name, unsigned int comp=0, unsigned int comp_bound=0) const
 
void validateExecutionerType (const std::string &name, const std::string &fn_name) const
 
virtual void addUserObjectDependencyHelper (const UserObject &) const
 
virtual void addPostprocessorDependencyHelper (const PostprocessorName &) const
 
virtual void addVectorPostprocessorDependencyHelper (const VectorPostprocessorName &) const
 
T & declareRestartableData (const std::string &data_name, Args &&... args)
 
ManagedValue< T > declareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
const T & getRestartableData (const std::string &data_name) const
 
T & declareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
T & declareRecoverableData (const std::string &data_name, Args &&... args)
 
T & declareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args)
 
T & declareRestartableDataWithObjectNameWithContext (const std::string &data_name, const std::string &object_name, void *context, Args &&... args)
 
std::string restartableName (const std::string &data_name) const
 
std::string deduceFunctorName (const std::string &name) const
 
const Moose::Functor< T > & getFunctor (const std::string &name)
 
const Moose::Functor< T > & getFunctor (const std::string &name, THREAD_ID tid)
 
const Moose::Functor< T > & getFunctor (const std::string &name, SubProblem &subproblem)
 
const Moose::Functor< T > & getFunctor (const std::string &name, SubProblem &subproblem, THREAD_ID tid)
 
bool isFunctor (const std::string &name) const
 
bool isFunctor (const std::string &name, const SubProblem &subproblem) const
 
Moose::ElemArg makeElemArg (const Elem *elem, bool correct_skewnewss=false) const
 
void checkFunctorSupportsSideIntegration (const std::string &name, bool qp_integration)
 
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 
virtual void coupledCallback (const std::string &, bool) const
 
virtual bool isCoupled (const std::string &var_name, unsigned int i=0) const
 
virtual bool isCoupledConstant (const std::string &var_name) const
 
unsigned int coupledComponents (const std::string &var_name) const
 
VariableName coupledName (const std::string &var_name, unsigned int comp=0) const
 
std::vector< VariableName > coupledNames (const std::string &var_name) const
 
virtual unsigned int coupled (const std::string &var_name, unsigned int comp=0) const
 
std::vector< unsigned intcoupledIndices (const std::string &var_name) const
 
virtual const VariableValuecoupledValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledValues (const std::string &var_name) const
 
std::vector< const VectorVariableValue *> coupledVectorValues (const std::string &var_name) const
 
const GenericVariableValue< is_ad > & coupledGenericValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericValue (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericValue (const std::string &var_name, unsigned int comp) const
 
const GenericVectorVariableValue< is_ad > & coupledGenericVectorValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVectorVariableValue< false > & coupledGenericVectorValue (const std::string &var_name, unsigned int comp) const
 
const GenericVectorVariableValue< true > & coupledGenericVectorValue (const std::string &var_name, unsigned int comp) const
 
std::vector< const GenericVariableValue< is_ad > *> coupledGenericValues (const std::string &var_name) const
 
std::vector< const GenericVariableValue< false > *> coupledGenericValues (const std::string &var_name) const
 
std::vector< const GenericVariableValue< true > *> coupledGenericValues (const std::string &var_name) const
 
const GenericVariableValue< is_ad > & coupledGenericDofValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericDofValue (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericDofValue (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< is_ad > & coupledGenericDot (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericDot (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericDot (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< is_ad > & coupledGenericDotDot (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericDotDot (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericDotDot (const std::string &var_name, unsigned int comp) const
 
virtual const VariableValuecoupledValueLower (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadCoupledValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVariableValue *> adCoupledValues (const std::string &var_name) const
 
const ADVariableValueadCoupledLowerValue (const std::string &var_name, unsigned int comp=0) const
 
const ADVectorVariableValueadCoupledVectorValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVectorVariableValue *> adCoupledVectorValues (const std::string &var_name) const
 
virtual const VariableValuecoupledVectorTagValue (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const VariableValuecoupledVectorTagValue (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const VariableValue *> coupledVectorTagValues (const std::string &var_names, TagID tag) const
 
std::vector< const VariableValue *> coupledVectorTagValues (const std::string &var_names, const std::string &tag_name) const
 
virtual const ArrayVariableValuecoupledVectorTagArrayValue (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const ArrayVariableValuecoupledVectorTagArrayValue (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const ArrayVariableValue *> coupledVectorTagArrayValues (const std::string &var_names, TagID tag) const
 
std::vector< const ArrayVariableValue *> coupledVectorTagArrayValues (const std::string &var_names, const std::string &tag_name) const
 
virtual const VariableGradientcoupledVectorTagGradient (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const VariableGradientcoupledVectorTagGradient (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const VariableGradient *> coupledVectorTagGradients (const std::string &var_names, TagID tag) const
 
std::vector< const VariableGradient *> coupledVectorTagGradients (const std::string &var_names, const std::string &tag_name) const
 
virtual const ArrayVariableGradientcoupledVectorTagArrayGradient (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const ArrayVariableGradientcoupledVectorTagArrayGradient (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const ArrayVariableGradient *> coupledVectorTagArrayGradients (const std::string &var_names, TagID tag) const
 
std::vector< const ArrayVariableGradient *> coupledVectorTagArrayGradients (const std::string &var_names, const std::string &tag_name) const
 
virtual const VariableValuecoupledVectorTagDofValue (const std::string &var_name, TagID tag, unsigned int index=0) const
 
virtual const VariableValuecoupledVectorTagDofValue (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
const ArrayVariableValuecoupledVectorTagArrayDofValue (const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledVectorTagDofValues (const std::string &var_names, TagID tag) const
 
std::vector< const VariableValue *> coupledVectorTagDofValues (const std::string &var_names, const std::string &tag_name) const
 
virtual const VariableValuecoupledMatrixTagValue (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const VariableValuecoupledMatrixTagValue (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const VariableValue *> coupledMatrixTagValues (const std::string &var_names, TagID tag) const
 
std::vector< const VariableValue *> coupledMatrixTagValues (const std::string &var_names, const std::string &tag_name) const
 
virtual const VectorVariableValuecoupledVectorValue (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ArrayVariableValue *> coupledArrayValues (const std::string &var_name) const
 
MooseWritableVariablewritableVariable (const std::string &var_name, unsigned int comp=0)
 
virtual VariableValuewritableCoupledValue (const std::string &var_name, unsigned int comp=0)
 
void checkWritableVar (MooseWritableVariable *var)
 
virtual const VariableValuecoupledValueOld (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledValuesOld (const std::string &var_name) const
 
std::vector< const VectorVariableValue *> coupledVectorValuesOld (const std::string &var_name) const
 
virtual const VariableValuecoupledValueOlder (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledValuesOlder (const std::string &var_name) const
 
virtual const VariableValuecoupledValuePreviousNL (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorValueOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorValueOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayValueOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayValueOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradient (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableGradient *> coupledGradients (const std::string &var_name) const
 
const ADVariableGradientadCoupledGradient (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableGradientadCoupledGradientDot (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVariableGradient *> adCoupledGradients (const std::string &var_name) const
 
const GenericVariableGradient< is_ad > & coupledGenericGradient (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableGradient< false > & coupledGenericGradient (const std::string &var_name, unsigned int comp) const
 
const GenericVariableGradient< true > & coupledGenericGradient (const std::string &var_name, unsigned int comp) const
 
std::vector< const GenericVariableGradient< is_ad > *> coupledGenericGradients (const std::string &var_name) const
 
std::vector< const GenericVariableGradient< false > *> coupledGenericGradients (const std::string &var_name) const
 
std::vector< const GenericVariableGradient< true > *> coupledGenericGradients (const std::string &var_name) const
 
const ADVectorVariableGradientadCoupledVectorGradient (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableSecondadCoupledSecond (const std::string &var_name, unsigned int comp=0) const
 
const ADVectorVariableSecondadCoupledVectorSecond (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradientOld (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableGradient *> coupledGradientsOld (const std::string &var_name) const
 
virtual const VariableGradientcoupledGradientOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradientPreviousNL (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradientDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradientDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableGradientcoupledVectorGradient (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableGradientcoupledVectorGradientOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableGradientcoupledVectorGradientOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayGradient (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayGradientOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayGradientOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayGradientDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableCurlcoupledCurl (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableCurlcoupledCurlOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableCurlcoupledCurlOlder (const std::string &var_name, unsigned int comp=0) const
 
const ADVectorVariableCurladCoupledCurl (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableDivergencecoupledDiv (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableDivergencecoupledDivOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableDivergencecoupledDivOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledSecond (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledSecondOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledSecondOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledSecondPreviousNL (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDot (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledDots (const std::string &var_name) const
 
virtual const VariableValuecoupledDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadCoupledDot (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVariableValue *> adCoupledDots (const std::string &var_name) const
 
const ADVariableValueadCoupledDotDot (const std::string &var_name, unsigned int comp=0) const
 
const ADVectorVariableValueadCoupledVectorDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledVectorDotDu (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledVectorDotDotDu (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDotDu (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDotDotDu (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledArrayDotDu (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalValue (const std::string &var_name, unsigned int comp=0) const
 
const Moose::ADType< T >::typeadCoupledNodalValue (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalValueOld (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalValueOlder (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalValuePreviousNL (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNodalDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNodalDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNodalDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDofValues (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledAllDofValues (const std::string &var_name) const
 
virtual const VariableValuecoupledDofValuesOld (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledAllDofValuesOld (const std::string &var_name) const
 
virtual const VariableValuecoupledDofValuesOlder (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledAllDofValuesOlder (const std::string &var_name) const
 
virtual const ArrayVariableValuecoupledArrayDofValues (const std::string &var_name, unsigned int comp=0) const
 
virtual const ADVariableValueadCoupledDofValues (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadZeroValue () const
 
const ADVariableGradientadZeroGradient () const
 
const ADVariableSecondadZeroSecond () const
 
const GenericVariableValue< is_ad > & genericZeroValue ()
 
const GenericVariableValue< false > & genericZeroValue ()
 
const GenericVariableValue< true > & genericZeroValue ()
 
const GenericVariableGradient< is_ad > & genericZeroGradient ()
 
const GenericVariableGradient< false > & genericZeroGradient ()
 
const GenericVariableGradient< true > & genericZeroGradient ()
 
const GenericVariableSecond< is_ad > & genericZeroSecond ()
 
const GenericVariableSecond< false > & genericZeroSecond ()
 
const GenericVariableSecond< true > & genericZeroSecond ()
 
const MooseVariableFieldBasegetFEVar (const std::string &var_name, unsigned int comp) const
 
const MooseVariableFieldBasegetFieldVar (const std::string &var_name, unsigned int comp) const
 
MooseVariableFieldBasegetFieldVar (const std::string &var_name, unsigned int comp)
 
const T * getVarHelper (const std::string &var_name, unsigned int comp) const
 
T * getVarHelper (const std::string &var_name, unsigned int comp)
 
MooseVariablegetVar (const std::string &var_name, unsigned int comp)
 
const MooseVariablegetVar (const std::string &var_name, unsigned int comp) const
 
VectorMooseVariablegetVectorVar (const std::string &var_name, unsigned int comp)
 
const VectorMooseVariablegetVectorVar (const std::string &var_name, unsigned int comp) const
 
ArrayMooseVariablegetArrayVar (const std::string &var_name, unsigned int comp)
 
const ArrayMooseVariablegetArrayVar (const std::string &var_name, unsigned int comp) const
 
std::vector< T > coupledVectorHelper (const std::string &var_name, const Func &func) const
 
MaterialPropertyName getMaterialPropertyName (const std::string &name) const
 
const GenericMaterialProperty< T, is_ad > * defaultGenericMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > * defaultGenericMaterialProperty (const std::string &name)
 
const MaterialProperty< T > * defaultMaterialProperty (const std::string &name)
 
const MaterialProperty< T > * defaultMaterialProperty (const std::string &name)
 
const ADMaterialProperty< T > * defaultADMaterialProperty (const std::string &name)
 
const ADMaterialProperty< T > * defaultADMaterialProperty (const std::string &name)
 
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 _aqSSE
 specific elastic strain energy More...
 
Real _aqSPD
 plastic dissipation More...
 
Real _aqSCD
 creep dissipation More...
 
Real _aqRPL
 Volumetric heat generation per unit time at the end of the increment caused by mechanical working of the material. More...
 
Real _aqDRPLDT
 Variation of the volumetric heat generation (RPL) with respect to the temperature. More...
 
Real _aqPNEWDT
 Ratio of suggested new time increment to the time increment being used (out) More...
 
Real _aqDTIME
 Time increment. More...
 
Real _aqTEMP
 Temperature at the start of the increment. More...
 
Real _aqDTEMP
 Increment of temperature. More...
 
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) More...
 
char _aqCMNAME [80]
 Model name buffer. More...
 
int _aqNDI
 Number of direct stress components at this point. More...
 
int _aqNSHR
 Number of engineering shear stress components at this point. More...
 
int _aqNTENS
 Size of the stress or strain component array (NDI + NSHR). More...
 
int _aqNSTATV
 Number of solution-dependent state variables that are associated with this material type. More...
 
int _aqNOEL
 Element number. More...
 
unsigned int _aqNPT
 Integration point number. More...
 
int _aqLAYER
 Layer number (for composite shells and layered solids). (not supported) More...
 
int _aqKSPT
 Section point number within the current layer. (not supported) More...
 
int _aqKSTEP
 The step number (as per Abaqus definition) can be set by the user. More...
 
int _aqKINC
 Increment number (_t_step). More...
 
std::vector< Real_aqSTATEV
 
std::vector< Real_aqDDSDDT
 Variation of the stress increments with respect to the temperature. More...
 
std::vector< Real_aqDRPLDE
 Variation of RPL with respect to the strain increments. More...
 
std::vector< Real_aqSTRAN
 An array containing the total strains at the beginning of the increment. More...
 
std::vector< Real_aqDFGRD0
 Array containing the deformation gradient at the beginning of the increment. More...
 
std::vector< Real_aqDFGRD1
 Array containing the deformation gradient at the end of the increment. More...
 
std::vector< Real_aqSTRESS
 Stress tensor (in: old stress, out: updated stress) More...
 
std::vector< Real_aqDDSDDE
 Jacobian matrix of the model (out) More...
 
std::vector< Real_aqDSTRAN
 Array of strain increments. More...
 
std::vector< Real_aqPROPS
 User-specified array of material constants associated with this user material. More...
 
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. More...
 
std::array< Real, 3 > _aqCOORDS
 An array containing the coordinates of this point. More...
 
std::vector< Real_aqDROT
 Rotation increment matrix. More...
 
int _aqNPROPS
 User-defined number of material constants associated with this user material. More...
 
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. More...
 
std::vector< Real_aqDPRED
 Array of increments of predefined field variables. More...
 
const MaterialProperty< RankTwoTensor > & _stress_old
 
const MaterialProperty< RankTwoTensor > & _total_strain_old
 
const OptionalMaterialProperty< RankTwoTensor > & _strain_increment
 
MaterialProperty< RankFourTensor > & _jacobian_mult
 Jacobian multiplier. More...
 
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
 
MaterialProperty< Real > & _plastic_dissipation
 
MaterialProperty< Real > & _creep_dissipation
 
MaterialProperty< Real > & _material_timestep
 recommended maximum timestep for this model under the current conditions More...
 
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 More...
 
const bool _use_orientation
 Rotation information. More...
 
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. More...
 
const MaterialProperty< RankTwoTensor > & _mechanical_strain
 Mechanical strain material property. More...
 
MaterialProperty< RankTwoTensor > & _stress
 Stress material property. More...
 
MaterialProperty< RankTwoTensor > & _elastic_strain
 Elastic strain material property. More...
 
const MaterialProperty< RankTwoTensor > & _extra_stress
 Extra stress tensor. More...
 
std::vector< const Function * > _initial_stress_fcn
 initial stress components More...
 
MaterialProperty< RankFourTensor > & _Jacobian_mult
 derivative of stress w.r.t. strain (_dstress_dstrain) More...
 
 CURR
 
 PREV
 
bool _bnd
 
bool _neighbor
 
const MooseArray< Point > & _q_point
 
const QBase *const & _qrule
 
const MooseArray< Real > & _JxW
 
const Elem *const & _current_elem
 
const SubdomainID_current_subdomain_id
 
const unsigned int_current_side
 
const ConstantTypeEnum _constant_option
 
SubProblem_subproblem
 
FEProblemBase_fe_problem
 
THREAD_ID _tid
 
Assembly_assembly
 
unsigned int _qp
 
const MooseArray< Real > & _coord
 
const MooseArray< Point > & _normals
 
MooseMesh_mesh
 
const Moose::CoordinateSystemType_coord_sys
 
std::set< std::string > _requested_props
 
std::set< std::string > _supplied_props
 
std::set< unsigned int_supplied_prop_ids
 
std::unordered_set< unsigned int_active_prop_ids
 
const bool _compute
 
std::unordered_map< unsigned int, unsigned int_props_to_min_states
 
std::vector< unsigned int_displacements
 
bool _has_stateful_property
 
bool _overrides_init_stateful_props
 
const FaceInfo_face_info
 
const bool & _enabled
 
MooseApp_app
 
const std::string _type
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
const MaterialData_blk_material_data
 
const ExecFlagEnum_execute_enum
 
const ExecFlagType_current_execute_flag
 
FEProblemBase_sc_fe_problem
 
const THREAD_ID _sc_tid
 
const Real_real_zero
 
const VariableValue_scalar_zero
 
const Point & _point_zero
 
std::unordered_map< std::string, std::vector< std::unique_ptr< VariableValue > > > _default_value
 
const InputParameters_ti_params
 
FEProblemBase_ti_feproblem
 
bool _is_implicit
 
Real_t
 
const Real_t_old
 
int_t_step
 
Real_dt
 
Real_dt_old
 
bool _is_transient
 
MooseApp_restartable_app
 
const std::string _restartable_system_name
 
const THREAD_ID _restartable_tid
 
const bool _restartable_read_only
 
FEProblemBase_mci_feproblem
 
GeometricSearchData_geometric_search_data
 
bool _requires_geometric_search
 
const InputParameters_c_parameters
 
const std::string & _c_name
 
const std::string & _c_type
 
FEProblemBase_c_fe_problem
 
const SystemBase *const _c_sys
 
std::unordered_map< std::string, std::vector< MooseVariableFieldBase *> > _coupled_vars
 
std::vector< MooseVariableFieldBase *> _coupled_moose_vars
 
std::vector< MooseVariable *> _coupled_standard_moose_vars
 
std::vector< VectorMooseVariable *> _coupled_vector_moose_vars
 
std::vector< ArrayMooseVariable *> _coupled_array_moose_vars
 
std::vector< MooseVariableFV< Real > *> _coupled_standard_fv_moose_vars
 
std::vector< MooseLinearVariableFV< Real > *> _coupled_standard_linear_fv_moose_vars
 
const std::unordered_map< std::string, std::string > & _new_to_deprecated_coupled_vars
 
bool _c_nodal
 
bool _c_is_implicit
 
const bool _c_allow_element_to_nodal_coupling
 
THREAD_ID _c_tid
 
std::unordered_map< std::string, std::unique_ptr< MooseArray< ADReal > > > _ad_default_value
 
std::unordered_map< std::string, std::unique_ptr< VectorVariableValue > > _default_vector_value
 
std::unordered_map< std::string, std::unique_ptr< ArrayVariableValue > > _default_array_value
 
std::unordered_map< std::string, std::unique_ptr< MooseArray< ADRealVectorValue > > > _ad_default_vector_value
 
VariableValue _default_value_zero
 
VariableGradient _default_gradient
 
MooseArray< ADRealVectorValue_ad_default_gradient
 
MooseArray< ADRealTensorValue_ad_default_vector_gradient
 
VariableSecond _default_second
 
MooseArray< ADRealTensorValue_ad_default_second
 
MooseArray< ADRealVectorValue_ad_default_curl
 
const VariableValue_zero
 
const VariablePhiValue_phi_zero
 
const MooseArray< ADReal > & _ad_zero
 
const VariableGradient_grad_zero
 
const MooseArray< ADRealVectorValue > & _ad_grad_zero
 
const VariablePhiGradient_grad_phi_zero
 
const VariableSecond_second_zero
 
const MooseArray< ADRealTensorValue > & _ad_second_zero
 
const VariablePhiSecond_second_phi_zero
 
const VectorVariableValue_vector_zero
 
const VectorVariableCurl_vector_curl_zero
 
VectorVariableValue _default_vector_value_zero
 
VectorVariableGradient _default_vector_gradient
 
VectorVariableCurl _default_vector_curl
 
VectorVariableDivergence _default_div
 
ArrayVariableValue _default_array_value_zero
 
ArrayVariableGradient _default_array_gradient
 
bool _coupleable_neighbor
 
const InputParameters_mi_params
 
const std::string _mi_name
 
const MooseObjectName _mi_moose_object_name
 
FEProblemBase_mi_feproblem
 
SubProblem_mi_subproblem
 
const THREAD_ID _mi_tid
 
const Moose::MaterialDataType _material_data_type
 
MaterialData_material_data
 
bool _stateful_allowed
 
bool _get_material_property_called
 
std::vector< std::unique_ptr< PropertyValue > > _default_properties
 
std::unordered_set< unsigned int_material_property_dependencies
 
const MaterialPropertyName _get_suffix
 
const bool _use_interpolated_state
 
const Parallel::Communicator & _communicator
 

Static Protected Attributes

static const std::string _interpolated_old
 
static const std::string _interpolated_older
 

Private Attributes

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

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.

67  _plugin(getParam<FileName>("plugin")),
68  _library(_plugin + std::string("-") + QUOTE(METHOD) + ".plugin"),
69  _umat(_library.getFunction<umat_t>("umat_")),
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  _plastic_dissipation(declareProperty<Real>(_base_name + "plastic_dissipation")),
84  _creep_dissipation(declareProperty<Real>(_base_name + "creep_dissipation")),
85  _material_timestep(declareProperty<Real>(_base_name + "material_timestep_limit")),
87  getOptionalMaterialProperty<RankTwoTensor>(_base_name + "rotation_increment")),
89  getOptionalMaterialPropertyOld<RankTwoTensor>(_base_name + "rotation_increment")),
90  _temperature(coupledValue("temperature")),
91  _temperature_old(coupledValueOld("temperature")),
92  _external_fields(isCoupled("external_fields") ? coupledValues("external_fields")
93  : std::vector<const VariableValue *>{}),
94  _external_fields_old(isCoupled("external_fields") ? coupledValuesOld("external_fields")
95  : std::vector<const VariableValue *>{}),
97  _external_property_names(getParam<std::vector<MaterialPropertyName>>("external_properties")),
101  _use_one_based_indexing(getParam<bool>("use_one_based_indexing")),
102  _use_orientation(isParamValid("orientation")),
103  _R(_use_orientation ? getParam<RealVectorValue>("orientation") : RealVectorValue(0.0)),
104  _total_rotation(declareProperty<RankTwoTensor>("total_rotation")),
105  _total_rotation_old(getMaterialPropertyOld<RankTwoTensor>("total_rotation")),
107  getParam<MooseEnum>("decomposition_method").getEnum<ComputeFiniteStrain::DecompMethod>())
108 {
111  "AbaqusUMATStress has transitioned to 1-based indexing in the element (NOEL) and "
112  "integration point (NPT) numbers to ensure maximum compatibility with legacy UMAT files. "
113  "Please ensure that any new UMAT plugins using these quantities are using the correct "
114  "indexing. 0-based indexing will be deprecated soon.");
115 
116  // get material properties
117  for (std::size_t i = 0; i < _number_external_properties; ++i)
118  {
119  _external_properties[i] = &getMaterialProperty<Real>(_external_property_names[i]);
120  _external_properties_old[i] = &getMaterialPropertyOld<Real>(_external_property_names[i]);
121  }
122 
123  // Read mesh dimension and size UMAT arrays (we always size for full 3D)
124  _aqNTENS = 6; // Size of the stress or strain component array (NDI+NSHR)
125  _aqNSHR = 3; // Number of engineering shear stress components
126  _aqNDI = 3; // Number of direct stress components (always 3)
127 
128  _aqDDSDDT.resize(_aqNTENS);
129  _aqDRPLDE.resize(_aqNTENS);
130  _aqSTRAN.resize(_aqNTENS);
131  _aqDFGRD0.resize(9);
132  _aqDFGRD1.resize(9);
133  _aqDROT.resize(9);
134  _aqSTRESS.resize(_aqNTENS);
135  _aqDDSDDE.resize(_aqNTENS * _aqNTENS);
136  _aqDSTRAN.resize(_aqNTENS);
139 }
const MaterialProperty< std::vector< Real > > & _state_var_old
virtual bool isCoupled(const std::string &var_name, unsigned int i=0) const
std::vector< Real > _aqSTATEV
const OptionalMaterialProperty< RankTwoTensor > & _rotation_increment_old
const VariableValue & _temperature
std::vector< Real > _aqDSTRAN
Array of strain increments.
MaterialProperty< T > & declareProperty(const std::string &name)
MaterialProperty< Real > & _material_timestep
recommended maximum timestep for this model under the current conditions
void mooseDeprecated(Args &&... args) const
const std::vector< const VariableValue * > _external_fields_old
const std::vector< MaterialPropertyName > _external_property_names
std::vector< Real > _aqSTRESS
Stress tensor (in: old stress, out: updated stress)
std::vector< const MaterialProperty< Real > * > _external_properties_old
MaterialProperty< RankFourTensor > & _jacobian_mult
Jacobian multiplier.
std::vector< Real > _aqDPRED
Array of increments of predefined field variables.
const MaterialProperty< RankTwoTensor > & _total_rotation_old
DynamicLibraryLoader _library
const MaterialProperty< T > & getMaterialPropertyOld(const std::string &name, MaterialData &material_data)
MaterialProperty< std::vector< Real > > & _state_var
std::vector< Real > _aqSTRAN
An array containing the total strains at the beginning of the increment.
std::vector< Real > _aqDDSDDE
Jacobian matrix of the model (out)
virtual const VariableValue & coupledValueOld(const std::string &var_name, unsigned int comp=0) const
int _aqNDI
Number of direct stress components at this point.
int _aqNTENS
Size of the stress or strain component array (NDI + NSHR).
std::vector< Real > _aqPROPS
User-specified array of material constants associated with this user material.
std::vector< Real > _aqDDSDDT
Variation of the stress increments with respect to the temperature.
const std::size_t _number_external_properties
std::vector< Real > _aqDFGRD0
Array containing the deformation gradient at the beginning of the increment.
const std::size_t _number_external_fields
bool isParamValid(const std::string &name) const
virtual const VariableValue & coupledValue(const std::string &var_name, unsigned int comp=0) const
const OptionalMaterialProperty< RankTwoTensor > & _rotation_increment
const ComputeFiniteStrain::DecompMethod _decomposition_method
Method being used to compute strain and rotation increments.
const std::string _base_name
Base name prepended to all material property names to allow for multi-material systems.
const MaterialProperty< RankTwoTensor > & _total_strain_old
std::vector< const MaterialProperty< Real > * > _external_properties
const RotationTensor _R
ComputeGeneralStressBase(const InputParameters &parameters)
std::vector< Real > _aqDRPLDE
Variation of RPL with respect to the strain increments.
const T & getParam(const std::string &name) const
int _aqNSHR
Number of engineering shear stress components at this point.
std::vector< Real > _aqDFGRD1
Array containing the deformation gradient at the end of the increment.
const bool _use_one_based_indexing
parameter to assist with the transition to 1-based indexing
const OptionalMaterialProperty< RankTwoTensor > & _strain_increment
const std::vector< const VariableValue * > _external_fields
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
OutputTools< Real >::VariableValue VariableValue
std::vector< const VariableValue *> coupledValues(const std::string &var_name) const
const bool _use_orientation
Rotation information.
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.
MaterialProperty< Real > & _creep_dissipation
MaterialProperty< Real > & _elastic_strain_energy
const InputParameters & parameters() const
std::vector< Real > _aqPREDEF
Array of interpolated values of predefined field variables at this point at the start of the incremen...
MaterialProperty< Real > & _plastic_dissipation
int _aqNPROPS
User-defined number of material constants associated with this user material.
const OptionalMaterialProperty< RankTwoTensor > & _Fbar_old
const VariableValue & _temperature_old
int _aqNSTATV
Number of solution-dependent state variables that are associated with this material type...
MaterialProperty< RankTwoTensor > & _total_rotation
const MaterialProperty< RankTwoTensor > & _stress_old
std::vector< const VariableValue *> coupledValuesOld(const std::string &var_name) const
const OptionalMaterialProperty< RankTwoTensor > & _Fbar
std::vector< Real > _aqDROT
Rotation increment matrix.

Member Function Documentation

◆ computeProperties()

void AbaqusUMATStress::computeProperties ( )
overridevirtual

perform per-element computation/initialization

Reimplemented from DerivativeMaterialInterface< Material >.

Definition at line 177 of file AbaqusUMATStress.C.

178 {
179  // current element "number"
180  _aqNOEL = _current_elem->id() + (_use_one_based_indexing ? 1 : 0);
181 
182  // characteristic element length
183  _aqCELENT = std::pow(_current_elem->volume(), 1.0 / _current_elem->dim());
184 
185  if (!_step_user_object)
186  {
187  // Value of total time at the beginning of the current increment
188  _aqTIME[0] = _t - _dt;
189  }
190  else
191  {
192  const unsigned int start_time_step = _step_user_object->getStep(_t - _dt);
193  const Real step_time = _step_user_object->getStartTime(start_time_step);
194  // Value of step time at the beginning of the current increment
195  _aqTIME[0] = step_time;
196  }
197  // Value of total time at the beginning of the current increment
198  _aqTIME[1] = _t - _dt;
199 
200  // Time increment
201  _aqDTIME = _dt;
202 
203  // Fill unused characters with spaces (Fortran)
204  std::fill(_aqCMNAME, _aqCMNAME + 80, ' ');
205  std::memcpy(_aqCMNAME, name().c_str(), name().size());
206 
208 }
Real _aqDTIME
Time increment.
Real _aqCELENT
Characteristic element length, which is a typical length of a line across an element for a first-orde...
virtual void computeProperties() override
virtual const std::string & name() const
Real getStartTime(const unsigned int &step) const
const bool _use_one_based_indexing
parameter to assist with the transition to 1-based indexing
int _aqNOEL
Element number.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
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
MooseUnits pow(const MooseUnits &, int)
const AnalysisStepUserObject * _step_user_object
User object that determines step number.
char _aqCMNAME[80]
Model name buffer.

◆ computeQpProperties()

void ComputeGeneralStressBase::computeQpProperties ( )
overrideprotectedvirtualinherited

Reimplemented from DerivativeMaterialInterface< Material >.

Definition at line 44 of file ComputeGeneralStressBase.C.

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

◆ 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 211 of file AbaqusUMATStress.C.

212 {
213  // C uses row-major, whereas Fortran uses column major
214  // therefore, all unsymmetric matrices must be transposed before passing them to Fortran
215  RankTwoTensor FBar_old_fortran = _Fbar_old[_qp].transpose();
216  RankTwoTensor FBar_fortran = _Fbar[_qp].transpose();
217 
218  // DROT needed by UMAT will depend on kinematics and whether or not an intermediate configuration
219  // is used
220  RankTwoTensor DROT_fortran;
221  if (_use_orientation)
222  {
223  DROT_fortran = RankTwoTensor::Identity();
224  }
225  else
226  {
228  DROT_fortran = _rotation_increment[_qp].transpose();
229  else
230  DROT_fortran = _rotation_increment_old[_qp].transpose();
231  }
232 
233  const Real * myDFGRD0 = &(FBar_old_fortran(0, 0));
234  const Real * myDFGRD1 = &(FBar_fortran(0, 0));
235  const Real * myDROT = &(DROT_fortran(0, 0));
236 
237  // More local copies of materials so we can (optionally) rotate
238  RankTwoTensor stress_old = _stress_old[_qp];
239  RankTwoTensor total_strain_old = _total_strain_old[_qp];
240  RankTwoTensor strain_increment = _strain_increment[_qp];
241 
242  // check if we need to rotate to intermediate configuration
243  if (_use_orientation)
244  {
245  // keep track of total rotation
247  // rotate stress/strain/increment from reference configuration to intermediate configuration
248  stress_old.rotate(_total_rotation_old[_qp].transpose());
249  total_strain_old.rotate(_total_rotation_old[_qp].transpose());
250 
252  strain_increment.rotate(_total_rotation[_qp].transpose());
253  else
254  strain_increment.rotate(_total_rotation_old[_qp].transpose());
255  }
257  // rotate old stress to reference configuration
258  stress_old.rotate(_rotation_increment[_qp]);
259 
260  // copy because UMAT does not guarantee constness
261  for (const auto i : make_range(9))
262  {
263  _aqDFGRD0[i] = myDFGRD0[i];
264  _aqDFGRD1[i] = myDFGRD1[i];
265  _aqDROT[i] = myDROT[i];
266  }
267 
268  // Recover "old" state variables
269  for (const auto i : make_range(_aqNSTATV))
270  _aqSTATEV[i] = _state_var_old[_qp][i];
271 
272  // Pass through updated stress, total strain, and strain increment arrays
273  static const std::array<Real, 6> strain_factor{{1, 1, 1, 2, 2, 2}};
274  // Account for difference in vector order convention: yz, xz, xy (MOOSE) vs xy, xz, yz
275  // (commercial software)
276  static const std::array<std::pair<unsigned int, unsigned int>, 6> component{
277  {{0, 0}, {1, 1}, {2, 2}, {0, 1}, {0, 2}, {1, 2}}};
278 
279  for (const auto i : make_range(_aqNTENS))
280  {
281  const auto a = component[i].first;
282  const auto b = component[i].second;
283  _aqSTRESS[i] = stress_old(a, b);
284  _aqSTRAN[i] = total_strain_old(a, b) * strain_factor[i];
285  _aqDSTRAN[i] = strain_increment(a, b) * strain_factor[i];
286  }
287 
288  // current coordinates
289  for (const auto i : make_range(Moose::dim))
290  _aqCOORDS[i] = _q_point[_qp](i);
291 
292  // zero out Jacobian contribution
293  for (const auto i : make_range(_aqNTENS * _aqNTENS))
294  _aqDDSDDE[i] = 0.0;
295 
296  // Set PNEWDT initially to a large value
297  _aqPNEWDT = std::numeric_limits<Real>::max();
298 
299  // Temperature
301 
302  // Temperature increment
304 
305  for (const auto i : make_range(_number_external_fields))
306  {
307  // External field at this step
308  _aqPREDEF[i] = (*_external_fields_old[i])[_qp];
309 
310  // External field increments
312  }
313 
314  for (const auto i : make_range(_number_external_properties))
315  {
316  // External property at this step
318 
319  // External property increments
322  }
323 
324  // Layer number (not supported)
325  _aqLAYER = -1;
326 
327  // Section point number within the layer (not supported)
328  _aqKSPT = -1;
329 
330  // Increment number
331  _aqKINC = _t_step;
332  _aqKSTEP = 1;
333 
334  // integration point number
335  _aqNPT = _qp + (_use_one_based_indexing ? 1 : 0);
336 
337  // Connection to extern statement
338  _umat(_aqSTRESS.data(),
339  _aqSTATEV.data(),
340  _aqDDSDDE.data(),
344  &_aqRPL,
345  _aqDDSDDT.data(),
346  _aqDRPLDE.data(),
347  &_aqDRPLDT,
348  _aqSTRAN.data(),
349  _aqDSTRAN.data(),
350  _aqTIME.data(),
351  &_aqDTIME,
352  &_aqTEMP,
353  &_aqDTEMP,
354  _aqPREDEF.data(),
355  _aqDPRED.data(),
356  _aqCMNAME,
357  &_aqNDI,
358  &_aqNSHR,
359  &_aqNTENS,
360  &_aqNSTATV,
361  _aqPROPS.data(),
362  &_aqNPROPS,
363  _aqCOORDS.data(),
364  _aqDROT.data(),
365  &_aqPNEWDT,
366  &_aqCELENT,
367  _aqDFGRD0.data(),
368  _aqDFGRD1.data(),
369  &_aqNOEL,
370  &_aqNPT,
371  &_aqLAYER,
372  &_aqKSPT,
373  &_aqKSTEP,
374  &_aqKINC);
375 
376  // Update state variables
377  for (int i = 0; i < _aqNSTATV; ++i)
378  _state_var[_qp][i] = _aqSTATEV[i];
379 
380  // Here, we apply UMAT convention: Always multiply _dt by PNEWDT to determine the material time
381  // step MOOSE time stepper will choose the most limiting of all material time step increments
382  // provided
384 
385  // Get new stress tensor - UMAT should update stress
386  // Account for difference in vector order convention: yz, xz, xy (MOOSE) vs xy, xz, yz
387  // (commercial software)
389  _aqSTRESS[0], _aqSTRESS[1], _aqSTRESS[2], _aqSTRESS[5], _aqSTRESS[4], _aqSTRESS[3]);
390 
391  // Build Jacobian matrix from UMAT's Voigt non-standard order to fourth order tensor.
392  const unsigned int N = Moose::dim;
393  const unsigned int ntens = N * (N + 1) / 2;
394  const int nskip = N - 1;
395 
396  for (const auto i : make_range(N))
397  for (const auto j : make_range(N))
398  for (const auto k : make_range(N))
399  for (const auto l : make_range(N))
400  {
401  if (i == j)
402  _jacobian_mult[_qp](i, j, k, l) =
403  k == l ? _aqDDSDDE[i * ntens + k] : _aqDDSDDE[i * ntens + k + nskip + l];
404  else
405  // i!=j
406  _jacobian_mult[_qp](i, j, k, l) =
407  k == l ? _aqDDSDDE[(nskip + i + j) * ntens + k]
408  : _aqDDSDDE[(nskip + i + j) * ntens + k + nskip + l];
409  }
410 
411  // check if we need to rotate from intermediate reference frame
412  if (_use_orientation)
413  {
414  // rotate to current configuration
415  _stress[_qp].rotate(_total_rotation[_qp]);
417  }
420 }
const MooseArray< Point > & _q_point
const MaterialProperty< std::vector< Real > > & _state_var_old
std::vector< Real > _aqSTATEV
Real _aqDTIME
Time increment.
const OptionalMaterialProperty< RankTwoTensor > & _rotation_increment_old
const VariableValue & _temperature
std::vector< Real > _aqDSTRAN
Array of strain increments.
MaterialProperty< Real > & _material_timestep
recommended maximum timestep for this model under the current conditions
const std::vector< const VariableValue * > _external_fields_old
std::vector< Real > _aqSTRESS
Stress tensor (in: old stress, out: updated stress)
std::vector< const MaterialProperty< Real > * > _external_properties_old
Real _aqCELENT
Characteristic element length, which is a typical length of a line across an element for a first-orde...
MaterialProperty< RankFourTensor > & _jacobian_mult
Jacobian multiplier.
static const std::string component
Definition: NS.h:153
std::vector< Real > _aqDPRED
Array of increments of predefined field variables.
const MaterialProperty< RankTwoTensor > & _total_rotation_old
std::array< Real, 3 > _aqCOORDS
An array containing the coordinates of this point.
MaterialProperty< std::vector< Real > > & _state_var
static constexpr std::size_t dim
std::vector< Real > _aqSTRAN
An array containing the total strains at the beginning of the increment.
int _aqKSTEP
The step number (as per Abaqus definition) can be set by the user.
std::vector< Real > _aqDDSDDE
Jacobian matrix of the model (out)
int _aqNDI
Number of direct stress components at this point.
int _aqNTENS
Size of the stress or strain component array (NDI + NSHR).
std::vector< Real > _aqPROPS
User-specified array of material constants associated with this user material.
std::vector< Real > _aqDDSDDT
Variation of the stress increments with respect to the temperature.
const std::size_t _number_external_properties
static RankTwoTensorTempl Identity()
std::vector< Real > _aqDFGRD0
Array containing the deformation gradient at the beginning of the increment.
const std::size_t _number_external_fields
void rotate(const RankTwoTensorTempl< Real > &R)
int _aqKINC
Increment number (_t_step).
Real _aqRPL
Volumetric heat generation per unit time at the end of the increment caused by mechanical working of ...
const OptionalMaterialProperty< RankTwoTensor > & _rotation_increment
const ComputeFiniteStrain::DecompMethod _decomposition_method
Method being used to compute strain and rotation increments.
const MaterialProperty< RankTwoTensor > & _total_strain_old
int _aqLAYER
Layer number (for composite shells and layered solids). (not supported)
std::vector< const MaterialProperty< Real > * > _external_properties
int _aqKSPT
Section point number within the current layer. (not supported)
Real _aqDRPLDT
Variation of the volumetric heat generation (RPL) with respect to the temperature.
std::vector< Real > _aqDRPLDE
Variation of RPL with respect to the strain increments.
Real _aqPNEWDT
Ratio of suggested new time increment to the time increment being used (out)
int _aqNSHR
Number of engineering shear stress components at this point.
std::vector< Real > _aqDFGRD1
Array containing the deformation gradient at the end of the increment.
const bool _use_one_based_indexing
parameter to assist with the transition to 1-based indexing
const OptionalMaterialProperty< RankTwoTensor > & _strain_increment
unsigned int _aqNPT
Integration point number.
Real _aqTEMP
Temperature at the start of the increment.
const std::vector< const VariableValue * > _external_fields
int _aqNOEL
Element number.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
int N
const bool _use_orientation
Rotation information.
MaterialProperty< Real > & _creep_dissipation
Real _aqDTEMP
Increment of temperature.
IntRange< T > make_range(T beg, T end)
MaterialProperty< Real > & _elastic_strain_energy
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
std::array< Real, 2 > _aqTIME
Value of step time at the beginning of the current increment, total time at the beginning of the curr...
std::vector< Real > _aqPREDEF
Array of interpolated values of predefined field variables at this point at the start of the incremen...
MaterialProperty< Real > & _plastic_dissipation
int _aqNPROPS
User-defined number of material constants associated with this user material.
const OptionalMaterialProperty< RankTwoTensor > & _Fbar_old
const VariableValue & _temperature_old
int _aqNSTATV
Number of solution-dependent state variables that are associated with this material type...
MaterialProperty< RankTwoTensor > & _total_rotation
static const std::string k
Definition: NS.h:130
const MaterialProperty< RankTwoTensor > & _stress_old
const OptionalMaterialProperty< RankTwoTensor > & _Fbar
char _aqCMNAME[80]
Model name buffer.
std::vector< Real > _aqDROT
Rotation increment matrix.

◆ 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.

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

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 mooseError(Args &&... args)
void mooseInfo(Args &&... args)
TheWarehouse & theWarehouse() const
const std::string name
Definition: Setup.h:20
Query query()
User object that provides analysis steps given user input.

◆ initialSetup()

void AbaqusUMATStress::initialSetup ( )
overridevirtual

check optional material properties for consistency

Reimplemented from DerivativeMaterialInterface< Material >.

Definition at line 142 of file AbaqusUMATStress.C.

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

◆ initQpStatefulProperties()

void AbaqusUMATStress::initQpStatefulProperties ( )
overrideprotectedvirtual

Reimplemented from ComputeGeneralStressBase.

Definition at line 163 of file AbaqusUMATStress.C.

164 {
166 
167  // Initialize state variable vector
169  for (const auto i : make_range(_aqNSTATV))
170  _state_var[_qp][i] = 0.0;
171 
172  // Initialize total rotation tensor
174 }
MaterialProperty< std::vector< Real > > & _state_var
virtual void resize(const std::size_t size) override final
virtual void initQpStatefulProperties() override
const RotationTensor _R
IntRange< T > make_range(T beg, T end)
int _aqNSTATV
Number of solution-dependent state variables that are associated with this material type...
MaterialProperty< RankTwoTensor > & _total_rotation

◆ 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.");
55  params.addParam<RealVectorValue>(
56  "orientation",
57  "Euler angles that describe the orientation of the local material coordinate system.");
58  return params;
59 }
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addRequiredParam(const std::string &name, const std::string &doc_string)
static InputParameters validParams()
static MooseEnum decompositionType()
void addCoupledVar(const std::string &name, const std::string &doc_string)
void addClassDescription(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 114 of file AbaqusUMATStress.h.

Referenced by computeProperties(), and computeQpStress().

◆ _aqCMNAME

char AbaqusUMATStress::_aqCMNAME[80]
protected

Model name buffer.

Definition at line 117 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 188 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDDSDDE

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

Jacobian matrix of the model (out)

Definition at line 172 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 154 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 163 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 166 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDPRED

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

Array of increments of predefined field variables.

Definition at line 200 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDROT

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

Rotation increment matrix.

Definition at line 191 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 157 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 99 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 179 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDTEMP

Real AbaqusUMATStress::_aqDTEMP
protected

Increment of temperature.

Definition at line 111 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqDTIME

Real AbaqusUMATStress::_aqDTIME
protected

Time increment.

Definition at line 105 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 148 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqKSPT

int AbaqusUMATStress::_aqKSPT
protected

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

Definition at line 141 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 144 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 138 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqNDI

int AbaqusUMATStress::_aqNDI
protected

Number of direct stress components at this point.

Definition at line 120 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqNOEL

int AbaqusUMATStress::_aqNOEL
protected

Element number.

Definition at line 132 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 194 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqNPT

unsigned int AbaqusUMATStress::_aqNPT
protected

Integration point number.

Definition at line 135 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqNSHR

int AbaqusUMATStress::_aqNSHR
protected

Number of engineering shear stress components at this point.

Definition at line 123 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 129 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 126 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 102 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 197 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 182 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 96 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqSCD

Real AbaqusUMATStress::_aqSCD
protected

creep dissipation

Definition at line 90 of file AbaqusUMATStress.h.

◆ _aqSPD

Real AbaqusUMATStress::_aqSPD
protected

plastic dissipation

Definition at line 88 of file AbaqusUMATStress.h.

◆ _aqSSE

Real AbaqusUMATStress::_aqSSE
protected

specific elastic strain energy

Definition at line 86 of file AbaqusUMATStress.h.

◆ _aqSTATEV

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

Definition at line 151 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 160 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 169 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _aqTEMP

Real AbaqusUMATStress::_aqTEMP
protected

Temperature at the start of the increment.

Definition at line 108 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 185 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 ComputeLinearElasticStress::initialSetup(), and ComputeCosseratLinearElasticStress::initialSetup().

◆ _creep_dissipation

MaterialProperty<Real>& AbaqusUMATStress::_creep_dissipation
protected

Definition at line 220 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 259 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 218 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _external_field_names

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

Definition at line 238 of file AbaqusUMATStress.h.

◆ _external_fields

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

Definition at line 234 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _external_fields_old

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

Definition at line 235 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _external_properties

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

Definition at line 245 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _external_properties_old

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

Definition at line 246 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _external_property_names

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

Definition at line 243 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 212 of file AbaqusUMATStress.h.

Referenced by computeQpStress(), and initialSetup().

◆ _Fbar_old

const OptionalMaterialProperty<RankTwoTensor>& AbaqusUMATStress::_Fbar_old
protected

Definition at line 213 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>& 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(), ComputeMultipleInelasticCosseratStress::computeQpJacobianMult(), ComputeMultipleInelasticStressBase::computeQpJacobianMult(), ComputeLinearElasticStress::computeQpStress(), ComputeSmearedCrackingStress::computeQpStress(), ComputeFiniteStrainElasticStress::computeQpStress(), ComputeCosseratLinearElasticStress::computeQpStress(), FiniteStrainPlasticMaterial::computeQpStress(), ComputeLinearElasticPFFractureStress::computeQpStress(), ComputeMultiPlasticityStress::computeQpStress(), ComputeLinearViscoelasticStress::computeQpStress(), ComputeMultipleCrystalPlasticityStress::computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStressIntermediateConfiguration(), ComputeLinearElasticPFFractureStress::computeStrainSpectral(), ComputeLinearElasticPFFractureStress::computeStrainVolDev(), ComputeLinearElasticPFFractureStress::computeStressSpectral(), FiniteStrainUObasedCP::elasticTangentModuli(), FiniteStrainUObasedCP::elastoPlasticTangentModuli(), ComputeMultipleInelasticStressBase::finiteStrainRotation(), ComputeMultiPlasticityStress::postReturnMap(), FiniteStrainCrystalPlasticity::postSolveQp(), FiniteStrainCrystalPlasticity::preSolveQp(), and ComputeMultipleInelasticStressBase::updateQpStateSingleModel().

◆ _jacobian_mult

MaterialProperty<RankFourTensor>& AbaqusUMATStress::_jacobian_mult
protected

Jacobian multiplier.

Definition at line 210 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _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 223 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 241 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _number_external_properties

const std::size_t AbaqusUMATStress::_number_external_properties
protected

Definition at line 244 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _plastic_dissipation

MaterialProperty<Real>& AbaqusUMATStress::_plastic_dissipation
protected

Definition at line 219 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 253 of file AbaqusUMATStress.h.

Referenced by initQpStatefulProperties().

◆ _rotation_increment

const OptionalMaterialProperty<RankTwoTensor>& AbaqusUMATStress::_rotation_increment
protected

Definition at line 226 of file AbaqusUMATStress.h.

Referenced by computeQpStress(), and initialSetup().

◆ _rotation_increment_old

const OptionalMaterialProperty<RankTwoTensor>& AbaqusUMATStress::_rotation_increment_old
protected

Definition at line 227 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _state_var

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

Definition at line 215 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 216 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 262 of file AbaqusUMATStress.h.

Referenced by computeProperties(), and initialSetup().

◆ _strain_increment

const OptionalMaterialProperty<RankTwoTensor>& AbaqusUMATStress::_strain_increment
protected

Definition at line 207 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 ComputeMultipleInelasticCosseratStress::computeAdmissibleState(), ComputeMultipleInelasticStressBase::computeAdmissibleState(), ComputeGeneralStressBase::computeQpProperties(), ComputeStrainIncrementBasedStress::computeQpStress(), ComputeLinearElasticStress::computeQpStress(), ComputeFiniteStrainElasticStress::computeQpStress(), ComputeSmearedCrackingStress::computeQpStress(), ComputeCosseratLinearElasticStress::computeQpStress(), FiniteStrainPlasticMaterial::computeQpStress(), ComputeLinearElasticPFFractureStress::computeQpStress(), ComputeMultiPlasticityStress::computeQpStress(), ComputeLinearViscoelasticStress::computeQpStress(), ComputeMultipleCrystalPlasticityStress::computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStress(), computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStressIntermediateConfiguration(), ComputeLinearElasticPFFractureStress::computeStrainSpectral(), ComputeLinearElasticPFFractureStress::computeStrainVolDev(), ComputeLinearElasticPFFractureStress::computeStressSpectral(), ComputeCreepPlasticityStress::computeTangentOperators(), ComputeMultipleInelasticStressBase::finiteStrainRotation(), ComputeGeneralStressBase::initQpStatefulProperties(), FiniteStrainCrystalPlasticity::initQpStatefulProperties(), FiniteStrainUObasedCP::initQpStatefulProperties(), FiniteStrainHyperElasticViscoPlastic::initQpStatefulProperties(), ComputeMultiPlasticityStress::postReturnMap(), FiniteStrainUObasedCP::postSolveQp(), FiniteStrainHyperElasticViscoPlastic::postSolveQp(), FiniteStrainCrystalPlasticity::postSolveQp(), ComputeSmearedCrackingStress::updateCrackingStateAndStress(), ComputeMultipleInelasticStress::updateQpState(), ComputeCreepPlasticityStress::updateQpState(), and ComputeMultipleInelasticStressBase::updateQpStateSingleModel().

◆ _stress_old

const MaterialProperty<RankTwoTensor>& AbaqusUMATStress::_stress_old
protected

Definition at line 205 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _temperature

const VariableValue& AbaqusUMATStress::_temperature
protected

Definition at line 230 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _temperature_old

const VariableValue& AbaqusUMATStress::_temperature_old
protected

Definition at line 231 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _total_rotation

MaterialProperty<RankTwoTensor>& AbaqusUMATStress::_total_rotation
protected

Definition at line 254 of file AbaqusUMATStress.h.

Referenced by computeQpStress(), and initQpStatefulProperties().

◆ _total_rotation_old

const MaterialProperty<RankTwoTensor>& AbaqusUMATStress::_total_rotation_old
protected

Definition at line 255 of file AbaqusUMATStress.h.

Referenced by computeQpStress().

◆ _total_strain_old

const MaterialProperty<RankTwoTensor>& AbaqusUMATStress::_total_strain_old
protected

Definition at line 206 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 249 of file AbaqusUMATStress.h.

Referenced by computeProperties(), and computeQpStress().

◆ _use_orientation

const bool AbaqusUMATStress::_use_orientation
protected

Rotation information.

Definition at line 252 of file AbaqusUMATStress.h.

Referenced by computeQpStress().


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