ML  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ML: Multi Level Preconditioning Package

Table of Contents

Where to find documentation

ML is a large package. The following documents are suggested for ML users:

Probably, the best way to understand ML is to use it. Several examples are provided in the Trilinos/packages/ml/examples subdirectories. Users are suggested to compile and run these examples. Often, a copy-and-paste approach is good enough to start with ML. This is particularly true for the ML/Epetra interface.

Examples source code

Several examples are distributed within ml. You can browse the source file of the following examples:

Quick introduction to the ML/Epetra interface

To take advantage of the ML/Epetra interface, ML must be configured with the following options:

We suggest enabling the Amesos interface (–enable-amesos). Amesos is a Trilinos package that interfaces with various serial and parallel sparse direct solvers. Morever, it contains a simple serial sparse direct solver (KLU), that is quite good for small matrices.

New users interested in the ML/Epetra interface should take a look to the following classes (both in the ML_Epetra namespace):

Detailed examples are reported in:

The ML_Epetra::MultiLevelPreconditioner class

This documentation is targeted to the ML_Epetra::MultiLevelPreconditioner class. It is very useful to have a list of the available parameters for a given option. This can be in obtained from the comments of:

Main Structures of ML

The following structure are used by ML:

Conversion utilities from/to Epetra matrices.

ML is bases on a particular (and very flexible) matrix format, defined by the ML_Operator struct. A set of conversion utilities exists to:

All the conversion functions are declared in file ml_epetra_utils.h.

ML interface to Amesos

If configured with options –enable-amesos –enable-epetra –enable-teuchos, ML can take advantage of Amesos to solve the coarse problem.

Details about the ML/Amesos interface are reported in file ml_amesos_wrap.h.

ML supports directly SuperLU (serial version) and SuperLU_DIST (distributed version). These interfaces are deprecated in favor of the Amesos interface (although still working).

ML interface to IFPACK

If configured with options –enable-ifpack –enable-epetra –enable-teuchos, ML can use IFPACK to define ILU-type smoothers.

Details about the ML/IFPACK interface are reported in file ml_ifpack_wrap.h.

ML interface to Anasazi

If configured with options –enable-anasazi –enable-epetra –enable-teuchos, ML can use Anasazi for eigenvalue computations.

The user can:

Details about the ML/Anasazi interface are reported in file ml_anasazi.h, and in the ML_Anasazi namespace.

ML also have an interface to ARPACK and PARPACK.

Overview of MLAPI

An object-oriented layer based on ML, called MLAPI, can be used to access most of the ML capabilites in a very way. Click Overview of MLAPI for more details.

ML for Python Applications

ML is accessible from Python through the PyTrilinos package. Using PyTrilinos, ML can be used to create black-box preconditioners based on smoothed aggregation for both serial and parallel runs, using a standard Python interpreter. Please refer to the PyTrilinos homepage for more details.

ML/Thyra adapters

Adapters are available for using ML with the Thyra solver components. See ML/Thyra adapters.

Debugging Utilities

It is possible to instruct ML_Epetra::MultiLevelPreconditioner to print out the process ID, so that one can attach to the desired process. One can proceed as follows:

(see also the documentation of method ML_Epetra::MultiLevelPreconditioner::BreakForDebugger()).

If ML is compiled with -DML_MEM_CHECK, the destruction of ML_Epetra::MultiLevelPreconditioner() will verify that memory has not been corrupted, and that no memory leak occurs. Note that this option may be computationally expensive, and it is not recommended for performance evaluations.

(Incomplete) History of visible changes

Consult the ChangeLog file. The README file gives some other information about ML.


Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
license for use of this work by or on behalf of the U.S. Government.

This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301