At the moment, we have GlobalProjector.solver which returns a BlockDiagonalSolver. In some cases, it might be useful to have access to the actual inter-/histopolation matrix instead of the solver, for instance when a composition with other operators is needed. For instance, in Struphy, this is the case when using polar splines or applying boundary conditions, but I can imagine other use cases.
I propose to construct a KroneckerStencilMatrix or BlockLinearOperator (for vector-valued spaces) in GlobalProjector.__init__ and expose it via GlobalProjector.imat_kronecker. The diagonal operator blocks are of type KroneckerStencilMatrix, others are None.
At the moment, we have
GlobalProjector.solverwhich returns aBlockDiagonalSolver. In some cases, it might be useful to have access to the actual inter-/histopolation matrix instead of the solver, for instance when a composition with other operators is needed. For instance, in Struphy, this is the case when using polar splines or applying boundary conditions, but I can imagine other use cases.I propose to construct a
KroneckerStencilMatrixorBlockLinearOperator(for vector-valued spaces) inGlobalProjector.__init__and expose it viaGlobalProjector.imat_kronecker. The diagonal operator blocks are of typeKroneckerStencilMatrix, others areNone.