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;
59 if (!needed_mat_props.empty())
82 const std::vector<std::shared_ptr<Marker>> & markers =
84 for (
const auto & marker : markers)
85 marker->computeMarker();
128 console <<
"[DBG] Beginning elemental loop to compute Markers on " << execute_on << std::endl;
140 console <<
"[DBG] Execution order on block: " <<
_subdomain << std::endl;
141 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.
void clearActiveMaterialProperties(const THREAD_ID tid)
Clear the active material properties.
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 &)
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)
void updateMatPropDependency(std::unordered_set< unsigned int > &needed_mat_props, THREAD_ID tid=0, const bool producer_only=false) const
Update material property dependency vector.
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}.