Gets a single submatrix on the same number of processors as the original matrix.


#include "petscmat.h" 
PetscErrorCode  MatGetSubMatrixRaw(Mat mat,PetscInt nrows,const PetscInt rows[],PetscInt ncols,const PetscInt cols[],PetscInt csize,MatReuse cll,Mat *newmat)
Collective on Mat

Input Parameters

mat - the original matrix
nrows - the number of rows this processor should obtain
rows - rows this processor should obtain
ncols - the number of columns for all processors you wish to keep
cols - columns for all processors you wish to keep
csize - number of columns "local" to this processor (does nothing for sequential matrices). This should match the result from VecGetLocalSize(x,...) if you plan to use the matrix in a A*x; alternatively, you can use PETSC_DECIDE

Output Parameter

newmat -the new submatrix, of the same type as the old

Notes: the iscol argument MUST be the same on each processor. You might be able to create the iscol argument with ISAllGather().

The first time this is called you should use a cll of MAT_INITIAL_MATRIX, the MatGetSubMatrix() routine will create the newmat for you. Any additional calls to this routine with a mat of the same nonzero structure and with a cll of MAT_REUSE_MATRIX will reuse the matrix generated the first time.

See Also

MatGetSubMatrices(), ISAllGather()

Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages