petsc-3.14.6 2021-03-30
Report Typos and Errors

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 on TS

Input Parameters

ts - the TS context obtained from TSCreate()
J - Jacobian matrix
P - preconditioning matrix for J (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);

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

TSSetI2Function(), TSGetI2Jacobian()

Level

beginner

Location

src/ts/interface/ts.c
Index of all TS routines
Table of Contents for all manual pages
Index of all manual pages