https://mooseframework.inl.gov
ConstraintWarehouse.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 // MOOSE includes
13 #include "MooseObjectWarehouse.h"
14 #include "MooseTypes.h"
15 
16 class Constraint;
17 class NodalConstraint;
18 class NodeFaceConstraint;
19 class ElemElemConstraint;
22 
26 class ConstraintWarehouse : public MooseObjectWarehouse<Constraint>
27 {
28 public:
30 
36  void
37  addObject(std::shared_ptr<Constraint> object, THREAD_ID tid = 0, bool recurse = true) override;
38 
40 
43  const std::vector<std::shared_ptr<NodalConstraint>> & getActiveNodalConstraints() const;
44  const std::vector<std::shared_ptr<MortarConstraintBase>> &
45  getActiveMortarConstraints(const std::pair<BoundaryID, BoundaryID> & mortar_interface_key,
46  bool displaced) const;
47  const std::vector<std::shared_ptr<ElemElemConstraint>> &
48  getActiveElemElemConstraints(InterfaceID interface_id, bool displaced) const;
49  const std::vector<std::shared_ptr<NodeFaceConstraint>> &
50  getActiveNodeFaceConstraints(BoundaryID boundary_id, bool displaced) const;
51  const std::vector<std::shared_ptr<NodeElemConstraintBase>> & getActiveNodeElemConstraints(
52  SubdomainID secondary_id, SubdomainID primary_id, bool displaced) const;
54 
56 
59  bool hasActiveNodalConstraints() const;
60  bool hasActiveMortarConstraints(const std::pair<BoundaryID, BoundaryID> & mortar_interface_key,
61  bool displaced) const;
62  bool hasActiveElemElemConstraints(const InterfaceID interface_id, bool displaced) const;
63  bool hasActiveNodeFaceConstraints(BoundaryID boundary_id, bool displaced) const;
64  bool hasActiveNodeElemConstraints(SubdomainID secondary_id,
65  SubdomainID primary_id,
66  bool displaced) const;
68 
72  void subdomainsCovered(std::set<SubdomainID> & subdomains_covered,
73  std::set<std::string> & unique_variables,
74  THREAD_ID tid = 0) const;
75 
79  void updateActive(THREAD_ID tid = 0) override;
80 
81  virtual void residualEnd(THREAD_ID tid = 0) const;
82 
83 protected:
86 
88  std::map<BoundaryID, MooseObjectWarehouse<NodeFaceConstraint>> _node_face_constraints;
89 
91  std::map<BoundaryID, MooseObjectWarehouse<NodeFaceConstraint>> _displaced_node_face_constraints;
92 
94  std::map<std::pair<BoundaryID, BoundaryID>, MooseObjectWarehouse<MortarConstraintBase>>
96 
98  std::map<std::pair<BoundaryID, BoundaryID>, MooseObjectWarehouse<MortarConstraintBase>>
100 
102  std::map<unsigned int, MooseObjectWarehouse<ElemElemConstraint>> _element_constraints;
103 
105  std::map<unsigned int, MooseObjectWarehouse<ElemElemConstraint>> _displaced_element_constraints;
106 
108  std::map<std::pair<SubdomainID, SubdomainID>, MooseObjectWarehouse<NodeElemConstraintBase>>
110 
112  std::map<std::pair<SubdomainID, SubdomainID>, MooseObjectWarehouse<NodeElemConstraintBase>>
114 };
std::map< std::pair< BoundaryID, BoundaryID >, MooseObjectWarehouse< MortarConstraintBase > > _displaced_mortar_constraints
Displaced MortarConstraints.
User for mortar methods.
MooseObjectWarehouse< NodalConstraint > _nodal_constraints
NodalConstraint objects.
std::map< BoundaryID, MooseObjectWarehouse< NodeFaceConstraint > > _displaced_node_face_constraints
NodeFaceConstraint objects (displaced)
const std::vector< std::shared_ptr< NodalConstraint > > & getActiveNodalConstraints() const
Access methods for active objects.
std::map< std::pair< SubdomainID, SubdomainID >, MooseObjectWarehouse< NodeElemConstraintBase > > _displaced_node_elem_constraints
NodeElemConstraint objects.
A storage container for MooseObjects that inherit from SetupInterface.
Base class for all Constraint types.
Definition: Constraint.h:19
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 hasActiveNodalConstraints() const
Deterimine if active objects exist.
void updateActive(THREAD_ID tid=0) override
Update the various active lists.
bool hasActiveNodeElemConstraints(SubdomainID secondary_id, SubdomainID primary_id, bool displaced) const
const std::vector< std::shared_ptr< NodeElemConstraintBase > > & getActiveNodeElemConstraints(SubdomainID secondary_id, SubdomainID primary_id, bool displaced) const
bool hasActiveNodeFaceConstraints(BoundaryID boundary_id, bool displaced) const
boundary_id_type BoundaryID
A NodeFaceConstraint is used when you need to create constraints between two surfaces in a mesh...
unsigned int InterfaceID
Definition: MooseTypes.h:206
std::map< unsigned int, MooseObjectWarehouse< ElemElemConstraint > > _element_constraints
ElemElemConstraints (non-displaced)
std::map< std::pair< SubdomainID, SubdomainID >, MooseObjectWarehouse< NodeElemConstraintBase > > _node_elem_constraints
NodeElemConstraint objects.
std::map< unsigned int, MooseObjectWarehouse< ElemElemConstraint > > _displaced_element_constraints
ElemElemConstraints (displaced)
void addObject(std::shared_ptr< Constraint > object, THREAD_ID tid=0, bool recurse=true) override
Add Constraint object to the warehouse.
const std::vector< std::shared_ptr< MortarConstraintBase > > & getActiveMortarConstraints(const std::pair< BoundaryID, BoundaryID > &mortar_interface_key, bool displaced) const
std::map< std::pair< BoundaryID, BoundaryID >, MooseObjectWarehouse< MortarConstraintBase > > _mortar_constraints
Undisplaced MortarConstraints.
bool hasActiveElemElemConstraints(const InterfaceID interface_id, bool displaced) const
A NodeElemConstraintBase is used when you need to create constraints between a secondary node and a p...
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.
const std::vector< std::shared_ptr< ElemElemConstraint > > & getActiveElemElemConstraints(InterfaceID interface_id, bool displaced) const
std::map< BoundaryID, MooseObjectWarehouse< NodeFaceConstraint > > _node_face_constraints
NodeFaceConstraint objects (non-displaced)
Warehouse for storing constraints.
virtual void residualEnd(THREAD_ID tid=0) const
unsigned int THREAD_ID
Definition: MooseTypes.h:209