SNESVINEWTONRSLS#

Reduced space active set solvers for variational inequalities based on Newton’s method

Options Database Keys#

  • -snes_type (vinewtonssls|vinewtonrsls) - A semi-smooth solver or a reduced space active set method

  • -snes_vi_zero_tolerance - Tolerance for considering \(u_i\) value to be on a bound.

  • -snes_vi_monitor - Prints the number of active constraints (inactive set points) at each iteration.

  • -snes_vi_monitor_residual - View the residual vector at each iteration, using zero for active constraints (i.e. the inactive variables).

  • -snes_vi_monitor_active - View the active set by outputting a one for vector components in the active set and zero for the inactive.

Note#

Reduced-space (active set methods) work as follows at each iteration:

  • The algorithm produces an inactive set of variables, that is a list of variables whose values will not be changed in the current iteration, i.e. they are to be constrained to their current values. These are all the variables that are on the lower bound, that is \(u_i = L_i\) with also \([F(u)]_i \ge 0\) or the upper bound \(u_i = U_i\) with also \([F(u)]_i \le 0.\)

  • A step direction is obtained by solving the linear system arising from the Jacobian used in Newton’s method but with the inactive variables removed from both the rows and columns.

  • A line search is then used to update the active variables (the inactive set of variables are not changed).

The inactive set is chosen based on the sign of \([F(u)]_i\) because this gives exactly the set of points that would be moved outside of the domain given an infinitesimal Newton (or even Richardson) step and our goal is to remain within the bounds, that is, to continue to satisfy the inequality constraints.

See [BM06]

References#

[BM06]

Steven J Benson and Todd S Munson. Flexible complementarity solvers for large-scale applications. Optimization Methods and Software, 21(1):155–168, 2006.

See Also#

SNES: Nonlinear Solvers, SNESVISetVariableBounds(), SNESVISetComputeVariableBounds(), SNESCreate(), SNES, SNESSetType(), SNESVINEWTONSSLS, SNESNEWTONTR, SNESLineSearchSetType(), SNESLineSearchSetPostCheck(), SNESLineSearchSetPreCheck(), SNESVIGetInactiveSet(), DMSetVI(), SNESVISetRedundancyCheck()

Level#

beginner

Location#

src/snes/impls/vi/rs/virs.c

Examples#

src/snes/tutorials/ex9.c


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