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