Please, help us to better know about our user community by answering the following short survey: https://forms.gle/wpyrxWi18ox9Z5ae9
Eigen  3.3.90 (git rev a8fdcae55d1f002966fc9b963597a404f30baa09)
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
ordering(A.selfadjointView<Lower>(), perm);

Classes

class  Eigen::AMDOrdering< StorageIndex >
 
class  Eigen::COLAMDOrdering< StorageIndex >
 
class  Eigen::NaturalOrdering< StorageIndex >
 
Eigen::Lower
@ Lower
Definition: Constants.h:208