Actual source code: sundials.h
2: /*
3: Provides a PETSc interface to SUNDIALS. Alan Hindmarsh's parallel ODE
4: solver developed at LLNL.
5: */
7: #if !defined(PETSC_SUNDIALS_H)
8: #define PETSC_SUNDIALS_H
10: #include <petsc/private/tsimpl.h>
11: #include <petsc/private/pcimpl.h>
12: #include <petsc/private/matimpl.h>
14: /*
15: Include files specific for SUNDIALS
16: */
17: #if defined(PETSC_HAVE_SUNDIALS2)
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 <cvode/cvode_dense.h> /* prototypes and constants for CVDense solver */
23: #include <nvector/nvector_parallel.h> /* definition N_Vector and macro NV_DATA_P */
24: #include <nvector/nvector_serial.h>
25: EXTERN_C_END
27: typedef struct {
28: Vec update; /* work vector where new solution is formed */
29: Vec ydot; /* work vector the time derivative is stored */
30: Vec w1,w2; /* work space vectors for function evaluation */
32: /* PETSc preconditioner objects used by SUNDIALS */
33: PetscInt cvode_type; /* the SUNDIALS method, BDF or ADAMS */
34: TSSundialsGramSchmidtType gtype;
35: PetscReal linear_tol;
36: PetscReal mindt,maxdt;
38: /* Variables used by Sundials */
39: MPI_Comm comm_sundials;
40: PetscReal reltol;
41: PetscReal abstol; /* only for using SS flag in SUNDIALS */
42: N_Vector y; /* current solution */
43: void *mem;
44: PetscBool monitorstep; /* flag for monitor internal steps; itask=V_ONE_STEP or itask=CV_NORMAL*/
45: PetscInt maxl; /* max dimension of the Krylov subspace to be used */
46: PetscInt maxord; /* max order of BDF / Adams method */
47: PetscBool use_dense; /* Use a dense instead of iterative solve within SUNDIALS (serial only) */
48: } TS_Sundials;
49: #endif
51: #endif