Please, help us to better know about our user community by answering the following short survey: https://forms.gle/wpyrxWi18ox9Z5ae9
 Eigen  3.4.99 (git rev 199c5f2b47eb1f8e5a2d20e60f07e97cd95a6ba6)
OrderingMethods module

## Detailed Description

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 :

#include <Eigen/OrderingMethods>

A simple usage is as a template parameter in the sparse decomposition classes :

SparseLU<MatrixType, COLAMDOrdering<int> > solver;
SparseQR<MatrixType, COLAMDOrdering<int> > solver;

It is possible as well to call directly a particular ordering method for your own purpose,

AMDOrdering<int> ordering;
PermutationMatrix<Dynamic, Dynamic, int> perm;
SparseMatrix<double> A;
//Fill the matrix ...
ordering(A, perm); // Call AMD
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 $$A^T*A$$ 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.
// Call the ordering on the pattern of the lower triangular matrix A
@ Lower
Definition: Constants.h:209

## Classes

class  Eigen::AMDOrdering< StorageIndex >

class  Eigen::COLAMDOrdering< StorageIndex >

class  Eigen::NaturalOrdering< StorageIndex >