###############################################################################
#                                                                             #
# Trilinos Release 9.0 Release Notes                                          #
#                                                                             #
###############################################################################

Overview:

The Trilinos Project is an effort to develop algorithms and enabling 
technologies within an object-oriented software framework for the solution of 
large-scale, complex multi-physics engineering and scientific problems. All 
packages are self-contained, with the Trilinos top layer providing a common 
look-and-feel and infrastructure.

Packages:

The version 9.0 general release contains 37 packages: Amesos, Anasazi, Aztecoo,
Belos, Didasko, Epetra, Epetraext, Fei*, Galeri, Ifpack, Isorropia, Kokkos,
Komplex, Loca, Meros, ML, Moertel, Moocho, New_Package, NOX, Pamgen*, Phalanx*,
PhdMesh*, Pliris, PyTrilinos, RTOp, Rythmos, Sacado, Stratimikos,
Sundance*, Teuchos, ThreadPool*, Thyra, Trilinoscouplings, Triutils,
WebTrilinos, and Zoltan*

(* denotes packages that are being released as a part of Trilinos for the
first time.)

The limited release contains an additional 4 packages that are available in
special situations by request. These are: Claps, Intrepid, RBGen, and Tpetra.

More information:

Trilinos website: http://trilinos.sandia.gov

===============================================================================

Package Release Notes:

-------------------------------------------------------------------------------

Amesos

(*) Amesos now includes Paraklete version 0.3.

(*) Amesos 2.4 in Trilinos 9.0 is compatible with Tim Davis' SuiteSparse
    version 3.0.0 (not the latest version).

(*) Known bug: Paraklete does not currently work on 64-bit machines.

-------------------------------------------------------------------------------

Anasazi

(*) The Anasazi package released in Trilinos 9.0 includes a new type of
    eigensolver.

(*) The IRTR solvers are implicit versions of the Riemannian Trust-Region
    eigensolvers (Absil, Baker, Gallivan 2007).

(*) Two implementations are provided, which balance computation/memory
    trade-offs via the ability to disable caching of operator applications.

-------------------------------------------------------------------------------

Epetra

Epetra support for PETSc matrices: The Epetra_PETScAIJMatrix class is a
lightweight wrapper class for encapsulating PETSc serial and parallel AIJ
matrices. Its intended audience is PETSc users who would like to build and
apply Trilinos preconditioners and solvers. This class derives from the
Epetra_RowMatrix class.

-------------------------------------------------------------------------------

Isorropia

Isorropia has expanded its scope from partitioning and load-balancing to
include other algorithms for combinatorial scientific computing. The primary
focus is still on partitioning and load-balancing of matrices and vectors.
Version 3.0 includes a significant code refactoring compared to earlier
versions to improve efficiency and robustness.

(*) Isorropia now depends on Zoltan, which is available as a package in
    Trilinos 9.0.  (Zoltan is automatically enabled by Isorropia.)

(*) The default partitioning method for sparse matrices is Zoltan's hypergraph
    partitioner, which is significantly better than the internal method.

(*) New features: Graph/matrix coloring and graph/matrix ordering (nested
    dissection).

(*) Redesign of the class structure to support new features. An
    Isorropia::Operator is the parent class of Partitioner, Colorer, and
    Orderer.

(*) Significant improvement in the efficiency (run time and memory usage) of
    redistributing Epetra matrices due to improved memory allocation.

(*) New redistribute_reverse() method in the Redistributor to support moving
    vectors back and forth between two distributions.

(*) When redistributing Epetra matrices, improved default choices for the maps.
    The call to FillComplete() is now optional, allowing the application to
    supply its own range and domain maps.

(*) Several minor changes in interface to enforce more consistent naming
    schemes, but version 3.0 is fully backwards compatible.

-------------------------------------------------------------------------------

Komplex

The Komplex package includes a new class that provide equivalent real
formulation capabilities to Epetra users called Komplex_LinearProblem.This is
the newest capability and should be used if at all possible.
Komplex_LinearProblem constructs an Epetra_LinearProblem from existing matrix
and coefficient data. A real matrix of twice the dimension of the original
complex-valued problem is explicitly constructed as an Epetra_CrsMatrix. Given
this matrix and the user-supplied RHS (and possibly an initial guess), the
Komplex_LinearProblem object is ready for use with any Trilinos solver and
preconditioner.

-------------------------------------------------------------------------------

ML

(*) New support for PETSc smoothers in the case when the fine grid matrix is
    really a PETSc data structure.  This is meant to be used in conjunction
    with the Epetra_PETScAIJMatrix class.

(*) New use of MPI subcommunicators for direct solves with KLU on the coarsest
    level.  This will mainly impact large scale simulations (>1K processors).

(*) New restart capability to ensure behavior can be reproduced exactly from
    solve to solve.

(*) New interfaces to Zoltan's hypergraph repartioning algorithms.

-------------------------------------------------------------------------------

MOOCHO

Mostly minor changes which include:

(*) Added response-only DiagonalQuadraticResponseOnlyOpt exampled based on an
    EpetraExt::ModelEvaluator.  This is to show users how to run MOOCHO on an
    unconstrained problem in parallel.

(*) Cleaned out some junk

-------------------------------------------------------------------------------

Phalanx

Phalanx is a local field evaluation kernel specifically designed for general
partial differential equation solvers.  The main goal of Phalanx is to
decompose a complex problem into a number of simpler problems with managed
dependencies to support rapid development and extensibility of the PDE code.
Through the use of template metaprogramming concepts, Phalanx supports
arbitrary user defined data types and evaluation types.  This allows for
unprecedented flexibility for direct integration with user applications and
provides extensive support for embedded technology such as automatic
differentiation for sensitivity analysis and uncertainty quantification.

-------------------------------------------------------------------------------

RTOp

Major refactoring of all code.

(*) All interfaces in rtop/src/interfaces are now "memory safe" using Teuchos
    memory management classes

(*) Support code in rtop/src/support has been significantly changed to remove
    duplication and bloat, provide for memory safely, and make it infinitely
    easier to create simple RTOp subclasses.

(*) All of the concrete RTOp classes in rtop/src/ops_lib have been updated.

(*) All of the simpler RTOps now use a simple set of macros and provide good
    examples for users on how to create their own RTOp classes.  This includes
    very detailed unit tests for all of the code.

(*) Old MPI junk that was not needed anymore was removed.

(*) Removed SUNDIAL RTOp subclasses since these are not being used and there
    was no unit tests for them.

With few exceptions, all changes should be backward compatible for clients of
the RTOpPack::RTOpT abstract interface (search for "deprecated" comments).

-------------------------------------------------------------------------------

Stratimikos

Mostly minor changes which include:

(*) Changed the name of Thyra::DefaultRealLinearSolverBuilder to
    Stratimikos::DefaultLinearSolverBuilder.

(*) Added some better unit tests, especially for adjoint solves.

-------------------------------------------------------------------------------

Teuchos

The Teuchos package released in Trilinos 9.0 has some additional tools to
assist users and developers with memory management and unit testing:

(*) Memory Management Classes:  The suite of debug-checking memory management
    classes has been extended to include the Ptr, ArrayView, and Tuple classes.
    Together with the existing classes RCP, ArrayRCP, and Array, these form a
    complete memory management system to replace all raw pointers to single
    objects and contiguous arrays of value-type objects in all
    application-level code.  For a few details on how these should be used, see:

     http://www.cs.sandia.gov/~rabartl/ThyraCodingGuideLines.pdf

(*) xUnit-like Unit Testing Infrastructure:  Full featured support for native
    unit testing has been developed.  See examples in teuchos/test/UnitTest.

-------------------------------------------------------------------------------

Thyra

(*) Added new templated Thyra::DefaultSerialDenseLinearOp[WithSolve]Factory
    subclasses to allow use of LAPACK for solving linear systems using
    Thyra::MultiVector objects as input.  This was mostly just to allow for
    better, more independent unit tests.

(*) Some refactorings to replace raw C++ pointers with safe Teuchos memory
    management classes (but a lot of work still needs to be done here)

(*) Removed the SUNDIALS RTOp wrappers since they no longer exist in RTOp

(*) Changed from Thyra::ETransp to Thyra::EOpTransp to avoid doxygen conflicts
    with Teuchos::ETransp.  A backward-compatible typedef to Thyra::ETransp
    still exists to not break existing external code.

With few exceptions, all changes should be backward compatible
(search for "deprecated" comments).

-------------------------------------------------------------------------------

Zoltan

The Zoltan Toolkit provides critical data-management services to a wide range
of parallel applications.  Zoltan includes many utilities needed by
unstructured and/or adaptive parallel applications. These utilities include

  (*) a suite of dynamic load-balancing and parallel partitioning tools
      (including geometric, hypergraph-based and graph-based algorithms) that
      distribute data over sets of processors for balanced computation
      with low interprocessor communication costs,
  (*) data migration tools that simplify movement of data to new parts,
  (*) parallel graph/matrix ordering algorithms for fill-reducing matrix
      ordering, including interfaces to PT-Scotch (LaBRI/INRIA-Bordeaux) and
      ParMETIS (U. Minnesota),
  (*) parallel graph coloring including distance-1 and distance-2 coloring,
  (*) distributed data directories that efficiently locate off-processor data,
      and
  (*) an unstructured communication package that greatly simplifies
      interprocessor communication.

Zoltan's native interface is object-oriented and easy-to-use;
it enables Zoltan to be used by a wide range of different applications.
Zoltan is designed to be flexible and extensible, so different algorithms
can be used, compared and added easily.
Zoltan has been used in particle simulations, finite element methods with
adaptive mesh refinement, linear solvers and preconditioners, circuit
simulations, crash simulations and contact detection, and
biological cell simulations.

The Zoltan toolkit was first released in 2001; this release is Zoltan v3.1.
New features in Zoltan v3.1 include
  (*) Graph/Matrix ordering interface to PT-Scotch, a high-quality graph
      ordering and partitioning library from LaBRI/INRIA-Bordeaux;
  (*) New matrix ordering interface that returns ordering information such as
      permutations and separators to the application;
  (*) New hypergraph partitioning options for inexpensively refining
      partitions;
  (*) Robustness improvements to Zoltan's parallel hypergraph partitioner and
      repartitioner;
  (*) New Autotools build environment;
  (*) Serial, non-MPI builds enabled through the Autotools build environment;
      and
  (*) Tight integration with the Trilinos project, including Trilinos package
      Isorropia, a matrix-based interface to Zoltan.

Many applications use both Zoltan and Trilinos.  Zoltan's
inclusion in Trilinos simplifies the configuration and build process for
those applications.  It also enables tighter coupling between Trilinos
packages that use Zoltan, such as the Isorropia package of Epetra-based
interfaces to Zoltan's partitioning, ordering and coloring capabilities.

Zoltan can still be built as a stand-alone toolkit separate from Trilinos,
as backward compatibility with previous Zoltan releases has been maintained.

Please visit the Zoltan Home Page (http://www.cs.sandia.gov/Zoltan) for
more information on Zoltan.

-------------------------------------------------------------------------------