// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception

/**
  @defgroup ISTL Iterative Solvers Template Library (ISTL)

   @brief Iterative Solvers supporting block recursive matrix and
   vector classes at compile time.

   The Iterative Solver Template Library applies generic programming
   in C++ to the
   domain of iterative solvers of linear systems stemming
   from finite element discretizations. Those discretizations exhibit a
   lot of structure, e.g:

   <ol>
   <li>Certain discretizations for systems of PDEs or higher order
  methods result in matrices where individual entries are replaced by
  small blocks, say of size \f$2\times 2\f$ or \f$4\times 4\f$.
  Dense blocks of different sizes
  e.g. arise in \f$hp\f$ Discontinuous Galerkin discretization methods.
  It is straightforward and
  efficient to treat these small dense blocks as fully coupled and
  solve them with direct methods within the iterative method.</li>
  <li>Equation-wise ordering for systems results in matrices having an
  \f$n\times n\f$ block structure where \f$n\f$ corresponds to the number of
  variables in the PDE and the blocks themselves are large and sparse. As an
  example we mention the Stokes system. </li>
  <li>Other discretisation, e.~g. those of reaction/diffusion
  systems,  produce sparse matrices whose blocks are
  sparse matrices of small dense blocks,</li>
  </ol>

   Our matrix
   and vector interface supports a block recursive structure. Each
   sparse matrix entry can itself be either a sparse or a small
   dense matrix.

   The solvers use this recursive block structure via template meta
   programming at compile time.

   ISTL consists of the \ref ISTL_SPMV "matrix and vector API" and
   the \ref ISTL_Solvers "solvers" which use the \ref ISTL_Prec preconditioners.
 */

/** @defgroup ISTL_Solvers Iterative Solvers
    @ingroup ISTL
*/
/** @defgroup ISTL_Eigenvalue Eigenvalue Solvers
    @ingroup ISTL_Solvers
*/
/** @defgroup ISTL_Comm Communication Interface
    @ingroup ISTL
*/
