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