                     NVECTOR_PARALLEL
                Release 2.5.0, March 2012


MPI parallel implementation of the NVECTOR module for SUNDIALS. 

NVECTOR_PARALLEL defines the content field of N_Vector to be a structure 
containing the global and local lengths of the vector, a pointer to the 
beginning of a contiguous local data array, an MPI communicator, and a 
boolean flag indicating ownership of the data array.

NVECTOR_PARALLEL defines seven macros to provide access to the content of 
a parallel N_Vector, several constructors for variables of type N_Vector,
a constructor for an array of variables of type N_Vector, and destructors
for N_Vector and N_Vector array.

NVECTOR_PARALLEL provides implementations for all vector operations defined
by the generic NVECTOR module in the table of operations.


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

The MPI parallel NVECTOR implementation is fully described in the user documentation
for any of the SUNDIALS solvers [1-5]. A PDF file for the user guide for a particular
solver is available in the solver's subdirectory under doc/.


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

For basic installation instructions see /sundials/INSTALL_NOTES. 
For complete installation instructions see any of the user guides.


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

[1] A. C. Hindmarsh and R. Serban, "User Documentation for CVODE v2.7.0," 
    LLNL technical report UCRL-MA-208108, December 2011.

[2] A. C. Hindmarsh and R. Serban, "User Documentation for CVODES v2.7.0," 
    LLNL technical report UCRL-MA-208111, December 2011.

[3] A. C. Hindmarsh and R. Serban, "User Documentation for IDA v2.7.0," 
    LLNL technical report UCRL-MA-208112, December 2011.

[4] R. Serban and C. Petra,  "User Documentation for IDAS v1.1.0," 
    LLNL technical report UCRL-SM-234051, December 2011.

[5] A. M. Collier, A. C. Hindmarsh, R. Serban,and C. S. Woodward, "User 
    Documentation for KINSOL v2.7.0," LLNL technical report UCRL-MA-208116, 
    December 2011.


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

v. 2.5.0 - Mar. 2012
v. 2.4.0 - May  2009
v. 2.3.0 - Nov. 2006
v. 2.2.0 - Mar. 2006
v. 2.1.1 - May  2005
v. 2.1.0 - Apr. 2005
v. 2.0.2 - Mar. 2005
v. 2.0.1 - Jan. 2005
v. 2.0   - Dec. 2004
v. 1.0   - Jul. 2002 (first SUNDIALS release)


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

v. 2.4.0 (May 2009) ---> v. 2.5.0 (Mar. 2012)
---------------------------------------------

- Bug fix:
   - consistently updated to using SUNDIALS_F77_FUNC in fcmix header files.

v. 2.3.0 (Nov. 2006) ---> v. 2.4.0 (May 2009)
---------------------------------------------

- none

v. 2.2.0 (Mar. 2006) ---> v. 2.3.0 (Nov. 2006)
----------------------------------------------

- Changes related to the build system
   - reorganized source tree. Header files in ${srcdir}/include/nvector; 
     sources in ${srcdir}/src/nvec_par
   - exported header files in ${includedir}/sundials

v. 2.1.1 (May 2005) ---> v. 2.2.0 (Mar. 2006)
---------------------------------------------

- none

v. 2.1.0 (Apr. 2005) ---> v. 2.1.1 (May 2005)
---------------------------------------------

- Changes to user interface
   - added argument to initialization routines to allow user to specify a
     different MPI communicator

- Changes to data structures
   - added N_VCloneEmpty to global vector operations table

v. 2.0.2 (Mar. 2005) ---> v. 2.1.0 (Apr. 2005)
----------------------------------------------

- none

v. 2.0.1 (Jan. 2005) ---> v. 2.0.2 (Mar. 2005)
----------------------------------------------

- Changes related to the build system
   - fixed autoconf-related bug to allow configuration with the PGI Fortran compiler
   - modified to use customized detection of the Fortran name mangling scheme 
     (autoconf's AC_F77_WRAPPERS routine is problematic on some platforms)
   - added --with-mpi-flags as a configure option to allow user to specify
     MPI-specific flags
   - updated Makefiles for Fortran examples to avoid C++ compiler errors (now use
     CC and MPICC to link)

v. 2.0 (Dec. 2004) ---> v. 2.0.1 (Jan. 2005)
--------------------------------------------

- Changes related to the build system
   - changed order of compiler directives in header files to avoid compilation
     errors when using a C++ compiler.

v. 1.0 (Jul. 2002) ---> v. 2.0 (Dec. 2004)
------------------------------------------

- Revised to correspond to new generic NVECTOR module
  (see sundials/shared/README).
- Extended the list of user-callable functions provided by NVECTOR_PARALLEL
  outside the table of vector operations.
- Revised parallel N_VMin and N_VMinQuotient to use BIG_REAL if
  local N is 0 or no quotients found.
- Revised the F/C interface to use underscore flags for name mapping
  and to use precision flag from configure.
- Revised F/C routine NVECTOR names for uniformity.
