xref: /petsc/src/ts/impls/implicit/sundials/sundials.h (revision 7c4f633dc6bb6149cca88d301ead35a99e103cbb)
17cb94ee6SHong Zhang 
27cb94ee6SHong Zhang /*
37cb94ee6SHong Zhang     Provides a PETSc interface to SUNDIALS. Alan Hindmarsh's parallel ODE
47cb94ee6SHong Zhang    solver developed at LLNL.
57cb94ee6SHong Zhang */
67cb94ee6SHong Zhang 
77cb94ee6SHong Zhang #if !defined(__PETSCSUNDIALS_H)
87cb94ee6SHong Zhang #define __PETSCSUNDIALS_H
97cb94ee6SHong Zhang 
10*7c4f633dSBarry Smith #include "private/tsimpl.h"       /*I   "petscts.h"   I*/
116356e834SBarry Smith #include "private/pcimpl.h"               /*I   "petscpc.h"   I*/
12*7c4f633dSBarry Smith #include "private/matimpl.h"
137cb94ee6SHong Zhang 
147cb94ee6SHong Zhang /*
157cb94ee6SHong Zhang    Include files specific for SUNDIALS
167cb94ee6SHong Zhang */
177cb94ee6SHong Zhang #if defined(PETSC_HAVE_SUNDIALS)
187cb94ee6SHong Zhang 
197cb94ee6SHong Zhang EXTERN_C_BEGIN
2056a740aaSHong Zhang #include "cvode/cvode.h"                  /* prototypes for CVODE fcts. */
2156a740aaSHong Zhang #include "cvode/cvode_spgmr.h"            /* prototypes and constants for CVSPGMR solver */
2256a740aaSHong Zhang #include "sundials/sundials_smalldense.h" /* prototypes for small dense matrix fcts. */
2356a740aaSHong Zhang #include "sundials/sundials_types.h"      /* definitions of realtype, booleantype */
2456a740aaSHong Zhang #include "sundials/sundials_math.h"       /* definition of macros SQR and EXP */
2556a740aaSHong Zhang #include "nvector/nvector_parallel.h"     /* definition N_Vector and macro NV_DATA_P  */
267cb94ee6SHong Zhang EXTERN_C_END
277cb94ee6SHong Zhang 
287cb94ee6SHong Zhang typedef struct {
297cb94ee6SHong Zhang   Vec        update;    /* work vector where new solution is formed */
307cb94ee6SHong Zhang   Vec        func;      /* work vector where F(t[i],u[i]) is stored */
317cb94ee6SHong Zhang   Vec        rhs;       /* work vector for RHS; vec_sol/dt */
327cb94ee6SHong Zhang   Vec        w1,w2;     /* work space vectors for function evaluation */
337cb94ee6SHong Zhang   PetscTruth exact_final_time; /* force Sundials to interpolate solution to exactly final time
347cb94ee6SHong Zhang                                    requested by user (default) */
357cb94ee6SHong Zhang   /* PETSc peconditioner objects used by SUNDIALS */
367cb94ee6SHong Zhang   Mat  pmat;                         /* preconditioner Jacobian */
377cb94ee6SHong Zhang   PC   pc;                           /* the PC context */
387cb94ee6SHong Zhang   int  cvode_type;                   /* the SUNDIALS method, BDF or ADAMS  */
397cb94ee6SHong Zhang   TSSundialsGramSchmidtType gtype;
407cb94ee6SHong Zhang   int                       restart;
417cb94ee6SHong Zhang   double                    linear_tol;
427cb94ee6SHong Zhang 
437cb94ee6SHong Zhang   /* Variables used by Sundials */
447cb94ee6SHong Zhang   MPI_Comm comm_sundials;
457cb94ee6SHong Zhang   double   reltol;
467cb94ee6SHong Zhang   double   abstol;          /* only for using SS flag in SUNDIALS */
477cb94ee6SHong Zhang   N_Vector y;               /* current solution */
482c823083SHong Zhang   void     *mem;
497cb94ee6SHong Zhang } TS_Sundials;
507cb94ee6SHong Zhang #endif
517cb94ee6SHong Zhang 
527cb94ee6SHong Zhang #endif
537cb94ee6SHong Zhang 
547cb94ee6SHong Zhang 
557cb94ee6SHong Zhang 
567cb94ee6SHong Zhang 
57