/* Provides a PETSc interface to SUNDIALS. Alan Hindmarsh's parallel ODE solver developed at LLNL. */ #if !defined(__PETSCSUNDIALS_H) #define __PETSCSUNDIALS_H #include /*I "petscts.h" I*/ #include /*I "petscpc.h" I*/ #include /* Include files specific for SUNDIALS */ #if defined(PETSC_HAVE_SUNDIALS) EXTERN_C_BEGIN #include /* prototypes for CVODE fcts. */ #include /* prototypes and constants for CVSPGMR solver */ #include /* definition N_Vector and macro NV_DATA_P */ EXTERN_C_END typedef struct { Vec update; /* work vector where new solution is formed */ Vec func; /* work vector where F(t[i],u[i]) is stored */ Vec rhs; /* work vector for RHS; vec_sol/dt */ Vec w1,w2; /* work space vectors for function evaluation */ PetscBool exact_final_time; /* force Sundials to interpolate solution to exactly final time requested by user (default) */ /* PETSc peconditioner objects used by SUNDIALS */ Mat pmat; /* preconditioner Jacobian */ int cvode_type; /* the SUNDIALS method, BDF or ADAMS */ TSSundialsGramSchmidtType gtype; int restart; double linear_tol; PetscReal mindt,maxdt; /* Variables used by Sundials */ MPI_Comm comm_sundials; double reltol; double abstol; /* only for using SS flag in SUNDIALS */ N_Vector y; /* current solution */ void *mem; PetscBool monitorstep; /* flag for monitor internal steps; itask=V_ONE_STEP or itask=CV_NORMAL*/ } TS_Sundials; #endif #endif