/usr/lib/petscdir/3.1/include/private/tsimpl.h is in libpetsc3.1-dev 3.1.dfsg-11ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #ifndef __TSIMPL_H
#define __TSIMPL_H
#include "petscts.h"
/*
Timesteping context.
General DAE: F(t,U,U_t) = 0, required Jacobian is G'(U) where G(U) = F(t,U,U0+a*U)
General ODE: U_t = F(t,U) <-- the right-hand-side function
Linear ODE: U_t = A(t) U <-- the right-hand-side matrix
Linear (no time) ODE: U_t = A U <-- the right-hand-side matrix
*/
/*
Maximum number of monitors you can run with a single TS
*/
#define MAXTSMONITORS 5
struct _TSOps {
PetscErrorCode (*rhsmatrix)(TS,PetscReal,Mat*,Mat*,MatStructure*,void*);
PetscErrorCode (*lhsmatrix)(TS,PetscReal,Mat*,Mat*,MatStructure*,void*);
PetscErrorCode (*rhsfunction)(TS,PetscReal,Vec,Vec,void*);
PetscErrorCode (*rhsjacobian)(TS,PetscReal,Vec,Mat*,Mat*,MatStructure*,void*);
PetscErrorCode (*ifunction)(TS,PetscReal,Vec,Vec,Vec,void*);
PetscErrorCode (*ijacobian)(TS,PetscReal,Vec,Vec,PetscReal,Mat*,Mat*,MatStructure*,void*);
PetscErrorCode (*prestep)(TS);
PetscErrorCode (*poststep)(TS);
PetscErrorCode (*setup)(TS);
PetscErrorCode (*step)(TS,PetscInt*,PetscReal*);
PetscErrorCode (*setfromoptions)(TS);
PetscErrorCode (*destroy)(TS);
PetscErrorCode (*view)(TS,PetscViewer);
};
struct _p_TS {
PETSCHEADER(struct _TSOps);
TSProblemType problem_type;
Vec vec_sol,vec_sol_always;
/* ---------------- User (or PETSc) Provided stuff ---------------------*/
PetscErrorCode (*monitor[MAXTSMONITORS])(TS,PetscInt,PetscReal,Vec,void*); /* returns control to user after */
PetscErrorCode (*mdestroy[MAXTSMONITORS])(void*);
void *monitorcontext[MAXTSMONITORS]; /* residual calculation, allows user */
PetscInt numbermonitors; /* to, for instance, print residual norm, etc. */
/* ---------------------Linear Iteration---------------------------------*/
KSP ksp;
Mat A,B; /* internel matrix and preconditioner used for KSPSolve() */
Mat Arhs,Alhs; /* user provided right/left hand side matrix and preconditioner */
MatStructure matflg; /* flag indicating the matrix structure of Arhs and Alhs */
/* ---------------------Nonlinear Iteration------------------------------*/
SNES snes;
void *funP;
void *jacP,*jacPlhs;
void *bcP;
/* --- Data that is unique to each particular solver --- */
PetscInt setupcalled; /* true if setup has been called */
void *data; /* implementationspecific data */
void *user; /* user context */
/* ------------------ Parameters -------------------------------------- */
PetscInt max_steps; /* max number of steps */
PetscReal max_time; /* max time allowed */
PetscReal time_step; /* current time increment */
PetscReal time_step_old; /* previous time increment */
PetscReal initial_time_step; /* initial time increment */
PetscInt steps; /* steps taken so far */
PetscReal ptime; /* time taken so far */
PetscInt linear_its; /* total number of linear solver iterations */
PetscInt nonlinear_its; /* total number of nonlinear solver iterations */
/* ------------------- Default work-area management ------------------ */
PetscInt nwork;
Vec *work;
};
EXTERN PetscErrorCode TSMonitor(TS,PetscInt,PetscReal,Vec);
EXTERN PetscErrorCode TSScaleShiftMatrices(TS,Mat,Mat,MatStructure);
extern PetscLogEvent TS_Step, TS_PseudoComputeTimeStep, TS_FunctionEval, TS_JacobianEval;
#endif
|