                             ARKODE
                   Release 1.0.2, August 3, 2015
                       Daniel R. Reynolds
                  Department of Mathematics, SMU

ARKODE is a solver for multi-rate ODE systems (initial value problems) 
given in explicit form M*dy/dt = f(t,y). It is written in ANSI standard C.

ARKODE can be used both on serial and parallel (MPI) computers.  The main
difference is in the NVECTOR module of vector kernels.  The desired
version is obtained when compiling the example files by linking the
appropriate library of NVECTOR kernels.  In the parallel version,
communication between processors is done with the MPI (Message Passage
Interface) system, with OpenMP, or with Pthreads.

When used with the serial NVECTOR module, ARKODE provides both direct (dense 
and band) and preconditioned Krylov (iterative) linear solvers. Many different
iterative solvers are available: scaled preconditioned GMRES (SPGMR), 
scaled preconditioned Flexible GMRES (SPFGMR), scaled preconditioned 
conjugate gradient, scaled preconditioned BiCGStab (SPBCG), 
and scaled preconditioned TFQMR (SPTFQMR). When ARKODE is used with 
the parallel NVECTOR module, only the Krylov linear solvers are available. 
(An approximate diagonal Jacobian option is available with both versions.)  
For the serial version, there is a banded preconditioner module called 
ARKBANDPRE available for use with the Krylov solvers, while for the 
parallel version there is a preconditioner module called ARKBBDPRE 
which provides a band-block-diagonal preconditioner.

ARKODE is part of a software family called SUNDIALS: SUite of Nonlinear
and DIfferential/ALgebraic equation Solvers.  This suite consists of
ARKODE, CVODE, CVODES, KINSOL, IDAS, and IDA.  The directory structure 
of the package supplied reflects this family relationship. 

For use with Fortran applications, a set of Fortran/C interface routines,
called FARKODE, is also supplied.  These are written in C, but assume that
the user calling program and all user-supplied routines are in Fortran.

The notes below provide the location of documentation, directions for the 
installation of the ARKode package, and relevant references. Following that 
is a brief history of revisions to the package.


A. Documentation
----------------

/sundials/doc/arkode/ contains PDF files for the ARKODE User Guide [1]
(ark_guide.pdf) and the ARKODE Examples [2] (ark_examples.pdf) documents.


B. Installation
---------------

For basic installation instructions see the file /sundials/INSTALL_GUIDE.pdf. 
For complete installation instructions see the "Installation Procedure"
chapter in the ARKODE User Guide.


C. References
-------------



D. Releases
-----------

v. 1.0.2 - Aug. 2015
v. 1.0.1 - Mar. 2015
v. 1.0.0 - Mar. 2015


E. Revision History
-------------------

v. 1.0.1 (Mar. 2015) ---> v. 1.0.2 (Aug. 2015)
---------------------------------------------
- Bug fixes
  - Fixed Fortran interfaces to enable calls to *GetErrWeights, *GetEstLocalErrors,
    and *GetDky within a time step.
  - Fixed bug in Butcher table.
  - Fixed error in arkDoErrorTest in recovery after failure.
    
- New Features
  - Updated Anderson acceleration implementation with QR updating.

v. 1.0.0 (Mar. 2015) ---> v. 1.0.1 (Mar. 2015)
---------------------------------------------

- Bug fixes
  - Fixed loop limit bug in SlsAddMat function.
  - In interfaces to KLU and SuperLUMT, added #include lines, 
    and removed redundant KLU structure allocations.
  - Minor documentation updates
  - Fixed logic bugs in three ARKSpilsSet*** functions.
  - Fixed bug in setting user data in two ARKode Fortran interface functions.


v. 1.0.0 Mar. 2015
--------------------------------------------

2013   DATE WRITTEN.  First released March 2015


