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#
Output Parameter#
J - the matrix-free matrix
Options Database Keys#
-snes_mf_err <error_rel> - see
MatCreateSNESMF()
-snes_mf_umin
- seeMatCreateSNESMF()
-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