48 unsigned int size = 0;
62 std::vector<Real>(size, 0.0));
64 std::vector<Real>(size, 0.0));
65 std::vector<dof_id_type> dof_indices_elem(size, 0);
66 std::vector<dof_id_type> dof_indices_neighbor(size, 0);
72 auto face_iterator = range.begin();
73 for (
const auto & face_i : make_range(size))
75 const auto & face_info = *face_iterator;
77 const auto current_face_type =
84 dof_indices_elem[face_i] =
86 dof_indices_neighbor[face_i] =
89 const auto face_value =
91 solution_reader(dof_indices_neighbor[face_i]),
95 const auto contribution =
96 face_info->normal() * face_info->faceArea() * face_info->faceCoord() * face_value;
98 for (
const auto i : make_range(
_dim))
100 temporary_values_elem[i][face_i] = contribution(i);
101 temporary_values_neighbor[i][face_i] = -contribution(i);
117 ? face_info->elemInfo()
118 : face_info->neighborInfo();
122 const auto multiplier =
126 : dof_indices_neighbor;
128 ? temporary_values_elem
129 : temporary_values_neighbor;
131 dof_id_container[face_i] =
136 const auto contribution = multiplier * face_info->normal() * face_info->faceArea() *
137 face_info->faceCoord() *
138 (bc_pointer ? bc_pointer->computeBoundaryValue()
139 : solution_reader(dof_id_container[face_i]));
140 for (
const auto i : make_range(
_dim))
141 contribution_container[i][face_i] = contribution(i);
146 for (
const auto i : make_range(
_dim))
150 dof_indices_neighbor);
libMesh::CompareTypes< T, T2 >::supertype linearInterpolation(const T &value1, const T2 &value2, const FaceInfo &fi, const bool one_is_elem, const InterpMethod interp_method=InterpMethod::Average)
A simple linear interpolation of values between cell centers to a cell face.