diff options
author | Desire NUENTSA <desire.nuentsa_wakam@inria.fr> | 2013-01-21 15:37:47 +0100 |
---|---|---|
committer | Desire NUENTSA <desire.nuentsa_wakam@inria.fr> | 2013-01-21 15:37:47 +0100 |
commit | d2dd5063b6f52e16e15790eac7c9d1f57a60c96f (patch) | |
tree | a1cbf21f6acc902fd8cf1d2954b9fd48ed5be233 | |
parent | 5b9bb0026512d078ca06ff8029abf499da2e66d9 (diff) |
Documentation for the ordering methods
-rw-r--r-- | Eigen/MetisSupport | 2 | ||||
-rw-r--r-- | Eigen/OrderingMethods | 46 |
2 files changed, 45 insertions, 3 deletions
diff --git a/Eigen/MetisSupport b/Eigen/MetisSupport index a44086ad9..6a113f7a8 100644 --- a/Eigen/MetisSupport +++ b/Eigen/MetisSupport @@ -16,6 +16,8 @@ extern "C" { * \code * #include <Eigen/MetisSupport> * \endcode + * This module defines an interface to the METIS reordering package (http://glaros.dtc.umn.edu/gkhome/views/metis). + * It can be used just as any other built-in method as explained in \link OrderingMethods_Module here. \endlink */ diff --git a/Eigen/OrderingMethods b/Eigen/OrderingMethods index 8abc128b9..423cfb0cd 100644 --- a/Eigen/OrderingMethods +++ b/Eigen/OrderingMethods @@ -8,12 +8,52 @@ /** * \defgroup OrderingMethods_Module OrderingMethods module * - * This module is currently for internal use only. - * - * + * This module is currently for internal use only + * + * It defines various built-in and external ordering methods for sparse matrices. + * They are typically used to reduce the number of elements during + * the sparse matrix decomposition (LLT, LU, QR). + * Precisely, in a preprocessing step, a permutation matrix P is computed using + * those ordering methods and applied to the columns of the matrix. + * Using for instance the sparse Cholesky decomposition, it is expected that + * the nonzeros elements in LLT(A*P) will be much smaller than that in LLT(A). + * + * + * Usage : * \code * #include <Eigen/OrderingMethods> * \endcode + * + * A simple usage is as a template parameter in the sparse decomposition classes : + * + * \code + * SparseLU<MatrixType, COLAMDOrdering<int> > solver; + * \endcode + * + * \code + * SparseQR<MatrixType, COLAMDOrdering<int> > solver; + * \endcode + * + * It is possible as well to call directly a particular ordering method for your own purpose, + * \code + * AMDOrdering<int> ordering; + * PermutationMatrix<Dynamic, Dynamic, int> perm; + * SparseMatrix<double> A; + * //Fill the matrix ... + * + * ordering(A, perm); // Call AMD + * \endcode + * + * \note Some of these methods (like AMD or METIS), need the sparsity pattern + * of the input matrix to be symmetric. When the matrix is structurally unsymmetric, + * Eigen computes internally the pattern of \f$A^T*A\f$ before calling the method. + * If your matrix is already symmetric (at leat in structure), you can avoid that + * by calling the method with a SelfAdjointView type. + * + * \code + * // Call the ordering on the pattern of the lower triangular matrix A + * ordering(A.selfadjointView<Lower>(), perm); + * \endcode */ #include "src/OrderingMethods/Amd.h" |