17#include "libmesh/elem_range.h"
18#include "libmesh/threads.h"
19#include "libmesh/system.h"
21#include <unordered_set>
53 std::vector<std::unique_ptr<NumericVector<Number>>> & gradient,
54 const std::unordered_set<unsigned int> & gradient_variables);
66 using ElemInfoRange = StoredRange<MooseMesh::const_elem_info_iterator, const ElemInfo *>;
98 std::vector<std::unique_ptr<NumericVector<Number>>> &
_gradient;
The gradient in a volume using Green Gauss theorem and a cell-centered finite-volume approximation ca...
const libMesh::System & _libmesh_system
Reference to the libmesh system.
FEProblemBase & _fe_problem
SystemBase & _system
The system wrapper this thread operates on.
const unsigned int _system_number
Global system number.
const std::unordered_set< unsigned int > & _gradient_variables
Indices of the variables this producer should compute gradients for.
std::vector< Real * > _gradient_data
Writable local arrays, one per gradient component.
void operator()(const ElemInfoRange &range)
Operator which is used to execute the thread over a certain iterator range.
std::vector< std::unique_ptr< NumericVector< Number > > > & _gradient
Normalized (by cell volume) gradients to write into.
StoredRange< MooseMesh::const_elem_info_iterator, const ElemInfo * > ElemInfoRange
MooseLinearVariableFV< Real > * _current_var
Pointer to the current variable.
void join(const ComputeLinearFVGreenGaussGradientVolumeThread &y)
Join threads at the end of the execution.
const unsigned int _dim
The dimension of the domain.
const bool _owns_gradient_data
True only for the original thread object that acquired and must restore the arrays.
~ComputeLinearFVGreenGaussGradientVolumeThread()
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
This class provides variable solution interface for linear finite volume problems.
Base class for a system (of equations)