Actual source code: petscpvode.h

      2: /*
      3:     Provides a PETSc interface to PVODE. Alan Hindmarsh's parallel ODE
      4:    solver developed at LLNL.
      5: */

     10:  #include src/ts/tsimpl.h
     11:  #include src/ksp/pc/pcimpl.h
     12:  #include src/mat/matimpl.h

     14: /*
     15:    Include files specific for PVODE
     16: */
     17: #if defined(PETSC_HAVE_PVODE)

     20: #include "sundialstypes.h"
     21: #include "cvode.h"
     22: #include "nvector.h"
     23: #include "nvector_parallel.h"
     24: #include "iterativ.h"
     25: #include "cvspgmr.h"

     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 */

     33:   Vec  w1,w2;     /* work space vectors for function evaluation */

     36:   PetscTruth  exact_final_time; /* force PVode to interpolate solution to exactly final time
     37:                                    requested by user (default) */

     39:   /*
     40:      PETSc peconditioner objects used by PVODE
     41:   */
     42:
     43:   Mat  pmat;                         /* preconditioner Jacobian */
     44:   PC   pc;                           /* the PC context */
     45:   int  cvode_type;                   /* the PVODE method, BDF  or ADAMS   */
     46:   TSPVodeGramSchmidtType gtype;
     47:   int                    restart;
     48:   double                 linear_tol;

     50:   /*
     51:      Variables used by PVode
     52:   */

     54:   MPI_Comm comm_pvode;
     55:   long int iopt[OPT_SIZE];
     56:   double   ropt[OPT_SIZE];
     57:   double   reltol;
     58:   double   abstol;          /* only for using SS flag in PVODE */
     59:   N_Vector y;               /* current solution */
     60:   void     *mem;            /* time integrater context */

     62:   int      nonlinear_solves,linear_solves; /* since creation of object */
     63: } TS_PVode;

     65: #endif

     67: #endif