24 #include "libmesh/threads.h" 28 const std::set<TagID> & vector_tags,
29 const std::set<TagID> & matrix_tags)
30 :
NonlinearThread(fe_problem), _vector_tags(vector_tags), _matrix_tags(matrix_tags)
80 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
98 std::set<TagID> filtered_residual_tags;
102 mooseError(
"Can only currently compute the residual and Jacobian together if we are computing " 103 "the full suite of residual tags");
106 mooseError(
"Can only currently compute the residual and Jacobian together if we are computing " 107 "the full suite of Jacobian tags");
120 .template condition<AttribSysNum>(
_nl.
number())
121 .
template condition<AttribSystem>(
"FVElementalKernel")
122 .template condition<AttribSubdomains>(
_subdomain)
123 .
template condition<AttribThread>(
_tid)
132 "We should not be called if we have no active HDG kernels");
135 hdg_kernel->computeResidualAndJacobianOnSide();
void accumulateNeighborLower() override
Add neighbor and lower residual/Jacobian into assembly global data.
virtual void computeResidualAndJacobian()
Compute this object's contribution to the residual and Jacobian simultaneously.
void determineObjectWarehouses() override
Determine the objects we will actually compute based on vector/matrix tag information.
virtual void computeOnInternalFace() override
virtual void addResidualLower(const THREAD_ID tid) override
virtual void addJacobianLowerD(const THREAD_ID tid) override
bool hasActiveBlockObjects(THREAD_ID tid=0) const
const std::map< SubdomainID, std::vector< std::shared_ptr< T > > > & getActiveBlockObjects(THREAD_ID tid=0) const
MooseObjectWarehouse< InterfaceKernelBase > * _ik_warehouse
virtual bool haveFV() const override
returns true if this problem includes/needs finite volume functionality.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
MooseObjectTagWarehouse< IntegratedBCBase > & _integrated_bcs
Reference to BC storage structures.
FEProblemBase & _fe_problem
std::vector< T * > & queryInto(std::vector< T *> &results, Args &&... args)
queryInto executes the query and stores the results in the given vector.
MooseObjectTagWarehouse< HDGKernel > & _hdg_kernels
static void selectVectorTagsFromSystem(const SystemBase &system, const std::vector< VectorTag > &input_vector_tags, std::set< TagID > &selected_tags)
Select the vector tags which belong to a specific system.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
void accumulate() override
Add element residual/Jacobian into assembly global data.
virtual ~ComputeResidualAndJacobianThread()
MooseObjectWarehouse< HDGKernel > * _hdg_warehouse
void accumulateNeighbor() override
Add neighbor residual/Jacobian into assembly global data.
TheWarehouse & theWarehouse() const
MooseObjectTagWarehouse< KernelBase > & _kernels
virtual void addJacobianNeighbor(const THREAD_ID tid) override
std::vector< VectorTag > getVectorTags(const std::set< TagID > &tag_ids) const
virtual void cacheResidual(const THREAD_ID tid) override
void join(const ComputeResidualAndJacobianThread &)
virtual void addResidualNeighbor(const THREAD_ID tid) override
void compute(ResidualObject &ro) override
Will dispatch to computeResidual/computeJacobian/computeResidualAndJacobian based on the derived clas...
unsigned int number() const
Gets the number of this system.
NonlinearSystemBase & _nl
void accumulateLower() override
Add lower-d residual/Jacobian into assembly global data.
const std::set< TagID > & _vector_tags
the tags denoting the vectors we want our residual objects to fill
virtual unsigned int numMatrixTags() const
The total number of tags.
MooseObjectWarehouse< IntegratedBCBase > * _ibc_warehouse
This is the common base class for objects that give residual contributions.
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
MooseObjectTagWarehouse< InterfaceKernelBase > & _interface_kernels
Reference to interface kernel storage structure.
ComputeResidualAndJacobianThread(FEProblemBase &fe_problem, const std::set< TagID > &vector_tags, const std::set< TagID > &matrix_tags)
const std::set< TagID > & _matrix_tags
the tags denoting the matrices we want our residual objects to fill
SubdomainID _subdomain
The subdomain for the current element.
MooseObjectWarehouse< KernelBase > * _tag_kernels
MooseObjectWarehouse< DGKernelBase > * _dg_warehouse
std::vector< FVElementalKernel * > _fv_kernels
Current subdomain FVElementalKernels.
virtual void cacheJacobian(const THREAD_ID tid) override
virtual void addJacobianNeighborLowerD(const THREAD_ID tid) override
MooseObjectTagWarehouse< DGKernelBase > & _dg_kernels
Reference to DGKernel storage structure.
virtual void addCachedResidual(const THREAD_ID tid) override
virtual void addCachedJacobian(const THREAD_ID tid) override