TSSetI2Jacobian#

Set the function to compute the matrix dF/dU + vdF/dU_t + adF/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#

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+vU,W’+aU), equivalent to dF/dU + vdF/dU_t + adF/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 + vdF/dU_t + adF/dU_tt you provide turns out to be the Jacobian of G(U) = F(t,U,W+vU,W’+aU) where F(t,U,U_t,U_tt) = 0 is the DAE to be solved. The time integrator internally approximates U_t by W+vU and U_tt by W’+aU where the positive “shift” parameters ‘v’ and ‘a’ and vectors W, W’ depend on the integration method, step size, and past states.

See Also#

TS: Scalable ODE and DAE Solvers, TS, TSSetI2Function(), TSGetI2Jacobian()

Level#

beginner

Location#

src/ts/interface/ts.c

Examples#

src/ts/tutorials/ex43.c
src/ts/tutorials/ex44.c


Edit on GitLab

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