Skip to content

Fix: Cope with omitted diagonal blocks in outer GS loop.

maxka requested to merge feature/blocksolver-missing-diagonal into master

The former implementation had two shortcomings:

  1. It assumed the diagonal block to exist. This is not necessarily the case, e.g., in the case of a BCRSMatrix where a non-retrievable block within the dimensions of the matrix is equivalent to it being zero. Nevertheless we should be able to cope with this case, in particular because semi-definite matrices should be covered by this approach due to the inherent regularization.
  2. Access to the diagonal element was performed via the random access operator which is relatively costly.

The new implementation tackles both problems. In case the diagonal block does not exist, a temporary block is constructed and passed to the local solver instead.

On a side note: A more generic approach to creating and initializing the temporary block might be needed for more complex nested matrix schemes.

Merge request reports