Classes and functions for creating custom instances of scipy.sparse.linalg.LinearOperator.

class pyiga.operators.BaseBlockOperator(shape, ops, ran_out, ran_in)

Return a LinearOperator with block diagonal structure, with the given operators on the diagonal.


Construct a block operator.

Parameters:ops (list) – a rectangular list of lists of operators or matrices. All operators in a given row should have the same height (output dimension). All operators in a given column should have the same width (input dimension). Empty blocks should use NullOperator as a placeholder.
Returns:LinearOperator – a block structured linear operator. Its height is the total height of one input column of operators, and its width is the total width of one input row.

See also numpy.block(), which has analogous functionality for dense matrices.

class pyiga.operators.DiagonalOperator(diag)

A LinearOperator which acts like a diagonal matrix with the given diagonal.

class pyiga.operators.IdentityOperator(n, dtype=<class 'numpy.float64'>)

Identity operator of size n.

class pyiga.operators.KroneckerOperator(*ops)

A LinearOperator which efficiently implements the application of the Kronecker product of the given input operators.

class pyiga.operators.NullOperator(shape, dtype=<class 'numpy.float64'>)

Null operator of the given shape which always returns zeros. Used as placeholder.

class pyiga.operators.PardisoSolverWrapper(shape, dtype, solver)

Wraps a PARDISO solver object and frees up the memory when deallocated.

class pyiga.operators.SubspaceOperator(subspaces, Bs)

Implements an abstract additive subspace correction operator.

  • subspaces (seq) – a list of k prolongation matrices \(P_j \in \mathbb R^{n \times n_j}\)
  • Bs (seq) – a list of k square matrices or instances of LinearOperator \(B_j \in \mathbb R^{n_j \times n_j}\)

LinearOperator – operator with shape \(n \times n\) that implements the action

\[Lx = \sum_{j=1}^k P_j B_j P_j^T x\]


Given several square matrices, return an operator which efficiently applies the inverse of their Kronecker product.

pyiga.operators.make_solver(B, symmetric=False, spd=False)

Return a LinearOperator that acts as a linear solver for the (dense or sparse) square matrix B.

If B is symmetric, passing symmetric=True may try to take advantage of this. If B is symmetric and positive definite, pass spd=True.