xref: /petsc/src/ts/impls/implicit/sundials/sundials.h (revision a58c3bc3391eee32bc3fd94ac7edeea38fe57aae)
1 
2 /*
3     Provides a PETSc interface to SUNDIALS. Alan Hindmarsh's parallel ODE
4    solver developed at LLNL.
5 */
6 
7 #if !defined(__PETSCSUNDIALS_H)
8 #define __PETSCSUNDIALS_H
9 
10 #include "include/private/tsimpl.h"       /*I   "petscts.h"   I*/
11 #include "private/pcimpl.h"               /*I   "petscpc.h"   I*/
12 #include "include/private/matimpl.h"
13 
14 /*
15    Include files specific for SUNDIALS
16 */
17 #if defined(PETSC_HAVE_SUNDIALS)
18 
19 EXTERN_C_BEGIN
20 #include "cvode/cvode.h"                  /* prototypes for CVODE fcts. */
21 #include "cvode/cvode_spgmr.h"            /* prototypes and constants for CVSPGMR solver */
22 #include "sundials/sundials_smalldense.h" /* prototypes for small dense matrix fcts. */
23 #include "sundials/sundials_types.h"      /* definitions of realtype, booleantype */
24 #include "sundials/sundials_math.h"       /* definition of macros SQR and EXP */
25 #include "nvector/nvector_parallel.h"     /* definition N_Vector and macro NV_DATA_P  */
26 EXTERN_C_END
27 
28 typedef struct {
29   Vec        update;    /* work vector where new solution is formed */
30   Vec        func;      /* work vector where F(t[i],u[i]) is stored */
31   Vec        rhs;       /* work vector for RHS; vec_sol/dt */
32   Vec        w1,w2;     /* work space vectors for function evaluation */
33   PetscTruth exact_final_time; /* force Sundials to interpolate solution to exactly final time
34                                    requested by user (default) */
35   /* PETSc peconditioner objects used by SUNDIALS */
36   Mat  pmat;                         /* preconditioner Jacobian */
37   PC   pc;                           /* the PC context */
38   int  cvode_type;                   /* the SUNDIALS method, BDF or ADAMS  */
39   TSSundialsGramSchmidtType gtype;
40   int                       restart;
41   double                    linear_tol;
42 
43   /* Variables used by Sundials */
44   MPI_Comm comm_sundials;
45   double   reltol;
46   double   abstol;          /* only for using SS flag in SUNDIALS */
47   N_Vector y;               /* current solution */
48   int      nonlinear_solves,linear_solves; /* since creation of object */
49 } TS_Sundials;
50 #endif
51 
52 #endif
53 
54 
55 
56 
57