20 std::vector<std::unique_ptr<NumericVector<Number>>> & temporary_gradient,
21 const std::unordered_set<unsigned int> & gradient_variables,
23 : _fe_problem(fe_problem),
24 _dim(_fe_problem.
mesh().dimension()),
26 _libmesh_system(system.system()),
27 _system_number(_libmesh_system.number()),
28 _temporary_gradient(temporary_gradient),
29 _gradient_variables(gradient_variables),
30 _gradient_method(gradient_method)
55 unsigned int size = 0;
69 std::vector<Real>(size, 0.0));
71 std::vector<Real>(size, 0.0));
72 std::vector<dof_id_type> dof_indices_elem(size, 0);
73 std::vector<dof_id_type> dof_indices_neighbor(size, 0);
79 auto face_iterator = range.begin();
80 for (
const auto & face_i : make_range(size))
82 const auto & face_info = *face_iterator;
84 const auto current_face_type =
91 dof_indices_elem[face_i] =
93 dof_indices_neighbor[face_i] =
96 const auto face_values =
98 *face_info->elemInfo(),
99 *face_info->neighborInfo(),
101 solution_reader(dof_indices_elem[face_i]),
102 solution_reader(dof_indices_neighbor[face_i]));
104 const auto surface_vector =
105 face_info->normal() * face_info->faceArea() * face_info->faceCoord();
106 const auto elem_contribution = surface_vector * face_values.first;
107 const auto neighbor_contribution = -surface_vector * face_values.second;
109 for (
const auto i : make_range(
_dim))
111 temporary_values_elem[i][face_i] = elem_contribution(i);
112 temporary_values_neighbor[i][face_i] = neighbor_contribution(i);
128 ? face_info->elemInfo()
129 : face_info->neighborInfo();
133 const auto multiplier =
137 : dof_indices_neighbor;
139 ? temporary_values_elem
140 : temporary_values_neighbor;
142 dof_id_container[face_i] =
147 const auto contribution = multiplier * face_info->normal() * face_info->faceArea() *
148 face_info->faceCoord() *
149 (bc_pointer ? bc_pointer->computeBoundaryValue()
150 : solution_reader(dof_id_container[face_i]));
151 for (
const auto i : make_range(
_dim))
152 contribution_container[i][face_i] = contribution(i);
157 for (
const auto i : make_range(
_dim))
161 dof_indices_neighbor);
virtual InternalFaceValues internalFaceValues(const FaceInfo &fi, const ElemInfo &elem_info, const ElemInfo &neighbor_info, const MooseLinearVariableFV< Real > &variable, Real elem_value, Real neighbor_value) const
Return the two Green-Gauss face values on an internal face.