# 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, and semi-smooth SNESVINEWTONSSLS solvers.

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

SNESVISetVariableBounds() 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

SNESVISetComputeVariableBounds(), SNESSetFunctionDomainError(), SNESSetJacobianDomainError(), SNESVINEWTONRSLS, SNESVINEWTONSSLS, ‘SNESSetType()`

## Location#

src/snes/impls/vi/vi.c

Edit on GitLab