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
ComputeWeightedGapCartesianLMMechanicalContact Class Reference

Computes the weighted gap that will later be used to enforce the zero-penetration mechanical contact conditions. More...

#include <ComputeWeightedGapCartesianLMMechanicalContact.h>

Inheritance diagram for ComputeWeightedGapCartesianLMMechanicalContact:
[legend]

Public Types

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

Public Member Functions

 ComputeWeightedGapCartesianLMMechanicalContact (const InputParameters &parameters)
 
void computeResidual (Moose::MortarType mortar_type) override
 
void computeJacobian (Moose::MortarType mortar_type) override
 
void residualSetup () override
 
void jacobianSetup () override final
 
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
 
void computeResidual (Moose::MortarType mortar_type) override
 
virtual void computeResidual () override
 
virtual void computeResidual (Moose::MortarType mortar_type)=0
 
virtual void computeJacobian () override
 
void computeJacobian (Moose::MortarType mortar_type) override
 
virtual void computeJacobian () override
 
virtual void computeJacobian (Moose::MortarType mortar_type)=0
 
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

ADReal computeQpResidual (Moose::MortarType mortar_type) final
 
virtual void computeQpProperties ()
 Computes properties that are functions only of the current quadrature point (_qp), e.g. More...
 
virtual void computeQpIProperties ()
 Computes properties that are functions both of _qp and _i, for example the weighted gap. More...
 
void timestepSetup () override
 
virtual void enforceConstraintOnDof (const DofObject *const dof)
 Method called from post(). More...
 
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

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...
 
std::vector< MooseVariable * > _lm_vars
 Cartesian Lagrange multipliers for mechanical contact. 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...
 
std::unordered_map< const DofObject *, RealVectorValue_dof_to_normal_vector
 A map from node to normal vector (2D) More...
 
std::unordered_map< const DofObject *, RealVectorValue_dof_to_old_normal_vector
 A map from node to normal vector (2D) - old. More...
 
std::unordered_map< const DofObject *, std::array< RealVectorValue, 2 > > _dof_to_tangent_vectors
 A map from node to tangent vector (2D for now) 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 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 weighted gap that will later be used to enforce the zero-penetration mechanical contact conditions.

Definition at line 20 of file ComputeWeightedGapCartesianLMMechanicalContact.h.

Constructor & Destructor Documentation

◆ ComputeWeightedGapCartesianLMMechanicalContact()

ComputeWeightedGapCartesianLMMechanicalContact::ComputeWeightedGapCartesianLMMechanicalContact ( const InputParameters parameters)

Definition at line 71 of file ComputeWeightedGapCartesianLMMechanicalContact.C.

73  : ADMortarConstraint(assignVarsInParamsCartesianWeightedGap(parameters)),
78  _has_disp_z(isCoupled("disp_z")),
79  _secondary_disp_z(_has_disp_z ? &adCoupledValue("disp_z") : nullptr),
80  _primary_disp_z(_has_disp_z ? &adCoupledNeighborValue("disp_z") : nullptr),
81  _c(getParam<Real>("c")),
82  _normalize_c(getParam<bool>("normalize_c")),
83  _nodal(getVar("disp_x", 0)->feType().family == LAGRANGE),
84  _disp_x_var(getVar("disp_x", 0)),
85  _disp_y_var(getVar("disp_y", 0)),
86  _disp_z_var(_has_disp_z ? getVar("disp_z", 0) : nullptr)
87 {
88  _lm_vars.push_back(getVar("lm_x", 0));
89  _lm_vars.push_back(getVar("lm_y", 0));
90 
91  if (isParamValid("lm_z") ^ _has_disp_z)
92  paramError("lm_z",
93  "In three-dimensions, both the Z Lagrange multiplier and the Z displacement need to "
94  "be provided");
95 
96  if (_has_disp_z)
97  _lm_vars.push_back(getVar("lm_z", 0));
98 
99  if (!getParam<bool>("use_displaced_mesh"))
100  paramError(
101  "use_displaced_mesh",
102  "'use_displaced_mesh' must be true for the ComputeWeightedGapLMMechanicalContact object");
103 
104  for (const auto i : index_range(_lm_vars))
105  if (!_lm_vars[i]->isNodal())
106  if (_lm_vars[i]->feType().order != static_cast<Order>(0))
107  mooseError("Normal contact constraints only support elemental variables of CONSTANT order");
108 }
virtual bool isCoupled(const std::string &var_name, unsigned int i=0) const
const MooseVariable *const _disp_z_var
The z displacement variable.
ADMortarConstraint(const InputParameters &parameters)
const bool _has_disp_z
For 2D mortar contact no displacement will be specified, so const pointers used.
const MooseVariable *const _disp_y_var
The y displacement variable.
const ADVariableValue & adCoupledValue(const std::string &var_name, unsigned int comp=0) const
MooseVariable * getVar(const std::string &var_name, unsigned int comp)
const bool _nodal
Whether the dof objects are nodal; if they&#39;re not, then they&#39;re elemental.
bool _normalize_c
Whether to normalize weighted gap by weighting function norm.
bool isParamValid(const std::string &name) const
const ADVariableValue *const _secondary_disp_z
z-displacement on the secondary face
virtual const ADVariableValue & adCoupledNeighborValue(const std::string &var_name, unsigned int comp=0) const
void paramError(const std::string &param, Args... args) const
bool isNodal() const
const ADVariableValue *const _primary_disp_z
z-displacement on the primary face
std::vector< MooseVariable * > _lm_vars
Cartesian Lagrange multipliers for mechanical contact.
const ADVariableValue & _secondary_disp_y
y-displacement on the secondary face
const MooseVariable *const _disp_x_var
The x displacement variable.
void mooseError(Args &&... args) const
const InputParameters & parameters() const
const ADVariableValue & _secondary_disp_x
x-displacement on the secondary face
const ADVariableValue & _primary_disp_x
x-displacement on the primary face
const ADVariableValue & _primary_disp_y
y-displacement on the primary face
auto index_range(const T &sizable)

Member Function Documentation

◆ computeJacobian() [1/5]

virtual void ADMortarConstraint::computeJacobian

◆ computeJacobian() [2/5]

virtual void ADMortarConstraint::computeJacobian

◆ computeJacobian() [3/5]

void ADMortarConstraint::computeJacobian

◆ computeJacobian() [4/5]

virtual void ADMortarConstraint::computeJacobian

◆ computeJacobian() [5/5]

void ComputeWeightedGapCartesianLMMechanicalContact::computeJacobian ( Moose::MortarType  mortar_type)
overridevirtual

Reimplemented from ADMortarConstraint.

Definition at line 235 of file ComputeWeightedGapCartesianLMMechanicalContact.C.

236 {
237  // During "computeResidual" and "computeJacobian" we are actually just computing properties on the
238  // mortar segment element mesh. We are *not* actually assembling into the residual/Jacobian. For
239  // the zero-penetration constraint, the property of interest is the map from node to weighted gap.
240  // Computation of the properties proceeds identically for residual and Jacobian evaluation hence
241  // why we simply call computeResidual here. We will assemble into the residual/Jacobian later from
242  // the post() method
243  computeResidual(mortar_type);
244 }
virtual void computeResidual() override

◆ computeQpIProperties()

void ComputeWeightedGapCartesianLMMechanicalContact::computeQpIProperties ( )
protectedvirtual

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

Reimplemented in ComputeFrictionalForceCartesianLMMechanicalContact.

Definition at line 162 of file ComputeWeightedGapCartesianLMMechanicalContact.C.

Referenced by ComputeFrictionalForceCartesianLMMechanicalContact::computeQpIProperties(), and computeResidual().

163 {
164  mooseAssert(_normals.size() == _lower_secondary_elem->n_nodes(),
165  "Making sure that _normals is the expected size");
166 
167  // Get the _dof_to_weighted_gap map
168  const DofObject * dof = _lm_vars[0]->isNodal()
169  ? static_cast<const DofObject *>(_lower_secondary_elem->node_ptr(_i))
170  : static_cast<const DofObject *>(_lower_secondary_elem);
171 
173 
174  if (_normalize_c)
175  _dof_to_weighted_gap[dof].second += _test[_i][_qp] * _qp_factor;
176 }
Real _qp_factor
The value of the LM at the current quadrature point.
std::unordered_map< const DofObject *, std::pair< ADReal, Real > > _dof_to_weighted_gap
A map from node to weighted gap and normalization (if requested)
unsigned int _i
bool _normalize_c
Whether to normalize weighted gap by weighting function norm.
const VariableTestValue & _test
Elem const *const & _lower_secondary_elem
std::vector< Point > _normals
std::vector< MooseVariable * > _lm_vars
Cartesian Lagrange multipliers for mechanical contact.
ADRealVectorValue _qp_gap_nodal
Vector for computation of weighted gap with nodal normals.
unsigned int _qp

◆ computeQpProperties()

void ComputeWeightedGapCartesianLMMechanicalContact::computeQpProperties ( )
protectedvirtual

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

indepedent of shape functions

Reimplemented in ComputeFrictionalForceCartesianLMMechanicalContact.

Definition at line 116 of file ComputeWeightedGapCartesianLMMechanicalContact.C.

Referenced by ComputeFrictionalForceCartesianLMMechanicalContact::computeQpProperties(), and computeResidual().

117 {
118  // Trim interior node variable derivatives
119  const auto & primary_ip_lowerd_map = amg().getPrimaryIpToLowerElementMap(
121  const auto & secondary_ip_lowerd_map =
123 
124  std::array<const MooseVariable *, 3> var_array{{_disp_x_var, _disp_y_var, _disp_z_var}};
125  std::array<ADReal, 3> primary_disp{
126  {_primary_disp_x[_qp], _primary_disp_y[_qp], _has_disp_z ? (*_primary_disp_z)[_qp] : 0}};
127  std::array<ADReal, 3> secondary_disp{{_secondary_disp_x[_qp],
129  _has_disp_z ? (*_secondary_disp_z)[_qp] : 0}};
130 
131  trimInteriorNodeDerivatives(primary_ip_lowerd_map, var_array, primary_disp, false);
132  trimInteriorNodeDerivatives(secondary_ip_lowerd_map, var_array, secondary_disp, true);
133 
134  const ADReal & prim_x = primary_disp[0];
135  const ADReal & prim_y = primary_disp[1];
136  const ADReal * prim_z = nullptr;
137  if (_has_disp_z)
138  prim_z = &primary_disp[2];
139 
140  const ADReal & sec_x = secondary_disp[0];
141  const ADReal & sec_y = secondary_disp[1];
142  const ADReal * sec_z = nullptr;
143  if (_has_disp_z)
144  sec_z = &secondary_disp[2];
145 
146  // Compute gap vector
148 
149  gap_vec(0).derivatives() = prim_x.derivatives() - sec_x.derivatives();
150  gap_vec(1).derivatives() = prim_y.derivatives() - sec_y.derivatives();
151  if (_has_disp_z)
152  gap_vec(2).derivatives() = prim_z->derivatives() - sec_z->derivatives();
153 
154  // Compute integration point quantities
155  _qp_gap_nodal = gap_vec * (_JxW_msm[_qp] * _coord[_qp]);
156 
157  // To do normalization of constraint coefficient (c_n)
159 }
const MooseVariable *const _disp_z_var
The z displacement variable.
Real _qp_factor
The value of the LM at the current quadrature point.
const bool _has_disp_z
For 2D mortar contact no displacement will be specified, so const pointers used.
std::map< unsigned int, unsigned int > getPrimaryIpToLowerElementMap(const Elem &primary_elem, const Elem &primary_elem_ip, const Elem &lower_secondary_elem) const
const MooseVariable *const _disp_y_var
The y displacement variable.
const MooseArray< Point > & _phys_points_primary
Elem const *const & _lower_primary_elem
const std::vector< Real > & _JxW_msm
DualNumber< Real, DNDerivativeType, true > ADReal
Elem const *const & _lower_secondary_elem
const AutomaticMortarGeneration & amg() const
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)
std::map< unsigned int, unsigned int > getSecondaryIpToLowerElementMap(const Elem &lower_secondary_elem) const
const MooseArray< Point > & _phys_points_secondary
const ADVariableValue & _secondary_disp_y
y-displacement on the secondary face
const MooseVariable *const _disp_x_var
The x displacement variable.
ADRealVectorValue _qp_gap_nodal
Vector for computation of weighted gap with nodal normals.
const ADVariableValue & _secondary_disp_x
x-displacement on the secondary face
const ADVariableValue & _primary_disp_x
x-displacement on the primary face
const MooseArray< Real > & _coord
unsigned int _qp
const ADVariableValue & _primary_disp_y
y-displacement on the primary face

◆ computeQpResidual()

ADReal ComputeWeightedGapCartesianLMMechanicalContact::computeQpResidual ( Moose::MortarType  mortar_type)
finalprotectedvirtual

Implements ADMortarConstraint.

Definition at line 110 of file ComputeWeightedGapCartesianLMMechanicalContact.C.

111 {
112  mooseError("We should never call computeQpResidual for ComputeWeightedGapLMMechanicalContact");
113 }
void mooseError(Args &&... args) const

◆ computeResidual() [1/5]

virtual void ADMortarConstraint::computeResidual

◆ computeResidual() [2/5]

virtual void ADMortarConstraint::computeResidual

◆ computeResidual() [3/5]

void ADMortarConstraint::computeResidual

◆ computeResidual() [4/5]

virtual void ADMortarConstraint::computeResidual

◆ computeResidual() [5/5]

void ComputeWeightedGapCartesianLMMechanicalContact::computeResidual ( Moose::MortarType  mortar_type)
overridevirtual

Reimplemented from ADMortarConstraint.

Definition at line 202 of file ComputeWeightedGapCartesianLMMechanicalContact.C.

203 {
204  if (mortar_type != Moose::MortarType::Lower)
205  return;
206 
207  for (const auto i : index_range(_lm_vars))
208  {
209  mooseAssert(_lm_vars[i], "LM variable is null");
210  libmesh_ignore(i);
211  }
212 
213  for (_qp = 0; _qp < _qrule_msm->n_points(); _qp++)
214  {
216  for (_i = 0; _i < _test.size(); ++_i)
217  {
219 
220  // Get the _dof_to_weighted_gap map
221  const DofObject * dof =
222  _lm_vars[0]->isNodal()
223  ? static_cast<const DofObject *>(_lower_secondary_elem->node_ptr(_i))
224  : static_cast<const DofObject *>(_lower_secondary_elem);
225  // We do not interpolate geometry, so just match the local node _i with the corresponding _i
227  const auto & nodal_tangents = amg().getNodalTangents(*_lower_secondary_elem);
228  _dof_to_tangent_vectors[dof][0] = nodal_tangents[0][_i];
229  _dof_to_tangent_vectors[dof][1] = nodal_tangents[1][_i];
230  }
231  }
232 }
virtual void computeQpProperties()
Computes properties that are functions only of the current quadrature point (_qp), e.g.
virtual void computeQpIProperties()
Computes properties that are functions both of _qp and _i, for example the weighted gap...
unsigned int _i
const libMesh::QBase *const & _qrule_msm
const VariableTestValue & _test
Elem const *const & _lower_secondary_elem
void libmesh_ignore(const Args &...)
const AutomaticMortarGeneration & amg() const
std::unordered_map< const DofObject *, std::array< RealVectorValue, 2 > > _dof_to_tangent_vectors
A map from node to tangent vector (2D for now)
std::vector< Point > _normals
std::array< MooseUtils::SemidynamicVector< Point, 9 >, 2 > getNodalTangents(const Elem &secondary_elem) const
unsigned int n_points() const
std::unordered_map< const DofObject *, RealVectorValue > _dof_to_normal_vector
A map from node to normal vector (2D)
std::vector< MooseVariable * > _lm_vars
Cartesian Lagrange multipliers for mechanical contact.
unsigned int _qp
auto index_range(const T &sizable)

◆ enforceConstraintOnDof()

void ComputeWeightedGapCartesianLMMechanicalContact::enforceConstraintOnDof ( const DofObject *const  dof)
protectedvirtual

Method called from post().

Used to enforce node-associated constraints. E.g. for the base ComputeWeightedGapLMMechanicalContact we enforce the zero-penetration constraint in this method using an NCP function. This is also where we actually feed the node-based constraint information into the system residual and Jacobian

Reimplemented in ComputeFrictionalForceCartesianLMMechanicalContact.

Definition at line 285 of file ComputeWeightedGapCartesianLMMechanicalContact.C.

Referenced by incorrectEdgeDroppingPost(), and post().

286 {
287  const auto & weighted_gap = *_weighted_gap_ptr;
288  const Real c = _normalize_c ? _c / *_normalization_ptr : _c;
289 
290  const auto dof_index_x = dof->dof_number(_sys.number(), _lm_vars[0]->number(), 0);
291  const auto dof_index_y = dof->dof_number(_sys.number(), _lm_vars[1]->number(), 0);
292  const Real scaling_factor_x = _lm_vars[0]->scalingFactor();
293  const Real scaling_factor_y = _lm_vars[1]->scalingFactor();
294  Real scaling_factor_z = 1;
295 
296  ADReal lm_x = (*_sys.currentSolution())(dof_index_x);
297  ADReal lm_y = (*_sys.currentSolution())(dof_index_y);
298 
299  Moose::derivInsert(lm_x.derivatives(), dof_index_x, 1.);
300  Moose::derivInsert(lm_y.derivatives(), dof_index_y, 1.);
301 
302  dof_id_type dof_index_z(-1);
303  ADReal lm_z;
304  if (_has_disp_z)
305  {
306  dof_index_z = dof->dof_number(_sys.number(), _lm_vars[2]->number(), 0);
307  lm_z = (*_sys.currentSolution())(dof_index_z);
308  Moose::derivInsert(lm_z.derivatives(), dof_index_z, 1.);
309  scaling_factor_z = _lm_vars[2]->scalingFactor();
310  }
311 
312  ADReal normal_pressure_value =
313  lm_x * _dof_to_normal_vector[dof](0) + lm_y * _dof_to_normal_vector[dof](1);
314  ADReal tangential_pressure_value =
315  lm_x * _dof_to_tangent_vectors[dof][0](0) + lm_y * _dof_to_tangent_vectors[dof][0](1);
316 
317  ADReal tangential_pressure_value_dir;
318 
319  if (_has_disp_z)
320  {
321  normal_pressure_value += lm_z * _dof_to_normal_vector[dof](2);
322  tangential_pressure_value += lm_z * _dof_to_tangent_vectors[dof][0](2);
323  tangential_pressure_value_dir = lm_x * _dof_to_tangent_vectors[dof][1](0) +
324  lm_y * _dof_to_tangent_vectors[dof][1](1) +
325  lm_z * _dof_to_tangent_vectors[dof][1](2);
326  }
327 
328  ADReal normal_dof_residual = std::min(normal_pressure_value, weighted_gap * c);
329  ADReal tangential_dof_residual = tangential_pressure_value;
330 
331  // Get index for normal constraint.
332  // We do this to get a decent Jacobian structure, which is key for the use of iterative solvers.
333  // Using old normal vector to avoid changes in the Jacobian structure within one time step
334 
335  Real ny, nz;
336  // Intially, use the current normal vector
337  if (_dof_to_old_normal_vector[dof].norm() < TOLERANCE)
338  {
339  ny = _dof_to_normal_vector[dof](1);
340  nz = _dof_to_normal_vector[dof](2);
341  }
342  else
343  {
344  ny = _dof_to_old_normal_vector[dof](1);
345  nz = _dof_to_old_normal_vector[dof](2);
346  }
347  unsigned int component_normal = 0;
348  if (std::abs(ny) > 0.57735)
349  component_normal = 1;
350  else if (std::abs(nz) > 0.57735)
351  component_normal = 2;
352 
353  libmesh_ignore(component_normal);
354 
356  _assembly,
357  std::array<ADReal, 1>{{normal_dof_residual}},
358  std::array<dof_id_type, 1>{{component_normal == 0
359  ? dof_index_x
360  : (component_normal == 1 ? dof_index_y : dof_index_z)}},
361  component_normal == 0 ? scaling_factor_x
362  : (component_normal == 1 ? scaling_factor_y : scaling_factor_z));
363 
365  _assembly,
366  std::array<ADReal, 1>{{tangential_dof_residual}},
367  std::array<dof_id_type, 1>{
368  {(component_normal == 0 || component_normal == 2) ? dof_index_y : dof_index_x}},
369  (component_normal == 0 || component_normal == 2) ? scaling_factor_y : scaling_factor_x);
370 
371  if (_has_disp_z)
373  _assembly,
374  std::array<ADReal, 1>{{tangential_pressure_value_dir}},
375  std::array<dof_id_type, 1>{
376  {(component_normal == 0 || component_normal == 1) ? dof_index_z : dof_index_x}},
377  (component_normal == 0 || component_normal == 1) ? scaling_factor_z : scaling_factor_x);
378 }
virtual const NumericVector< Number > *const & currentSolution() const=0
void addResidualsAndJacobian(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
const bool _has_disp_z
For 2D mortar contact no displacement will be specified, so const pointers used.
bool _normalize_c
Whether to normalize weighted gap by weighting function norm.
DualNumber< Real, DNDerivativeType, true > ADReal
SystemBase & _sys
void libmesh_ignore(const Args &...)
std::unordered_map< const DofObject *, std::array< RealVectorValue, 2 > > _dof_to_tangent_vectors
A map from node to tangent vector (2D for now)
std::unordered_map< const DofObject *, RealVectorValue > _dof_to_normal_vector
A map from node to normal vector (2D)
unsigned int number() const
auto norm(const T &a) -> decltype(std::abs(a))
Assembly & _assembly
std::vector< MooseVariable * > _lm_vars
Cartesian Lagrange multipliers for mechanical contact.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void derivInsert(SemiDynamicSparseNumberArray< Real, libMesh::dof_id_type, NWrapper< N >> &derivs, libMesh::dof_id_type index, Real value)
std::unordered_map< const DofObject *, RealVectorValue > _dof_to_old_normal_vector
A map from node to normal vector (2D) - old.
uint8_t dof_id_type
const ADReal * _weighted_gap_ptr
A pointer members that can be used to help avoid copying ADReals.

◆ incorrectEdgeDroppingPost()

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

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

Reimplemented from ADMortarConstraint.

Definition at line 265 of file ComputeWeightedGapCartesianLMMechanicalContact.C.

267 {
270 
271  for (const auto & pr : _dof_to_weighted_gap)
272  {
273  if ((inactive_lm_nodes.find(static_cast<const Node *>(pr.first)) != inactive_lm_nodes.end()) ||
274  (pr.first->processor_id() != this->processor_id()))
275  continue;
276 
277  _weighted_gap_ptr = &pr.second.first;
278  _normalization_ptr = &pr.second.second;
279 
280  enforceConstraintOnDof(pr.first);
281  }
282 }
MooseMesh & _mesh
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
const bool _nodal
Whether the dof objects are nodal; if they&#39;re not, then they&#39;re elemental.
bool _normalize_c
Whether to normalize weighted gap by weighting function norm.
void communicateGaps(std::unordered_map< const DofObject *, std::pair< ADReal, Real >> &dof_to_weighted_gap, const MooseMesh &mesh, bool nodal, bool normalize_c, const Parallel::Communicator &communicator, bool send_data_back)
This function is used to communicate gaps across processes.
virtual void enforceConstraintOnDof(const DofObject *const dof)
Method called from post().
processor_id_type processor_id() const
const ADReal * _weighted_gap_ptr
A pointer members that can be used to help avoid copying ADReals.

◆ jacobianSetup()

void ComputeWeightedGapCartesianLMMechanicalContact::jacobianSetup ( )
finaloverridevirtual

◆ post()

void ComputeWeightedGapCartesianLMMechanicalContact::post ( )
overridevirtual

Reimplemented from ADMortarConstraint.

Definition at line 247 of file ComputeWeightedGapCartesianLMMechanicalContact.C.

248 {
251 
252  for (const auto & pr : _dof_to_weighted_gap)
253  {
254  if (pr.first->processor_id() != this->processor_id())
255  continue;
256 
257  _weighted_gap_ptr = &pr.second.first;
258  _normalization_ptr = &pr.second.second;
259 
260  enforceConstraintOnDof(pr.first);
261  }
262 }
MooseMesh & _mesh
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
const bool _nodal
Whether the dof objects are nodal; if they&#39;re not, then they&#39;re elemental.
bool _normalize_c
Whether to normalize weighted gap by weighting function norm.
void communicateGaps(std::unordered_map< const DofObject *, std::pair< ADReal, Real >> &dof_to_weighted_gap, const MooseMesh &mesh, bool nodal, bool normalize_c, const Parallel::Communicator &communicator, bool send_data_back)
This function is used to communicate gaps across processes.
virtual void enforceConstraintOnDof(const DofObject *const dof)
Method called from post().
processor_id_type processor_id() const
const ADReal * _weighted_gap_ptr
A pointer members that can be used to help avoid copying ADReals.

◆ residualSetup()

void ComputeWeightedGapCartesianLMMechanicalContact::residualSetup ( )
overridevirtual

Reimplemented from ADMortarConstraint.

Definition at line 188 of file ComputeWeightedGapCartesianLMMechanicalContact.C.

Referenced by jacobianSetup(), and ComputeFrictionalForceCartesianLMMechanicalContact::residualSetup().

189 {
190  _dof_to_weighted_gap.clear();
191  _dof_to_normal_vector.clear();
192  _dof_to_tangent_vectors.clear();
193 }
std::unordered_map< const DofObject *, std::pair< ADReal, Real > > _dof_to_weighted_gap
A map from node to weighted gap and normalization (if requested)
std::unordered_map< const DofObject *, std::array< RealVectorValue, 2 > > _dof_to_tangent_vectors
A map from node to tangent vector (2D for now)
std::unordered_map< const DofObject *, RealVectorValue > _dof_to_normal_vector
A map from node to normal vector (2D)

◆ timestepSetup()

void ComputeWeightedGapCartesianLMMechanicalContact::timestepSetup ( )
overrideprotectedvirtual

Reimplemented from ADMortarConstraint.

Definition at line 179 of file ComputeWeightedGapCartesianLMMechanicalContact.C.

180 {
182 
183  for (auto & map_pr : _dof_to_normal_vector)
184  _dof_to_old_normal_vector.emplace(map_pr);
185 }
std::unordered_map< const DofObject *, RealVectorValue > _dof_to_normal_vector
A map from node to normal vector (2D)
std::unordered_map< const DofObject *, RealVectorValue > _dof_to_old_normal_vector
A map from node to normal vector (2D) - old.

◆ validParams()

InputParameters ComputeWeightedGapCartesianLMMechanicalContact::validParams ( )
static

Definition at line 41 of file ComputeWeightedGapCartesianLMMechanicalContact.C.

Referenced by ComputeFrictionalForceCartesianLMMechanicalContact::validParams().

42 {
44  params.addClassDescription("Computes the weighted gap that will later be used to enforce the "
45  "zero-penetration mechanical contact conditions");
46  params.suppressParameter<VariableName>("secondary_variable");
47  params.suppressParameter<VariableName>("primary_variable");
48  params.addRequiredCoupledVar("disp_x", "The x displacement variable");
49  params.addRequiredCoupledVar("disp_y", "The y displacement variable");
50  params.addCoupledVar("disp_z", "The z displacement variable");
51  params.addParam<Real>(
52  "c", 1e6, "Parameter for balancing the size of the gap and contact pressure");
53  params.addRequiredCoupledVar("lm_x",
54  "Mechanical contact Lagrange multiplier along the x Cartesian axis");
55  params.addRequiredCoupledVar(
56  "lm_y", "Mechanical contact Lagrange multiplier along the y Cartesian axis.");
57  params.addCoupledVar("lm_z",
58  "Mechanical contact Lagrange multiplier along the z Cartesian axis.");
59  params.set<bool>("interpolate_normals") = false;
60  params.addParam<bool>(
61  "normalize_c",
62  false,
63  "Whether to normalize c by weighting function norm. When unnormalized "
64  "the value of c effectively depends on element size since in the constraint we compare nodal "
65  "Lagrange Multiplier values to integrated gap values (LM nodal value is independent of "
66  "element size, where integrated values are dependent on element size).");
67  params.set<bool>("use_displaced_mesh") = true;
68  return params;
69 }
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)
void suppressParameter(const std::string &name)
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)
static InputParameters validParams()

Member Data Documentation

◆ _c

const Real ComputeWeightedGapCartesianLMMechanicalContact::_c
protected

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 82 of file ComputeWeightedGapCartesianLMMechanicalContact.h.

Referenced by ComputeFrictionalForceCartesianLMMechanicalContact::enforceConstraintOnDof(), and enforceConstraintOnDof().

◆ _disp_x_var

const MooseVariable* const ComputeWeightedGapCartesianLMMechanicalContact::_disp_x_var
protected

◆ _disp_y_var

const MooseVariable* const ComputeWeightedGapCartesianLMMechanicalContact::_disp_y_var
protected

◆ _disp_z_var

const MooseVariable* const ComputeWeightedGapCartesianLMMechanicalContact::_disp_z_var
protected

◆ _dof_to_normal_vector

std::unordered_map<const DofObject *, RealVectorValue> ComputeWeightedGapCartesianLMMechanicalContact::_dof_to_normal_vector
protected

◆ _dof_to_old_normal_vector

std::unordered_map<const DofObject *, RealVectorValue> ComputeWeightedGapCartesianLMMechanicalContact::_dof_to_old_normal_vector
protected

◆ _dof_to_tangent_vectors

std::unordered_map<const DofObject *, std::array<RealVectorValue, 2> > ComputeWeightedGapCartesianLMMechanicalContact::_dof_to_tangent_vectors
protected

◆ _dof_to_weighted_gap

std::unordered_map<const DofObject *, std::pair<ADReal, Real> > ComputeWeightedGapCartesianLMMechanicalContact::_dof_to_weighted_gap
protected

◆ _has_disp_z

const bool ComputeWeightedGapCartesianLMMechanicalContact::_has_disp_z
protected

◆ _lm_vars

std::vector<MooseVariable *> ComputeWeightedGapCartesianLMMechanicalContact::_lm_vars
protected

◆ _nodal

const bool ComputeWeightedGapCartesianLMMechanicalContact::_nodal
protected

◆ _normalization_ptr

const Real* ComputeWeightedGapCartesianLMMechanicalContact::_normalization_ptr = nullptr
protected

◆ _normalize_c

bool ComputeWeightedGapCartesianLMMechanicalContact::_normalize_c
protected

◆ _primary_disp_x

const ADVariableValue& ComputeWeightedGapCartesianLMMechanicalContact::_primary_disp_x
protected

x-displacement on the primary face

Definition at line 66 of file ComputeWeightedGapCartesianLMMechanicalContact.h.

Referenced by computeQpProperties().

◆ _primary_disp_y

const ADVariableValue& ComputeWeightedGapCartesianLMMechanicalContact::_primary_disp_y
protected

y-displacement on the primary face

Definition at line 70 of file ComputeWeightedGapCartesianLMMechanicalContact.h.

Referenced by computeQpProperties().

◆ _primary_disp_z

const ADVariableValue* const ComputeWeightedGapCartesianLMMechanicalContact::_primary_disp_z
protected

z-displacement on the primary face

Definition at line 77 of file ComputeWeightedGapCartesianLMMechanicalContact.h.

◆ _qp_factor

Real ComputeWeightedGapCartesianLMMechanicalContact::_qp_factor
protected

The value of the LM at the current quadrature point.

Definition at line 88 of file ComputeWeightedGapCartesianLMMechanicalContact.h.

Referenced by computeQpIProperties(), and computeQpProperties().

◆ _qp_gap

ADReal ComputeWeightedGapCartesianLMMechanicalContact::_qp_gap
protected

The value of the gap at the current quadrature point.

Definition at line 85 of file ComputeWeightedGapCartesianLMMechanicalContact.h.

◆ _qp_gap_nodal

ADRealVectorValue ComputeWeightedGapCartesianLMMechanicalContact::_qp_gap_nodal
protected

Vector for computation of weighted gap with nodal normals.

Definition at line 107 of file ComputeWeightedGapCartesianLMMechanicalContact.h.

Referenced by computeQpIProperties(), and computeQpProperties().

◆ _secondary_disp_x

const ADVariableValue& ComputeWeightedGapCartesianLMMechanicalContact::_secondary_disp_x
protected

x-displacement on the secondary face

Definition at line 64 of file ComputeWeightedGapCartesianLMMechanicalContact.h.

Referenced by computeQpProperties().

◆ _secondary_disp_y

const ADVariableValue& ComputeWeightedGapCartesianLMMechanicalContact::_secondary_disp_y
protected

y-displacement on the secondary face

Definition at line 68 of file ComputeWeightedGapCartesianLMMechanicalContact.h.

Referenced by computeQpProperties().

◆ _secondary_disp_z

const ADVariableValue* const ComputeWeightedGapCartesianLMMechanicalContact::_secondary_disp_z
protected

z-displacement on the secondary face

Definition at line 75 of file ComputeWeightedGapCartesianLMMechanicalContact.h.

◆ _weighted_gap_ptr

const ADReal* ComputeWeightedGapCartesianLMMechanicalContact::_weighted_gap_ptr = nullptr
protected

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