Skip to main content
`Ctrl`+`K`

# MatCreateKAIJ

Creates a matrix of type `MATKAIJ`.

## Synopsis

    #include "petscmat.h"
    PetscErrorCode MatCreateKAIJ(Mat A, PetscInt p, PetscInt q, const PetscScalar S[], const PetscScalar T[], Mat *kaij)

Collective

## Input Parameters

- A - the `MATAIJ` matrix

- p - number of rows in `S` and `T`

- q - number of columns in `S` and `T`

- S - the `S` matrix (can be `NULL`), stored as a `PetscScalar` array (column-major)

- T - the `T` matrix (can be `NULL`), stored as a `PetscScalar` array (column-major)

## Output Parameter

- kaij - the new `MATKAIJ` matrix

## Notes

The created matrix is of the following form:

        [I \otimes S + A \otimes T]

where

      S is a dense (p \times q) matrix
      T is a dense (p \times q) matrix
      A is a `MATAIJ`  (n \times n) matrix
      I is the identity matrix

The resulting matrix is (np \times nq)

`S` and `T` are always stored independently on all processes as `PetscScalar` arrays in column-major format.

This function increases the reference count on the `MATAIJ` matrix, so the user is free to destroy the matrix if it is not needed.

Changes to the entries of the `MATAIJ` matrix will immediately affect the `MATKAIJ` matrix.

## Developer Notes

In the `MATMPIKAIJ` case, the internal ‘AIJ’ and ‘OAIJ’ sequential KAIJ matrices are kept up to date by tracking the object state of the AIJ matrix ‘A’ that describes the blockwise action of the `MATMPIKAIJ` matrix and, if the object state has changed, lazily rebuilding ‘AIJ’ and ‘OAIJ’ just before executing operations with the `MATMPIKAIJ` matrix. If new types of operations are added, routines implementing those must also ensure these are rebuilt when needed (by calling the internal MatKAIJ_build_AIJ_OAIJ() routine).

## See Also

Matrices, `Mat`, `MatKAIJSetAIJ()`, `MatKAIJSetS()`, `MatKAIJSetT()`, `MatKAIJGetAIJ()`, `MatKAIJGetS()`, `MatKAIJGetT()`, `MATKAIJ`

## Level

advanced

## Location

src/mat/impls/kaij/kaij.c

## Examples

src/ksp/ksp/tutorials/ex77.c
src/ksp/ksp/tutorials/ex74.c

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