petsc-master 2015-11-25
Report Typos and Errors


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


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

Input Parameters

B - the matrix
i - the indices into j for the start of each local row (starts with zero)
j - the column indices for each local row (starts with zero)
v - optional values in the matrix


The i, j, and a 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 a[] 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.

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]


matrix, aij, compressed row, sparse, parallel

See Also

MatCreate(), MatCreateSeqAIJ(), MatSetValues(), MatMPIAIJSetPreallocation(), MatCreateAIJ(), MPIAIJ,
MatCreateSeqAIJWithArrays(), MatCreateMPIAIJWithSplitArrays()

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