Skip to main content
`Ctrl`+`K`

# SNESSetLagPreconditioner

Sets when the preconditioner is rebuilt in the nonlinear solve `SNESSolve()`.

## Synopsis

    #include "petscsnes.h"
    #include "petscsnes.h"
    PetscErrorCode SNESSetLagPreconditioner(SNES snes, PetscInt lag)

Logically Collective

## Input Parameters

- snes - the `SNES` context

- lag - 1 means rebuild every time the Jacobian is computed within a single nonlinear solve, 2 means every second time the Jacobian is built etc. -2 indicates rebuild preconditioner at next chance but then never rebuild after that

## Options Database Keys

- -snes_lag_jacobian_persists (true|false) - sets the persistence through multiple `SNESSolve()`

- -snes_lag_jacobian (- 2|1|2|…) - sets the lag

- -snes_lag_preconditioner_persists (true|false) - sets the persistence through multiple `SNESSolve()`

- -snes_lag_preconditioner (- 2|1|2|…) - sets the lag

## Notes

The default is 1

The preconditioner is ALWAYS built in the first iteration of a nonlinear solve unless lag is -1 or `SNESSetLagPreconditionerPersists()` was called

`SNESSetLagPreconditionerPersists()` allows using the same uniform lagging (for example every second linear solve) across multiple nonlinear solves.

## See Also

SNES: Nonlinear Solvers, `SNESGetLagPreconditioner()`, `SNESSetLagJacobian()`, `SNESGetLagJacobian()`, `SNESSetLagPreconditionerPersists()`, `SNESSetLagJacobianPersists()`, `SNES`, `SNESSolve()`

## Level

intermediate

## Location

src/snes/interface/snes.c

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