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 67