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