20 params.
set<
bool>(
"_compute_primal_gradients") =
false;
24 "component", component,
"The force component constraint that this object is supplying");
26 "This class is used to apply normal contact forces using lagrange multipliers");
27 params.
set<
bool>(
"compute_lm_residual") =
false;
28 params.
set<
bool>(
"interpolate_normals") =
false;
29 params.
addRequiredParam<UserObjectName>(
"weighted_gap_uo",
"The weighted gap user object.");
35 _component(getParam<
MooseEnum>(
"component")),
38 if (getParam<bool>(
"interpolate_normals"))
40 "Mechanical mortar contact uses normalized secondary nodal normals and cannot be "
41 "combined with quadrature-point normal interpolation.");
55 "'weighted_gap_uo' must be defined on the same secondary/primary subdomain pair "
56 "as this constraint when nodal-normal derivatives are enabled.");
60 "'weighted_gap_uo' must use the same displacement variable as this constraint's "
61 "'variable' when nodal-normal derivatives are enabled.");
63 if (getParam<bool>(
"use_displaced_mesh") !=
67 "'weighted_gap_uo' must use the same 'use_displaced_mesh' setting as this constraint "
68 "when nodal-normal derivatives are enabled.");
79 for (
const auto j : index_range(phi))
81 const auto nodal_pressure =
86 phi[j][
_qp] * nodal_pressure *
98 case Moose::MortarType::Secondary:
109 case Moose::MortarType::Primary:
DualNumber< Real, DNDerivativeType, true > ADReal
This class enforces mortar constraints on lower dimensional domains, skipping interior nodes.
virtual void initialSetup() override
static InputParameters validParams()
const InputParameters & parameters() const
const std::string & type() const
void paramError(const std::string ¶m, Args... args) const
const VariableTestValue & _test_secondary
MooseVariableField< Real > & _secondary_var
const VariableTestValue & _test_primary
SubdomainID primarySubdomain() const
Elem const *const & _lower_secondary_elem
SubdomainID secondarySubdomain() const
std::vector< Point > _normals
Creates dof object to weighted gap map.
virtual bool usesNodalNormalDerivatives() const =0
Whether this formulation includes displacement derivatives of the secondary nodal normals.
bool shouldRecordNodalNormalDerivatives() const
Whether the current assembly records nodal-normal derivatives for this object's system.
virtual const VariableTestValue & tractionBasis() const
const MooseVariable * dispVar(unsigned int component) const
virtual ADReal nodalContactPressure(const Node &node) const
const ADRealVectorValue & contactNormal(const Elem &lower_secondary_elem, unsigned int nodal_index) const
Return the cached contact normal for the supplied lower-dimensional secondary element node.