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 10c6db04a5SJed Brown #include <private/tsimpl.h> /*I "petscts.h" I*/ 11c6db04a5SJed Brown #include <private/pcimpl.h> /*I "petscpc.h" I*/ 12c6db04a5SJed Brown #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 20c6db04a5SJed Brown #include <cvode/cvode.h> /* prototypes for CVODE fcts. */ 21c6db04a5SJed Brown #include <cvode/cvode_spgmr.h> /* prototypes and constants for CVSPGMR solver */ 22c6db04a5SJed Brown #include <nvector/nvector_parallel.h> /* definition N_Vector and macro NV_DATA_P */ 237cb94ee6SHong Zhang EXTERN_C_END 247cb94ee6SHong Zhang 257cb94ee6SHong Zhang typedef struct { 267cb94ee6SHong Zhang Vec update; /* work vector where new solution is formed */ 27*0679a0aeSJed Brown Vec ydot; /* work vector the time derivative is stored */ 287cb94ee6SHong Zhang Vec w1,w2; /* work space vectors for function evaluation */ 29ace3abfcSBarry Smith PetscBool exact_final_time; /* force Sundials to interpolate solution to exactly final time 307cb94ee6SHong Zhang requested by user (default) */ 317cb94ee6SHong Zhang /* PETSc peconditioner objects used by SUNDIALS */ 327cb94ee6SHong Zhang int cvode_type; /* the SUNDIALS method, BDF or ADAMS */ 337cb94ee6SHong Zhang TSSundialsGramSchmidtType gtype; 347cb94ee6SHong Zhang int restart; 357cb94ee6SHong Zhang double linear_tol; 367cb94ee6SHong Zhang 37f1cd61daSJed Brown PetscReal mindt,maxdt; 38f1cd61daSJed Brown 397cb94ee6SHong Zhang /* Variables used by Sundials */ 407cb94ee6SHong Zhang MPI_Comm comm_sundials; 417cb94ee6SHong Zhang double reltol; 427cb94ee6SHong Zhang double abstol; /* only for using SS flag in SUNDIALS */ 437cb94ee6SHong Zhang N_Vector y; /* current solution */ 442c823083SHong Zhang void *mem; 45ace3abfcSBarry Smith PetscBool monitorstep; /* flag for monitor internal steps; itask=V_ONE_STEP or itask=CV_NORMAL*/ 467cb94ee6SHong Zhang } TS_Sundials; 477cb94ee6SHong Zhang #endif 487cb94ee6SHong Zhang 497cb94ee6SHong Zhang #endif 507cb94ee6SHong Zhang 517cb94ee6SHong Zhang 527cb94ee6SHong Zhang 537cb94ee6SHong Zhang 54