ML Version of the Day
ChangeLog
/*
ML: A Multilevel Preconditioner Package
Copyright (2001) Sandia Corporation

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
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
Questions? Contact Jonathan Hu or Ray Tuminaro ({jhu|rstumin}@sandia.gov).
*/

ML -- History of visible changes
================================

This file reports (some of) the visible changes to ML.
Please submit ML bugs at software.sandia.gov/bugzilla, or
report bugs to {jhu|rstumin}@sandia.gov.

August 2008

* Added 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.

* Implemented MPI subcommunicators for direct solves on coarsest
level.  This will mainly impact large scale simulations (>1K processors).

Jan 2007

* Improved eigen-value estimates throughout, especially for
non-symmetric systems.
* Improved run times by using Ifpack's native (symmetric)
Gauss-Seidel for Epetra_CrsMatrix types (when Ifpack is available).

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

Dec 2006

* Fixed two overflow bugs in the random number generator.  This will
mainly impact very large parallel runs.

July 2006

* Moved ML over to using Makefile.export.ml instead of Makefile.export.

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

June 2006

* Fixed a subtle translation problem between ML's handling of ghost
unknowns and Epetra's.  This could only happen in parallel.
* Added a constructor for Maxwell's equations that takes the mass and
curl-curl terms separately.

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

Apr 2006

* Added support for (linear) matrix-free aggregation-based
multilevel preconditioners. Using the new class
ML_Epetra::MatrixFreePreconditioner, which depends on Epetra,
EpetraExt and Teuchos, one can compute a preconditioner just by
applying the operator. The class requires the graph of the operator,
and the number of PDE equations, which is supposed to be constant.
* Added a direct wrap for Epetra_CrsGraph objects.

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

Mar 2006

* Improved the ML/Epetra wrappers: if the ML_Operator is a wrapper of
an Epetra object, then ML automatically takes the Epetra pointer
stored in the data field of the ML_operator, and avoid an additional
RowMatrix wrapper. This makes the IFPACK relaxation smoothers
competitive with ML's internal ones for the finest-level matrix.
* Minor fixes to ml_RowMatrix: NumMyCols() was not correct.

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

Feb 2006

* Several fixes to the energy minimization procedures. The code is
now several times faster and more memory effective.

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

Dec 2005

* Added support for additional prolongator smoother sweeps (higher
degree polynomial smoothing).  This should be used with aggressive
coarsening (e.g., METIS, ParMETIS).

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

Aug 2005

* Added capabilities for algebraic nonlinear multigrid
The approach is based on a (possibly nonsymmetric) FAS-V-cycle
(FAS=full approximation scheme) and uses the package
NOX to supply nonlinear smoother/solvers. It is also
capable of generating it's own tangent stiffness matrix if
the user supplies a problem graph only.
This nonlinear multigrid scheme uses NOX interfaces to
interface to the application and can act as a preconditioner to
some NOX nonlinear solution scheme (e.g. nonlinear CG) or
as a standalone solver.
See the example ml/examples/NonlinML on how to use it.

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

Jul 2005

* Improved the organization of the MLAPI source files and examples.
Now the compilation of the MLAPI sources is about 20% faster,
and the compilation of the MLAPI examples up to 3 times faster.
Some never-used examples and classes have been deleted.
* Drop the support for command line parameters. A similar
capability is supported by the Python interface.

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

Jun 2005

* Completed the ML wrapper for Python, using SWIG. The ML module
still requires a manual configuration of shared libraries,
as done (on Linux/GCC at the moment) with script
make_shared_linux.sh, located in the PyTrilinos directory.
The basic functionalities of the MultiLevelPreconditioner class
are available, for both serial and parallel runs. The ML module
is compatible with the Epetra and AztecOO modules.
* Changed the wrapper names and contents for Epetra matrices.
Now the dynamic cast to Epetra_CrsMatrix and/or Epetra_VbrMatrix
is done only once in the construction of the preconditioner.
This results in an improvement of the performances up to
30% for smore test problems.

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

Apr 2005

* Added a simple finite element code, that can be used to test
ML and MLAPI preconditioners. The code offers a pure Galerkin and
a SUPG discretization for second order PDEs, in 2D and 3D, using
triangles, quads, tets, and hexahedra. L2 and H1 norms of the
computed solution and error can be computed. Results can be
visualized using MEDIT.

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

Mar 2005

* In the MLAPI namespace, added class MultiLevelAdaptiveSA, which
implements the \alpha SA algorithm (computation of slow
converging modes for problems with non-smooth kernels).
* Added a class, Ifpack_ML, that wraps an MultiLevelPreconditioner
as Ifpack_Preconditioner, so that ML can be used as local
solver in a domain decomposition preconditioner.
* Extended capabilities to read matrices from file in various
formats.
* Added support for adaptive smoothed aggregation within MLAPI.
A new class, called MultiLevelAdaptiveSA, has been added.
* Added a prototype of class for non-symmetric smoothed
aggregation.
* Added capability to write visualization files in legacy VTK
(Visualization toolkit) format.  These are readable by paraview,
which is freely available from www.paraview.org.  Supports 1D/2D/3D
point cloud visualization for aggregates, as well as solution
visualization.

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

Feb 2005

* Improved the MLAPI files.

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

Jan 2005

* The first cut of the MLAPI is now available. MLAPI is the
MATLAB-like parallel programming module of ML. Right now only
a limited subset of ML functionalities is available.
* Improved the MultiLevelPreconditioner class (now derived from
Epetra_Operator and no longer from Epetra_RowMatrix). Updated the
filtering/GGB algorithm, which now supports only Anasazi and the
non-symmetric cycle. Some never-used methods have been deleted
(like scaling).
* Improved compilation on several machines; now ML *should* compile
with no warnings on Linux using -g -ansi -pedantic -Wall
-Wno-format-extra-args'.

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

Dec 2004

* Improved the organization of the examples, introduces more
detailed comments and some README files. Deleted some outdated
examples.
* Bug fixes to the auxiliary matrix algorithm for problems defined
on stretched grids.

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

Nov 2004 (current version 3.1)

* ML now supports Zoltan as coarsening scheme (RCB only). Zoltan
can be used to create the aggregates, but also to redistribute
the next-level operator among the specified number of
processors (which can be less than the available number of
processoes)
* Several minor and major fixes to the example suite
* Added a test to verify the correctness of compiled examples
* Extended the test harness scripts and files
* a variable-block partiononing scheme (based on METIS) is
now available.

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

Oct 2004

* Support for new IFPACK smoothers. ML now supports IFPACK's
variable block Jacobi, Gauss-Seidel and symmetric Gauss-Seidel
preconditioners, as well as the IFPACK-Amesos preconditioners
(subdomain-based exact LU factorizations)
* Fixes support for Amesos solver (introducing LAPACK as coarse
solver)

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

May 2004 (current version 3.0, distributed with Trilinos 4.0)

* Update the ml user's guide (in the doc subdirectory)
* Improved interface to C++. Introduced two classes to use
ML as a preconditioner for Epetra_LinearProblem (both in the
ML_Epetra namespace): MultiLevelOperator and
MultiLevelPreconditioner.
* Basic feaures to solve Maxwell equations via MultiLevelPreconditioner
are now supported
* Improved interface to Amesos. Now ML can use Anasazi to estimate
the maximum eigenvalue for both symmetric and non-symmetric
problems.
* Improve interface to Anasazi
* Add power method to estimate lambda max for non-syymmetric
problems
* Improve the MLS preconditioner for block systems
* New options for configure. Drop --with-ml_epetra (and similar
for other Trilinos packages), and use --enable-epetra (and similar)
* Fixed various compiler warnings for LINUX (GNU and Intel),
SGI 64, DEC, west-cplant, ASCI Red

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

Apr 2004

* Change to support new Teuchos methods' name
* Change to support new Amesos methods' name
* Now support to ML native interface to SuperLU and SuperLUDIST
is deprecated in favor of Amesos interface

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

Jan 2004

* Add METIS and ParMETIS aggregation schemes
* Add Teuchos support
* Add interface to Amesos
* Add interface to IFPACK
* Add interface to Anasazi
* Add configure options --with-ml_epetra, --with-ml_parmetis2x,
--with-ml_parmetis3x, --with-ml_ifpack, --with-ml_anasazi
* Add two-level additive and hybrid domain decomposition
preconditioners (not officially supported)

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

Sep 2003 (version 2.0, distributed with Trilinos 3.1)

* ML has now been put "autotooled", i.e., autoconf and automake.
* Haim Waisman's GGB method has been implemented.
* Bill Cochran's cache optimizations for multiple RHSs have been
implemented.
* Bill also has added code so that ML will compile with c++ compilers.

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

ml2_1_0_0-branch-patch_1

* 1st patch for release ml2_1_0_0 (trilinos-release-3-01-branch).
* Bug fix for eigenvalue estimate that was causing Alegra
sinmag benchmark to fail.
* Added definitions for make macro CXX in architecture-dependent
makefiles in order for Alegra to be able to build epetra interfaces.
* Minor changes to block matrix (equivalent real form)
capabilities.
* Fixed compiler warnings.

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

mystring = ml2_1_0_0

* Many minor fixes to get the commuting relationship T_h P_n = P_e T_H
exactly right.
* Serial implementation of enriched prolongator.
* New norm for convergence of Maxwell solver.  This norm measure
and scales properly the range space and null space components of
the (curl,curl) operator.

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

mystring = ml2_0_0_5

* Changes in aggregation post-processing to improve aggregate quality.
* Added wrappers so that ML can use Epetra objects & so that
AztecOO can use ML as a preconditioner.
* Added block Maxwell capabilities for real block systems that are
equivalent to the complex systems arising from Maxwell in the
frequency domain.

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

mystring = ml2_0_0_3

* Added in smoothing of Reitzinger/Schoeberl prolongator.
* Least squares and smoothed l.s. prolongators in serial for R/S AMG.
* Enhanced detection of degenerate coarse grid matrices in building
R/S AMG hierarchy.

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

mystring = ml2_0_0_2

* Symmetrize Hiptmair smoother and finished off MLS within Hiptmair.

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

ml2_0_0_1

* MLS polynomial smoother
* matrix does not need to be scaled.
* Added more print control:
- "ml_inputfile" now takes an additional argument in the general
- problem specs section:
- "Print Level = [an integer]"
- 0 => minimal output
- 1 => some output (default)
- 2,3,... => increasing amounts of output

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

ml2_0_0_0

* AMG for Maxwell's equations
* Reitzinger Schoeberl AMG.
* Hiptmair smoother.

`