Skip to main content
`Ctrl`+`K`

# SNESVISetVariableBounds

Sets the lower and upper bounds for the solution vector. `xl` <= x <= `xu`. This allows solving (differential) variable inequalities.

## Synopsis

    #include "petscsnes.h"
    PetscErrorCode SNESVISetVariableBounds(SNES snes, Vec xl, Vec xu)

## Input Parameters

- snes - the `SNES` context.

- xl - lower bound.

- xu - upper bound.

## Notes

If this routine is not called then the lower and upper bounds are set to `PETSC_NINFINITY` and `PETSC_INFINITY` respectively during `SNESSetUp()`.

Problems with bound constraints can be solved with the reduced space, `SNESVINEWTONRSLS` or semi-smooth `SNESVINEWTONSSLS` solvers.

For particular components that have no bounds you can use `PETSC_NINFINITY` or `PETSC_INFINITY`

`SNESVISetComputeVariableBounds()` can be used to provide a function that computes the bounds. This should be used if you are using, for example, grid sequencing and need bounds set for a variety of vectors

See `SNESVINEWTONRSLS` for a concise description of the active and inactive sets

## See Also

Variational Inequalities, `SNES`, `SNESVIGetVariableBounds()`, `SNESVISetComputeVariableBounds()`, `SNESSetFunctionDomainError()`, `SNESSetJacobianDomainError()`, `SNESVINEWTONRSLS`, `SNESVINEWTONSSLS`, `SNESSetType()`, `PETSC_NINFINITY`, `PETSC_INFINITY`

## Level

advanced

## Location

src/snes/impls/vi/vi.c

## Implementations

SNESVISetVariableBounds_VI() in src/snes/impls/vi/vi.c

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