[136] | 1 | #ifndef EIGEN_ORDERINGMETHODS_MODULE_H
|
---|
| 2 | #define EIGEN_ORDERINGMETHODS_MODULE_H
|
---|
| 3 |
|
---|
| 4 | #include "SparseCore"
|
---|
| 5 |
|
---|
| 6 | #include "src/Core/util/DisableStupidWarnings.h"
|
---|
| 7 |
|
---|
| 8 | /**
|
---|
| 9 | * \defgroup OrderingMethods_Module OrderingMethods module
|
---|
| 10 | *
|
---|
| 11 | * This module is currently for internal use only
|
---|
| 12 | *
|
---|
| 13 | * It defines various built-in and external ordering methods for sparse matrices.
|
---|
| 14 | * They are typically used to reduce the number of elements during
|
---|
| 15 | * the sparse matrix decomposition (LLT, LU, QR).
|
---|
| 16 | * Precisely, in a preprocessing step, a permutation matrix P is computed using
|
---|
| 17 | * those ordering methods and applied to the columns of the matrix.
|
---|
| 18 | * Using for instance the sparse Cholesky decomposition, it is expected that
|
---|
| 19 | * the nonzeros elements in LLT(A*P) will be much smaller than that in LLT(A).
|
---|
| 20 | *
|
---|
| 21 | *
|
---|
| 22 | * Usage :
|
---|
| 23 | * \code
|
---|
| 24 | * #include <Eigen/OrderingMethods>
|
---|
| 25 | * \endcode
|
---|
| 26 | *
|
---|
| 27 | * A simple usage is as a template parameter in the sparse decomposition classes :
|
---|
| 28 | *
|
---|
| 29 | * \code
|
---|
| 30 | * SparseLU<MatrixType, COLAMDOrdering<int> > solver;
|
---|
| 31 | * \endcode
|
---|
| 32 | *
|
---|
| 33 | * \code
|
---|
| 34 | * SparseQR<MatrixType, COLAMDOrdering<int> > solver;
|
---|
| 35 | * \endcode
|
---|
| 36 | *
|
---|
| 37 | * It is possible as well to call directly a particular ordering method for your own purpose,
|
---|
| 38 | * \code
|
---|
| 39 | * AMDOrdering<int> ordering;
|
---|
| 40 | * PermutationMatrix<Dynamic, Dynamic, int> perm;
|
---|
| 41 | * SparseMatrix<double> A;
|
---|
| 42 | * //Fill the matrix ...
|
---|
| 43 | *
|
---|
| 44 | * ordering(A, perm); // Call AMD
|
---|
| 45 | * \endcode
|
---|
| 46 | *
|
---|
| 47 | * \note Some of these methods (like AMD or METIS), need the sparsity pattern
|
---|
| 48 | * of the input matrix to be symmetric. When the matrix is structurally unsymmetric,
|
---|
| 49 | * Eigen computes internally the pattern of \f$A^T*A\f$ before calling the method.
|
---|
| 50 | * If your matrix is already symmetric (at leat in structure), you can avoid that
|
---|
| 51 | * by calling the method with a SelfAdjointView type.
|
---|
| 52 | *
|
---|
| 53 | * \code
|
---|
| 54 | * // Call the ordering on the pattern of the lower triangular matrix A
|
---|
| 55 | * ordering(A.selfadjointView<Lower>(), perm);
|
---|
| 56 | * \endcode
|
---|
| 57 | */
|
---|
| 58 |
|
---|
| 59 | #ifndef EIGEN_MPL2_ONLY
|
---|
| 60 | #include "src/OrderingMethods/Amd.h"
|
---|
| 61 | #endif
|
---|
| 62 |
|
---|
| 63 | #include "src/OrderingMethods/Ordering.h"
|
---|
| 64 | #include "src/Core/util/ReenableStupidWarnings.h"
|
---|
| 65 |
|
---|
| 66 | #endif // EIGEN_ORDERINGMETHODS_MODULE_H
|
---|