Non-square block with MatrixFreeOperators

10 views
Skip to first unread message

Guilhem Poy

unread,
Mar 23, 2023, 11:35:00 AM3/23/23
to dea...@googlegroups.com

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

Reply all
Reply to author
Forward
0 new messages