https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ComputeResidualThread.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
14class ResidualObject;
15
17{
18public:
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
28protected:
30 virtual void compute(ResidualObject & ro) override;
32 virtual void computeOnInternalFace() override;
33
34 void accumulateNeighbor() override;
35 void accumulateNeighborLower() override;
36 void accumulateLower() override;
37 void accumulate() override;
38 void determineObjectWarehouses() override;
39
40 std::string objectType() const override { return "Residual"; }
41
43 const std::set<TagID> & _tags;
44};
virtual void computeOnInternalFace() override
void join(const ComputeResidualThread &)
void accumulateNeighbor() override
Add neighbor residual/Jacobian into assembly global data.
void accumulate() override
Add element residual/Jacobian into assembly global data.
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.
std::string objectType() const override
Return what the loops is meant to compute.
void accumulateLower() override
Add lower-d residual/Jacobian into assembly global data.
virtual void compute(ResidualObject &ro) override
Will dispatch to computeResidual/computeJacobian/computeResidualAndJacobian based on the derived clas...
const std::set< TagID > & _tags
the tags denoting the vectors we want our residual objects to fill
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
virtual void compute(ResidualObject &ro)=0
Will dispatch to computeResidual/computeJacobian/computeResidualAndJacobian based on the derived clas...
virtual void computeOnInternalFace()=0
This is the common base class for objects that give residual contributions.