# KSPCreateVecs#

Gets a number of work vectors suitably sized for the operator in the `KSP`

## Synopsis#

```
#include "petscksp.h"
PetscErrorCode KSPCreateVecs(KSP ksp, PetscInt rightn, Vec *right[], PetscInt leftn, Vec *left[])
```

Collective

## Input Parameters#

iterative context**ksp -**number of right work vectors to allocate**rightn -**number of left work vectors to allocate**leftn -**

## Output Parameters#

the array of vectors created**right -**the array of left vectors**left -**

## Notes#

The right vector has as many elements as the matrix has columns. The left
vector has as many elements as the matrix has rows, see `MatSetSizes()`

for details on the layout of the vectors.

The vectors are new vectors that are not owned by the `KSP`

, they should be destroyed with calls to `VecDestroyVecs()`

when no longer needed.

## Developer Note#

First tries to duplicate the rhs and solution vectors of the `KSP`

, if they do not exist tries to get them from the matrix with `MatCreateVecs()`

, if
that does not exist tries to get them from the `DM`

(if it is provided) with `DMCreateGlobalVectors()`

.

## See Also#

KSP: Linear System Solvers, `MatCreateVecs()`

, `VecDestroyVecs()`

, `KSPSetWorkVecs()`

## Level#

advanced

## Location#

src/ksp/ksp/interface/iterativ.c

Index of all KSP routines

Table of Contents for all manual pages

Index of all manual pages