https://mooseframework.inl.gov
ComputeResidualAndJacobianThread.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "NonlinearThread.h"
13 
14 // Forward declarations
15 class FEProblemBase;
17 class IntegratedBCBase;
18 class DGKernelBase;
20 class TimeKernel;
21 class KernelBase;
22 class Kernel;
23 
25 {
26 public:
28  const std::set<TagID> & vector_tags,
29  const std::set<TagID> & matrix_tags);
30 
31  // Splitting Constructor
33 
35 
36  void join(const ComputeResidualAndJacobianThread & /*y*/);
37 
38 protected:
40  void compute(ResidualObject & ro) override;
41  void accumulateNeighbor() override;
42  void accumulateNeighborLower() override;
43  void accumulateLower() override;
44  void accumulate() override;
45  void determineObjectWarehouses() override;
47  virtual void computeOnInternalFace() override;
48 
49  std::string objectType() const override { return "combined Jacobian & Residual"; }
50 
52  const std::set<TagID> & _vector_tags;
53 
55  const std::set<TagID> & _matrix_tags;
56 };
void accumulateNeighborLower() override
Add neighbor and lower residual/Jacobian into assembly global data.
void determineObjectWarehouses() override
Determine the objects we will actually compute based on vector/matrix tag information.
virtual void compute(ResidualObject &ro)=0
Will dispatch to computeResidual/computeJacobian/computeResidualAndJacobian based on the derived clas...
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Serves as a base class for DGKernel and ADDGKernel.
Definition: DGKernelBase.h:32
void accumulate() override
Add element residual/Jacobian into assembly global data.
Nonlinear system to be solved.
This is the common base class for the three main kernel types implemented in MOOSE, Kernel, VectorKernel and ArrayKernel.
Definition: KernelBase.h:23
void accumulateNeighbor() override
Add neighbor residual/Jacobian into assembly global data.
void join(const ComputeResidualAndJacobianThread &)
void compute(ResidualObject &ro) override
Will dispatch to computeResidual/computeJacobian/computeResidualAndJacobian based on the derived clas...
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 void computeOnInternalFace()=0
tbb::split split
This is the common base class for objects that give residual contributions.
All time kernels should inherit from this class.
Definition: TimeKernel.h:18
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
Definition: Kernel.h:15
Base class for deriving any boundary condition of a integrated type.
InterfaceKernelBase is the base class for all InterfaceKernel type classes.
std::string objectType() const override
Return what the loops is meant to compute.