Skip to main content
`Ctrl`+`K`

# PetscDSGetJacobianPreconditioner

Get the pointwise Jacobian function for given test and basis field that constructs the matrix used to compute the preconditioner. If this is missing, the system matrix is used to build the preconditioner.

## Synopsis

    #include "petscds.h"
    PetscErrorCode PetscDSGetJacobianPreconditioner(PetscDS ds, PetscInt f, PetscInt g, PetscPointJacFn **g0, PetscPointJacFn **g1, PetscPointJacFn **g2, PetscPointJacFn **g3)

Not Collective

## Input Parameters

- ds - The `PetscDS`

- f - The test field number

- g - The field number

## Output Parameters

- g0 - integrand for the test and basis function term, see `PetscPointJacFn`

- g1 - integrand for the test function and basis function gradient term, see `PetscPointJacFn`

- g2 - integrand for the test function gradient and basis function term, see `PetscPointJacFn`

- g3 - integrand for the test function gradient and basis function gradient term, see `PetscPointJacFn`

## Note

We are using a first order FEM model for the weak form:

\[ \int_\Omega \phi\, g_0(u, u_t, \nabla u, x, t) \psi + \phi\, {\vec g}_1(u, u_t, \nabla u, x, t) \nabla \psi + \nabla\phi \cdot {\vec g}_2(u, u_t, \nabla u, x, t) \psi + \nabla\phi \cdot {\overleftrightarrow g}_3(u, u_t, \nabla u, x, t) \cdot \nabla \psi \]

## Developer Note

The name is confusing since the function computes a matrix used to construct the preconditioner, not a preconditioner.

## See Also

`PetscDS`, `PetscDSSetJacobianPreconditioner()`, `PetscDSGetJacobian()`, `PetscPointJacFn`

## Level

intermediate

## Location

src/dm/dt/interface/dtds.c

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