47{
50
51
53
55
56 for (const auto & belem : range)
57 {
58 const Elem * elem = belem->_elem;
59 unsigned short int side = belem->_side;
61 SubdomainID last_sub_id = Elem::invalid_subdomain_id;
62
63
65
67 {
68
69 const auto iter = boundary_kernels.find(boundary_id);
70
71 if (iter != boundary_kernels.end() && !(iter->second.empty()))
72 {
74 const auto sub_id = elem->subdomain_id();
75 if (sub_id != last_sub_id)
76 {
78 last_sub_id = sub_id;
79 }
83
86 if (lower_d_elem)
88
89 const Elem * neighbor = elem->neighbor_ptr(side);
90
91
92
93
94 bool compute_interface =
95 neighbor && neighbor->active() &&
98
99
100
104
106 {
107 std::unordered_set<unsigned int> needed_mat_props;
108 for (const auto & aux : iter->second)
109 {
110 const auto & mp_deps = aux->getMatPropDependencies();
111 needed_mat_props.insert(mp_deps.begin(), mp_deps.end());
112 }
114
116
118
119 if (compute_interface)
120 {
124 }
125 }
126
127 for (const auto & aux : iter->second)
128 {
129 aux->determineWhetherCoincidentLowerDCalc();
130 aux->compute();
131 aux->insert();
132 }
133
136 }
137 }
138 }
139}
boundary_id_type BoundaryID
void printBoundaryExecutionInformation(unsigned int boundary_id, const std::vector< std::shared_ptr< AuxKernelType > > &kernels) const
Print list of specific objects executed and in which order.
void printGeneralExecutionInformation() const
Print list of object types executed and in which order.
const MaterialWarehouse & getInterfaceMaterialsWarehouse() const
virtual void setCurrentBoundaryID(BoundaryID bid, const THREAD_ID tid) override
sets the current boundary ID in assembly
virtual void swapBackMaterialsFace(const THREAD_ID tid)
virtual void setCurrentSubdomainID(const Elem *elem, const THREAD_ID tid) override
virtual void prepare(const Elem *elem, const THREAD_ID tid) override
void reinitMaterialsNeighbor(SubdomainID blk_id, const THREAD_ID tid, bool swap_stateful=true, const std::deque< MaterialBase * > *reinit_mats=nullptr)
reinit materials on the neighboring element face
virtual void swapBackMaterialsNeighbor(const THREAD_ID tid)
void clearActiveMaterialProperties(const THREAD_ID tid)
Clear the active material properties.
void reinitElemFace(const Elem *elem, unsigned int side, BoundaryID, const THREAD_ID tid)
virtual void reinitLowerDElem(const Elem *lower_d_elem, const THREAD_ID tid, const std::vector< Point > *const pts=nullptr, const std::vector< Real > *const weights=nullptr) override
virtual MooseMesh & mesh() override
void setActiveMaterialProperties(const std::unordered_set< unsigned int > &mat_prop_ids, const THREAD_ID tid)
Record and set the material properties required by the current computing thread.
void reinitMaterialsFaceOnBoundary(const BoundaryID boundary_id, const SubdomainID blk_id, const THREAD_ID tid, const bool swap_stateful=true, const std::deque< MaterialBase * > *const reinit_mats=nullptr)
reinit materials on element faces on a boundary (internal or external) This specific routine helps us...
void reinitMaterialsBoundary(BoundaryID boundary_id, const THREAD_ID tid, bool swap_stateful=true, const std::deque< MaterialBase * > *reinit_mats=nullptr)
reinit materials on a boundary
virtual void subdomainSetup(SubdomainID subdomain, const THREAD_ID tid)
void reinitMaterialsInterface(BoundaryID boundary_id, const THREAD_ID tid, bool swap_stateful=true)
virtual void setCurrentLowerDElem(const Elem *const lower_d_elem, const THREAD_ID tid) override
Set the current lower dimensional element.
virtual void reinitNeighbor(const Elem *elem, unsigned int side, const THREAD_ID tid) override
const Elem * getLowerDElem(const Elem *, unsigned short int) const
Returns a const pointer to a lower dimensional element that corresponds to a side of a higher dimensi...
const std::map< BoundaryID, std::vector< std::shared_ptr< T > > > & getActiveBoundaryObjects(THREAD_ID tid=0) const
bool hasActiveBoundaryObjects(THREAD_ID tid=0) const
The "SwapBackSentinel" class's destructor guarantees that FEProblemBase::swapBackMaterials{Face,...
processor_id_type processor_id() const