Allocates memory for a sparse parallel matrix in MATAIJ format (the default parallel PETSc format).


#include "petscmat.h" 
PetscErrorCode MatMPIAIJSetPreallocationCSR(Mat B, const PetscInt i[], const PetscInt j[], const PetscScalar v[])


Input Parameters#

  • B - the matrix

  • i - the indices into j for the start of each local row (indices start with zero)

  • j - the column indices for each local row (indices start with zero)

  • v - optional values in the matrix


The i, j, and v arrays ARE copied by this routine into the internal format used by PETSc; thus you CANNOT change the matrix entries by changing the values of v after you have called this routine. Use MatCreateMPIAIJWithSplitArrays() to avoid needing to copy the arrays.

The i and j indices are 0 based, and i indices are indices corresponding to the local j array.

A convenience routine for this functionality is MatCreateMPIAIJWithArrays().

You can update the matrix with new numerical values using MatUpdateMPIAIJWithArrays() after this call if the column indices in j are sorted.

If you do not use MatUpdateMPIAIJWithArrays(), the column indices in j do not need to be sorted. If you will use MatUpdateMPIAIJWithArrays(), the column indices must be sorted.

The format which is used for the sparse matrix input, is equivalent to a row-major ordering.. i.e for the following matrix, the input data expected is as shown

        1 0 0
        2 0 3     P0
        4 5 6     P1

     Process0 [P0] rows_owned=[0,1]
        i =  {0,1,3}  [size = nrow+1  = 2+1]
        j =  {0,0,2}  [size = 3]
        v =  {1,2,3}  [size = 3]

     Process1 [P1] rows_owned=[2]
        i =  {0,3}    [size = nrow+1  = 1+1]
        j =  {0,1,2}  [size = 3]
        v =  {4,5,6}  [size = 3]

See Also#

Matrices, Mat, MATMPIAIJ, MatCreate(), MatCreateSeqAIJ(), MatSetValues(), MatMPIAIJSetPreallocation(), MatCreateAIJ(), MatCreateSeqAIJWithArrays(), MatCreateMPIAIJWithSplitArrays(), MatCreateMPIAIJWithArrays(), MatSetPreallocationCOO(), MatSetValuesCOO()






MatMPIAIJSetPreallocationCSR_MPIAIJ() in src/mat/impls/aij/mpi/mpiaij.c

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