# MatCreateSeqBAIJWithArrays
Creates a `MATSEQBAIJ` matrix using matrix elements provided by the user. 
## Synopsis
```
#include "petscmat.h"  
PetscErrorCode MatCreateSeqBAIJWithArrays(MPI_Comm comm, PetscInt bs, PetscInt m, PetscInt n, PetscInt i[], PetscInt j[], PetscScalar a[], Mat *mat)
```
Collective


## Input Parameters

- ***comm -*** must be an MPI communicator of size 1
- ***bs -*** size of block
- ***m -*** number of rows
- ***n -*** number of columns
- ***i -*** row indices; that is i[0] = 0, i[row] = i[row-1] + number of elements in that row block row of the matrix
- ***j -*** column indices
- ***a -*** matrix values



## Output Parameter

- ***mat -*** the matrix





## Notes
The i, j, and a arrays are not copied by this routine, the user must free these arrays
once the matrix is destroyed

You cannot set new nonzero locations into this matrix, that will generate an error.

The i and j indices are 0 based

When block size is greater than 1 the matrix values must be stored using the `MATSEQBAIJ` storage format

The order of the entries in values is the same as the block compressed sparse row storage format; that is, it is
the same as a three dimensional array in Fortran values(bs,bs,nnz) that contains the first column of the first
block, followed by the second column of the first block etc etc.  That is, the blocks are contiguous in memory
with column-major ordering within blocks.


## See Also
 `MatCreate()`, `MatCreateBAIJ()`, `MatCreateSeqBAIJ()`

## Level
advanced

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/mat/impls/baij/seq/baij.c.html#MatCreateSeqBAIJWithArrays">src/mat/impls/baij/seq/baij.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/mat/impls/baij/seq/baij.c)


[Index of all Mat routines](index.md)  
[Table of Contents for all manual pages](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
