56 for (
const auto & belem : range)
58 const Elem * elem = belem->_elem;
59 unsigned short int side = belem->_side;
69 const auto iter = boundary_kernels.find(boundary_id);
71 if (iter != boundary_kernels.end() && !(iter->second.empty()))
74 auto did = elem->subdomain_id();
89 const Elem * neighbor = elem->neighbor_ptr(side);
94 bool compute_interface =
95 neighbor && neighbor->active() &&
107 std::unordered_set<unsigned int> needed_mat_props;
108 for (
const auto & aux : iter->second)
110 const auto & mp_deps = aux->getMatPropDependencies();
111 needed_mat_props.insert(mp_deps.begin(), mp_deps.end());
119 if (compute_interface)
127 for (
const auto & aux : iter->second)
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 printGeneralExecutionInformation() const
Print list of object types executed and in which order.
virtual void prepare(const Elem *elem, const THREAD_ID tid) override
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.
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...
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
const MooseObjectWarehouse< AuxKernelType > & _storage
Storage object containing active AuxKernel objects.
void clearActiveMaterialProperties(const THREAD_ID tid)
Clear the active material properties.
virtual void setCurrentLowerDElem(const Elem *const lower_d_elem, const THREAD_ID tid) override
Set the current lower dimensional element.
void reinitMaterialsFace(SubdomainID blk_id, const THREAD_ID tid, bool swap_stateful=true, const std::deque< MaterialBase *> *reinit_mats=nullptr)
reinit materials on element faces
bool hasActiveBoundaryObjects(THREAD_ID tid=0) const
virtual void swapBackMaterialsFace(const THREAD_ID tid)
const MaterialWarehouse & getInterfaceMaterialsWarehouse() const
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
boundary_id_type BoundaryID
virtual void setCurrentSubdomainID(const Elem *elem, const THREAD_ID tid) override
const std::map< BoundaryID, std::vector< std::shared_ptr< T > > > & getActiveBoundaryObjects(THREAD_ID tid=0) const
virtual void swapBackMaterialsNeighbor(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 void setCurrentBoundaryID(BoundaryID bid, const THREAD_ID tid) override
sets the current boundary ID in assembly
virtual void subdomainSetup(SubdomainID subdomain, const THREAD_ID tid)
virtual MooseMesh & mesh() override
void reinitElemFace(const Elem *elem, unsigned int side, BoundaryID, const THREAD_ID tid)
virtual void reinitNeighbor(const Elem *elem, unsigned int side, const THREAD_ID tid) override
void reinitMaterialsInterface(BoundaryID boundary_id, const THREAD_ID tid, bool swap_stateful=true)
processor_id_type processor_id() const
FEProblemBase & _fe_problem
The "SwapBackSentinel" class's destructor guarantees that FEProblemBase::swapBackMaterials{Face,Neighbor}() is called even when an exception is thrown from FEProblemBase::reinitMaterials{Face,Neighbor}.