https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
ComputeDynamicFrictionalForceLMMechanicalContact Class Reference

Computes the mortar tangential frictional forces for dynamic simulations. More...

#include <ComputeDynamicFrictionalForceLMMechanicalContact.h>

Inheritance diagram for ComputeDynamicFrictionalForceLMMechanicalContact:
[legend]

Public Types

enum  ResidualTagType { ResidualTagType::NonReference, ResidualTagType::Reference }
 
typedef DataFileName DataFileParameterType
 

Public Member Functions

 ComputeDynamicFrictionalForceLMMechanicalContact (const InputParameters &parameters)
 
void residualSetup () override
 
void post () override
 
void incorrectEdgeDroppingPost (const std::unordered_set< const Node *> &inactive_lm_nodes) override
 Copy of the post routine but that skips assembling inactive nodes. More...
 
virtual void computeResidual () override
 
virtual void computeJacobian () override
 
const MooseVariablevariable () const override
 
const MooseVariablevariablePtr () const
 
bool useDual () const
 
void zeroInactiveLMDofs (const std::unordered_set< const Node * > &inactive_lm_nodes, const std::unordered_set< const Elem * > &inactive_lm_elems)
 
virtual bool addCouplingEntriesToJacobian ()
 
virtual void subdomainSetup () override final
 
virtual void residualEnd ()
 
void prepareNeighborShapes (unsigned int var_num)
 
virtual void computeOffDiagJacobian (unsigned int)
 
virtual void computeOffDiagJacobianScalar (unsigned int)
 
virtual void computeNonlocalJacobian ()
 
virtual void computeNonlocalOffDiagJacobian (unsigned int)
 
const SubProblemsubProblem () const
 
virtual void prepareShapes (unsigned int var_num)
 
virtual std::set< std::string > additionalROVariables ()
 
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
 
virtual void initialSetup ()
 
virtual void customSetup (const ExecFlagType &)
 
const ExecFlagEnumgetExecuteOnEnum () 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
 
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 void meshChanged ()
 
void useVectorTag (const TagName &tag_name, VectorTagsKey)
 
void useVectorTag (TagID tag_id, VectorTagsKey)
 
void useMatrixTag (const TagName &tag_name, MatrixTagsKey)
 
void useMatrixTag (TagID tag_id, MatrixTagsKey)
 
bool isVectorTagged ()
 
bool isMatrixTagged ()
 
bool hasVectorTags () const
 
const std::set< TagID > & getVectorTags (VectorTagsKey) const
 
const std::set< TagID > & getMatrixTags (MatrixTagsKey) const
 
virtual const VariableValuecoupledNeighborValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledNeighborValues (const std::string &var_name) const
 
std::vector< const VariableValue *> coupledNeighborValuesOld (const std::string &var_name) const
 
std::vector< const VariableValue *> coupledNeighborValuesOlder (const std::string &var_name) const
 
virtual const ADVariableValueadCoupledNeighborValue (const std::string &var_name, unsigned int comp=0) const
 
const auto & coupledGenericNeighborValue (const std::string &var_name, unsigned int comp=0) const
 
const auto & coupledGenericNeighborGradient (const std::string &var_name, unsigned int comp=0) const
 
virtual const ADVariableValueadCoupledNeighborValueDot (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVariableValue *> adCoupledNeighborValues (const std::string &var_name) const
 
virtual const ADVectorVariableValueadCoupledVectorNeighborValue (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNeighborValueDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNeighborValueDotDu (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNeighborValueOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNeighborValueOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledNeighborGradient (const std::string &var_name, unsigned int comp=0) const
 
virtual std::vector< const VariableGradient *> coupledNeighborGradients (const std::string &var_name) const
 
virtual const VariableGradientcoupledNeighborGradientOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledNeighborGradientOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const ADVariableGradientadCoupledNeighborGradient (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableGradientcoupledVectorNeighborGradient (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableGradientcoupledVectorNeighborGradientOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableGradientcoupledVectorNeighborGradientOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayNeighborValue (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayNeighborGradient (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayNeighborGradientOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayNeighborGradientOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledNeighborSecond (const std::string &var_name, unsigned int i=0) const
 
virtual const VariableValuecoupledNeighborDofValues (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNeighborDofValuesOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNeighborDofValuesOlder (const std::string &var_name, unsigned int comp=0) 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 ADVariableValuegetADDefaultValue (const std::string &var_name) const
 
const ADVectorVariableValuegetADDefaultVectorValue (const std::string &var_name) const
 
const ADVariableGradientgetADDefaultGradient () const
 
const ADVectorVariableGradientgetADDefaultVectorGradient () const
 
const ADVariableSecondgetADDefaultSecond () const
 
const ADVectorVariableCurlgetADDefaultCurl () const
 
const std::vector< MooseVariableScalar *> & getCoupledMooseScalarVars ()
 
const std::set< TagID > & getScalarVariableCoupleableVectorTags () const
 
const std::set< TagID > & getScalarVariableCoupleableMatrixTags () 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)
 
SubdomainID primarySubdomain () const
 
SubdomainID secondarySubdomain () const
 
bool onInterface (BoundaryID primary_boundary_id, BoundaryID secondary_boundary_id) const
 
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 MaterialPropertyName &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 MaterialPropertyName &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 MaterialPropertyName &name)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name)
 
std::pair< const MaterialProperty< T > *, std::set< SubdomainID > > getBlockMaterialProperty (const MaterialPropertyName &name)
 
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 MaterialProperty< T > & getZeroMaterialProperty (Ts... args)
 
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)
 
std::unordered_map< SubdomainID, std::vector< MaterialBase *> > buildRequiredMaterials (bool allow_stateful=true)
 
void statefulPropertiesAllowed (bool)
 
bool getMaterialPropertyCalled () const
 
virtual const std::unordered_set< unsigned int > & getMatPropDependencies () const
 
virtual void resolveOptionalProperties ()
 
const GenericMaterialProperty< T, is_ad > & getPossiblyConstantGenericMaterialPropertyByName (const MaterialPropertyName &prop_name, MaterialData &material_data, const unsigned int state)
 
MooseVariableBasemooseVariableBase () const
 
MooseVariableField< Real > & mooseVariableField ()
 
MooseVariableFE< Real > * mooseVariable () const
 
MooseVariableFV< Real > * mooseVariableFV () const
 
MooseLinearVariableFV< Real > * mooseLinearVariableFV () 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
 
const GenericMaterialProperty< T, is_ad > & getGenericNeighborMaterialProperty (const std::string &name, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericNeighborMaterialProperty (const std::string &name, const unsigned int state=0)
 
const MaterialProperty< T > & getNeighborMaterialProperty (const std::string &name, const unsigned int state=0)
 
const MaterialProperty< T > & getNeighborMaterialProperty (const std::string &name, const unsigned int state=0)
 
const ADMaterialProperty< T > & getNeighborADMaterialProperty (const std::string &name)
 
const ADMaterialProperty< T > & getNeighborADMaterialProperty (const std::string &name)
 
const MaterialProperty< T > & getNeighborMaterialPropertyOld (const std::string &name)
 
const MaterialProperty< T > & getNeighborMaterialPropertyOld (const std::string &name)
 
const MaterialProperty< T > & getNeighborMaterialPropertyOlder (const std::string &name)
 
const MaterialProperty< T > & getNeighborMaterialPropertyOlder (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > & getGenericNeighborMaterialPropertyByName (const std::string &name, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericNeighborMaterialPropertyByName (const std::string &name, const unsigned int state=0)
 
const MaterialProperty< T > & getNeighborMaterialPropertyByName (const std::string &name, const unsigned int state=0)
 
const MaterialProperty< T > & getNeighborMaterialPropertyByName (const std::string &name, const unsigned int state=0)
 
const ADMaterialProperty< T > & getNeighborADMaterialPropertyByName (const std::string &name)
 
const ADMaterialProperty< T > & getNeighborADMaterialPropertyByName (const std::string &name)
 
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)
 
MaterialBasegetMaterial (const std::string &name)
 
MaterialBasegetMaterial (const std::string &name)
 
MaterialBasegetMaterialByName (const std::string &name, bool no_warn=false)
 
MaterialBasegetMaterialByName (const std::string &name, bool no_warn=false)
 
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)
 
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 ()
 

Public Attributes

const ConsoleStream _console
 

Static Public Attributes

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

Protected Member Functions

virtual void computeQpProperties () override
 Computes properties that are functions only of the current quadrature point (_qp), e.g. More...
 
virtual void computeQpIProperties () override
 Computes properties that are functions both of _qp and _i, for example the weighted gap. More...
 
virtual void enforceConstraintOnDof (const DofObject *const dof) override
 Method called from post(). More...
 
virtual void enforceConstraintOnDof3d (const DofObject *const dof)
 Method called from post(). More...
 
void timestepSetup () override
 
ADReal computeFrictionValue (const ADReal &contact_pressure, const Real &tangential_vel, const Real &tangential_vel_dir)
 Apply constant or function-based friction coefficient. More...
 
ADReal computeQpResidual (Moose::MortarType mortar_type) final
 
void computeResidual (Moose::MortarType mortar_type) override
 
virtual void computeResidual () override
 
void computeResidual (Moose::MortarType mortar_type) override
 
virtual void computeResidual () override
 
virtual void computeResidual (Moose::MortarType mortar_type)=0
 
void computeJacobian (Moose::MortarType mortar_type) override
 
virtual void computeJacobian () override
 
void computeJacobian (Moose::MortarType mortar_type) override
 
virtual void computeJacobian () override
 
virtual void computeJacobian (Moose::MortarType mortar_type)=0
 
void jacobianSetup () override final
 
void communicateWear ()
 
void computeResidualAndJacobian () override
 
const FEProblemBasefeProblem () const
 
virtual void precalculateResidual ()
 
virtual void precalculateJacobian ()
 
virtual void precalculateOffDiagJacobian (unsigned int)
 
const MooseVariableFieldBasegetVariable (unsigned int jvar_num) 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
 
void prepareVectorTag (Assembly &assembly, unsigned int ivar)
 
void prepareVectorTag (Assembly &assembly, unsigned int ivar, ResidualTagType tag_type)
 
void prepareVectorTag (Assembly &assembly, unsigned int ivar, ResidualTagType tag_type)
 
void prepareVectorTag (Assembly &assembly, unsigned int ivar, ResidualTagType tag_type)
 
void prepareVectorTag (Assembly &assembly, unsigned int ivar, ResidualTagType tag_type)
 
void prepareVectorTag (Assembly &assembly, unsigned int ivar, ResidualTagType tag_type)
 
void prepareVectorTagNeighbor (Assembly &assembly, unsigned int ivar)
 
void prepareVectorTagLower (Assembly &assembly, unsigned int ivar)
 
void prepareMatrixTag (Assembly &assembly, unsigned int ivar, unsigned int jvar)
 
void prepareMatrixTag (Assembly &assembly, unsigned int ivar, unsigned int jvar, DenseMatrix< Number > &k) const
 
void prepareMatrixTagNonlocal (Assembly &assembly, unsigned int ivar, unsigned int jvar)
 
void prepareMatrixTagNeighbor (Assembly &assembly, unsigned int ivar, unsigned int jvar, Moose::DGJacobianType type)
 
void prepareMatrixTagNeighbor (Assembly &assembly, unsigned int ivar, unsigned int jvar, Moose::DGJacobianType type, DenseMatrix< Number > &k) const
 
void prepareMatrixTagLower (Assembly &assembly, unsigned int ivar, unsigned int jvar, Moose::ConstraintJacobianType type)
 
void accumulateTaggedLocalResidual ()
 
void assignTaggedLocalResidual ()
 
void accumulateTaggedLocalMatrix ()
 
void accumulateTaggedLocalMatrix (Assembly &assembly, unsigned int ivar, unsigned int jvar, const DenseMatrix< Number > &k)
 
void accumulateTaggedLocalMatrix (Assembly &assembly, unsigned int ivar, unsigned int jvar, Moose::DGJacobianType type, const DenseMatrix< Number > &k)
 
void accumulateTaggedNonlocalMatrix ()
 
void assignTaggedLocalMatrix ()
 
void addResiduals (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addResiduals (Assembly &assembly, const DenseVector< T > &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addResiduals (Assembly &assembly, const ADResidualsPacket &packet)
 
void addResidualsAndJacobian (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addResidualsAndJacobian (Assembly &assembly, const ADResidualsPacket &packet)
 
void addJacobian (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addJacobian (Assembly &assembly, const ADResidualsPacket &packet)
 
void addJacobian (Assembly &assembly, DenseMatrix< Real > &local_k, const std::vector< dof_id_type > &row_indices, const std::vector< dof_id_type > &column_indices, Real scaling_factor)
 
void addResidualsWithoutConstraints (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addResidualsAndJacobianWithoutConstraints (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addJacobianWithoutConstraints (Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
 
void addJacobianElement (Assembly &assembly, Real value, dof_id_type row_index, dof_id_type column_index, Real scaling_factor)
 
void setResidual (SystemBase &sys, const T &residual, MooseVariableFE< T > &var)
 
void setResidual (SystemBase &sys, Real residual, dof_id_type dof_index)
 
void setResidual (SystemBase &sys, SetResidualFunctor set_residual_functor)
 
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 ()
 
bool checkVar (const std::string &var_name, unsigned int comp=0, unsigned int comp_bound=0) const
 
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
 
void validateExecutionerType (const std::string &name, const std::string &fn_name) const
 
std::vector< T > coupledVectorHelper (const std::string &var_name, const Func &func) 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
 
const std::set< SubdomainID > & getHigherDimSubdomainIDs () const
 
const std::set< BoundaryID > & getBoundaryIDs () const
 
const AutomaticMortarGenerationamg () const
 
bool interpolateNormals () const
 
virtual void checkMaterialProperty (const std::string &name, const unsigned int state)
 
void markMatPropRequested (const std::string &)
 
MaterialPropertyName getMaterialPropertyName (const std::string &name) const
 
void checkExecutionStage ()
 
virtual const OutputTools< Real >::VariableValuevalue ()
 
virtual const OutputTools< Real >::VariableValuevalueOld ()
 
virtual const OutputTools< Real >::VariableValuevalueOlder ()
 
virtual const OutputTools< Real >::VariableValuedot ()
 
virtual const OutputTools< Real >::VariableValuedotDot ()
 
virtual const OutputTools< Real >::VariableValuedotOld ()
 
virtual const OutputTools< Real >::VariableValuedotDotOld ()
 
virtual const VariableValuedotDu ()
 
virtual const VariableValuedotDotDu ()
 
virtual const OutputTools< Real >::VariableGradientgradient ()
 
virtual const OutputTools< Real >::VariableGradientgradientOld ()
 
virtual const OutputTools< Real >::VariableGradientgradientOlder ()
 
virtual const OutputTools< Real >::VariableSecondsecond ()
 
virtual const OutputTools< Real >::VariableSecondsecondOld ()
 
virtual const OutputTools< Real >::VariableSecondsecondOlder ()
 
virtual const OutputTools< Real >::VariableTestSecondsecondTest ()
 
virtual const OutputTools< Real >::VariableTestSecondsecondTestFace ()
 
virtual const OutputTools< Real >::VariablePhiSecondsecondPhi ()
 
virtual const OutputTools< Real >::VariablePhiSecondsecondPhiFace ()
 
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)
 

Static Protected Member Functions

static void trimDerivative (dof_id_type remove_derivative_index, ADReal &dual_number)
 
static void trimInteriorNodeDerivatives (const std::map< unsigned int, unsigned int > &primary_ip_lowerd_map, const Variables &moose_var, DualNumbers &ad_vars, const bool is_secondary)
 

Protected Attributes

std::unordered_map< const DofObject *, std::array< ADReal, 2 > > _dof_to_weighted_tangential_velocity
 A map from node to two weighted tangential velocities. More...
 
std::unordered_map< const DofObject *, std::array< Real, 2 > > _dof_to_real_tangential_velocity
 A map from node to two tangential velocities. Required to have direct connection to physics. More...
 
std::unordered_map< const DofObject *, std::array< Real, 2 > > _dof_to_old_real_tangential_velocity
 A map from node to two old tangential velocities. Required to have direct connection to physics. More...
 
std::array< const ADReal *, 2 > _tangential_vel_ptr = {{nullptr, nullptr}}
 An array of two pointers to avoid copies. More...
 
ADRealVectorValue _qp_tangential_velocity_nodal
 The value of the tangential velocity vectors at the current node. More...
 
ADRealVectorValue _qp_real_tangential_velocity_nodal
 The value of the tangential velocity vectors at the current node. More...
 
const Real _c_t
 Numerical factor used in the tangential constraints for convergence purposes. More...
 
std::vector< MooseVariable * > _friction_vars
 Frictional Lagrange's multiplier variable pointers. More...
 
const ADVariableValue_secondary_x_dot
 x-velocity on the secondary face More...
 
const ADVariableValue_primary_x_dot
 x-velocity on the primary face More...
 
const ADVariableValue_secondary_y_dot
 y-velocity on the secondary face More...
 
const ADVariableValue_primary_y_dot
 y-velocity on the primary face More...
 
const ADVariableValue *const _secondary_z_dot
 z-velocity on the secondary face More...
 
const ADVariableValue *const _primary_z_dot
 z-velocity on the primary face More...
 
const Real _epsilon
 Small contact pressure value to trigger computation of frictional forces. More...
 
const Real _mu
 Friction coefficient. More...
 
const Function *const _function_friction
 input function More...
 
const bool _has_friction_function
 Boolean to determine whether the friction coefficient is taken from a function. More...
 
bool _3d
 Automatic flag to determine whether we are doing three-dimensional work. More...
 
const ADVariableValue_secondary_disp_x
 x-displacement on the secondary face More...
 
const ADVariableValue_primary_disp_x
 x-displacement on the primary face More...
 
const ADVariableValue_secondary_disp_y
 y-displacement on the secondary face More...
 
const ADVariableValue_primary_disp_y
 y-displacement on the primary face More...
 
const bool _has_disp_z
 For 2D mortar contact no displacement will be specified, so const pointers used. More...
 
const ADVariableValue *const _secondary_disp_z
 z-displacement on the secondary face More...
 
const ADVariableValue *const _primary_disp_z
 z-displacement on the primary face More...
 
const Real _c
 This factor multiplies the weighted gap. More...
 
ADReal _qp_gap
 The value of the gap at the current quadrature point. More...
 
Real _qp_factor
 The value of the LM at the current quadrature point. More...
 
bool _normalize_c
 Whether to normalize weighted gap by weighting function norm. More...
 
const bool _nodal
 Whether the dof objects are nodal; if they're not, then they're elemental. More...
 
const MooseVariable *const _disp_x_var
 The x displacement variable. More...
 
const MooseVariable *const _disp_y_var
 The y displacement variable. More...
 
const MooseVariable *const _disp_z_var
 The z displacement variable. More...
 
ADRealVectorValue _qp_gap_nodal
 Vector for computation of weighted gap with nodal normals. More...
 
std::unordered_map< const DofObject *, std::pair< ADReal, Real > > _dof_to_weighted_gap
 A map from node to weighted gap and normalization (if requested) More...
 
const ADReal_weighted_gap_ptr = nullptr
 A pointer members that can be used to help avoid copying ADReals. More...
 
const Real_normalization_ptr = nullptr
 
const Real _capture_tolerance
 A small threshold gap value to consider that a node needs a "persistency" constraint. More...
 
const bool _has_wear
 Flag to determine whether wear needs to be included in the contact constraints. More...
 
const VariableValue_wear_depth
 Wear depth to include contact. More...
 
std::unordered_map< const DofObject *, ADReal_dof_to_old_weighted_gap
 A map from dof-object to the old weighted gap. More...
 
ADRealVectorValue _qp_gap_nodal_dynamics
 Vector for computation of weighted gap velocity to fulfill "persistency" condition. More...
 
ADRealVectorValue _qp_velocity
 Vector for computation of weighted gap velocity to fulfill "persistency" condition. More...
 
std::unordered_map< const DofObject *, ADReal_dof_to_weighted_gap_dynamics
 A map from node to weighted gap velocity times _dt. More...
 
std::unordered_map< const DofObject *, ADReal_dof_to_velocity
 A map from node to weighted gap velocity times _dt. More...
 
std::unordered_map< const DofObject *, ADReal_dof_to_old_velocity
 A map from node to weighted gap velocity times _dt. More...
 
const Real _newmark_beta
 
const Real _newmark_gamma
 
std::unordered_map< const DofObject *, ADReal_dof_to_nodal_wear_depth
 A map from node to wear in this step. More...
 
std::unordered_map< const DofObject *, ADReal_dof_to_nodal_old_wear_depth
 A map from node to wear in old step. More...
 
ADRealVectorValue _relative_velocity
 The relative velocity. More...
 
const ADVariableValue_lambda
 
const ADVariableValue_u_secondary
 
const ADVariableValue_u_primary
 
const ADVariableGradient_grad_u_secondary
 
const ADVariableGradient_grad_u_primary
 
FEProblemBase_fe_problem
 
MooseVariable *const _var
 
MooseVariableField< Real > & _secondary_var
 
MooseVariableField< Real > & _primary_var
 
const bool _compute_primal_residuals
 
const bool _compute_lm_residuals
 
const VariableTestValue _test_dummy
 
const bool _use_dual
 
const MooseArray< std::vector< Point > > & _tangents
 
const MooseArray< Real > & _coord
 
const std::vector< Point > & _q_point
 
const bool _use_petrov_galerkin
 
const MooseVariable *const _aux_lm_var
 
const VariableTestValue_test
 
const VariableTestValue_test_secondary
 
const VariableTestValue_test_primary
 
const VariableTestGradient_grad_test_secondary
 
const VariableTestGradient_grad_test_primary
 
const Elem *const & _interior_secondary_elem
 
const Elem *const & _interior_primary_elem
 
const bool _displaced
 
unsigned int _i
 
unsigned int _j
 
unsigned int _qp
 
SubProblem_subproblem
 
SystemBase_sys
 
THREAD_ID _tid
 
Assembly_assembly
 
MooseMesh_mesh
 
const bool & _enabled
 
MooseApp_app
 
const std::string _type
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
const ExecFlagEnum_execute_enum
 
const ExecFlagType_current_execute_flag
 
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
 
DenseVector< Number_local_re
 
DenseMatrix< Number_local_ke
 
DenseMatrix< Number_nonlocal_ke
 
GeometricSearchData_geometric_search_data
 
bool _requires_geometric_search
 
bool _neighbor_nodal
 
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::vector< std::unique_ptr< VariableValue > > > _default_value
 
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
 
FEProblemBase_sc_fe_problem
 
const THREAD_ID _sc_tid
 
const Real_real_zero
 
const VariableValue_scalar_zero
 
const Point & _point_zero
 
FEProblemBase_mci_fe_problem
 
SubProblem_mci_subproblem
 
const THREAD_ID _mci_tid
 
MooseMesh_mci_mesh
 
Assembly_mci_assembly
 
const MortarData_mortar_data
 
const BoundaryID _secondary_id
 
const BoundaryID _primary_id
 
const SubdomainID _secondary_subdomain_id
 
const SubdomainID _primary_subdomain_id
 
std::set< BoundaryID_secondary_set
 
std::set< BoundaryID_boundary_ids
 
std::set< SubdomainID_higher_dim_subdomain_ids
 
const bool _interpolate_normals
 
const MooseArray< Point > & _phys_points_secondary
 
const MooseArray< Point > & _phys_points_primary
 
const libMesh::QBase *const & _qrule_msm
 
const libMesh::QBase *const & _qrule_face
 
Elem const *const & _lower_secondary_elem
 
Elem const *const & _lower_primary_elem
 
const std::vector< Real > & _JxW_msm
 
const Elem *const & _msm_elem
 
std::vector< Point > _normals
 
MaterialData_neighbor_material_data
 
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
 
MooseVariableFE< Real > * _variable
 
MooseVariableFV< Real > * _fv_variable
 
MooseLinearVariableFV< Real > * _linear_fv_variable
 
MooseVariableField< Real > * _field_variable
 
Assembly_mvi_assembly
 
const Parallel::Communicator & _communicator
 

Static Protected Attributes

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

Detailed Description

Computes the mortar tangential frictional forces for dynamic simulations.

Definition at line 17 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Constructor & Destructor Documentation

◆ ComputeDynamicFrictionalForceLMMechanicalContact()

ComputeDynamicFrictionalForceLMMechanicalContact::ComputeDynamicFrictionalForceLMMechanicalContact ( const InputParameters parameters)

Definition at line 47 of file ComputeDynamicFrictionalForceLMMechanicalContact.C.

50  _c_t(getParam<Real>("c_t")),
53  _secondary_y_dot(adCoupledDot("disp_y")),
55  _secondary_z_dot(_has_disp_z ? &adCoupledDot("disp_z") : nullptr),
57  _epsilon(getParam<Real>("epsilon")),
58  _mu(isParamValid("mu") ? getParam<Real>("mu") : std::numeric_limits<double>::quiet_NaN()),
59  _function_friction(isParamValid("function_friction") ? &getFunction("function_friction")
60  : nullptr),
61  _has_friction_function(isParamValid("function_friction")),
63 {
64  if (!_has_friction_function && !isParamValid("mu"))
65  mooseError(
66  "A coefficient of friction needs to be provided as a constant value of via a function.");
67 
69  paramError("mu",
70  "Either provide a constant coefficient of friction or a function defining the "
71  "coefficient of friction. Both inputs cannot be provided simultaneously.");
72 
73  if (!getParam<bool>("use_displaced_mesh"))
74  paramError("use_displaced_mesh",
75  "'use_displaced_mesh' must be true for the "
76  "ComputeFrictionalForceLMMechanicalContact object");
77 
78  if (_3d && !isParamValid("friction_lm_dir"))
79  paramError("friction_lm_dir",
80  "Three-dimensional mortar frictional contact simulations require an additional "
81  "frictional Lagrange's multiplier to enforce a second tangential pressure");
82 
83  _friction_vars.push_back(getVar("friction_lm", 0));
84 
85  if (_3d)
86  _friction_vars.push_back(getVar("friction_lm_dir", 0));
87 
88  if (!_friction_vars[0]->isNodal())
89  if (_friction_vars[0]->feType().order != static_cast<Order>(0))
90  paramError(
91  "friction_lm",
92  "Frictional contact constraints only support elemental variables of CONSTANT order");
93 
94  // Request the old solution state in unison
95  _sys.solutionOld();
96 }
MooseVariableField< Real > & _secondary_var
virtual const ADTemplateVariableValue< Real > & adUDot() const =0
const Real _epsilon
Small contact pressure value to trigger computation of frictional forces.
const Function & getFunction(const std::string &name) const
const ADVariableValue *const _primary_z_dot
z-velocity on the primary face
const bool _has_disp_z
For 2D mortar contact no displacement will be specified, so const pointers used.
MooseVariable * getVar(const std::string &var_name, unsigned int comp)
std::vector< MooseVariable * > _friction_vars
Frictional Lagrange&#39;s multiplier variable pointers.
bool isParamValid(const std::string &name) const
SystemBase & _sys
const ADVariableValue & _primary_x_dot
x-velocity on the primary face
const T & getParam(const std::string &name) const
const ADVariableValue & adCoupledDot(const std::string &var_name, unsigned int comp=0) const
void paramError(const std::string &param, Args... args) const
bool isNodal() const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual const ADVariableValue & adCoupledNeighborValueDot(const std::string &var_name, unsigned int comp=0) const
const ADVariableValue *const _secondary_z_dot
z-velocity on the secondary face
void mooseError(Args &&... args) const
const InputParameters & parameters() const
const bool _has_friction_function
Boolean to determine whether the friction coefficient is taken from a function.
const ADVariableValue & _secondary_y_dot
y-velocity on the secondary face
NumericVector< Number > & solutionOld()
bool _3d
Automatic flag to determine whether we are doing three-dimensional work.
const ADVariableValue & _primary_y_dot
y-velocity on the primary face
const ADVariableValue & _secondary_x_dot
x-velocity on the secondary face
const Real _c_t
Numerical factor used in the tangential constraints for convergence purposes.
virtual const ADTemplateVariableValue< Real > & adUDotNeighbor() const =0
MooseVariableField< Real > & _primary_var

Member Function Documentation

◆ communicateWear()

void ComputeDynamicWeightedGapLMMechanicalContact::communicateWear ( )
protectedinherited

Definition at line 339 of file ComputeDynamicWeightedGapLMMechanicalContact.C.

Referenced by ComputeDynamicWeightedGapLMMechanicalContact::incorrectEdgeDroppingPost(), and ComputeDynamicWeightedGapLMMechanicalContact::post().

340 {
341  // We may have wear depth information that should go to other processes that own the dofs
342  using Datum = std::pair<dof_id_type, ADReal>;
343  std::unordered_map<processor_id_type, std::vector<Datum>> push_data;
344 
345  for (auto & pr : _dof_to_nodal_wear_depth)
346  {
347  const auto * const dof_object = pr.first;
348  const auto proc_id = dof_object->processor_id();
349  if (proc_id == this->processor_id())
350  continue;
351 
352  push_data[proc_id].push_back(std::make_pair(dof_object->id(), std::move(pr.second)));
353  }
354 
355  const auto & lm_mesh = _mesh.getMesh();
356 
357  auto action_functor = [this, &lm_mesh](const processor_id_type libmesh_dbg_var(pid),
358  const std::vector<Datum> & sent_data)
359  {
360  mooseAssert(pid != this->processor_id(), "We do not send messages to ourself here");
361  for (auto & pr : sent_data)
362  {
363  const auto dof_id = pr.first;
364  const auto * const dof_object =
365  _nodal ? static_cast<const DofObject *>(lm_mesh.node_ptr(dof_id))
366  : static_cast<const DofObject *>(lm_mesh.elem_ptr(dof_id));
367  mooseAssert(dof_object, "This should be non-null");
368  _dof_to_nodal_wear_depth[dof_object] += std::move(pr.second);
369  }
370  };
371 
372  TIMPI::push_parallel_vector_data(_communicator, push_data, action_functor);
373 }
MooseMesh & _mesh
const Parallel::Communicator & _communicator
std::unordered_map< const DofObject *, ADReal > _dof_to_nodal_wear_depth
A map from node to wear in this step.
void push_parallel_vector_data(const Communicator &comm, MapToVectors &&data, const ActionFunctor &act_on_data)
uint8_t processor_id_type
MeshBase & getMesh()
const bool _nodal
Whether the dof objects are nodal; if they&#39;re not, then they&#39;re elemental.
processor_id_type processor_id() const

◆ computeFrictionValue()

ADReal ComputeDynamicFrictionalForceLMMechanicalContact::computeFrictionValue ( const ADReal contact_pressure,
const Real tangential_vel,
const Real tangential_vel_dir 
)
protected

Apply constant or function-based friction coefficient.

Definition at line 370 of file ComputeDynamicFrictionalForceLMMechanicalContact.C.

Referenced by enforceConstraintOnDof(), and enforceConstraintOnDof3d().

372 {
373  // TODO: Introduce temperature dependence in the function. Do this when we have an example.
374  ADReal mu_ad;
375 
377  mu_ad = _mu;
378  else
379  {
380  ADReal tangential_vel_magnitude = std::sqrt(tangential_vel * tangential_vel +
381  tangential_vel_dir * tangential_vel_dir + 1.0e-24);
382 
383  mu_ad = _function_friction->value<ADReal>(0.0, contact_pressure, tangential_vel_magnitude, 0.0);
384  }
385 
386  return mu_ad;
387 }
DualNumber< Real, DNDerivativeType, true > ADReal
const bool _has_friction_function
Boolean to determine whether the friction coefficient is taken from a function.
virtual Real value(Real t, const Point &p) const

◆ computeJacobian() [1/5]

virtual void ADMortarConstraint::computeJacobian
protectedinherited

◆ computeJacobian() [2/5]

virtual void ADMortarConstraint::computeJacobian
protectedinherited

◆ computeJacobian() [3/5]

void ADMortarConstraint::computeJacobian
protectedinherited

◆ computeJacobian() [4/5]

virtual void ADMortarConstraint::computeJacobian
protectedinherited

◆ computeJacobian() [5/5]

void ComputeDynamicWeightedGapLMMechanicalContact::computeJacobian ( Moose::MortarType  mortar_type)
overrideprotectedvirtualinherited

Reimplemented from ADMortarConstraint.

Definition at line 416 of file ComputeDynamicWeightedGapLMMechanicalContact.C.

417 {
418  // During "computeResidual" and "computeJacobian" we are actually just computing properties on the
419  // mortar segment element mesh. We are *not* actually assembling into the residual/Jacobian. For
420  // the zero-penetration constraint, the property of interest is the map from node to weighted gap.
421  // Computation of the properties proceeds identically for residual and Jacobian evaluation hence
422  // why we simply call computeResidual here. We will assemble into the residual/Jacobian later from
423  // the post() method
424  computeResidual(mortar_type);
425 }
virtual void computeResidual() override

◆ computeQpIProperties()

void ComputeDynamicFrictionalForceLMMechanicalContact::computeQpIProperties ( )
overrideprotectedvirtual

Computes properties that are functions both of _qp and _i, for example the weighted gap.

Reimplemented from ComputeDynamicWeightedGapLMMechanicalContact.

Definition at line 111 of file ComputeDynamicFrictionalForceLMMechanicalContact.C.

112 {
113  // Get the _dof_to_weighted_gap map
115 
116  const auto & nodal_tangents = amg().getNodalTangents(*_lower_secondary_elem);
117 
118  // Get the _dof_to_weighted_tangential_velocity map
119  const DofObject * const dof =
120  _friction_vars[0]->isNodal()
121  ? static_cast<const DofObject *>(_lower_secondary_elem->node_ptr(_i))
122  : static_cast<const DofObject *>(_lower_secondary_elem);
123 
125  _test[_i][_qp] * _qp_tangential_velocity_nodal * nodal_tangents[0][_i];
126 
129  nodal_tangents[0][_i];
130 
131  // Get the _dof_to_weighted_tangential_velocity map for a second direction
132  if (_3d)
133  {
135  _test[_i][_qp] * _qp_tangential_velocity_nodal * nodal_tangents[1][_i];
136 
139  nodal_tangents[1][_i];
140  }
141 }
ADRealVectorValue _qp_tangential_velocity_nodal
The value of the tangential velocity vectors at the current node.
ADRealVectorValue _qp_real_tangential_velocity_nodal
The value of the tangential velocity vectors at the current node.
std::unordered_map< const DofObject *, std::array< Real, 2 > > _dof_to_real_tangential_velocity
A map from node to two tangential velocities. Required to have direct connection to physics...
auto raw_value(const Eigen::Map< T > &in)
std::vector< MooseVariable * > _friction_vars
Frictional Lagrange&#39;s multiplier variable pointers.
unsigned int _i
const VariableTestValue & _test
std::unordered_map< const DofObject *, std::array< ADReal, 2 > > _dof_to_weighted_tangential_velocity
A map from node to two weighted tangential velocities.
Elem const *const & _lower_secondary_elem
const AutomaticMortarGeneration & amg() const
std::array< MooseUtils::SemidynamicVector< Point, 9 >, 2 > getNodalTangents(const Elem &secondary_elem) const
unsigned int _qp
bool _3d
Automatic flag to determine whether we are doing three-dimensional work.

◆ computeQpProperties()

void ComputeDynamicFrictionalForceLMMechanicalContact::computeQpProperties ( )
overrideprotectedvirtual

Computes properties that are functions only of the current quadrature point (_qp), e.g.

indepedent of shape functions

Reimplemented from ComputeDynamicWeightedGapLMMechanicalContact.

Definition at line 99 of file ComputeDynamicFrictionalForceLMMechanicalContact.C.

100 {
101  // Compute the value of _qp_gap
103 
104  // It appears that the relative velocity between weighted gap and this class have a sign
105  // difference
108 }
virtual void computeQpProperties()
Computes properties that are functions only of the current quadrature point (_qp), e.g.
ADRealVectorValue _qp_tangential_velocity_nodal
The value of the tangential velocity vectors at the current node.
ADRealVectorValue _qp_real_tangential_velocity_nodal
The value of the tangential velocity vectors at the current node.
const std::vector< Real > & _JxW_msm
const MooseArray< Real > & _coord
unsigned int _qp

◆ computeQpResidual()

ADReal ComputeDynamicWeightedGapLMMechanicalContact::computeQpResidual ( Moose::MortarType  mortar_type)
finalprotectedvirtualinherited

Implements ADMortarConstraint.

Definition at line 186 of file ComputeDynamicWeightedGapLMMechanicalContact.C.

187 {
188  mooseError(
189  "We should never call computeQpResidual for ComputeDynamicWeightedGapLMMechanicalContact");
190 }
void mooseError(Args &&... args) const

◆ computeResidual() [1/5]

virtual void ADMortarConstraint::computeResidual
protectedinherited

◆ computeResidual() [2/5]

virtual void ADMortarConstraint::computeResidual
protectedinherited

◆ computeResidual() [3/5]

virtual void ADMortarConstraint::computeResidual
protectedinherited

◆ computeResidual() [4/5]

void ADMortarConstraint::computeResidual
protectedinherited

◆ computeResidual() [5/5]

void ComputeDynamicWeightedGapLMMechanicalContact::computeResidual ( Moose::MortarType  mortar_type)
overrideprotectedvirtualinherited

Reimplemented from ADMortarConstraint.

Definition at line 394 of file ComputeDynamicWeightedGapLMMechanicalContact.C.

395 {
396  if (mortar_type != Moose::MortarType::Lower)
397  return;
398 
399  mooseAssert(_var, "LM variable is null");
400 
401  for (_qp = 0; _qp < _qrule_msm->n_points(); _qp++)
402  {
404  for (_i = 0; _i < _test.size(); ++_i)
406  }
407 }
virtual void computeQpProperties()
Computes properties that are functions only of the current quadrature point (_qp), e.g.
unsigned int _i
const libMesh::QBase *const & _qrule_msm
const VariableTestValue & _test
unsigned int n_points() const
MooseVariable *const _var
unsigned int _qp

◆ enforceConstraintOnDof()

void ComputeDynamicFrictionalForceLMMechanicalContact::enforceConstraintOnDof ( const DofObject *const  dof)
overrideprotectedvirtual

Method called from post().

Used to enforce node-associated constraints. E.g. for the base ComputeFrictionalForceLMMechanicalContact we enforce PDASS frictional constraints. This is also where we actually feed the node-based constraint information into the system residual and Jacobian

Reimplemented from ComputeDynamicWeightedGapLMMechanicalContact.

Definition at line 323 of file ComputeDynamicFrictionalForceLMMechanicalContact.C.

Referenced by incorrectEdgeDroppingPost(), and post().

325 {
326  // Get friction LM
327  const auto friction_dof_index = dof->dof_number(_sys.number(), _friction_vars[0]->number(), 0);
328  const ADReal & tangential_vel = *_tangential_vel_ptr[0];
329  ADReal friction_lm_value = (*_sys.currentSolution())(friction_dof_index);
330  Moose::derivInsert(friction_lm_value.derivatives(), friction_dof_index, 1.);
331 
332  // Get normal LM
333  const auto normal_dof_index = dof->dof_number(_sys.number(), _var->number(), 0);
334  const ADReal & weighted_gap = *_weighted_gap_ptr;
335  ADReal contact_pressure = (*_sys.currentSolution())(normal_dof_index);
336  Moose::derivInsert(contact_pressure.derivatives(), normal_dof_index, 1.);
337 
338  const Real contact_pressure_old = _sys.solutionOld()(normal_dof_index);
339 
340  // Get normalized c and c_t values (if normalization specified
341  const Real c = _normalize_c ? _c / *_normalization_ptr : _c;
342  const Real c_t = _normalize_c ? _c_t / *_normalization_ptr : _c_t;
343 
344  // Compute the friction coefficient (constant or function)
345  ADReal mu_ad =
346  computeFrictionValue(contact_pressure_old, _dof_to_old_real_tangential_velocity[dof][0], 0.0);
347 
348  ADReal dof_residual;
349  // Primal-dual active set strategy (PDASS)
350  if (contact_pressure < _epsilon)
351  dof_residual = friction_lm_value;
352  else
353  {
354  const auto term_1 = std::max(mu_ad * (contact_pressure + c * weighted_gap),
355  std::abs(friction_lm_value + c_t * tangential_vel * _dt)) *
356  friction_lm_value;
357  const auto term_2 = mu_ad * std::max(0.0, contact_pressure + c * weighted_gap) *
358  (friction_lm_value + c_t * tangential_vel * _dt);
359 
360  dof_residual = term_1 - term_2;
361  }
362 
364  std::array<ADReal, 1>{{dof_residual}},
365  std::array<dof_id_type, 1>{{friction_dof_index}},
366  _friction_vars[0]->scalingFactor());
367 }
virtual const NumericVector< Number > *const & currentSolution() const=0
void addResidualsAndJacobian(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
const Real _epsilon
Small contact pressure value to trigger computation of frictional forces.
unsigned int number() const
ADReal computeFrictionValue(const ADReal &contact_pressure, const Real &tangential_vel, const Real &tangential_vel_dir)
Apply constant or function-based friction coefficient.
std::vector< MooseVariable * > _friction_vars
Frictional Lagrange&#39;s multiplier variable pointers.
DualNumber< Real, DNDerivativeType, true > ADReal
SystemBase & _sys
unsigned int number() const
const ADReal * _weighted_gap_ptr
A pointer members that can be used to help avoid copying ADReals.
Assembly & _assembly
MooseVariable *const _var
std::unordered_map< const DofObject *, std::array< Real, 2 > > _dof_to_old_real_tangential_velocity
A map from node to two old tangential velocities. Required to have direct connection to physics...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
bool _normalize_c
Whether to normalize weighted gap by weighting function norm.
void derivInsert(SemiDynamicSparseNumberArray< Real, libMesh::dof_id_type, NWrapper< N >> &derivs, libMesh::dof_id_type index, Real value)
std::array< const ADReal *, 2 > _tangential_vel_ptr
An array of two pointers to avoid copies.
NumericVector< Number > & solutionOld()
const Real _c
This factor multiplies the weighted gap.
const Real _c_t
Numerical factor used in the tangential constraints for convergence purposes.

◆ enforceConstraintOnDof3d()

void ComputeDynamicFrictionalForceLMMechanicalContact::enforceConstraintOnDof3d ( const DofObject *const  dof)
protectedvirtual

Method called from post().

Used to enforce node-associated constraints. E.g. for the base ComputeFrictionalForceLMMechanicalContact we enforce PDASS frictional constraints. This is also where we actually feed the node-based constraint information into the system residual and Jacobian. Method used to enforce frictional constraints in three-dimensional simulations.

Definition at line 241 of file ComputeDynamicFrictionalForceLMMechanicalContact.C.

Referenced by incorrectEdgeDroppingPost(), and post().

243 {
244  // Get normal LM
245  const auto normal_dof_index = dof->dof_number(_sys.number(), _var->number(), 0);
246  const ADReal & weighted_gap = *_weighted_gap_ptr;
247  ADReal contact_pressure = (*_sys.currentSolution())(normal_dof_index);
248  Moose::derivInsert(contact_pressure.derivatives(), normal_dof_index, 1.);
249 
250  // Get friction LMs
251  std::array<const ADReal *, 2> & tangential_vel = _tangential_vel_ptr;
252  std::array<dof_id_type, 2> friction_dof_indices;
253  std::array<ADReal, 2> friction_lm_values;
254 
255  const unsigned int num_tangents = 2;
256  for (const auto i : make_range(num_tangents))
257  {
258  friction_dof_indices[i] = dof->dof_number(_sys.number(), _friction_vars[i]->number(), 0);
259  friction_lm_values[i] = (*_sys.currentSolution())(friction_dof_indices[i]);
260  Moose::derivInsert(friction_lm_values[i].derivatives(), friction_dof_indices[i], 1.);
261  }
262 
263  // Get normalized c and c_t values (if normalization specified
264  const Real c = _normalize_c ? _c / *_normalization_ptr : _c;
265  const Real c_t = _normalize_c ? _c_t / *_normalization_ptr : _c_t;
266 
267  const Real contact_pressure_old = _sys.solutionOld()(normal_dof_index);
268 
269  // Compute the friction coefficient (constant or function)
270  ADReal mu_ad = computeFrictionValue(contact_pressure_old,
273 
274  ADReal dof_residual;
275  ADReal dof_residual_dir;
276 
277  // Primal-dual active set strategy (PDASS)
278  if (contact_pressure < _epsilon)
279  {
280  dof_residual = friction_lm_values[0];
281  dof_residual_dir = friction_lm_values[1];
282  }
283  else
284  {
285  const Real epsilon_sqrt = 1.0e-48;
286 
287  const auto lamdba_plus_cg = contact_pressure + c * weighted_gap;
288  std::array<ADReal, 2> lambda_t_plus_ctu;
289  lambda_t_plus_ctu[0] = friction_lm_values[0] + c_t * *tangential_vel[0] * _dt;
290  lambda_t_plus_ctu[1] = friction_lm_values[1] + c_t * *tangential_vel[1] * _dt;
291 
292  const auto term_1_x =
293  std::max(mu_ad * lamdba_plus_cg,
294  std::sqrt(lambda_t_plus_ctu[0] * lambda_t_plus_ctu[0] +
295  lambda_t_plus_ctu[1] * lambda_t_plus_ctu[1] + epsilon_sqrt)) *
296  friction_lm_values[0];
297 
298  const auto term_1_y =
299  std::max(mu_ad * lamdba_plus_cg,
300  std::sqrt(lambda_t_plus_ctu[0] * lambda_t_plus_ctu[0] +
301  lambda_t_plus_ctu[1] * lambda_t_plus_ctu[1] + epsilon_sqrt)) *
302  friction_lm_values[1];
303 
304  const auto term_2_x = mu_ad * std::max(0.0, lamdba_plus_cg) * lambda_t_plus_ctu[0];
305 
306  const auto term_2_y = mu_ad * std::max(0.0, lamdba_plus_cg) * lambda_t_plus_ctu[1];
307 
308  dof_residual = term_1_x - term_2_x;
309  dof_residual_dir = term_1_y - term_2_y;
310  }
311 
313  std::array<ADReal, 1>{{dof_residual}},
314  std::array<dof_id_type, 1>{{friction_dof_indices[0]}},
315  _friction_vars[0]->scalingFactor());
317  std::array<ADReal, 1>{{dof_residual_dir}},
318  std::array<dof_id_type, 1>{{friction_dof_indices[1]}},
319  _friction_vars[1]->scalingFactor());
320 }
virtual const NumericVector< Number > *const & currentSolution() const=0
void addResidualsAndJacobian(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
const Real _epsilon
Small contact pressure value to trigger computation of frictional forces.
unsigned int number() const
ADReal computeFrictionValue(const ADReal &contact_pressure, const Real &tangential_vel, const Real &tangential_vel_dir)
Apply constant or function-based friction coefficient.
std::vector< MooseVariable * > _friction_vars
Frictional Lagrange&#39;s multiplier variable pointers.
DualNumber< Real, DNDerivativeType, true > ADReal
SystemBase & _sys
unsigned int number() const
const ADReal * _weighted_gap_ptr
A pointer members that can be used to help avoid copying ADReals.
Assembly & _assembly
MooseVariable *const _var
std::unordered_map< const DofObject *, std::array< Real, 2 > > _dof_to_old_real_tangential_velocity
A map from node to two old tangential velocities. Required to have direct connection to physics...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
bool _normalize_c
Whether to normalize weighted gap by weighting function norm.
IntRange< T > make_range(T beg, T end)
void derivInsert(SemiDynamicSparseNumberArray< Real, libMesh::dof_id_type, NWrapper< N >> &derivs, libMesh::dof_id_type index, Real value)
std::array< const ADReal *, 2 > _tangential_vel_ptr
An array of two pointers to avoid copies.
NumericVector< Number > & solutionOld()
const Real _c
This factor multiplies the weighted gap.
const Real _c_t
Numerical factor used in the tangential constraints for convergence purposes.

◆ incorrectEdgeDroppingPost()

void ComputeDynamicFrictionalForceLMMechanicalContact::incorrectEdgeDroppingPost ( const std::unordered_set< const Node *> &  inactive_lm_nodes)
overridevirtual

Copy of the post routine but that skips assembling inactive nodes.

Reimplemented from ComputeDynamicWeightedGapLMMechanicalContact.

Definition at line 203 of file ComputeDynamicFrictionalForceLMMechanicalContact.C.

205 {
207 
210 
214 
215  // Enforce frictional complementarity constraints
216  for (const auto & pr : _dof_to_weighted_tangential_velocity)
217  {
218  const DofObject * const dof = pr.first;
219 
220  // If node inactive, skip
221  if ((inactive_lm_nodes.find(static_cast<const Node *>(dof)) != inactive_lm_nodes.end()) ||
222  (dof->processor_id() != this->processor_id()))
223  continue;
224 
225  // Use always weighted gap for dynamic PDASS
228  _tangential_vel_ptr[0] = &pr.second[0];
229 
230  if (_3d)
231  {
232  _tangential_vel_ptr[1] = &pr.second[1];
234  }
235  else
237  }
238 }
MooseMesh & _mesh
std::unordered_map< const DofObject *, std::array< Real, 2 > > _dof_to_real_tangential_velocity
A map from node to two tangential velocities. Required to have direct connection to physics...
void communicateVelocities(std::unordered_map< const DofObject *, T > &dof_map, const MooseMesh &mesh, const bool nodal, const Parallel::Communicator &communicator, const bool send_data_back)
This function is used to communicate velocities across processes.
std::unordered_map< const DofObject *, std::pair< ADReal, Real > > _dof_to_weighted_gap
A map from node to weighted gap and normalization (if requested)
const Parallel::Communicator & _communicator
std::unordered_map< const DofObject *, std::array< ADReal, 2 > > _dof_to_weighted_tangential_velocity
A map from node to two weighted tangential velocities.
virtual void enforceConstraintOnDof3d(const DofObject *const dof)
Method called from post().
virtual void incorrectEdgeDroppingPost(const std::unordered_set< const Node *> &inactive_lm_nodes) override
const bool _nodal
Whether the dof objects are nodal; if they&#39;re not, then they&#39;re elemental.
virtual void enforceConstraintOnDof(const DofObject *const dof) override
Method called from post().
const ADReal * _weighted_gap_ptr
A pointer members that can be used to help avoid copying ADReals.
std::array< const ADReal *, 2 > _tangential_vel_ptr
An array of two pointers to avoid copies.
const bool _has_friction_function
Boolean to determine whether the friction coefficient is taken from a function.
processor_id_type processor_id() const
bool _3d
Automatic flag to determine whether we are doing three-dimensional work.

◆ jacobianSetup()

void ComputeDynamicWeightedGapLMMechanicalContact::jacobianSetup ( )
finaloverrideprotectedvirtualinherited

◆ post()

void ComputeDynamicFrictionalForceLMMechanicalContact::post ( )
overridevirtual

Reimplemented from ComputeDynamicWeightedGapLMMechanicalContact.

Definition at line 165 of file ComputeDynamicFrictionalForceLMMechanicalContact.C.

166 {
168 
171 
175 
176  // Enforce frictional complementarity constraints
177  for (const auto & pr : _dof_to_weighted_tangential_velocity)
178  {
179  const DofObject * const dof = pr.first;
180 
181  if (dof->processor_id() != this->processor_id())
182  continue;
183 
184  // Use always weighted gap for dynamic PDASS. Omit the dynamic weighted gap approach that is
185  // used in normal contact where the discretized gap velocity is enforced if a node has
186  // identified to be into contact.
187 
190  _tangential_vel_ptr[0] = &(pr.second[0]);
191 
192  if (_3d)
193  {
194  _tangential_vel_ptr[1] = &(pr.second[1]);
196  }
197  else
199  }
200 }
MooseMesh & _mesh
std::unordered_map< const DofObject *, std::array< Real, 2 > > _dof_to_real_tangential_velocity
A map from node to two tangential velocities. Required to have direct connection to physics...
void communicateVelocities(std::unordered_map< const DofObject *, T > &dof_map, const MooseMesh &mesh, const bool nodal, const Parallel::Communicator &communicator, const bool send_data_back)
This function is used to communicate velocities across processes.
std::unordered_map< const DofObject *, std::pair< ADReal, Real > > _dof_to_weighted_gap
A map from node to weighted gap and normalization (if requested)
const Parallel::Communicator & _communicator
std::unordered_map< const DofObject *, std::array< ADReal, 2 > > _dof_to_weighted_tangential_velocity
A map from node to two weighted tangential velocities.
virtual void enforceConstraintOnDof3d(const DofObject *const dof)
Method called from post().
const bool _nodal
Whether the dof objects are nodal; if they&#39;re not, then they&#39;re elemental.
virtual void enforceConstraintOnDof(const DofObject *const dof) override
Method called from post().
const ADReal * _weighted_gap_ptr
A pointer members that can be used to help avoid copying ADReals.
std::array< const ADReal *, 2 > _tangential_vel_ptr
An array of two pointers to avoid copies.
const bool _has_friction_function
Boolean to determine whether the friction coefficient is taken from a function.
processor_id_type processor_id() const
bool _3d
Automatic flag to determine whether we are doing three-dimensional work.

◆ residualSetup()

void ComputeDynamicFrictionalForceLMMechanicalContact::residualSetup ( )
overridevirtual

Reimplemented from ADMortarConstraint.

Definition at line 144 of file ComputeDynamicFrictionalForceLMMechanicalContact.C.

145 {
146  // Clear both maps
150 }
std::unordered_map< const DofObject *, std::array< Real, 2 > > _dof_to_real_tangential_velocity
A map from node to two tangential velocities. Required to have direct connection to physics...
std::unordered_map< const DofObject *, std::array< ADReal, 2 > > _dof_to_weighted_tangential_velocity
A map from node to two weighted tangential velocities.

◆ timestepSetup()

void ComputeDynamicFrictionalForceLMMechanicalContact::timestepSetup ( )
overrideprotectedvirtual

Reimplemented from ADMortarConstraint.

Definition at line 153 of file ComputeDynamicFrictionalForceLMMechanicalContact.C.

154 {
155 
157 
159 
160  for (auto & map_pr : _dof_to_real_tangential_velocity)
161  _dof_to_old_real_tangential_velocity.emplace(map_pr);
162 }
std::unordered_map< const DofObject *, std::array< Real, 2 > > _dof_to_real_tangential_velocity
A map from node to two tangential velocities. Required to have direct connection to physics...
std::unordered_map< const DofObject *, std::array< Real, 2 > > _dof_to_old_real_tangential_velocity
A map from node to two old tangential velocities. Required to have direct connection to physics...

◆ validParams()

InputParameters ComputeDynamicFrictionalForceLMMechanicalContact::validParams ( )
static

Definition at line 27 of file ComputeDynamicFrictionalForceLMMechanicalContact.C.

28 {
30  params.addClassDescription("Computes the tangential frictional forces for dynamic simulations");
31  params.addRequiredCoupledVar("friction_lm", "The frictional Lagrange's multiplier");
32  params.addCoupledVar("friction_lm_dir",
33  "The frictional Lagrange's multiplier for an addtional direction.");
34  params.addParam<FunctionName>(
35  "function_friction",
36  "Coupled function to evaluate friction with values from contact pressure and relative "
37  "tangential velocities (from the previous step).");
38  params.addParam<Real>("c_t", 1e0, "Numerical parameter for tangential constraints");
39  params.addParam<Real>(
40  "epsilon",
41  1.0e-7,
42  "Minimum value of contact pressure that will trigger frictional enforcement");
43  params.addParam<Real>("mu", "The friction coefficient for the Coulomb friction law");
44  return params;
45 }
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addCoupledVar(const std::string &name, const std::string &doc_string)
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _3d

bool ComputeDynamicFrictionalForceLMMechanicalContact::_3d
protected

Automatic flag to determine whether we are doing three-dimensional work.

Definition at line 125 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Referenced by ComputeDynamicFrictionalForceLMMechanicalContact(), computeQpIProperties(), incorrectEdgeDroppingPost(), and post().

◆ _c

const Real ComputeDynamicWeightedGapLMMechanicalContact::_c
protectedinherited

This factor multiplies the weighted gap.

This member, provided through a user parameter, should be of a value such that its product with the gap is on the same scale as the lagrange multiplier

Definition at line 80 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

Referenced by enforceConstraintOnDof(), ComputeDynamicWeightedGapLMMechanicalContact::enforceConstraintOnDof(), and enforceConstraintOnDof3d().

◆ _c_t

const Real ComputeDynamicFrictionalForceLMMechanicalContact::_c_t
protected

Numerical factor used in the tangential constraints for convergence purposes.

Definition at line 89 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Referenced by enforceConstraintOnDof(), and enforceConstraintOnDof3d().

◆ _capture_tolerance

const Real ComputeDynamicWeightedGapLMMechanicalContact::_capture_tolerance
protectedinherited

A small threshold gap value to consider that a node needs a "persistency" constraint.

Definition at line 112 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

Referenced by ComputeDynamicWeightedGapLMMechanicalContact::incorrectEdgeDroppingPost(), and ComputeDynamicWeightedGapLMMechanicalContact::post().

◆ _disp_x_var

const MooseVariable* const ComputeDynamicWeightedGapLMMechanicalContact::_disp_x_var
protectedinherited

◆ _disp_y_var

const MooseVariable* const ComputeDynamicWeightedGapLMMechanicalContact::_disp_y_var
protectedinherited

◆ _disp_z_var

const MooseVariable* const ComputeDynamicWeightedGapLMMechanicalContact::_disp_z_var
protectedinherited

◆ _dof_to_nodal_old_wear_depth

std::unordered_map<const DofObject *, ADReal> ComputeDynamicWeightedGapLMMechanicalContact::_dof_to_nodal_old_wear_depth
protectedinherited

A map from node to wear in old step.

Definition at line 155 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

Referenced by ComputeDynamicWeightedGapLMMechanicalContact::timestepSetup().

◆ _dof_to_nodal_wear_depth

std::unordered_map<const DofObject *, ADReal> ComputeDynamicWeightedGapLMMechanicalContact::_dof_to_nodal_wear_depth
protectedinherited

◆ _dof_to_old_real_tangential_velocity

std::unordered_map<const DofObject *, std::array<Real, 2> > ComputeDynamicFrictionalForceLMMechanicalContact::_dof_to_old_real_tangential_velocity
protected

A map from node to two old tangential velocities. Required to have direct connection to physics.

Definition at line 77 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Referenced by enforceConstraintOnDof(), enforceConstraintOnDof3d(), and timestepSetup().

◆ _dof_to_old_velocity

std::unordered_map<const DofObject *, ADReal> ComputeDynamicWeightedGapLMMechanicalContact::_dof_to_old_velocity
protectedinherited

◆ _dof_to_old_weighted_gap

std::unordered_map<const DofObject *, ADReal> ComputeDynamicWeightedGapLMMechanicalContact::_dof_to_old_weighted_gap
protectedinherited

◆ _dof_to_real_tangential_velocity

std::unordered_map<const DofObject *, std::array<Real, 2> > ComputeDynamicFrictionalForceLMMechanicalContact::_dof_to_real_tangential_velocity
protected

A map from node to two tangential velocities. Required to have direct connection to physics.

Definition at line 74 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Referenced by computeQpIProperties(), incorrectEdgeDroppingPost(), post(), residualSetup(), and timestepSetup().

◆ _dof_to_velocity

std::unordered_map<const DofObject *, ADReal> ComputeDynamicWeightedGapLMMechanicalContact::_dof_to_velocity
protectedinherited

◆ _dof_to_weighted_gap

std::unordered_map<const DofObject *, std::pair<ADReal, Real> > ComputeDynamicWeightedGapLMMechanicalContact::_dof_to_weighted_gap
protectedinherited

◆ _dof_to_weighted_gap_dynamics

std::unordered_map<const DofObject *, ADReal> ComputeDynamicWeightedGapLMMechanicalContact::_dof_to_weighted_gap_dynamics
protectedinherited

◆ _dof_to_weighted_tangential_velocity

std::unordered_map<const DofObject *, std::array<ADReal, 2> > ComputeDynamicFrictionalForceLMMechanicalContact::_dof_to_weighted_tangential_velocity
protected

A map from node to two weighted tangential velocities.

Definition at line 71 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Referenced by computeQpIProperties(), incorrectEdgeDroppingPost(), post(), and residualSetup().

◆ _epsilon

const Real ComputeDynamicFrictionalForceLMMechanicalContact::_epsilon
protected

Small contact pressure value to trigger computation of frictional forces.

Definition at line 113 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Referenced by enforceConstraintOnDof(), and enforceConstraintOnDof3d().

◆ _friction_vars

std::vector<MooseVariable *> ComputeDynamicFrictionalForceLMMechanicalContact::_friction_vars
protected

◆ _function_friction

const Function* const ComputeDynamicFrictionalForceLMMechanicalContact::_function_friction
protected

input function

Definition at line 119 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Referenced by computeFrictionValue().

◆ _has_disp_z

const bool ComputeDynamicWeightedGapLMMechanicalContact::_has_disp_z
protectedinherited

For 2D mortar contact no displacement will be specified, so const pointers used.

Definition at line 71 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

Referenced by ComputeDynamicWeightedGapLMMechanicalContact::computeQpProperties().

◆ _has_friction_function

const bool ComputeDynamicFrictionalForceLMMechanicalContact::_has_friction_function
protected

Boolean to determine whether the friction coefficient is taken from a function.

Definition at line 122 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Referenced by ComputeDynamicFrictionalForceLMMechanicalContact(), computeFrictionValue(), incorrectEdgeDroppingPost(), and post().

◆ _has_wear

const bool ComputeDynamicWeightedGapLMMechanicalContact::_has_wear
protectedinherited

Flag to determine whether wear needs to be included in the contact constraints.

Definition at line 123 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

Referenced by ComputeDynamicWeightedGapLMMechanicalContact::incorrectEdgeDroppingPost(), and ComputeDynamicWeightedGapLMMechanicalContact::post().

◆ _mu

const Real ComputeDynamicFrictionalForceLMMechanicalContact::_mu
protected

Friction coefficient.

Definition at line 116 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Referenced by computeFrictionValue().

◆ _newmark_beta

const Real ComputeDynamicWeightedGapLMMechanicalContact::_newmark_beta
protectedinherited

◆ _newmark_gamma

const Real ComputeDynamicWeightedGapLMMechanicalContact::_newmark_gamma
protectedinherited

◆ _nodal

const bool ComputeDynamicWeightedGapLMMechanicalContact::_nodal
protectedinherited

◆ _normalization_ptr

const Real* ComputeDynamicWeightedGapLMMechanicalContact::_normalization_ptr = nullptr
protectedinherited

◆ _normalize_c

bool ComputeDynamicWeightedGapLMMechanicalContact::_normalize_c
protectedinherited

◆ _primary_disp_x

const ADVariableValue& ComputeDynamicWeightedGapLMMechanicalContact::_primary_disp_x
protectedinherited

x-displacement on the primary face

Definition at line 64 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

Referenced by ComputeDynamicWeightedGapLMMechanicalContact::computeQpProperties().

◆ _primary_disp_y

const ADVariableValue& ComputeDynamicWeightedGapLMMechanicalContact::_primary_disp_y
protectedinherited

y-displacement on the primary face

Definition at line 68 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

Referenced by ComputeDynamicWeightedGapLMMechanicalContact::computeQpProperties().

◆ _primary_disp_z

const ADVariableValue* const ComputeDynamicWeightedGapLMMechanicalContact::_primary_disp_z
protectedinherited

z-displacement on the primary face

Definition at line 75 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

◆ _primary_x_dot

const ADVariableValue& ComputeDynamicFrictionalForceLMMechanicalContact::_primary_x_dot
protected

x-velocity on the primary face

Definition at line 98 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

◆ _primary_y_dot

const ADVariableValue& ComputeDynamicFrictionalForceLMMechanicalContact::_primary_y_dot
protected

y-velocity on the primary face

Definition at line 104 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

◆ _primary_z_dot

const ADVariableValue* const ComputeDynamicFrictionalForceLMMechanicalContact::_primary_z_dot
protected

z-velocity on the primary face

Definition at line 110 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

◆ _qp_factor

Real ComputeDynamicWeightedGapLMMechanicalContact::_qp_factor
protectedinherited

◆ _qp_gap

ADReal ComputeDynamicWeightedGapLMMechanicalContact::_qp_gap
protectedinherited

The value of the gap at the current quadrature point.

Definition at line 83 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

◆ _qp_gap_nodal

ADRealVectorValue ComputeDynamicWeightedGapLMMechanicalContact::_qp_gap_nodal
protectedinherited

◆ _qp_gap_nodal_dynamics

ADRealVectorValue ComputeDynamicWeightedGapLMMechanicalContact::_qp_gap_nodal_dynamics
protectedinherited

Vector for computation of weighted gap velocity to fulfill "persistency" condition.

Definition at line 132 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

Referenced by ComputeDynamicWeightedGapLMMechanicalContact::computeQpIProperties(), and ComputeDynamicWeightedGapLMMechanicalContact::computeQpProperties().

◆ _qp_real_tangential_velocity_nodal

ADRealVectorValue ComputeDynamicFrictionalForceLMMechanicalContact::_qp_real_tangential_velocity_nodal
protected

The value of the tangential velocity vectors at the current node.

Definition at line 86 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Referenced by computeQpIProperties(), and computeQpProperties().

◆ _qp_tangential_velocity_nodal

ADRealVectorValue ComputeDynamicFrictionalForceLMMechanicalContact::_qp_tangential_velocity_nodal
protected

The value of the tangential velocity vectors at the current node.

Definition at line 83 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Referenced by computeQpIProperties(), and computeQpProperties().

◆ _qp_velocity

ADRealVectorValue ComputeDynamicWeightedGapLMMechanicalContact::_qp_velocity
protectedinherited

Vector for computation of weighted gap velocity to fulfill "persistency" condition.

Definition at line 135 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

Referenced by ComputeDynamicWeightedGapLMMechanicalContact::computeQpIProperties(), and ComputeDynamicWeightedGapLMMechanicalContact::computeQpProperties().

◆ _relative_velocity

ADRealVectorValue ComputeDynamicWeightedGapLMMechanicalContact::_relative_velocity
protectedinherited

◆ _secondary_disp_x

const ADVariableValue& ComputeDynamicWeightedGapLMMechanicalContact::_secondary_disp_x
protectedinherited

x-displacement on the secondary face

Definition at line 62 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

Referenced by ComputeDynamicWeightedGapLMMechanicalContact::computeQpProperties().

◆ _secondary_disp_y

const ADVariableValue& ComputeDynamicWeightedGapLMMechanicalContact::_secondary_disp_y
protectedinherited

y-displacement on the secondary face

Definition at line 66 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

Referenced by ComputeDynamicWeightedGapLMMechanicalContact::computeQpProperties().

◆ _secondary_disp_z

const ADVariableValue* const ComputeDynamicWeightedGapLMMechanicalContact::_secondary_disp_z
protectedinherited

z-displacement on the secondary face

Definition at line 73 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

◆ _secondary_x_dot

const ADVariableValue& ComputeDynamicFrictionalForceLMMechanicalContact::_secondary_x_dot
protected

x-velocity on the secondary face

Definition at line 95 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

◆ _secondary_y_dot

const ADVariableValue& ComputeDynamicFrictionalForceLMMechanicalContact::_secondary_y_dot
protected

y-velocity on the secondary face

Definition at line 101 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

◆ _secondary_z_dot

const ADVariableValue* const ComputeDynamicFrictionalForceLMMechanicalContact::_secondary_z_dot
protected

z-velocity on the secondary face

Definition at line 107 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

◆ _tangential_vel_ptr

std::array<const ADReal *, 2> ComputeDynamicFrictionalForceLMMechanicalContact::_tangential_vel_ptr = {{nullptr, nullptr}}
protected

An array of two pointers to avoid copies.

Definition at line 80 of file ComputeDynamicFrictionalForceLMMechanicalContact.h.

Referenced by enforceConstraintOnDof(), enforceConstraintOnDof3d(), incorrectEdgeDroppingPost(), and post().

◆ _wear_depth

const VariableValue& ComputeDynamicWeightedGapLMMechanicalContact::_wear_depth
protectedinherited

Wear depth to include contact.

Definition at line 126 of file ComputeDynamicWeightedGapLMMechanicalContact.h.

Referenced by ComputeDynamicWeightedGapLMMechanicalContact::computeQpIProperties().

◆ _weighted_gap_ptr

const ADReal* ComputeDynamicWeightedGapLMMechanicalContact::_weighted_gap_ptr = nullptr
protectedinherited

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