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