https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ComputeLinearFVGreenGaussGradientFaceThread.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 "MooseTypes.h"
13#include "MooseMesh.h"
15
16// libmesh
17#include "libmesh/elem_range.h"
18#include "libmesh/threads.h"
19#include "libmesh/system.h"
20
21#include <unordered_set>
22
23class FEProblemBase;
25class SystemBase;
26
39{
40public:
49 FEProblemBase & fe_problem,
50 SystemBase & system,
51 std::vector<std::unique_ptr<NumericVector<Number>>> & temporary_gradient,
52 const std::unordered_set<unsigned int> & gradient_variables,
53 const FVGreenGaussGradient & gradient_method);
54
61 Threads::split split);
62 using FaceInfoRange = StoredRange<MooseMesh::const_face_info_iterator, const FaceInfo *>;
63
66 void operator()(const FaceInfoRange & range);
67
71
72protected:
75
77 const unsigned int _dim;
78
81
84
86 const unsigned int _system_number;
87
90
93
96 std::vector<std::unique_ptr<NumericVector<Number>>> & _temporary_gradient;
97
99 const std::unordered_set<unsigned int> & _gradient_variables;
100
103};
unsigned int THREAD_ID
Definition MooseTypes.h:237
The gradient in a volume using Green Gauss theorem and a cell-centered finite-volume approximation ca...
const unsigned int _system_number
Global system number (the number of this system in the libmesh equation system)
const std::unordered_set< unsigned int > & _gradient_variables
Indices of the variables this producer should compute gradients for.
void join(const ComputeLinearFVGreenGaussGradientFaceThread &y)
Join threads at the end of the execution.
std::vector< std::unique_ptr< NumericVector< Number > > > & _temporary_gradient
Cache for the temporary gradient being built.
void operator()(const FaceInfoRange &range)
Operator which is used to execute the thread over a certain iterator range.
MooseLinearVariableFV< Real > * _current_var
Pointer to the current variable.
StoredRange< MooseMesh::const_face_info_iterator, const FaceInfo * > FaceInfoRange
const FVGreenGaussGradient & _gradient_method
Method providing the two Green-Gauss values on an internal face.
SystemBase & _system
The system wrapper this thread operates on.
const libMesh::System & _libmesh_system
Reference to the libMesh system backing the wrapper system.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Green-Gauss cell-centered gradient method for linear finite-volume variables.
This class provides variable solution interface for linear finite volume problems.
Base class for a system (of equations)
Definition SystemBase.h:87