Skip to main content
`Ctrl`+`K`

# MatCreateConstantDiagonal

Creates a matrix with a uniform value along the diagonal

## Synopsis

    #include "petscmat.h"
    PetscErrorCode MatCreateConstantDiagonal(MPI_Comm comm, PetscInt m, PetscInt n, PetscInt M, PetscInt N, PetscScalar diag, Mat *J)

Collective

## Input Parameters

- comm - MPI communicator

- m - number of local rows (or `PETSC_DECIDE` to have calculated if `M` is given) This value should be the same as the local size used in creating the y vector for the matrix-vector product y = Ax.

- n - This value should be the same as the local size used in creating the x vector for the matrix-vector product y = Ax. (or `PETSC_DECIDE` to have calculated if `N` is given) For square matrices n is almost always `m`.

- M - number of global rows (or `PETSC_DETERMINE` to have calculated if m is given)

- N - number of global columns (or `PETSC_DETERMINE` to have calculated if n is given)

- diag - the diagonal value

## Output Parameter

- J - the diagonal matrix

## Notes

Only supports square matrices with the same number of local rows and columns

## See Also

Matrices, `Mat`, `MatDestroy()`, `MATCONSTANTDIAGONAL`, `MatScale()`, `MatShift()`, `MatMult()`, `MatGetDiagonal()`, `MatGetFactor()`, `MatSolve()`

## Level

advanced

## Location

src/mat/impls/cdiagonal/cdiagonal.c

## Examples

src/ksp/ksp/tutorials/ex27.c
src/ksp/ksp/tutorials/ex87.c

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