:orphan: # MatSeqAIJSetPreallocationCSR Allocates memory for a sparse sequential matrix in `MATSEQAIJ` format. ## Synopsis ``` #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 ## Notes 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 [](ch_matrices), `Mat`, `MatCreate()`, `MatCreateSeqAIJ()`, `MatSetValues()`, `MatSeqAIJSetPreallocation()`, `MatCreateSeqAIJ()`, `MATSEQAIJ`, `MatResetPreallocation()` ## Level developer ## Location src/mat/impls/aij/seq/aij.c ## Implementations MatSeqAIJSetPreallocationCSR_SeqAIJ in src/mat/impls/aij/seq/aij.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/mat/impls/aij/seq/aij.c) [Index of all Mat routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)