19 #include "libmesh/threads.h" 23 _fe_problem(fe_problem),
24 _aux_sys(fe_problem.getAuxiliarySystem()),
25 _marker_whs(_fe_problem.getMarkerWarehouse())
32 _fe_problem(x._fe_problem),
34 _marker_whs(x._marker_whs)
46 std::set<MooseVariableFEBase *> needed_moose_vars;
52 std::unordered_set<unsigned int> needed_mat_props;
76 const std::vector<std::shared_ptr<Marker>> & markers =
78 for (
const auto & marker : markers)
79 marker->computeMarker();
83 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
125 console <<
"[DBG] Beginning elemental loop to compute Markers on " << execute_on << std::endl;
137 console <<
"[DBG] Execution order on block: " <<
_subdomain << std::endl;
138 printExecutionOrdering<Marker>(markers,
false);
virtual void onBoundary(const Elem *elem, unsigned int side, BoundaryID bnd_id, const Elem *lower_d_elem=nullptr) override
Called when doing boundary assembling.
void updateVariableDependency(std::set< MooseVariableFieldBase *> &needed_moose_vars, THREAD_ID tid=0) const
Update variable dependency vector.
FEProblemBase & _fe_problem
Base class for assembly-like calculations.
bool hasActiveBlockObjects(THREAD_ID tid=0) const
const std::map< SubdomainID, std::vector< std::shared_ptr< T > > > & getActiveBlockObjects(THREAD_ID tid=0) const
virtual void prepare(const Elem *elem, const THREAD_ID tid) override
NumericVector< Number > & solution()
const ExecFlagType & getCurrentExecuteOnFlag() const
Return/set the current execution flag.
virtual void onElement(const Elem *elem) override
Assembly of the element (not including surface assembly)
const MooseObjectWarehouse< Marker > & _marker_whs
Reference to the Marker warhouse in FEProblemBase.
void printGeneralExecutionInformation() const override
Print information about the loop.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
virtual void postElement(const Elem *) override
Called after the element assembly is done (including surface assembling)
virtual void onInternalSide(const Elem *elem, unsigned int side) override
Called when doing internal edge assembling.
virtual void setActiveElementalMooseVariables(const std::set< MooseVariableFEBase *> &moose_vars, const THREAD_ID tid) override
Set the MOOSE variables to be reinited on each element.
virtual void subdomainChanged() override
Called every time the current subdomain changes (i.e.
bool shouldPrintExecution(const THREAD_ID tid) const
Check whether the problem should output execution orders at this time.
virtual void post() override
Called after the element range loop.
virtual void reinitElem(const Elem *elem, const THREAD_ID tid) override
AuxiliarySystem & _aux_sys
boundary_id_type BoundaryID
void printBlockExecutionInformation() const override
Print information about ordering of objects on each block.
ComputeMarkerThread(FEProblemBase &fe_problem)
void join(const ComputeMarkerThread &)
void updateMatPropDependency(std::unordered_set< unsigned int > &needed_mat_props, THREAD_ID tid=0) const
Update material property dependency vector.
virtual ~ComputeMarkerThread()
std::set< SubdomainID > _blocks_exec_printed
Keep track of which blocks were visited.
std::vector< std::vector< MooseVariableFieldBase * > > _elem_vars
Elemental variables.
const ConsoleStream & console() const
Return console handle.
virtual void swapBackMaterials(const THREAD_ID tid)
virtual void subdomainSetup(SubdomainID subdomain, const THREAD_ID tid)
void reinitMaterials(SubdomainID blk_id, const THREAD_ID tid, bool swap_stateful=true)
SubdomainID _subdomain
The subdomain for the current element.
void prepareMaterials(const std::unordered_set< unsigned int > &consumer_needed_mat_props, const SubdomainID blk_id, const THREAD_ID tid)
Add the MooseVariables and the material properties that the current materials depend on to the depend...
bool hasActiveMaterialProperties(const THREAD_ID tid) const
Method to check whether or not a list of active material roperties has been set.
virtual void subdomainSetup(THREAD_ID tid=0) const
virtual void clearActiveElementalMooseVariables(const THREAD_ID tid) override
Clear the active elemental MooseVariableFEBase.
The "SwapBackSentinel" class's destructor guarantees that FEProblemBase::swapBackMaterials{Face,Neighbor}() is called even when an exception is thrown from FEProblemBase::reinitMaterials{Face,Neighbor}.