The former implementation had two shortcomings:
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.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.