Skip to main content
`Ctrl`+`K`

# KSPSetDM

Sets the `DM` that may be used by some preconditioners and that may be used to construct the linear system

## Synopsis

    #include "petscksp.h"
    PetscErrorCode KSPSetDM(KSP ksp, DM dm)

Logically Collective

## Input Parameters

- ksp - the `KSP`

- dm - the `DM`, cannot be `NULL` to remove a previously set `DM`

## Notes

If this is used then the `KSP` will attempt to use the `DM` to create the matrix and use the routine set with `DMKSPSetComputeOperators()`. Use `KSPSetDMActive`(ksp, `KSP_DMACTIVE_OPERATOR`, `PETSC_FALSE`) to instead use the matrix you’ve provided with `KSPSetOperators()`.

A `DM` can only be used for solving one problem at a time because information about the problem is stored on the `DM`, even when not using interfaces like `DMKSPSetComputeOperators()`. Use `DMClone()` to get a distinct `DM` when solving different problems using the same function space.

## See Also

KSP: Linear System Solvers, `KSP`, `DM`, `KSPGetDM()`, `KSPSetDMActive()`, `KSPSetComputeOperators()`, `KSPSetComputeRHS()`, `KSPSetComputeInitialGuess()`, `DMKSPSetComputeOperators()`, `DMKSPSetComputeRHS()`, `DMKSPSetComputeInitialGuess()`

## Level

intermediate

## Location

src/ksp/ksp/interface/iterativ.c

## Examples

src/dm/impls/stag/tutorials/ex4.c
src/ksp/ksp/tutorials/ex25.c
src/ksp/ksp/tutorials/ex22f.F90
src/ksp/ksp/tutorials/ex32.c
src/ksp/ksp/tutorials/ex34.c
src/ksp/ksp/tutorials/ex36.cxx
src/dm/impls/stag/tutorials/ex8.c
src/ksp/ksp/tutorials/ex28.c
src/ksp/ksp/tutorials/ex35.cxx
src/ksp/ksp/tutorials/ex29.c

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