MatCreateSNESMF#
Creates a finite differencing based matrix-free 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
Input Parameters#
snes - the
SNES
context
Output Parameter#
J - the matrix-free matrix which is of type
MATMFFD
Notes#
You can call SNESSetJacobian()
with MatMFFDComputeJacobian()
if you are not using a different
preconditioner matrix
If you wish to provide a different function to do differencing on to compute the matrix-free 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()
.
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
.
Using a different function for the differencing will not work if you are using non-linear left preconditioning.
This uses finite-differencing to apply the operator. To create a matrix-free Mat
whose matrix-vector operator you
provide with your own function use MatCreateShell()
.
Developer Note#
This function should really be called MatCreateSNESMFFD()
in correspondence to MatCreateMFFD()
to clearly indicate
that this is for using finite differences to apply the operator matrix-free.
See Also#
SNES: Nonlinear Solvers, SNES
, MATMFFD
, MatDestroy()
, MatMFFDSetFunction()
, MatMFFDSetFunctionError()
, MatMFFDDSSetUmin()
MatMFFDSetHHistory()
, MatMFFDResetHHistory()
, MatCreateMFFD()
, MatCreateShell()
,
MatMFFDGetH()
, MatMFFDRegister()
, MatMFFDComputeJacobian()
, MatSNESMFSetReuseBase()
, MatSNESMFGetReuseBase()
Level#
advanced
Location#
Examples#
Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages