PETSc version 3.17.4
Fix/Edit manual page

# SNESLineSearchSetVIFunctions

Sets VI-specific functions for line search computation.

### Synopsis

    #include "petscsnes.h"
    PetscErrorCode SNESLineSearchSetVIFunctions(SNESLineSearch linesearch, SNESLineSearchVIProjectFunc projectfunc, SNESLineSearchVINormFunc normfunc)

### Input Parameters

| snes | - nonlinear context obtained from SNESCreate()
| projectfunc | - function for projecting the function to the bounds
| normfunc | - function for computing the norm of an active set

Logically Collective on SNES

### Calling sequence of projectfunc

       projectfunc (SNES snes, Vec X)

### Input parameters for projectfunc

| snes | - nonlinear context
| X | - current solution

### Output parameters for projectfunc

| X | - Projected solution

### Calling sequence of normfunc

       projectfunc (SNES snes, Vec X, Vec F, PetscScalar * fnorm)

### Input parameters for normfunc

| snes | - nonlinear context
| X | - current solution
| F | - current residual

### Output parameters for normfunc

| fnorm | - VI-specific norm of the function

### Notes

The VI solvers require projection of the solution to the feasible set. projectfunc should implement this.

The VI solvers require special evaluation of the function norm such that the norm is only calculated on the inactive set. This should be implemented by normfunc.

### See Also

SNESLineSearchGetVIFunctions(), SNESLineSearchSetPostCheck(), SNESLineSearchSetPreCheck()

### Level

developer

### Location

src/snes/linesearch/interface/linesearch.c
Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages