21 "normal_pressure accumulated_slip_one " 22 "tangential_pressure_one tangential_velocity_one accumulated_slip_two " 23 "tangential_pressure_two tangential_velocity_two normal_gap " 24 "normal_lm delta_tangential_lm_one delta_tangential_lm_two active_set");
31 "Populates an auxiliary variable with a contact quantities from penalty mortar contact.");
35 "The desired contact quantity to output as an auxiliary variable.");
38 "The penalty mortar user object to get values from. Note that the user object " 39 "must implement the corresponding getter function.");
48 _user_object(getUserObject<
UserObject>(
"user_object")),
55 {
"PenaltyWeightedGapUserObject",
63 {
"PenaltyFrictionUserObject",
68 {
"PenaltyFrictionUserObject",
73 {
"WeightedVelocitiesUserObject",
78 {
"PenaltyFrictionUserObject",
83 {
"PenaltyFrictionUserObject",
88 {
"WeightedVelocitiesUserObject",
93 {
"PenaltyWeightedGapUserObject",
98 {
"PenaltyFrictionUserObject",
103 {
"PenaltyFrictionUserObject",
108 {
"PenaltyWeightedGapUserObject",
115 mooseError(
"This auxiliary kernel requires nodal variables to obtain contact pressure values");
118 const auto it = _outputs.find(_contact_quantity);
119 if (it == _outputs.end())
120 mooseError(
"Internal error: Contact quantity request in PressureMortarUserObjectAux is not " 122 if (!std::get<1>(it->second))
123 paramError(
"user_object",
125 _contact_quantities.getNames()[
static_cast<int>(it->first)],
126 "' quantity is only provided by a '",
127 std::get<0>(it->second),
128 "' or derived object.");
virtual Real getAccumulatedSlip(const Node *const node, const unsigned int component) const override
std::map< ContactQuantityEnum, std::tuple< std::string, const void *, std::function< Real(void)> > > _outputs
Definition of the output quantities and.
const WeightedVelocitiesUserObject * _wvuo
const ContactQuantityEnum _contact_quantity
What penalty mortar contact quantity we'd like to output.
virtual Real getNormalLagrangeMultiplier(const Node *const node) const
const PenaltyWeightedGapUserObject * _pwguo
void mooseError(Args &&... args)
const Node *const & _current_node
Auxiliary kernel to output mortar penalty contact quantities of interest.
virtual Real getTangentialVelocity(const Node *const, const unsigned int) const
User object for computing weighted gaps and contact pressure for penalty based mortar constraints...
const ExecFlagType EXEC_TIMESTEP_END
Creates dof object to weighted tangential velocities map.
virtual Real getNormalContactPressure(const Node *const node) const override
User object that computes tangential pressures due to friction using a penalty approach, following J.C.
static InputParameters validParams()
virtual Real getNormalGap(const Node *const) const
registerMooseObject("ContactApp", PenaltyMortarUserObjectAux)
virtual Real getDeltaTangentialLagrangeMultiplier(const Node *const node, const unsigned int component) const override
Creates dof object to weighted gap map.
virtual Real getFrictionalContactPressure(const Node *const node, const unsigned int component) const override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual Real computeValue() override
virtual bool getActiveSetState(const Node *const node) const
PenaltyMortarUserObjectAux(const InputParameters ¶meters)
Factory constructor, takes parameters so that all derived classes can be built using the constructor...
ContactQuantityEnum
What type of contact quantity we are querying.
static InputParameters validParams()
const WeightedGapUserObject * _wguo
Cast pointers to specific UOs.
static const MooseEnum _contact_quantities
available contact quantities
const PenaltyFrictionUserObject * _pfuo