:orphan: # KSPSetDM Sets the `DM` that may be used by some preconditioners ## 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,`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 [](ch_ksp), `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/dm/impls/stag/tutorials/ex8.c
src/ksp/ksp/tutorials/ex22f.F90
src/ksp/ksp/tutorials/ex25.c
src/ksp/ksp/tutorials/ex28.c
src/ksp/ksp/tutorials/ex29.c
src/ksp/ksp/tutorials/ex32.c
src/ksp/ksp/tutorials/ex34.c
src/ksp/ksp/tutorials/ex35.cxx
src/ksp/ksp/tutorials/ex36.cxx
src/ksp/ksp/tutorials/ex43.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/ksp/interface/iterativ.c) [Index of all KSP routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)