Sets the functions to compute the matrices Alhs and Arhs, where Alhs(t) U_t = Arhs(t) U.


#include "petscts.h"  
PetscErrorCode PETSCTS_DLLEXPORT TSSetMatrices(TS ts,Mat Arhs,PetscErrorCode (*frhs)(TS,PetscReal,Mat*,Mat*,MatStructure*,void*),Mat Alhs,PetscErrorCode (*flhs)(TS,PetscReal,Mat*,Mat*,MatStructure*,void*),MatStructure flag,void *ctx)
Collective on TS

Input Parameters

ts - the TS context obtained from TSCreate()
Arhs - matrix
frhs - the matrix evaluation routine for Arhs; use PETSC_NULL (PETSC_NULL_FUNCTION in fortran) if Arhs is not a function of t.
Alhs - matrix or PETSC_NULL if Alhs is an indentity matrix.
flhs - the matrix evaluation routine for Alhs; use PETSC_NULL (PETSC_NULL_FUNCTION in fortran) if Alhs is not a function of t.
flag - flag indicating information about the matrix structure of Arhs and Alhs. The available options are SAME_NONZERO_PATTERN - Alhs has the same nonzero structure as Arhs DIFFERENT_NONZERO_PATTERN - Alhs has different nonzero structure as Arhs
ctx - [optional] user-defined context for private data for the matrix evaluation routine (may be PETSC_NULL)

Calling sequence of func

    func(TS ts,PetscReal t,Mat *A,Mat *B,PetscInt *flag,void *ctx);

t - current timestep
A - matrix A, where U_t = A(t) U
B - preconditioner matrix, usually the same as A
flag - flag indicating information about the preconditioner matrix structure (same as flag in KSPSetOperators())
ctx - [optional] user-defined context for matrix evaluation routine


The routine func() takes Mat* as the matrix arguments rather than Mat. This allows the matrix evaluation routine to replace Arhs or Alhs with a completely new new matrix structure (not just different matrix elements) when appropriate, for instance, if the nonzero structure is changing throughout the global iterations.


The user MUST call either this routine or TSSetRHSFunction().


TS, timestep, set, matrix

See Also


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