// $Id$
// Version: $Name$
//
-// Copyright (C) 2003, 2005, 2006 by the deal.II authors
+// Copyright (C) 2003, 2005, 2006, 2009 by the deal.II authors
//
// This file is subject to QPL and may not be distributed
// without copyright and license information. Please refer
* @defgroup mg Multilevel support
*
* Classes that have to do with multigrid algorithms.
+ *
+ * The main class with implementation of the multigrid scheme is
+ * Multigrid with its function Multigrid::cycle(). It uses the
+ * following abstract classes in order to perform the multigrid cycle:
+ *
+ * <ol>
+ * <li> MGMatrixBase contains the level matrices with a fairly general
+ * implementation in MGMatrix
+ * <li> MGCoarseGridBase is the solver on the coarsest level.
+ * <li> MGSmootherBase performs smoothing on each level.
+ * <li> MGTransferBase organizes the transfer between levels.
+ * </ol>
+ *
+ * Additionally, there is a class PreconditionMG, which is a wrapper
+ * around Multigrid with the standard interface of deal.II @ref
+ * Preconditioners. PreconditionMG also uses the classes inheriting
+ * from MGTransferBase, for instance MGTransferPrebuilt, where it uses
+ * MGTransferPrebuilt::copy_to_mg() and
+ * MGTransferPrebuilt::copy_from_mg_add(), which transfer between the
+ * global vector and the level vectors.
+ *
+ * Finally, we have several auxiliary classes, namely MGLevelObject,
+ * which stores an object on each level
*
* See the step-16 example program on how to use this functionality.
*/
// $Id$
// Version: $Name$
//
-// Copyright (C) 2003, 2004, 2006, 2007 by the deal.II authors
+// Copyright (C) 2003, 2004, 2006, 2007, 2009 by the deal.II authors
//
// This file is subject to QPL and may not be distributed
// without copyright and license information. Please refer
* decompositions (ILU). In addition, sparse direct solvers can be used as
* preconditioners when available.
*
- * In principle, and in the mathematical literature, preconditioners are
- * treated as matrices in the sense that one can do a matrix-vector
- * multiplication with them. On the other hand, one doesn't usually have an
- * element-by-element representation of these matrices, only their action on a
- * vector. The preconditioner classes therefore often have a <tt>vmult()</tt>
- * function that symbolizes the ability to perform matrix-vector
- * multiplications, just like the real matrix classes.
+ * In order to be used by deal.II solvers, preconditioners must
+ * conform to the standard matrix interface. Solvers use the function
+ * <tt>vmult()</tt> of the preconditioner. Some solvers may also use
+ * <tt>Tvmult()</tt>.
*
* @ingroup LAC
* @ingroup Matrices