petsc-main 2021-04-20
Report Typos and Errors


Allocates memory for a sparse sequential matrix in AIJ format.


#include "petscmat.h" 
PetscErrorCode MatSeqAIJSetPreallocationCSR(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 row (starts with zero)
j - the column indices for each row (starts with zero) these must be sorted for each row
v - optional values in the matrix


The i,j,v values are COPIED with this routine; to avoid the copy use MatCreateSeqAIJWithArrays()

This routine may be called multiple times with different nonzero patterns (or the same nonzero pattern). The nonzero structure will be the union of all the previous nonzero structures.

Developer Notes

An optimization could be added to the implementation where it checks if the i, and j are identical to the current i and j and then just copies the v values directly with PetscMemcpy().

This routine could also take a PetscCopyMode argument to allow sharing the values instead of always copying them.

See Also

MatCreate(), MatCreateSeqAIJ(), MatSetValues(), MatSeqAIJSetPreallocation(), MatCreateSeqAIJ(), MATSEQAIJ, MatResetPreallocation()






MatSeqAIJSetPreallocationCSR_SeqAIJ in src/mat/impls/aij/seq/aij.c

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