www.mooseframework.org
ComputeResidualThread.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 class ResidualObject;
15 
17 {
18 public:
19  ComputeResidualThread(FEProblemBase & fe_problem, const std::set<TagID> & tags);
20 
21  // Splitting Constructor
23 
24  virtual ~ComputeResidualThread();
25 
26  void join(const ComputeResidualThread & /*y*/);
27 
28 protected:
30  void compute(ResidualObject & ro) override;
31 
32  void accumulateNeighbor() override;
33  void accumulateNeighborLower() override;
34  void accumulateLower() override;
35  void accumulate() override;
36  void determineObjectWarehouses() override;
37 
38  std::string objectType() const override { return "Residual"; }
39 
41  const std::set<TagID> & _tags;
42 };
void accumulateNeighborLower() override
Add neighbor and lower residual/Jacobian into assembly global data.
virtual void compute(ResidualObject &ro)=0
Will dispatch to computeResidual/computeJacobian/computeResidualAndJacobian based on the derived clas...
std::string objectType() const override
Return what the loops is meant to compute.
void join(const ComputeResidualThread &)
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
void accumulateLower() override
Add lower-d residual/Jacobian into assembly global data.
void accumulateNeighbor() override
Add neighbor residual/Jacobian into assembly global data.
void compute(ResidualObject &ro) override
Will dispatch to computeResidual/computeJacobian/computeResidualAndJacobian based on the derived clas...
void determineObjectWarehouses() override
Determine the objects we will actually compute based on vector/matrix tag information.
void accumulate() override
Add element residual/Jacobian into assembly global data.
tbb::split split
This is the common base class for objects that give residual contributions.
ComputeResidualThread(FEProblemBase &fe_problem, const std::set< TagID > &tags)
const std::set< TagID > & _tags
the tags denoting the vectors we want our residual objects to fill