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

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

Level#

advanced

Location#

src/snes/impls/vi/vi.c

Implementations#

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


Edit on GitLab

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