petsc3.14.5 20210303
MatCreateSNESMF
Creates a matrixfree matrix context for use with a SNES solver. This matrix can be used as the Jacobian argument for the routine SNESSetJacobian(). See MatCreateMFFD() for details on how the finite difference computation is done.
Synopsis
#include "petscsnes.h"
#include "petscdm.h"
PetscErrorCode MatCreateSNESMF(SNES snes,Mat *J)
Collective on SNES
Input Parameters
Output Parameter
 J   the matrixfree matrix

Notes
You can call SNESSetJacobian() with MatMFFDComputeJacobian() if you are using matrix and not a different
preconditioner matrix
If you wish to provide a different function to do differencing on to compute the matrixfree operator than
that provided to SNESSetFunction() then call MatMFFDSetFunction() with your function after this call.
The difference between this routine and MatCreateMFFD() is that this matrix
automatically gets the current base vector from the SNES object and not from an
explicit call to MatMFFDSetBase().
Warning
If MatMFFDSetBase() is ever called on jac then this routine will NO longer get
the x from the SNES object and MatMFFDSetBase() must from that point on be used to
change the base vector x.
Warning
Using a different function for the differencing will not work if you are using nonlinear left preconditioning.
See Also
MatDestroy(), MatMFFDSetFunction(), MatMFFDSetFunctionError(), MatMFFDDSSetUmin()
MatMFFDSetHHistory(), MatMFFDResetHHistory(), MatCreateMFFD(),
MatMFFDGetH(), MatMFFDRegister(), MatMFFDComputeJacobian(), MatSNESMFSetReuseBase(), MatSNESMFGetReuseBase()
Level
advanced
Location
src/snes/mf/snesmfj.c
Examples
src/ts/tutorials/ex15.c.html
Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages