* determinants (JxW), quadrature points, data for Hessians (derivative of
* Jacobians), and normal vectors.
*
- * @note In order to be able to perform a `boundary_operation` in the
+ * @note In order to be able to perform a `boundary_face_operation` in the
* MatrixFree::loop(), this field must be set to a value different from
* UpdateFlags::update_default.
*/
* determinants (JxW), quadrature points, data for Hessians (derivative of
* Jacobians), and normal vectors.
*
- * @note In order to be able to perform a `face_operation`
+ * @note In order to be able to perform a `inner_face_operation`
* in the MatrixFree::loop(), this field must be set to a value different
* from UpdateFlags::update_default.
*/
* correct set of arguments since such a pointer can be converted to the
* function object.
*
- * @param face_operation `std::function` with the signature <tt>face_operation
+ * @param inner_face_operation `std::function` with the signature <tt>inner_face_operation
* (const MatrixFree<dim,Number> &, OutVector &, InVector &,
* std::pair<unsigned int,unsigned int> &)</tt> in analogy to
* `cell_operation`, but now the part associated to the work on interior
* faces. Note that the MatrixFree framework treats periodic faces as interior
* ones, so they will be assigned their correct neighbor after applying
- * periodicity constraints within the face_operation calls.
+ * periodicity constraints within the inner_face_operation calls.
*
- * @param boundary_operation `std::function` with the signature
- * <tt>boundary_operation (const MatrixFree<dim,Number> &, OutVector &,
+ * @param boundary_face_operation `std::function` with the signature
+ * <tt>boundary_face_operation (const MatrixFree<dim,Number> &, OutVector &,
* InVector &, std::pair<unsigned int,unsigned int> &)</tt> in analogy to
- * `cell_operation` and `face_operation`, but now the part associated to the
- * work on boundary faces. Boundary faces are separated by their
- * `boundary_id` and it is possible to query that id using
+ * `cell_operation` and `inner_face_operation`, but now the part
+ * associated to the work on boundary faces. Boundary faces are separated by
+ * their `boundary_id` and it is possible to query that id using
* MatrixFree::get_boundary_id(). Note that both interior and faces use the
* same numbering, and faces in the interior are assigned lower numbers than
* the boundary faces.
* possible.
*
* @param dst_vector_face_access Set the type of access into the vector
- * `dst` that will happen inside the body of the @p face_operation
+ * `dst` that will happen inside the body of the @p inner_face_operation
* function. As explained in the description of the DataAccessOnFaces
* struct, the purpose of this selection is to reduce the amount of data
* that must be exchanged over the MPI network (or via `memcpy` if within
* the shared memory region of a node) to gain performance. Note that there
* is no way to communicate this setting with the FEFaceEvaluation class,
* therefore this selection must be made at this site in addition to what is
- * implemented inside the `face_operation` function. As a consequence, there
- * is also no way to check that the setting passed to this call is
- * consistent with what is later done by `FEFaceEvaluation`, and it is the
- * user's responsibility to ensure correctness of data.
+ * implemented inside the `inner_face_operation` function. As a
+ * consequence, there is also no way to check that the setting passed to this
+ * call is consistent with what is later done by `FEFaceEvaluation`, and it is
+ * the user's responsibility to ensure correctness of data.
*
* @param src_vector_face_access Set the type of access into the vector
- * `src` that will happen inside the body of the @p face_operation function,
+ * `src` that will happen inside the body of the @p inner_face_operation function,
* in analogy to `dst_vector_face_access`.
*/
template <typename OutVector, typename InVector>
void
- loop(const std::function<
- void(const MatrixFree<dim, Number, VectorizedArrayType> &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &)> &cell_operation,
- const std::function<
- void(const MatrixFree<dim, Number, VectorizedArrayType> &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &)> &face_operation,
- const std::function<void(
- const MatrixFree<dim, Number, VectorizedArrayType> &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &)> &boundary_operation,
- OutVector &dst,
- const InVector &src,
- const bool zero_dst_vector = false,
- const DataAccessOnFaces dst_vector_face_access =
- DataAccessOnFaces::unspecified,
- const DataAccessOnFaces src_vector_face_access =
- DataAccessOnFaces::unspecified) const;
+ loop(
+ const std::function<
+ void(const MatrixFree<dim, Number, VectorizedArrayType> &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &)> &cell_operation,
+ const std::function<void(
+ const MatrixFree<dim, Number, VectorizedArrayType> &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &)> &inner_face_operation,
+ const std::function<void(
+ const MatrixFree<dim, Number, VectorizedArrayType> &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &)> &boundary_face_operation,
+ OutVector &dst,
+ const InVector &src,
+ const bool zero_dst_vector = false,
+ const DataAccessOnFaces dst_vector_face_access =
+ DataAccessOnFaces::unspecified,
+ const DataAccessOnFaces src_vector_face_access =
+ DataAccessOnFaces::unspecified) const;
/**
* This is the second variant to run the loop over all cells, interior
* defines the range of cells which should be worked on (typically more than
* one cell should be worked on in order to reduce overheads). Note that the
* loop will typically split the `cell_range` into smaller pieces and work
- * on `cell_operation`, `face_operation`, and `boundary_operation`
- * alternately, in order to increase the potential reuse of vector entries
- * in caches.
+ * on `cell_operation`, `inner_face_operation`, and
+ * `boundary_face_operation` alternately, in order to increase the potential
+ * reuse of vector entries in caches.
*
- * @param face_operation Pointer to member function of `CLASS` with the
- * signature <tt>face_operation (const MatrixFree<dim,Number> &, OutVector &,
- * InVector &, std::pair<unsigned int,unsigned int> &)</tt> in analogy to
- * `cell_operation`, but now the part associated to the work on interior
- * faces. Note that the MatrixFree framework treats periodic faces as
+ * @param inner_face_operation Pointer to member function of `CLASS` with the
+ * signature <tt>inner_face_operation (const MatrixFree<dim,Number> &,
+ * OutVector &, InVector &, std::pair<unsigned int,unsigned int> &)</tt> in
+ * analogy to `cell_operation`, but now the part associated to the work on
+ * interior faces. Note that the MatrixFree framework treats periodic faces as
* interior ones, so they will be assigned their correct neighbor after
- * applying periodicity constraints within the face_operation calls.
+ * applying periodicity constraints within the inner_face_operation
+ * calls.
*
- * @param boundary_operation Pointer to member function of `CLASS` with the
- * signature <tt>boundary_operation (const MatrixFree<dim,Number> &, OutVector
+ * @param boundary_face_operation Pointer to member function of `CLASS` with the
+ * signature <tt>boundary_face_operation (const MatrixFree<dim,Number> &,
+ * OutVector
* &, InVector &, std::pair<unsigned int,unsigned int> &)</tt> in analogy to
- * `cell_operation` and `face_operation`, but now the part associated to the
- * work on boundary faces. Boundary faces are separated by their
- * `boundary_id` and it is possible to query that id using
+ * `cell_operation` and `inner_face_operation`, but now the part
+ * associated to the work on boundary faces. Boundary faces are separated by
+ * their `boundary_id` and it is possible to query that id using
* MatrixFree::get_boundary_id(). Note that both interior and faces use the
* same numbering, and faces in the interior are assigned lower numbers than
* the boundary faces.
*
* @param owning_class The object which provides the `cell_operation`
* call. To be compatible with this interface, the class must allow to call
- * `owning_class->cell_operation(...)`, `owning_class->face_operation(...)`,
- * and `owning_class->boundary_operation(...)`.
+ * `owning_class->cell_operation(...)`,
+ * `owning_class->inner_face_operation(...)`, and
+ * `owning_class->boundary_face_operation(...)`.
*
* @param dst Destination vector holding the result. If the vector is of
* type LinearAlgebra::distributed::Vector (or composite objects thereof
* possible.
*
* @param dst_vector_face_access Set the type of access into the vector
- * `dst` that will happen inside the body of the @p face_operation
+ * `dst` that will happen inside the body of the @p inner_face_operation
* function. As explained in the description of the DataAccessOnFaces
* struct, the purpose of this selection is to reduce the amount of data
* that must be exchanged over the MPI network (or via `memcpy` if within
* the shared memory region of a node) to gain performance. Note that there
* is no way to communicate this setting with the FEFaceEvaluation class,
* therefore this selection must be made at this site in addition to what is
- * implemented inside the `face_operation` function. As a consequence, there
- * is also no way to check that the setting passed to this call is
- * consistent with what is later done by `FEFaceEvaluation`, and it is the
- * user's responsibility to ensure correctness of data.
+ * implemented inside the `inner_face_operation` function. As a
+ * consequence, there is also no way to check that the setting passed to this
+ * call is consistent with what is later done by `FEFaceEvaluation`, and it is
+ * the user's responsibility to ensure correctness of data.
*
* @param src_vector_face_access Set the type of access into the vector
- * `src` that will happen inside the body of the @p face_operation function,
+ * `src` that will happen inside the body of the @p inner_face_operation function,
* in analogy to `dst_vector_face_access`.
*/
template <typename CLASS, typename OutVector, typename InVector>
void
- loop(
- void (CLASS::*cell_operation)(const MatrixFree &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &)
- const,
- void (CLASS::*face_operation)(const MatrixFree &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &)
- const,
- void (CLASS::*boundary_operation)(
- const MatrixFree &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &) const,
- const CLASS *owning_class,
- OutVector &dst,
- const InVector &src,
- const bool zero_dst_vector = false,
- const DataAccessOnFaces dst_vector_face_access =
- DataAccessOnFaces::unspecified,
- const DataAccessOnFaces src_vector_face_access =
- DataAccessOnFaces::unspecified) const;
+ loop(void (CLASS::*cell_operation)(
+ const MatrixFree &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &) const,
+ void (CLASS::*inner_face_operation)(
+ const MatrixFree &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &) const,
+ void (CLASS::*boundary_face_operation)(
+ const MatrixFree &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &) const,
+ const CLASS *owning_class,
+ OutVector &dst,
+ const InVector &src,
+ const bool zero_dst_vector = false,
+ const DataAccessOnFaces dst_vector_face_access =
+ DataAccessOnFaces::unspecified,
+ const DataAccessOnFaces src_vector_face_access =
+ DataAccessOnFaces::unspecified) const;
/**
* Same as above, but for class member functions which are non-const.
OutVector &,
const InVector &,
const std::pair<unsigned int, unsigned int> &),
- void (CLASS::*face_operation)(
+ void (CLASS::*inner_face_operation)(
const MatrixFree &,
OutVector &,
const InVector &,
const std::pair<unsigned int, unsigned int> &),
- void (CLASS::*boundary_operation)(
+ void (CLASS::*boundary_face_operation)(
const MatrixFree &,
OutVector &,
const InVector &,
* defines the range of cells which should be worked on (typically more than
* one cell should be worked on in order to reduce overheads).
*
- * @param face_operation Pointer to member function of `CLASS` with the
- * signature <tt>face_operation (const MatrixFree<dim,Number> &, OutVector &,
- * InVector &, std::pair<unsigned int,unsigned int> &)</tt> in analogy to
- * `cell_operation`, but now the part associated to the work on interior
- * faces. Note that the MatrixFree framework treats periodic faces as
+ * @param inner_face_operation Pointer to member function of `CLASS` with the
+ * signature <tt>inner_face_operation (const MatrixFree<dim,Number> &,
+ * OutVector &, InVector &, std::pair<unsigned int,unsigned int> &)</tt> in
+ * analogy to `cell_operation`, but now the part associated to the work on
+ * interior faces. Note that the MatrixFree framework treats periodic faces as
* interior ones, so they will be assigned their correct neighbor after
- * applying periodicity constraints within the face_operation calls.
+ * applying periodicity constraints within the inner_face_operation
+ * calls.
*
- * @param boundary_operation Pointer to member function of `CLASS` with the
- * signature <tt>boundary_operation (const MatrixFree<dim,Number> &, OutVector
+ * @param boundary_face_operation Pointer to member function of `CLASS` with the
+ * signature <tt>boundary_face_operation (const MatrixFree<dim,Number> &,
+ * OutVector
* &, InVector &, std::pair<unsigned int,unsigned int> &)</tt> in analogy to
- * `cell_operation` and `face_operation`, but now the part associated to the
- * work on boundary faces. Boundary faces are separated by their
- * `boundary_id` and it is possible to query that id using
+ * `cell_operation` and `inner_face_operation`, but now the part
+ * associated to the work on boundary faces. Boundary faces are separated by
+ * their `boundary_id` and it is possible to query that id using
* MatrixFree::get_boundary_id(). Note that both interior and faces use the
* same numbering, and faces in the interior are assigned lower numbers than
* the boundary faces.
* associated to. Defaults to the `dof_handler_index` 0.
*
* @param dst_vector_face_access Set the type of access into the vector
- * `dst` that will happen inside the body of the @p face_operation
+ * `dst` that will happen inside the body of the @p inner_face_operation
* function. As explained in the description of the DataAccessOnFaces
* struct, the purpose of this selection is to reduce the amount of data
* that must be exchanged over the MPI network (or via `memcpy` if within
* the shared memory region of a node) to gain performance. Note that there
* is no way to communicate this setting with the FEFaceEvaluation class,
* therefore this selection must be made at this site in addition to what is
- * implemented inside the `face_operation` function. As a consequence, there
- * is also no way to check that the setting passed to this call is
- * consistent with what is later done by `FEFaceEvaluation`, and it is the
- * user's responsibility to ensure correctness of data.
+ * implemented inside the `inner_face_operation` function. As a
+ * consequence, there is also no way to check that the setting passed to this
+ * call is consistent with what is later done by `FEFaceEvaluation`, and it is
+ * the user's responsibility to ensure correctness of data.
*
* @param src_vector_face_access Set the type of access into the vector
- * `src` that will happen inside the body of the @p face_operation function,
+ * `src` that will happen inside the body of the @p inner_face_operation function,
* in analogy to `dst_vector_face_access`.
*
* @note The close locality of the `operation_before_loop` and
*/
template <typename CLASS, typename OutVector, typename InVector>
void
- loop(
- void (CLASS::*cell_operation)(const MatrixFree &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &)
- const,
- void (CLASS::*face_operation)(const MatrixFree &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &)
- const,
- void (CLASS::*boundary_operation)(
- const MatrixFree &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &) const,
- const CLASS *owning_class,
- OutVector &dst,
- const InVector &src,
- const std::function<void(const unsigned int, const unsigned int)>
- &operation_before_loop,
- const std::function<void(const unsigned int, const unsigned int)>
- &operation_after_loop,
- const unsigned int dof_handler_index_pre_post = 0,
- const DataAccessOnFaces dst_vector_face_access =
- DataAccessOnFaces::unspecified,
- const DataAccessOnFaces src_vector_face_access =
- DataAccessOnFaces::unspecified) const;
-
- /**
- * Same as above, but for class member functions which are non-const.
- */
- template <typename CLASS, typename OutVector, typename InVector>
- void
loop(void (CLASS::*cell_operation)(
const MatrixFree &,
OutVector &,
const InVector &,
- const std::pair<unsigned int, unsigned int> &),
- void (CLASS::*face_operation)(
+ const std::pair<unsigned int, unsigned int> &) const,
+ void (CLASS::*inner_face_operation)(
const MatrixFree &,
OutVector &,
const InVector &,
- const std::pair<unsigned int, unsigned int> &),
- void (CLASS::*boundary_operation)(
+ const std::pair<unsigned int, unsigned int> &) const,
+ void (CLASS::*boundary_face_operation)(
const MatrixFree &,
OutVector &,
const InVector &,
- const std::pair<unsigned int, unsigned int> &),
+ const std::pair<unsigned int, unsigned int> &) const,
const CLASS *owning_class,
OutVector &dst,
const InVector &src,
DataAccessOnFaces::unspecified) const;
/**
- * Same as above, but taking an `std::function` as the `cell_operation`,
- * `face_operation` and `boundary_operation` rather than a class member
- * function.
+ * Same as above, but for class member functions which are non-const.
*/
- template <typename OutVector, typename InVector>
+ template <typename CLASS, typename OutVector, typename InVector>
void
- loop(const std::function<
- void(const MatrixFree<dim, Number, VectorizedArrayType> &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &)> &cell_operation,
- const std::function<
- void(const MatrixFree<dim, Number, VectorizedArrayType> &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &)> &face_operation,
- const std::function<void(
- const MatrixFree<dim, Number, VectorizedArrayType> &,
+ loop(void (CLASS::*cell_operation)(
+ const MatrixFree &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &),
+ void (CLASS::*inner_face_operation)(
+ const MatrixFree &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &),
+ void (CLASS::*boundary_face_operation)(
+ const MatrixFree &,
OutVector &,
const InVector &,
- const std::pair<unsigned int, unsigned int> &)> &boundary_operation,
- OutVector &dst,
- const InVector &src,
+ const std::pair<unsigned int, unsigned int> &),
+ const CLASS *owning_class,
+ OutVector &dst,
+ const InVector &src,
const std::function<void(const unsigned int, const unsigned int)>
&operation_before_loop,
const std::function<void(const unsigned int, const unsigned int)>
const DataAccessOnFaces src_vector_face_access =
DataAccessOnFaces::unspecified) const;
+ /**
+ * Same as above, but taking an `std::function` as the `cell_operation`,
+ * `inner_face_operation` and `boundary_face_operation` rather than a
+ * class member function.
+ */
+ template <typename OutVector, typename InVector>
+ void
+ loop(
+ const std::function<
+ void(const MatrixFree<dim, Number, VectorizedArrayType> &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &)> &cell_operation,
+ const std::function<void(
+ const MatrixFree<dim, Number, VectorizedArrayType> &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &)> &inner_face_operation,
+ const std::function<void(
+ const MatrixFree<dim, Number, VectorizedArrayType> &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &)> &boundary_face_operation,
+ OutVector &dst,
+ const InVector &src,
+ const std::function<void(const unsigned int, const unsigned int)>
+ &operation_before_loop,
+ const std::function<void(const unsigned int, const unsigned int)>
+ &operation_after_loop,
+ const unsigned int dof_handler_index_pre_post = 0,
+ const DataAccessOnFaces dst_vector_face_access =
+ DataAccessOnFaces::unspecified,
+ const DataAccessOnFaces src_vector_face_access =
+ DataAccessOnFaces::unspecified) const;
+
/**
* This method runs the loop over all cells (in parallel) similarly as
* cell_loop() does. However, this function is intended to be used
* the shared memory region of a node) to gain performance. Note that there
* is no way to communicate this setting with the FEFaceEvaluation class,
* therefore this selection must be made at this site in addition to what is
- * implemented inside the `face_operation` function. As a consequence, there
- * is also no way to check that the setting passed to this call is
- * consistent with what is later done by `FEFaceEvaluation`, and it is the
- * user's responsibility to ensure correctness of data.
+ * implemented inside the `inner_face_operation` function. As a
+ * consequence, there is also no way to check that the setting passed to this
+ * call is consistent with what is later done by `FEFaceEvaluation`, and it is
+ * the user's responsibility to ensure correctness of data.
*/
template <typename CLASS, typename OutVector, typename InVector>
void
OutVector &,
const InVector &,
const std::pair<unsigned int, unsigned int> &)>
- &face_operation,
+ &inner_face_operation,
const std::function<void(const MatrixFree<dim, Number, VectorizedArrayType> &,
OutVector &,
const InVector &,
const std::pair<unsigned int, unsigned int> &)>
- &boundary_operation,
+ &boundary_face_operation,
OutVector &dst,
const InVector &src,
const bool zero_dst_vector,
internal::MFClassWrapper<MatrixFree<dim, Number, VectorizedArrayType>,
InVector,
OutVector>;
- Wrapper wrap(cell_operation, face_operation, boundary_operation);
+ Wrapper wrap(cell_operation, inner_face_operation, boundary_face_operation);
internal::MFWorker<MatrixFree<dim, Number, VectorizedArrayType>,
InVector,
OutVector,
OutVector &,
const InVector &,
const std::pair<unsigned int, unsigned int> &) const,
- void (CLASS::*face_operation)(
+ void (CLASS::*inner_face_operation)(
const MatrixFree<dim, Number, VectorizedArrayType> &,
OutVector &,
const InVector &,
const std::pair<unsigned int, unsigned int> &) const,
- void (CLASS::*boundary_operation)(
+ void (CLASS::*boundary_face_operation)(
const MatrixFree<dim, Number, VectorizedArrayType> &,
OutVector &,
const InVector &,
zero_dst_vector,
*owning_class,
cell_operation,
- face_operation,
- boundary_operation,
+ inner_face_operation,
+ boundary_face_operation,
src_vector_face_access,
dst_vector_face_access);
task_info.loop(worker);
OutVector &,
const InVector &,
const std::pair<unsigned int, unsigned int> &),
- void (CLASS::*face_operation)(
+ void (CLASS::*inner_face_operation)(
const MatrixFree<dim, Number, VectorizedArrayType> &,
OutVector &,
const InVector &,
const std::pair<unsigned int, unsigned int> &),
- void (CLASS::*boundary_operation)(
+ void (CLASS::*boundary_face_operation)(
const MatrixFree<dim, Number, VectorizedArrayType> &,
OutVector &,
const InVector &,
zero_dst_vector,
*owning_class,
cell_operation,
- face_operation,
- boundary_operation,
+ inner_face_operation,
+ boundary_face_operation,
src_vector_face_access,
dst_vector_face_access);
task_info.loop(worker);
OutVector &,
const InVector &,
const std::pair<unsigned int, unsigned int> &)>
- &face_operation,
+ &inner_face_operation,
const std::function<void(const MatrixFree<dim, Number, VectorizedArrayType> &,
OutVector &,
const InVector &,
const std::pair<unsigned int, unsigned int> &)>
- &boundary_operation,
+ &boundary_face_operation,
OutVector &dst,
const InVector &src,
const std::function<void(const unsigned int, const unsigned int)>
internal::MFClassWrapper<MatrixFree<dim, Number, VectorizedArrayType>,
InVector,
OutVector>;
- Wrapper wrap(cell_operation, face_operation, boundary_operation);
+ Wrapper wrap(cell_operation, inner_face_operation, boundary_face_operation);
internal::MFWorker<MatrixFree<dim, Number, VectorizedArrayType>,
InVector,
OutVector,
const InVector &,
const std::pair<unsigned int, unsigned int> &)
const,
- void (CLASS::*face_operation)(const MatrixFree &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &)
- const,
- void (CLASS::*boundary_operation)(
+ void (CLASS::*inner_face_operation)(
+ const MatrixFree &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &) const,
+ void (CLASS::*boundary_face_operation)(
const MatrixFree &,
OutVector &,
const InVector &,
false,
*owning_class,
cell_operation,
- face_operation,
- boundary_operation,
+ inner_face_operation,
+ boundary_face_operation,
src_vector_face_access,
dst_vector_face_access,
operation_before_loop,
OutVector &,
const InVector &,
const std::pair<unsigned int, unsigned int> &),
- void (CLASS::*face_operation)(const MatrixFree &,
- OutVector &,
- const InVector &,
- const std::pair<unsigned int, unsigned int> &),
- void (CLASS::*boundary_operation)(
+ void (CLASS::*inner_face_operation)(
+ const MatrixFree &,
+ OutVector &,
+ const InVector &,
+ const std::pair<unsigned int, unsigned int> &),
+ void (CLASS::*boundary_face_operation)(
const MatrixFree &,
OutVector &,
const InVector &,
false,
*owning_class,
cell_operation,
- face_operation,
- boundary_operation,
+ inner_face_operation,
+ boundary_face_operation,
src_vector_face_access,
dst_vector_face_access,
operation_before_loop,