Hi everyone,
I am trying to set-up a non-square MatrixFree operator for which the destination and source vectors do not have the same dimension (in order to use it in a Schur complement). The way I am doing this is by passing two dof_handlers to the MatrixFree object, and select row_block=0 and column_block=1 when initializing my MatrixFreeOperators::Base (derived) object. In the assembly method, I am using multiple FEEvaluation object associated with different selected blocks to evaluate the source vector and integrate into the destination vector.
However, I am getting an assertion when trying debug my program,
which makes me think I misunderstood the possibilities of the
MatrixFreeOperators::Base class. The exact assertion is "AssertDimension(dst.size(),
src.size());" and can be found line 1508 of
deal.II/matrix_free/operators.h (and also l. 1563 and l. 1617).
The message of this assertion is perfectly clear and tells me that
my operator should be a square one, but I fail to understand why.
Is there a fundamental limitation to this class that restricts it
to square operators? I guess this would make sense if the only
purpose of this class is to use it in a multigrid framework (which
I do not really need for my coupling matrix in any case).
Best regards,
Guilhem