Skip to main content
`Ctrl`+`K`

# SNESGetNPC

Gets a nonlinear preconditioning solver SNES` to be used to precondition the original nonlinear solver.

## Synopsis

    #include "petscsnes.h"
    #include "petscsnes.h"
    PetscErrorCode SNESGetNPC(SNES snes, SNES *pc)

Not Collective; but any changes to the obtained the `pc` object must be applied collectively

## Input Parameter

- snes - iterative context obtained from `SNESCreate()`

## Output Parameter

- pc - the `SNES` preconditioner context

## Options Database Key

- -npc_snes_type type - set the type of the `SNES` to use as the nonlinear preconditioner

## Notes

If a `SNES` was previously set with `SNESSetNPC()` then that value is returned, otherwise a new `SNES` object is created that will be used as the nonlinear preconditioner for the current `SNES`.

The (preconditioner) `SNES` returned automatically inherits the same nonlinear function and Jacobian supplied to the original `SNES`. These may be overwritten if needed.

Use the options database prefixes `-npc_snes`, `-npc_ksp`, etc., to control the configuration of the nonlinear preconditioner

## See Also

SNES: Nonlinear Solvers, `SNESSetNPC()`, `SNESHasNPC()`, `SNES`, `SNESCreate()`

## Level

advanced

## Location

src/snes/interface/snes.c

## Examples

src/snes/tutorials/ex35.c

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