17 #include "libmesh/numeric_vector.h" 18 #include "libmesh/sparse_matrix.h" 26 params.
set<
bool>(
"use_displaced_mesh") =
true;
30 "component",
component,
"The force component constraint that this object is supplying");
33 "The displacements appropriate for the simulation geometry and coordinate system");
39 _component(getParam<
MooseEnum>(
"component")),
40 _mesh_dimension(_mesh.dimension()),
41 _residual_copy(_sys.residualGhosted())
51 mooseError(
"The number of displacement variables does not match the mesh dimension!");
82 std::vector<dof_id_type> primary_cols;
83 std::vector<Number> primary_values;
86 mooseAssert(primary_cols.size() == primary_values.size(),
87 "The size of the dof container and value container are different");
91 for (MooseIndex(primary_cols) i = 0; i < primary_cols.size(); ++i)
97 "The node " <<
_current_node->id() <<
" should map to a lagrange multiplier");
102 "nearest node not a node on the current primary element");
137 case Moose::ConstraintJacobianType::SecondarySecondary:
140 case Moose::ConstraintJacobianType::SecondaryPrimary:
146 case Moose::ConstraintJacobianType::PrimarySecondary:
151 "The connected dof index is not found in the _dof_number_to_value container. " 152 "This must mean that insufficient sparsity was allocated");
172 "We overrode commputeSecondaryValue so computeQpSecondaryValue should never get called");
std::unordered_map< dof_id_type, Real > _node_to_lm
virtual unsigned int coupled(const std::string &var_name, unsigned int comp=0) const
NumericVector< Number > & _residual_copy
const unsigned int invalid_uint
void residualSetup() override
RANFSTieNode(const InputParameters ¶meters)
static const std::string component
const Elem *const & _current_primary
static InputParameters validParams()
MooseVariable * getVar(const std::string &var_name, unsigned int comp)
dof_id_type _primary_index
virtual Real computeQpJacobian(Moose::ConstraintJacobianType type) override
static InputParameters validParams()
const Node *const & _current_node
const Node * _nearest_node
virtual Real computeQpResidual(Moose::ConstraintType type) override
virtual Real computeQpSecondaryValue() override
const MooseEnum _component
bool overwriteSecondaryResidual() override
const std::string & type() const
std::vector< MooseVariable * > _var_objects
std::unordered_map< dof_id_type, Number > _dof_number_to_value
registerMooseObject("ContactTestApp", RANFSTieNode)
const unsigned int _mesh_dimension
unsigned int coupledComponents(const std::string &var_name) const
virtual void get_row(numeric_index_type i, std::vector< numeric_index_type > &indices, std::vector< Number > &values) const =0
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void computeSecondaryValue(NumericVector< Number > &solution) override
bool shouldApply() override
void mooseError(Args &&... args) const
std::vector< dof_id_type > _connected_dof_indices
const SparseMatrix< Number > * _jacobian
VariablePhiValue _phi_secondary
std::vector< unsigned int > _vars
Real _lagrange_multiplier
const bool & currentlyComputingJacobian() const
PenetrationLocator & _penetration_locator
void scalingFactor(const std::vector< Real > &factor)
NearestNodeLocator & _nearest_node