18 #include "libmesh/threads.h" 19 #include "libmesh/dof_map.h" 22 std::vector<JacobianBlock *> & blocks,
23 const std::set<TagID> & tags)
42 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
44 for (
const auto & block :
_blocks)
46 const auto & dof_map = block->_precond_system.get_dof_map();
63 const Elem * neighbor = elem->neighbor_ptr(side);
65 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
67 const auto elem_id = elem->id(), neighbor_id = neighbor->id();
69 if ((neighbor->active() && (neighbor->level() == elem->level()) && (elem_id < neighbor_id)) ||
70 (neighbor->level() < elem->level()))
71 for (
const auto & block :
_blocks)
73 const auto & dof_map = block->_precond_system.get_dof_map();
virtual void postElement(const Elem *elem) override
Called after the element assembly is done (including surface assembling)
virtual void addJacobianBlockTags(SparseMatrix< Number > &jacobian, unsigned int ivar, unsigned int jvar, const DofMap &dof_map, std::vector< dof_id_type > &dof_indices, const std::set< TagID > &tags, const THREAD_ID tid)
bool hasActiveBlockObjects(THREAD_ID tid=0) const
ComputeJacobianBlocksThread(FEProblemBase &fe_problem, std::vector< JacobianBlock *> &blocks, const std::set< TagID > &tags)
FEProblemBase & _fe_problem
virtual void postInternalSide(const Elem *elem, unsigned int side) override
Called after evaluations on an element internal side.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Specialization for filling multiple "small" preconditioning matrices simulatenously.
const std::set< TagID > & _tags
virtual ~ComputeJacobianBlocksThread()
virtual void addJacobianNeighbor(const THREAD_ID tid) override
std::vector< dof_id_type > _dof_indices
std::vector< JacobianBlock * > _blocks
SubdomainID _subdomain
The subdomain for the current element.
MooseObjectWarehouse< DGKernelBase > * _dg_warehouse
std::vector< dof_id_type > _dof_neighbor_indices