32 std::shared_ptr<NodeFaceConstraint> nfc = std::dynamic_pointer_cast<NodeFaceConstraint>(
object);
33 std::shared_ptr<MortarConstraintBase> mc =
34 std::dynamic_pointer_cast<MortarConstraintBase>(
object);
35 std::shared_ptr<NodalConstraint> nc = std::dynamic_pointer_cast<NodalConstraint>(
object);
36 std::shared_ptr<ElemElemConstraint> ec = std::dynamic_pointer_cast<ElemElemConstraint>(
object);
37 std::shared_ptr<NodeElemConstraintBase> nec =
38 std::dynamic_pointer_cast<NodeElemConstraintBase>(
object);
44 unsigned int secondary =
mesh.getBoundaryID(nfc->getParam<BoundaryName>(
"secondary"));
45 bool displaced = nfc->parameters().have_parameter<
bool>(
"use_displaced_mesh") &&
46 nfc->getParam<
bool>(
"use_displaced_mesh");
58 bool displaced = mc->getParam<
bool>(
"use_displaced_mesh");
60 auto secondary_boundary_id =
61 mesh.getBoundaryID(mc->getParam<BoundaryName>(
"secondary_boundary"));
62 auto primary_boundary_id =
mesh.getBoundaryID(mc->getParam<BoundaryName>(
"primary_boundary"));
63 auto key = std::make_pair(primary_boundary_id, secondary_boundary_id);
74 bool displaced = ec->parameters().have_parameter<
bool>(
"use_displaced_mesh") &&
75 ec->getParam<
bool>(
"use_displaced_mesh");
76 const InterfaceID interface_id = ec->getInterfaceID();
88 SubdomainID secondary =
mesh.getSubdomainID(nec->getParam<SubdomainName>(
"secondary"));
89 SubdomainID primary =
mesh.getSubdomainID(nec->getParam<SubdomainName>(
"primary"));
90 bool displaced = nec->parameters().have_parameter<
bool>(
"use_displaced_mesh") &&
91 nec->getParam<
bool>(
"use_displaced_mesh");
104 mooseError(
"Unknown type of Constraint object");
107const std::vector<std::shared_ptr<NodalConstraint>> &
113const std::vector<std::shared_ptr<NodeFaceConstraint>> &
116 std::map<BoundaryID, MooseObjectWarehouse<NodeFaceConstraint>>::const_iterator it, end_it;
130 mooseAssert(it != end_it,
131 "Unable to locate storage for NodeFaceConstraint objects for the given boundary id: "
133 return it->second.getActiveObjects();
138 const std::pair<BoundaryID, BoundaryID> & mortar_interface_key,
const bool displaced)
const
141 return constraints.find(mortar_interface_key) != constraints.end();
144const std::vector<std::shared_ptr<MortarConstraintBase>> &
146 const std::pair<BoundaryID, BoundaryID> & mortar_interface_key,
const bool displaced)
const
148 std::map<std::pair<BoundaryID, BoundaryID>,
165 "No MortarConstraints exist for the specified primary-secondary boundary pair, primary "
166 << mortar_interface_key.first <<
" and secondary " << mortar_interface_key.second);
168 return it->second.getActiveObjects();
171const std::vector<std::shared_ptr<ElemElemConstraint>> &
173 bool displaced)
const
175 std::map<unsigned int, MooseObjectWarehouse<ElemElemConstraint>>::const_iterator it, end_it;
189 mooseAssert(it != end_it,
190 "Unable to locate storage for ElemElemConstraint objects for the given interface id: "
192 return it->second.getActiveObjects();
195const std::vector<std::shared_ptr<NodeElemConstraintBase>> &
198 bool displaced)
const
200 std::map<std::pair<SubdomainID, SubdomainID>,
217 "Unable to locate storage for NodeElemConstraintBase objects for the given secondary and "
219 << secondary_id <<
", " << primary_id <<
"]");
220 return it->second.getActiveObjects();
231 bool displaced)
const
233 std::map<unsigned int, MooseObjectWarehouse<ElemElemConstraint>>::const_iterator it, end_it;
247 return (it != end_it && it->second.hasActiveObjects());
253 std::map<BoundaryID, MooseObjectWarehouse<NodeFaceConstraint>>::const_iterator it, end_it;
267 return (it != end_it && it->second.hasActiveObjects());
273 bool displaced)
const
275 std::map<std::pair<SubdomainID, SubdomainID>,
291 return (it != end_it && it->second.hasActiveObjects());
301 it.second.updateActive();
304 it.second.updateActive();
308 it.second.updateActive();
311 it.second.updateActive();
314 it.second.updateActive();
319 std::set<std::string> & unique_variables,
325 const auto & objects = pr.second.getActiveObjects();
326 for (
const auto & mc : objects)
334 subdomains_covered.insert(mc->primarySubdomain());
335 subdomains_covered.insert(mc->secondarySubdomain());
342 const auto & objects = pr.second.getActiveObjects();
343 for (
const auto & mc : objects)
351 subdomains_covered.insert(mc->primarySubdomain());
352 subdomains_covered.insert(mc->secondarySubdomain());
362 object->residualEnd();
boundary_id_type BoundaryID
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
const std::vector< std::shared_ptr< ElemElemConstraint > > & getActiveElemElemConstraints(InterfaceID interface_id, bool displaced) const
MooseObjectWarehouse< NodalConstraint > _nodal_constraints
NodalConstraint objects.
std::map< BoundaryID, MooseObjectWarehouse< NodeFaceConstraint > > _node_face_constraints
NodeFaceConstraint objects (non-displaced)
const std::vector< std::shared_ptr< MortarConstraintBase > > & getActiveMortarConstraints(const std::pair< BoundaryID, BoundaryID > &mortar_interface_key, bool displaced) const
std::map< unsigned int, MooseObjectWarehouse< ElemElemConstraint > > _displaced_element_constraints
ElemElemConstraints (displaced)
const std::vector< std::shared_ptr< NodeFaceConstraint > > & getActiveNodeFaceConstraints(BoundaryID boundary_id, bool displaced) const
bool hasActiveMortarConstraints(const std::pair< BoundaryID, BoundaryID > &mortar_interface_key, bool displaced) const
bool hasActiveNodeElemConstraints(SubdomainID secondary_id, SubdomainID primary_id, bool displaced) const
std::map< BoundaryID, MooseObjectWarehouse< NodeFaceConstraint > > _displaced_node_face_constraints
NodeFaceConstraint objects (displaced)
std::map< std::pair< BoundaryID, BoundaryID >, MooseObjectWarehouse< MortarConstraintBase > > _mortar_constraints
Undisplaced MortarConstraints.
bool hasActiveNodalConstraints() const
Deterimine if active objects exist.
void subdomainsCovered(std::set< SubdomainID > &subdomains_covered, std::set< std::string > &unique_variables, THREAD_ID tid=0) const
Update supplied subdomain and variable coverate containters.
void updateActive(THREAD_ID tid=0) override
Update the various active lists.
void addObject(std::shared_ptr< Constraint > object, THREAD_ID tid=0, bool recurse=true) override
Add Constraint object to the warehouse.
std::map< std::pair< BoundaryID, BoundaryID >, MooseObjectWarehouse< MortarConstraintBase > > _displaced_mortar_constraints
Displaced MortarConstraints.
bool hasActiveElemElemConstraints(const InterfaceID interface_id, bool displaced) const
std::map< std::pair< SubdomainID, SubdomainID >, MooseObjectWarehouse< NodeElemConstraintBase > > _node_elem_constraints
NodeElemConstraint objects.
const std::vector< std::shared_ptr< NodeElemConstraintBase > > & getActiveNodeElemConstraints(SubdomainID secondary_id, SubdomainID primary_id, bool displaced) const
std::map< unsigned int, MooseObjectWarehouse< ElemElemConstraint > > _element_constraints
ElemElemConstraints (non-displaced)
bool hasActiveNodeFaceConstraints(BoundaryID boundary_id, bool displaced) const
const std::vector< std::shared_ptr< NodalConstraint > > & getActiveNodalConstraints() const
Access methods for active objects.
virtual void residualEnd(THREAD_ID tid=0) const
std::map< std::pair< SubdomainID, SubdomainID >, MooseObjectWarehouse< NodeElemConstraintBase > > _displaced_node_elem_constraints
NodeElemConstraint objects.
Base class for all Constraint types.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
const std::string & name() const
Get the name of the class.
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
std::vector< std::vector< std::shared_ptr< T > > > _active_objects
All active objects (THREAD_ID on outer vector)
bool hasActiveObjects(THREAD_ID tid=0) const
const std::vector< std::shared_ptr< T > > & getActiveObjects(THREAD_ID tid=0) const
Retrieve complete vector to the active all/block/boundary restricted objects for a given thread.
void checkThreadID(THREAD_ID tid) const
Calls assert on thread id.
A storage container for MooseObjects that inherit from SetupInterface.
virtual void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true) override
Adds an object to the storage structure.
virtual void updateActive(THREAD_ID tid=0) override
Update the active status of Kernels.
This class provides an interface for common operations on field variables of both FE and FV types wit...
virtual void insert(libMesh::NumericVector< libMesh::Number > &vector)=0
Insert the currently cached degree of freedom values into the provided vector.