|
using | ASparse = std::is_same< TypeA, Eigen::Sparse > |
|
using | BSparse = std::is_same< TypeB, Eigen::Sparse > |
|
using | ConstGenericMatrixA = const Eigen::Ref< const MatrixA > |
|
using | ConstGenericMatrixB = const Eigen::Ref< const MatrixB > |
|
using | DenseType = typename std::conditional< ASparse::value, MatrixB, MatrixA >::type |
|
using | DenseTypeA = Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic, FlagsA > |
|
using | DenseTypeB = Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic, FlagsB > |
|
using | FacType = typename std::conditional< ASparse::value &&BSparse::value, Eigen::SparseLU< ResType >, BKLDLT< Scalar > >::type |
|
using | Index = Eigen::Index |
|
using | MapConstVec = Eigen::Map< const Vector > |
|
using | MapVec = Eigen::Map< Vector > |
|
using | MatrixA = typename std::conditional< ASparse::value, SparseTypeA, DenseTypeA >::type |
|
using | MatrixB = typename std::conditional< BSparse::value, SparseTypeB, DenseTypeB >::type |
|
using | ResType = typename std::conditional< ASparse::value &&BSparse::value, MatrixA, DenseType >::type |
|
using | SparseTypeA = Eigen::SparseMatrix< Scalar, FlagsA, StorageIndexA > |
|
using | SparseTypeB = Eigen::SparseMatrix< Scalar, FlagsB, StorageIndexB > |
|
using | Vector = Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > |
|
template<typename Scalar_, typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
class Spectra::SymShiftInvert< Scalar_, TypeA, TypeB, UploA, UploB, FlagsA, FlagsB, StorageIndexA, StorageIndexB >
This class defines matrix operations required by the generalized eigen solver in the shift-and-invert mode. Given two symmetric matrices
and
, it solves the linear equation
, where
is a real shift. Each of
and
can be a dense or sparse matrix.
This class is intended to be used with the SymGEigsShiftSolver generalized eigen solver.
- Template Parameters
-
Scalar_ | The element type of the matrices. Currently supported types are float , double , and long double . |
TypeA | The type of the matrix, indicating whether is dense or sparse. Possible values are Eigen::Dense and Eigen::Sparse . |
TypeB | The type of the matrix, indicating whether is dense or sparse. Possible values are Eigen::Dense and Eigen::Sparse . |
UploA | Whether the lower or upper triangular part of should be used. Possible values are Eigen::Lower and Eigen::Upper . |
UploB | Whether the lower or upper triangular part of should be used. Possible values are Eigen::Lower and Eigen::Upper . |
FlagsA | Additional flags for the matrix class of . Possible values are Eigen::ColMajor and Eigen::RowMajor . |
FlagsB | Additional flags for the matrix class of . Possible values are Eigen::ColMajor and Eigen::RowMajor . |
StorageIndexA | The storage index type of the matrix, only used when is a sparse matrix. |
StorageIndexB | The storage index type of the matrix, only used when is a sparse matrix. |
Definition at line 127 of file SymShiftInvert.h.
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
using Spectra::SymShiftInvert< Scalar_, TypeA, TypeB, UploA, UploB, FlagsA, FlagsB, StorageIndexA, StorageIndexB >::DenseType = typename std::conditional<ASparse::value, MatrixB, MatrixA>::type |
|
private |
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
using Spectra::SymShiftInvert< Scalar_, TypeA, TypeB, UploA, UploB, FlagsA, FlagsB, StorageIndexA, StorageIndexB >::DenseTypeA = Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, FlagsA> |
|
private |
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
using Spectra::SymShiftInvert< Scalar_, TypeA, TypeB, UploA, UploB, FlagsA, FlagsB, StorageIndexA, StorageIndexB >::DenseTypeB = Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, FlagsB> |
|
private |
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
using Spectra::SymShiftInvert< Scalar_, TypeA, TypeB, UploA, UploB, FlagsA, FlagsB, StorageIndexA, StorageIndexB >::FacType = typename std::conditional< ASparse::value && BSparse::value, Eigen::SparseLU<ResType>, BKLDLT<Scalar> >::type |
|
private |
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
using Spectra::SymShiftInvert< Scalar_, TypeA, TypeB, UploA, UploB, FlagsA, FlagsB, StorageIndexA, StorageIndexB >::MatrixA = typename std::conditional<ASparse::value, SparseTypeA, DenseTypeA>::type |
|
private |
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
using Spectra::SymShiftInvert< Scalar_, TypeA, TypeB, UploA, UploB, FlagsA, FlagsB, StorageIndexA, StorageIndexB >::MatrixB = typename std::conditional<BSparse::value, SparseTypeB, DenseTypeB>::type |
|
private |
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
using Spectra::SymShiftInvert< Scalar_, TypeA, TypeB, UploA, UploB, FlagsA, FlagsB, StorageIndexA, StorageIndexB >::ResType = typename std::conditional<ASparse::value && BSparse::value, MatrixA, DenseType>::type |
|
private |
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
using Spectra::SymShiftInvert< Scalar_, TypeA, TypeB, UploA, UploB, FlagsA, FlagsB, StorageIndexA, StorageIndexB >::SparseTypeA = Eigen::SparseMatrix<Scalar, FlagsA, StorageIndexA> |
|
private |
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
using Spectra::SymShiftInvert< Scalar_, TypeA, TypeB, UploA, UploB, FlagsA, FlagsB, StorageIndexA, StorageIndexB >::SparseTypeB = Eigen::SparseMatrix<Scalar, FlagsB, StorageIndexB> |
|
private |
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
using Spectra::SymShiftInvert< Scalar_, TypeA, TypeB, UploA, UploB, FlagsA, FlagsB, StorageIndexA, StorageIndexB >::Vector = Eigen::Matrix<Scalar, Eigen::Dynamic, 1> |
|
private |
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
template<typename DerivedA , typename DerivedB >
Constructor to create the matrix operation object.
- Parameters
-
Definition at line 191 of file SymShiftInvert.h.
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
Return the number of columns of the underlying matrix.
Definition at line 213 of file SymShiftInvert.h.
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
Perform the shift-invert operation
.
- Parameters
-
x_in | Pointer to the vector. |
y_out | Pointer to the vector. |
Definition at line 235 of file SymShiftInvert.h.
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
Return the number of rows of the underlying matrix.
Definition at line 209 of file SymShiftInvert.h.
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
void Spectra::SymShiftInvert< Scalar_, TypeA, TypeB, UploA, UploB, FlagsA, FlagsB, StorageIndexA, StorageIndexB >::set_shift |
( |
const Scalar & |
sigma | ) |
|
|
inline |
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>
template<typename Scalar_ , typename TypeA = Eigen::Sparse, typename TypeB = Eigen::Sparse, int UploA = Eigen::Lower, int UploB = Eigen::Lower, int FlagsA = Eigen::ColMajor, int FlagsB = Eigen::ColMajor, typename StorageIndexA = int, typename StorageIndexB = int>