PEXSI
Parallel selected inversion for a complex matrix

The computation of selected elements of an inverse matrix is a standalone functionality of PEXSI. For C/C++ programmers, the parallel selected inversion routine can be used as follows.

...
{
/* Setup the input matrix in distributed compressed sparse column (CSC) format */
...;
/* Main routine for computing selected elements and save into AinvnzvalLocal */
nrows,
nnz,
nnzLocal,
numColLocal,
colptrLocal,
rowindLocal,
AnzvalLocal,
ordering,
npSymbFact,
MPI_COMM_WORLD,
nprow,
npcol,
AinvnzvalLocal,
&info );
...;
/* Post processing AinvnzvalLocal */
...;
}

This routine computes the selected elements of the matrix $$A^{-1}=(H - z S)^{-1}$$ in parallel. The input matrix $$H$$ follows the Distributed compressed sparse column (CSC) format , defined through the variables colptrLocal, rowindLocal, HnzvalLocal. The input matrix $$S$$ can be omitted if it is an identity matrix and by setting isSIdentity=1. If $$S$$ is not an identity matrix, the nonzero sparsity pattern is assumed to be the same as the nonzero sparsity pattern of $$H$$. Both HnzvalLocal and SnzvalLocal are double precision arrays. The output array AinvnzvalLocal is a double array which is twice the size of HnzvalLocal due to the usage of complex format.

An example is given in driver_pselinv_complex.c. See also PSelInvComplexSymmetricInterface for detailed information of its usage.

Note
Currently there is no driver routine for real arithmetic selected inversion. For the explanation of this please see the page Frequently asked questions.