/*
                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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
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.

