MatCreateSNESMFMore#

Creates a matrix-free matrix context for use with a SNES solver that uses the More method to compute an optimal h based on the noise of the function. This matrix can be used as the Jacobian argument for the routine SNESSetJacobian().

Synopsis#

#include "petscsnes.h"   
PetscErrorCode MatCreateSNESMFMore(SNES snes, Vec x, Mat *J)

Input Parameters#

  • snes - the SNES context

  • x - vector where SNES solution is to be stored.

Output Parameter#

  • J - the matrix-free matrix

Options Database Keys#

  • -snes_mf_err <error_rel> - see MatCreateSNESMF()

  • -snes_mf_umin - see MatCreateSNESMF()

  • -snes_mf_compute_err - compute the square root or relative error in function

  • -snes_mf_freq_err - set the frequency to recompute the parameters

  • -snes_mf_jorge - use the method of Jorge More

Notes#

This is an experimental approach, use MatCreateSNESMF().

The matrix-free matrix context merely contains the function pointers and work space for performing finite difference approximations of Jacobian-vector products, J(u)*a, via

       J(u)*a = [J(u+h*a) - J(u)]/h,
   where by default
        h = error_rel*u'a/||a||^2                        if  |u'a| > umin*||a||_{1}
          = error_rel*umin*sign(u'a)*||a||_{1}/||a||^2   otherwise
   where
        error_rel = square root of relative error in function evaluation
        umin = minimum iterate parameter
   Alternatively, the differencing parameter, h, can be set using
   Jorge's nifty new strategy if one specifies the option
          -snes_mf_jorge

The user can set these parameters via MatMFFDSetFunctionError().

The user should call MatDestroy() when finished with the matrix-free matrix context.

See Also#

SNES: Nonlinear Solvers, SNESCreateMF(), MatCreateMFFD(), MatDestroy(), MatMFFDSetFunctionError()

Level#

advanced

Location#

src/snes/interface/noise/snesmfj2.c


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