Skip to main content
`Ctrl`+`K`

# MatPreallocateBegin

Begins the block of code that will count the number of nonzeros per row in a matrix providing the data that one can use to correctly preallocate the matrix.

## Synopsis

    #include <petscmat.h>
    PetscErrorCode MatPreallocateBegin(MPI_Comm comm, PetscInt nrows, PetscInt ncols, PetscInt *dnz, PetscInt *onz)

Collective

## Input Parameters

- comm - the communicator that will share the eventually allocated matrix

- nrows - the number of LOCAL rows in the matrix

- ncols - the number of LOCAL columns in the matrix

## Output Parameters

- dnz - the array that will be passed to the matrix preallocation routines

- onz - the other array passed to the matrix preallocation routines

(since v3.19)

## Notes

This routine is no longer needed since assembling matrices without explicit preallocation will not be slower than the use of this routine

This is a macro that handles its own error checking, it does not return an error code.

Do not malloc or free `dnz` and `onz`, that is handled internally by these routines

## Developer Note

This is a MACRO, not a function, because it has a leading { that is closed by `PetscPreallocateFinalize()`.

## See Also

Matrices, `MatPreallocateEnd()`, `MatPreallocateSet()`, `MatPreallocateSymmetricSetBlock()`, `MatPreallocateSetLocal()`, `MatPreallocateSymmetricSetLocalBlock()`

## Level

deprecated

## Location

include/petscmat.h

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