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
SNEScontext.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 Also#
Variational Inequalities, SNES, SNESVIGetVariableBounds(), SNESVISetComputeVariableBounds(), SNESSetFunctionDomainError(), SNESSetJacobianDomainError(), SNESVINEWTONRSLS, SNESVINEWTONSSLS, SNESSetType(), PETSC_NINFINITY, PETSC_INFINITY
Level#
advanced
Location#
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