Skip to main content
`Ctrl`+`K`

# KSPSetType

Builds the `KSP` data structure for a particular `KSPType`

## Synopsis

    #include "petscksp.h"
    PetscErrorCode KSPSetType(KSP ksp, KSPType type)

Logically Collective

## Input Parameters

- ksp - the Krylov space context

- type - a known method

## Options Database Key

- -ksp_type - Sets the method; use `-help` for a list of available methods (for instance, cg or gmres)

## Notes

See “petsc/include/petscksp.h” for available methods (for instance, `KSPCG` or `KSPGMRES`).

Normally, it is best to use the `KSPSetFromOptions()` command and then set the `KSP` type from the options database rather than by using this routine. Using the options database provides the user with maximum flexibility in evaluating the many different Krylov methods. The `KSPSetType()` routine is provided for those situations where it is necessary to set the iterative solver independently of the command line or options database. This might be the case, for example, when the choice of iterative solver changes during the execution of the program, and the user’s application is taking responsibility for choosing the appropriate method. In other words, this routine is not for beginners.

## Developer Note

`KSPRegister()` is used to add Krylov types to `KSPList` from which they are accessed by `KSPSetType()`.

## See Also

KSP: Linear System Solvers, `PCSetType()`, `KSPType`, `KSPRegister()`, `KSPCreate()`, `KSP`

## Level

intermediate

## Location

src/ksp/ksp/interface/itcreate.c

## Examples

src/ksp/ksp/tutorials/ex59.c
src/ksp/ksp/tutorials/ex100.c
src/dm/impls/stag/tutorials/ex8.c
src/ksp/ksp/tutorials/ex52.c
src/dm/impls/stag/tutorials/ex4.c
src/ksp/ksp/tutorials/ex78.c
src/dm/impls/stag/tutorials/ex2.c
src/dm/impls/stag/tutorials/ex3.c
src/ksp/ksp/tutorials/ex100f.F90
src/ksp/ksp/tutorials/ex27.c

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