:orphan:
# TSSetI2Jacobian
Set the function to compute the matrix dF/dU + v*dF/dU_t  + a*dF/dU_tt where F(t,U,U_t,U_tt) is the function you provided with `TSSetI2Function()`. 
## Synopsis
```
#include "petscts.h"  
PetscErrorCode TSSetI2Jacobian(TS ts, Mat J, Mat P, TSI2Jacobian jac, void *ctx)
```
Logically Collective


## Input Parameters

- ***ts  -*** the `TS` context obtained from `TSCreate()`
- ***J   -*** matrix to hold the Jacobian values
- ***P   -*** matrix for constructing the preconditioner (may be same as `J`)
- ***jac -*** the Jacobian evaluation routine
- ***ctx -*** user-defined context for private data for the Jacobian evaluation routine (may be `NULL`)



## Calling sequence of `jac`
```none
PetscErrorCode jac(TS ts, PetscReal t, Vec U, Vec U_t, Vec U_tt, PetscReal v, PetscReal a, Mat J, Mat P, void *ctx)
```

- ***ts  -*** the `TS` context obtained from `TSCreate()`
- ***t    -*** time at step/stage being solved
- ***U    -*** state vector
- ***U_t  -*** time derivative of state vector
- ***U_tt -*** second time derivative of state vector
- ***v    -*** shift for U_t
- ***a    -*** shift for U_tt
- ***J    -*** Jacobian of G(U) = F(t,U,W+v*U,W'+a*U), equivalent to dF/dU + v*dF/dU_t  + a*dF/dU_tt
- ***P    -*** preconditioning matrix for J, may be same as J
- ***ctx  -*** [optional] user-defined context for matrix evaluation routine





## Notes
The matrices `J` and `P` are exactly the matrices that are used by `SNES` for the nonlinear solve.

The matrix dF/dU + v*dF/dU_t + a*dF/dU_tt you provide turns out to be
the Jacobian of G(U) = F(t,U,W+v*U,W'+a*U) where F(t,U,U_t,U_tt) = 0 is the DAE to be solved.
The time integrator internally approximates U_t by W+v*U and U_tt by W'+a*U  where the positive "shift"
parameters 'v' and 'a' and vectors W, W' depend on the integration method, step size, and past states.


## See Also
 [](ch_ts), `TS`, `TSSetI2Function()`, `TSGetI2Jacobian()`

## Level
beginner

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ts/interface/ts.c.html#TSSetI2Jacobian">src/ts/interface/ts.c</A>

## Examples
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ts/tutorials/ex43.c.html">src/ts/tutorials/ex43.c</A><BR>
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ts/tutorials/ex44.c.html">src/ts/tutorials/ex44.c</A><BR>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ts/interface/ts.c)


[Index of all TS routines](index.md)  
[Table of Contents for all manual pages](/manualpages/index.md)  
[Index of all manual pages](/manualpages/singleindex.md)  
