https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
14#include "MooseTypes.h"
15
16class Constraint;
17class NodalConstraint;
22
26class ConstraintWarehouse : public MooseObjectWarehouse<Constraint>
27{
28public:
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;
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
83protected:
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};
boundary_id_type BoundaryID
unsigned int InterfaceID
Definition MooseTypes.h:234
unsigned int THREAD_ID
Definition MooseTypes.h:237
Warehouse for storing constraints.
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.
Definition Constraint.h:20
A storage container for MooseObjects that inherit from SetupInterface.
User for mortar methods.
A NodeElemConstraintBase is used when you need to create constraints between a secondary node and a p...
A NodeFaceConstraint is used when you need to create constraints between two surfaces in a mesh.