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


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

Input Parameters#

  • snes - the SNES context.

  • xl - lower bound.

  • xu - upper bound.


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 Also#

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






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