# 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#

the**A -**`MATAIJ`

matrixnumber of rows in**p -**`S`

and`T`

number of columns in**q -**`S`

and`T`

the**S -**`S`

matrix (can be`NULL`

), stored as a`PetscScalar`

array (column-major)the**T -**`T`

matrix (can be`NULL`

), stored as a`PetscScalar`

array (column-major)

## Output Parameter#

the new**kaij -**`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#

## Examples#

src/ksp/ksp/tutorials/ex74.c

src/ksp/ksp/tutorials/ex77.c

Index of all Mat routines

Table of Contents for all manual pages

Index of all manual pages