For matrices that own values by row, excludes MATELEMENTAL and MATSCALAPACK, returns the range of matrix rows owned by each process.


#include "petscmat.h" 
PetscErrorCode MatGetOwnershipRanges(Mat mat, const PetscInt *ranges[])

Not Collective, unless matrix has not been allocated

Input Parameter#

  • mat - the matrix

Output Parameter#

  • ranges - start of each processors portion plus one more than the total length at the end, of length size + 1 where size is the number of MPI processes used by mat


If the Mat was obtained from a DM with DMCreateMatrix(), then the range values are determined by the specific DM.

If the Mat was created directly the range values are determined by the local size passed to MatSetSizes() or MatCreateAIJ(). If PETSC_DECIDE was passed as the local size, then the vector uses default values for the range using PetscSplitOwnership().

For certain DM, such as DMDA, it is better to use DM specific routines, such as DMDAGetGhostCorners(), to determine the local values in the matrix.

For all matrices it returns the ranges of matrix rows associated with rows of a vector that would contain the result of a matrix vector product with this matrix. See Matrix Layouts for details on matrix layouts.

See Also#

Matrices, Mat, MatGetOwnershipRange(), MatGetOwnershipRangeColumn(), MatGetOwnershipRangesColumn(), PetscLayout, PetscSplitOwnership(), PetscSplitOwnershipBlock(), MatSetSizes(), MatCreateAIJ(), DMDAGetGhostCorners(), DM





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