petsc-3.12.4 2020-02-04
Report Typos and Errors

# MatGetRowIJ

Returns the compressed row storage i and j indices for sequential matrices.

### Synopsis

    #include "petscmat.h"
    PetscErrorCode MatGetRowIJ(Mat mat,PetscInt shift,PetscBool symmetric,PetscBool inodecompressed,PetscInt *n,const PetscInt *ia[],const PetscInt *ja[],PetscBool  *done)

Collective on Mat

### Input Parameters

| mat | - the matrix
| shift | - 0 or 1 indicating we want the indices starting at 0 or 1
| symmetric | - PETSC_TRUE or PETSC_FALSE indicating the matrix data structure should be symmetrized
| inodecompressed | - PETSC_TRUE or PETSC_FALSE indicating if the nonzero structure of the inodes or the nonzero elements is wanted. For BAIJ matrices the compressed version is always used.

### Output Parameters

| n | - number of rows in the (possibly compressed) matrix
| ia | - the row pointers; that is ia[0] = 0, ia[row] = ia[row-1] + number of elements in that row of the matrix
| ja | - the column indices
| done | - indicates if the routine actually worked and returned appropriate ia[] and ja[] arrays; callers are responsible for handling the case when done == PETSC_FALSE and ia and ja are not set

### Notes

You CANNOT change any of the ia[] or ja[] values.

Use MatRestoreRowIJ() when you are finished accessing the ia[] and ja[] values.

### Fortran Notes

In Fortran use

         PetscInt ia(1), ja(1)

         PetscOffset iia, jja

         call MatGetRowIJ(mat,shift,symmetric,inodecompressed,n,ia,iia,ja,jja,done,ierr)

         ! Access the ith and jth entries via ia(iia + i) and ja(jja + j)

or

       PetscInt, pointer :: ia(:),ja(:)

       call MatGetRowIJF90(mat,shift,symmetric,inodecompressed,n,ia,ja,done,ierr)

       ! Access the ith and jth entries via ia(i) and ja(j)

### See Also

MatGetColumnIJ(), MatRestoreRowIJ(), MatSeqAIJGetArray()

### Level

developer

### Location

src/mat/interface/matrix.c

### Implementations

MatGetRowIJ_MPIAdj in src/mat/impls/adj/mpi/mpiadj.c
MatGetRowIJ_SeqAIJ in src/mat/impls/aij/seq/aij.c
MatGetRowIJ_SeqAIJ_Inode_Symmetric in src/mat/impls/aij/seq/inode.c
MatGetRowIJ_SeqAIJ_Inode_Nonsymmetric in src/mat/impls/aij/seq/inode.c
MatGetRowIJ_SeqAIJ_Inode in src/mat/impls/aij/seq/inode.c
MatGetRowIJ_SeqBAIJ in src/mat/impls/baij/seq/baij.c
MatGetRowIJ_SeqSBAIJ in src/mat/impls/sbaij/seq/sbaij.c
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages