Skip to main content
`Ctrl`+`K`

# 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