:orphan:
# SNESSetFunction
Sets the function evaluation routine and function vector for use by the `SNES` routines in solving systems of nonlinear equations.
## Synopsis
```
#include "petscsnes.h"
PetscErrorCode SNESSetFunction(SNES snes, Vec r, PetscErrorCode (*f)(SNES, Vec, Vec, void *), void *ctx)
```
Logically Collective
## Input Parameters
- ***snes -*** the `SNES` context
- ***r -*** vector to store function values, may be `NULL`
- ***f -*** function evaluation routine; for calling sequence see `SNESFunction`
- ***ctx -*** [optional] user-defined context for private data for the
function evaluation routine (may be `NULL`)
## See Also
[](ch_snes), `SNES`, `SNESGetFunction()`, `SNESComputeFunction()`, `SNESSetJacobian()`, `SNESSetPicard()`, `SNESFunction`
## Level
beginner
## Location
src/snes/interface/snes.c
## Examples
src/snes/tutorials/ex1.c
src/snes/tutorials/ex14.c
src/snes/tutorials/ex15.c
src/snes/tutorials/ex18.c
src/snes/tutorials/ex1f.F90
src/snes/tutorials/ex2.c
src/snes/tutorials/ex21.c
src/snes/tutorials/ex22.c
src/snes/tutorials/ex28.c
src/snes/tutorials/ex3.c
src/snes/tutorials/ex31.c
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/snes/interface/snes.c)
[Index of all SNES routines](index.md)
[Table of Contents for all manual pages](/manualpages/index.md)
[Index of all manual pages](/manualpages/singleindex.md)