Actual source code: rk.h

      1: typedef struct _RKTableau *RKTableau;
      2: struct _RKTableau {
      3:   char       *name;
      4:   PetscInt   order;               /* Classical approximation order of the method i              */
      5:   PetscInt   s;                   /* Number of stages                                           */
      6:   PetscInt   p;                   /* Interpolation order                                        */
      7:   PetscBool  FSAL;                /* flag to indicate if tableau is FSAL                        */
      8:   PetscReal  *A,*b,*c;            /* Tableau                                                    */
      9:   PetscReal  *bembed;             /* Embedded formula of order one less (order-1)               */
     10:   PetscReal  *binterp;            /* Dense output formula                                       */
     11:   PetscReal  ccfl;                /* Placeholder for CFL coefficient relative to forward Euler  */
     12: };
     13: typedef struct _RKTableauLink *RKTableauLink;
     14: struct _RKTableauLink {
     15:   struct _RKTableau tab;
     16:   RKTableauLink     next;
     17: };

     19: typedef struct {
     20:   RKTableau    tableau;
     21:   Vec          X0;
     22:   Vec          *Y;               /* States computed during the step                                              */
     23:   Vec          *YdotRHS;         /* Function evaluations for the non-stiff part and contains all components      */
     24:   Vec          *YdotRHS_fast;    /* Function evaluations for the non-stiff part and contains fast components     */
     25:   Vec          *YdotRHS_slow;    /* Function evaluations for the non-stiff part and contains slow components     */
     26:   Vec          *VecsDeltaLam;    /* Increment of the adjoint sensitivity w.r.t IC at stage                       */
     27:   Vec          *VecsSensiTemp;
     28:   Vec          VecDeltaMu;       /* Increment of the adjoint sensitivity w.r.t P at stage                        */
     29:   Vec          *VecsDeltaLam2;   /* Increment of the 2nd-order adjoint sensitivity w.r.t IC at stage */
     30:   Vec          VecDeltaMu2;      /* Increment of the 2nd-order adjoint sensitivity w.r.t P at stage */
     31:   Vec          *VecsSensi2Temp;
     32:   PetscScalar  *work;            /* Scalar work                                                                  */
     33:   PetscInt     slow;             /* flag indicates call slow components solver (0) or fast components solver (1) */
     34:   PetscReal    stage_time;
     35:   TSStepStatus status;
     36:   PetscReal    ptime;
     37:   PetscReal    time_step;
     38:   PetscInt     dtratio;          /* ratio between slow time step size and fast step size                         */
     39:   IS           is_fast,is_slow;
     40:   TS           subts_fast,subts_slow,subts_current,ts_root;
     41:   PetscBool    use_multirate;
     42:   Mat          MatFwdSensip0;
     43:   Mat          *MatsFwdStageSensip;
     44:   Mat          *MatsFwdSensipTemp;
     45:   Vec          VecDeltaFwdSensipCol; /* Working vector for holding one column of the sensitivity matrix */
     46: } TS_RK;