Actual source code: sundials.h
2: /*
3: Provides a PETSc interface to SUNDIALS. Alan Hindmarsh's parallel ODE
4: solver developed at LLNL.
5: */
10: #include private/tsimpl.h
11: #include private/pcimpl.h
12: #include private/matimpl.h
14: /*
15: Include files specific for SUNDIALS
16: */
17: #if defined(PETSC_HAVE_SUNDIALS)
20: #include "cvode/cvode.h" /* prototypes for CVODE fcts. */
21: #include "cvode/cvode_spgmr.h" /* prototypes and constants for CVSPGMR solver */
22: #include "nvector/nvector_parallel.h" /* definition N_Vector and macro NV_DATA_P */
25: typedef struct {
26: Vec update; /* work vector where new solution is formed */
27: Vec func; /* work vector where F(t[i],u[i]) is stored */
28: Vec rhs; /* work vector for RHS; vec_sol/dt */
29: Vec w1,w2; /* work space vectors for function evaluation */
30: PetscTruth exact_final_time; /* force Sundials to interpolate solution to exactly final time
31: requested by user (default) */
32: /* PETSc peconditioner objects used by SUNDIALS */
33: Mat pmat; /* preconditioner Jacobian */
34: PC pc; /* the PC context */
35: int cvode_type; /* the SUNDIALS method, BDF or ADAMS */
36: TSSundialsGramSchmidtType gtype;
37: int restart;
38: double linear_tol;
40: /* Variables used by Sundials */
41: MPI_Comm comm_sundials;
42: double reltol;
43: double abstol; /* only for using SS flag in SUNDIALS */
44: N_Vector y; /* current solution */
45: void *mem;
46: PetscTruth monitorstep; /* flag for monitor internal steps; itask=V_ONE_STEP or itask=CV_NORMAL*/
47: } TS_Sundials;
48: #endif
50: #endif