Skip to main content
`Ctrl`+`K`

# MatCreateMPIAdj

Creates a sparse matrix representing an adjacency list. The matrix need not have numerical values associated with it, it is intended for ordering (to reduce bandwidth etc) and partitioning.

## Synopsis

    #include "petscmat.h"
    PetscErrorCode MatCreateMPIAdj(MPI_Comm comm, PetscInt m, PetscInt N, PetscInt i[], PetscInt j[], PetscInt values[], Mat *A) PeNSS

Collective

## Input Parameters

- comm - MPI communicator

- m - number of local rows

- N - number of global columns

- i - the indices into `j` for the start of each row

- j - the column indices for each row (sorted for each row).

- values - the values, optional, use `NULL` if not provided

## Output Parameter

- A - the matrix

## Notes

The indices in `i` and `j` start with zero (NOT with one).

You must NOT free the `i`, `values` and `j` arrays yourself. PETSc will free them when the matrix is destroyed; you must allocate them with `PetscMalloc()`.

You should not include the matrix diagonals.

If you already have a matrix, you can create its adjacency matrix by a call to `MatConvert()`, specifying a type of `MATMPIADJ`.

Possible values for `MatSetOption()` - `MAT_STRUCTURALLY_SYMMETRIC`

## Fortran Note

From Fortran the arrays `indices` and `values` must be retained by the user until `A` is destroyed

## See Also

Matrices, `Mat`, `MatCreate()`, `MatConvert()`, `MatGetOrdering()`, `MATMPIADJ`, `MatMPIAdjSetPreallocation()`

## Level

intermediate

## Location

src/mat/impls/adj/mpi/mpiadj.c

## Examples

src/mat/tutorials/ex11.c
src/mat/tutorials/ex11f.F90

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