set_edge_matrices(const MGMatrixBase<VectorType> &edge_out,
const MGMatrixBase<VectorType> &edge_in);
+ /**
+ * Similar to the function above: however, only @p edge_in is set. This
+ * is useful if the matrix attached to this class ignores the edge
+ * constraints during vmult(), which is only used during the computation
+ * of the residual.
+ */
+ void
+ set_edge_in_matrix(const MGMatrixBase<VectorType> &edge_in);
+
/**
* Set additional matrices to correct residual computation at refinement
* edges. These matrices originate from discontinuous Galerkin methods (see
template <typename VectorType>
void
-Multigrid<VectorType>::set_edge_matrices(const MGMatrixBase<VectorType> &down,
- const MGMatrixBase<VectorType> &up)
+Multigrid<VectorType>::set_edge_matrices(
+ const MGMatrixBase<VectorType> &edge_out,
+ const MGMatrixBase<VectorType> &edge_in)
{
- edge_out = &down;
- edge_in = &up;
+ this->edge_out = &edge_out;
+ this->edge_in = &edge_in;
+}
+
+
+
+template <typename VectorType>
+void
+Multigrid<VectorType>::set_edge_in_matrix(
+ const MGMatrixBase<VectorType> &edge_in)
+{
+ this->edge_out = nullptr;
+ this->edge_in = &edge_in;
}
template <typename VectorType>
void
Multigrid<VectorType>::set_edge_flux_matrices(
- const MGMatrixBase<VectorType> &down,
- const MGMatrixBase<VectorType> &up)
+ const MGMatrixBase<VectorType> &edge_down,
+ const MGMatrixBase<VectorType> &edge_up)
{
- edge_down = &down;
- edge_up = &up;
+ this->edge_down = &edge_down;
+ this->edge_up = &edge_up;
}