Trilinos is a collection of compatible software packages that support parallel linear algebra computations, solution of linear, non-linear and eigen systems of equations and related capabilities. The majority of packages are written in C++ using object-oriented techniques. All packages are self-contained, with the Trilinos top layer providing a common look-and-feel and infrastructure.


The version 4.0 general release contains 16 packages: Amesos, AztecOO, Epetra, EpetraExt, Ifpack, Kokkos, Komplex, LOCA, ML, New_Package, NOX, Teuchos, Triutils, TSFCore, TSFCoreUtils and TSFExtended.

The limited release contains an additional 6 packages that are available in special situations by request, and will be part of Release 5.0, presently scheduled for February 2005. These are: Anasazi, Belos, Jpetra, Meros, Pliris, Tpetra.

Features and associated packages in general release:

  • Revised and expanded Trilinos tutorial.
  • Flexible, parallel distributed data model that supports standard data distributions, general 2D distributions of sparse and dense matrices, and parallel data redistribution tools (Epetra, EpetraExt, Kokkos).
  • Uniform access to a collection of third-party direct solver libraries, including UMFPACK, DSCPACK, SuperLU (serial and distributed), MUMPS, ScaLAPACK and KLU (Amesos).
  • Algebraic, multi-level and domain decomposition preconditioners (ML, IFPACK).
  • A collection of robust Krylov iterative methods with a flexible interface for user-defined stopping criteria (AztecOO, Komplex).
  • A collection of non-linear solvers, including tensor methods and continuation algorithms (NOX, LOCA).
  • A collection of generic interfaces that support development of abstract numerical algorithms (TSFCore, TSFExtended).
  • Utilities such portable C++ interfaces to the BLAS and a subset of LAPACK (Teuchos).
  • A prototype package to facilitate Trilinos-compatibility for new development or existing software (New_Package).

Additional features and associated packages in limited release:

  • Eigensolvers (Anasazi).
  • Block Krylov linear solvers (Belos).
  • Segregated preconditioners for fully coupled systems (Meros).
  • Parallel distributed dense solvers (Pliris).
  • Next generation C++ parallel distributed linear algebra classes (Tpetra).
  • Parallel distributed linear algebra classes for Java programmers (Jpetra).

More information:

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


Amesos Release notes for version 1.0

Amesos, the direct sparse solver package in Trilinos, provides a common object-oriented interface to a growing number of the best sparse direct solver packages in the world. Version 1.0 contains the following classes:
Amesos_Klu -
Interface to Tim Davis' KLU, a serial code for very sparse matrices, especially those arising in circuit simulation codes.
Amesos_Umfpack -
Interface to Tim Davis' UMFPACK, a general purpose serial sparse direct solver.
Amesos_Dscpack -
Interface to Padma Raghavan's DSCPACK, a parallel solver for symmetric matrices
Amesos_Superlu -
Interace to Xiaoye Li's SuperLU, a general purpose serial sparse direct solver.
Amesos_Superludist -
Interace to Xiaoye Li's SuperLU, a general purpose parallel sparse direct solver. The Amesos_Superludist test fails in this release because iterative refinement was turned off by .
Amesos_Mumps -
Interace to Patrick Amestoy's MUMPS, a general purpose parallel sparse direct solver.
Amesos_Scalapack -
Interface to ScaLAPACK's general purpose parallel dense direct solver. (This prototype interface has limited capabilities and testing.)
Amesos_Klu is built by default, the others require that the underlying third party library be built first.


  • Condition number estimates based on spectral estimates generated by CG and GMRES methods.


  • Reworked unstructured communication layer. New version has much better support for sparse matrices with large variations in nonzero counts per row.


  • Global and local sparse matrix permutations for Epetra objects.
  • Sparse matrix times sparse matrix multiply for Epetra CRS matrices.
  • Import and Export support for Matrix Market format files, in serial and distributed parallel.


  • No notable new features.

Kokkos (New)

  • Core sparse matrix kernel package. Isolates the performance-sensitive operations in a single small package that can be optimized for any processor architecture.
  • Supports matrix structure analysis for repeated reuse of structure.
  • Provide default optimized version of kernels for 1 or more right hand sides for sparse matrix vector multiplication and sparse triangular solve.


  • No notable new features.


LOCA highlights:
  • An improved interface for bifurcation tracking making it easier to interface to application codes. Now bifurcation tracking methods are specified through parameter lists instead of instantiating the bifurcation group explicitly and passing it in to the stepper. Initial data for the bifurcation is also passed through the parameter list using a new capability to pass arbitrary pointers through the list.
  • A new turning point tracking method that avoids singular matrix solves. This method has been shown to be significantly more robust than the traditional bordering method. Currently this method is only available for the Epetra group using the AztecOO linear solver.
  • A new arc-length continuation method that uses Householder transformations to solve the extended arc-length equations instead of bordering. Currently this method is only available for the Epetra group using the AztecOO linear solver.
  • The Anasazi eigensolver interface has been moved to the generic group level making it available for all group interfaces.
  • Several bug fixes in the continuation stepping logic.
  • More documentation including a turning point tracking tutorial using the Chan problem.


The ML version contained in Trilinos 4.0 has been enhanced with respect to the one included in the Trilinos 3.1 distribution as follows:
  • ML can be used as a black-box tool to define aggregation-based multilevel and domain decomposition preconditioners with few lines of code. The preconditioner is built using this a list of parameters, and the Epetra_RowMatrix object only.
  • The serial and parallel direct linear system solvers supported by Amesos are now available for the solution of the coarse problem. If required, the coarse problem can be solved on a subset of the available processors.
  • Two new aggregation schemes, based on graph partitioning algorithms, have been added. Interfaces to the third-party libraries METIS and ParMETIS are available. Users can now specify the number of nodes to be included in each aggregate, or the number of local aggregates, or the number of global aggregates. With ParMETIS, aggregates can span more than 1 processor.
  • ML users can take advantage of several other Trilinos packages: Anasazi (for eigenvalue computatinos), Triutils (to define example matrices), IFPACK (to define ILU-based smoothers).
  • The set of examples has been extended. Now about 30 examples are available, mainly in C. Some C++ examples are included in the distribution.
  • Improved the MLS preconditioner for block systems.
  • (Limited) visualization and statistics capabilities are available for METIS and Uncoupled aggregation schemes. The user can visualize the aggregates using OpenDX.
  • A new user's guide can be found in the doc subdirectory (Sandia report SAND-2004-2195). Also, doxygen documentation is now used by ML developers.


  • No notable new features.


  • Tensor method solver has been added based on Bouricha's Algorithm.
  • Refactored version of NOX::Epetra::Group called NOX::EpetraNew::Group
    • more efficient linear solves
    • allows LOCA algorithms to use Matrix-Free Newton-Krylov operators
    • supports ML Preconditioners
  • Initial implementation of Multivector support. This is not fully implemented but is available for users to test out.
  • New status tests for (1) detecting divergence and (2) detecting NaN and Inf values.
  • Modifications to trust region to allow for adjustable forcing term criteria.

Teuchos (New)

Collection of useful utilities commonly needed across many Trilinos packages.
  • ParameterList support: Construction and use of key/value pair lists to record and pass information such as solver configuration parameters and solver status results.
  • Portable reference counter pointer class: Supports memory-leak-free software development and usage.
  • Traits definitions for templated datatypes.
  • Floating Pointing Operation Counters, Portable Timers.
  • Generic, templated and portable interfaces to BLAS and LAPACK.
  • Support for XML data exchange.


  • Added matrix gallery to generate or read test matrices.
  • Added class to support reading and interrogating command line arguments.

TSFCore/TSFCoreUtils (New)

A collection of abstract interfaces for developing abstract numerical algorithms independent of a concrete linear algebra library. Also contains Epetra adaptors that allow users of TSFCore to utilize Epetra as the underlying concrete library.
  • Supports concepts of an abstract VectorSpace, Vector, MultiVector and Linear Operator objects.
  • Provides optimal implementation of these interfaces using Epetra.

TSFExtended (New)

Derives from TSFCore. Provides overloaded operator support and operator aggregation capabilities.
  • Supports use of "+", "*" "-" "/" and "=" symbols with vector, multivectors and linear operators.
  • Supports implicit construction of composite operators, inverse operators, and block operators from existing TSFExtended operators.

New Trilinos Level Option

A Trilinos-level configure option, --disable-default-packages, is available in Trilinos 4. When used, all packages that are enabled by default are disabled. This option allows users to enable only the packages that are necessary without individually disabling packages that are enabled by default. Note that when using this option, Trilinos will silently enable packages that are necessary to satisfy the dependencies of any packages that are enabled, but packages that can use default packages might assume that the default package is enabled. In this case it will be necessary to explicitly enable or disable the default package. For example, if --disable-default-packages and --enable-ml are used, ml will assume that Epetra and AztecOO are enabled, so Epetra and AztecOO will either need to be explicitly enabled or disabled.

Known Build Issues

Although most Trilinos packages build on most Unix-like platforms, there are a few known build issues.
  • TSFCore, TSFCoreUtils, and TSFExtended do not build with gcc 2.96 compilers.
  • TSFCore, TSFCoreUtils, and TSFExtended do not build on some older Sun machines.
  • TSFCore, TSFCoreUtils, and TSFExtended do not build on SGI machines.
  • TSFCore, TSFCoreUtils, and TSFExtended do not build with old PGI compilers.
  • TSFExtended does not build on OSF1.
  • Some Trilinos packages still use .H and .C extensions for some C++ files. This is not portable, particularly to machines that are not case-sensitive.