Each Trilinos package is a self-contained, independent piece of software with its own set of requirements, its own development team and group of users. Because of this, Trilinos itself is designed to respect the autonomy of packages. Trilinos offers a variety of ways for a particular package to interact with other Trilinos packages. It also offers a set of tools that can assist package developers with builds across multiple platforms, generating documentation and regression testing across a set of target platforms. At the same time, what a package must do to be called a Trilinos package is minimal, and varies with each package.
Basic Linear Algebra Libraries
- Epetra - Core linear algebra package. Facilitates
construction and manipulation of distributed and serial graphs, sparse and
dense matrices, vectors and multivectors.
- EpetraExt - Extensions to the core linear
algebra package, Epetra.
- Tpetra - Next-generation, templated version of
Petra, taking advantage of the newer advanced features of C++.
- Jpetra - Experimental Java version of the Petra
library.
- Kokkos - Core kernel package.
Preconditioners
- AztecOO - ILU-type preconditioner. See also
description under "Linear Solvers."
- IFPACK - Distributed algebraic preconditioner
package. Includes incomplete factorizations and relaxation-based
preconditioners in domain decomposition framework. Compatible with
AztecOO.
- ML - Multilevel, distributed memory
algebraic preconditioners. Provides multi-level, multigrid-like
preconditioners for distributed linear systems. Compatible with
AztecOO.
- Meros - Segregated preconditioning
package. Provides scalable block preconditioning for problems that coupled
simultaneous solution variables such as Navier-Strokes
problems.
Solvers
Linear Solvers
- Epetra - Provides wrappers for select BLAS and
LAPACK routines. See also description under "Basic Linear Algebra
Libraries."
- Teuchos - Provides wrappers for select BLAS and
LAPACK routines. See also description under "Basic Linear Algebra
Libraries."
- Pliris - An object-oriented interface to a LU
solver for dense matrices on parallel platforms.
- AztecOO - Preconditioned Krylov solver package.
Supercedes Aztec 2.1. Solves linear systems of equations via preconditioned
Krylov methods. Uses Epetra objects, compatible with IFPACK, ML and
Aztec.
- Belos - Next-generation iterative solvers written
using a traits interface, meaning that it has no explicit dependence on any
concrete linear algebra library. Instead, it can be used with any concrete
linear algebra library that implements the Thyra abstract interfaces and even
Epetra directly.
- Komplex - Complex linear solver package. Solves
complex-valued linear systems via equivalent real
formulations.
- Amesos - Direct solver classes.
Supports use of a growing list of third party direct solvers, including
DSCPACK, SuperLU, SuperLUDist and UMFPACK. Compatible with
Epetra.
Nonlinear Solvers
- NOX - Nonlinear solver package.
Abstract and concrete classes for construction and solution of nonlinear
problems.
- LOCA - LOCA is a software library for
performing bifurcation analysis of large-scale applications. When implemented
with an application code, LOCA enables the tracking of solution branches as a
function of system parameters and the direct tracking of bifurcation points.
LOCA is designed to drive application codes that use Newton's method to
locate steady-state solutions to nonlinear problems.
- MOOCHO - MOOCHO (Multifunctional
Object-Oriented arCHitecture for Optimization) is designed to solve
large-scale, equality and inequality nonlinearly constrained, non-convex
optimization problems (i.e. nonlinear programs) using reduced-space
successive quadratic programming (SQP) methods.
- Rythmos - Rythmos is a transient integrator
for ordinary differential equations and differential-algebraic equations with
support for explicit, implicit, one-step and multi-step algorithms. The
fundamental design of Rythmos is aimed at supporting operator-split
algorithms, multi-physics applications, block linear algebra, and adjoint
integration.
Eigensolvers
- Anasazi - Anasazi is an extensible and
interoperable framework for large-scale eigenvalue algorithms. The motivation
for this framework is to provide a generic interface to a collection of
algorithms for solving large-scale eigenvalue problems. Anasazi is
interoperable because both the matrix and vectors (defining the eigenspace)
are considered to be opaque objects---only knowledge of the matrix and
vectors via elementary operations is necessary. An implementation of Anasazi
is accomplished via the use of interfaces. Current interfaces available
include Epetra and so any libraries that understand Epetra matrices and
vectors (such as AztecOO) may also be used in conjunction with
Anasazi.
Automatic Differentiation
- Sacado - Sacado is a package for automatic
differentiation of C++ programs It provides simple yet fast and efficient
classes for forward, revers and Taylor polynomial mode automatic
differentiation using C++ template and operator overloading. The resulting
derivatives can be leverage in numerous ways including nonlinear solves with
NOX continuation and bifurcation analysis with LOCA optimization with MOOCHO, and time
integration wit Rythmos.
Domain Decomposition
Domain Decomposition
- Claps - Claps is a collection of domain
decomposition preconditioners and solvers.
Mortar Methods
- Moertel - Mortar methods that can be used in a
large class of nonconforming situations such as the surface coupling of
different physical models, discretization schemes or non-matching
triangulations along interior interfaces of a domain.
Repartitioning / Rebalancing
- Isorropia - Isorropia is a
repartitioning/rebalancing package, intended to assist with redistributing
objects such as matrices and matrix-graphs in a parallel execution setting,
to allow for more efficient computations. Isorropia is primarily an interface
to the Zoltan library, but can
be built and used with minimal capability without Zoltan.
Abstract Interfaces and Adapters
- Thyra - Abstract linear solver package. Replaces the
now-deprecated TSF family.
- PyTrilinos - Python interfaces to selected
Trilinos packages.
- WebTrilinos - Web interface to experiment with
Trilinos through a browser.
- Stratimikos - The package Stratimikos contains
a unified set of Thyra-based wrappers to linear solver and preconditioner
capabilities in Trilinos. The name Stratimikos was created from the Greek
words "stratigiki" and "grammikos" which which mean "strategy" and "linear in
English. The word "stratimikos" itself has not real meaning itself. The
Stratimikos package is also a place where unified testing of linear solvers
and preconditioners can be performed.
Utilities
- Teuchos - Common tools package.
- TriUtils - TriUtils is a package of utilites used
by many of the Trilinos packages.
- EpetraExt - Matrix/Vector read/write utilities.
See also description under "Basic Linear Algebra Libraries."
- RTOp - RTOp (reduction/transformation operators)
provides the basic mechanism for implementing vector operations in a flexible
and efficient manner.
- Galeri - Galeri is a package for generating linear
systems used by many of the Trilinos packages for examples and
tests.
Instructional
- Didasko - Didasko is the Trilinos tutorial, and
contains several examples, detailed descriptions, tips, and suggestions for
most Trilinos packages.
- New_Package - A sample Trilinos package
containing all of the infrastructure to install a new package into the
Trilinos framework. Contains the basic directory structure, a collection of
sample configuration and build files and a sample "Hello World"
package.



