11 #include "PenetrationLocator.h"
12 #include "PenetrationInfo.h"
13 #include "SystemBase.h"
22 InputParameters params = validParams<NodeFaceConstraint>();
23 params.set<
bool>(
"use_displaced_mesh") =
true;
25 params.addRequiredCoupledVar(
"lambda",
"The normal lagrange multiplier");
27 params.addRequiredParam<MooseEnum>(
28 "component",
component,
"The force component constraint that this object is supplying");
33 : NodeFaceConstraint(parameters),
34 _lambda(getVar(
"lambda", 0)->nodalValue()),
35 _lambda_id(coupled(
"lambda")),
36 _epsilon(std::numeric_limits<Real>::epsilon()),
37 _component(getParam<MooseEnum>(
"component"))
39 _overwrite_slave_residual =
false;
61 MooseVariableFEBase & var = _sys.getVariable(0, jvar);
62 _connected_dof_indices.clear();
63 _connected_dof_indices.push_back(var.nodalDofIndex());
70 _Kne.resize(_test_master.size(), 1);
72 for (_i = 0; _i < _test_master.size(); ++_i)
79 std::map<dof_id_type, PenetrationInfo *>::iterator found =
80 _penetration_locator._penetration_info.find(_current_node->id());
81 if (found != _penetration_locator._penetration_info.end())
83 PenetrationInfo * pinfo = found->second;
88 case Moose::ConstraintType::Slave:
93 case Moose::ConstraintType::Master:
113 std::map<dof_id_type, PenetrationInfo *>::iterator found =
114 _penetration_locator._penetration_info.find(_current_node->id());
115 if (found != _penetration_locator._penetration_info.end())
117 PenetrationInfo * pinfo = found->second;
125 case Moose::SlaveSlave:
127 case Moose::MasterSlave:
128 return _test_master[_i][_qp] * pinfo->_normal(
_component);