chrono::modal::ChSymGenEigenvalueSolverLanczos Class Reference

Description

Generalized iterative eigenvalue solver implementing Lanczos shift-and-invert method for real symmetric matrices.

Features:

  • generalized eigenvalue problem
  • symmetric real sparse matrices
  • shift-and-invert with real shift

#include <ChSymGenEigenvalueSolver.h>

Inheritance diagram for chrono::modal::ChSymGenEigenvalueSolverLanczos:
Collaboration diagram for chrono::modal::ChSymGenEigenvalueSolverLanczos:

Public Member Functions

virtual int Solve (const ChSparseMatrix &A, const ChSparseMatrix &B, ChMatrixDynamic< ScalarType > &eigvects, ChVectorDynamic< ScalarType > &eigvals, int num_modes, ScalarType shift) const override
 Solve the generalized eigenvalue problem A*eigvects = B*eigvects*diag(eigvals) A and B are expected to be symmetric and real 'eigvects' will be resized to [A.rows() x num_modes] 'eigvals' will be resized to [num_modes] the number of converged eigenvalues is returned.
 
- Public Member Functions inherited from chrono::modal::ChSymGenEigenvalueSolver
virtual int Solve (const ChSparseMatrix &A, const ChSparseMatrix &B, ChMatrixDynamic< ScalarType > &eigvects, ChVectorDynamic< ScalarType > &eigvals, int num_modes, ScalarType shift) const =0
 Solve the generalized eigenvalue problem A*eigvects = B*eigvects*diag(eigvals) A and B are expected to be symmetric and real 'eigvects' will be resized to [A.rows() x num_modes] 'eigvals' will be resized to [num_modes] the number of converged eigenvalues is returned.
 
- Public Member Functions inherited from chrono::modal::ChGeneralizedEigenvalueSolver< double >
double GetTimeMatrixAssembly () const
 Get cumulative time for matrix assembly.
 
double GetTimeEigenSetup () const
 Get cumulative time for the eigensolver setup.
 
double GetTimeEigenSolver () const
 Get cumulative time for the eigensolver solution.
 
double GetTimeSolutionPostProcessing () const
 Get cumulative time for post-solver solution postprocessing.
 

Additional Inherited Members

- Public Types inherited from chrono::modal::ChGeneralizedEigenvalueSolver< double >
using ScalarType = double
 
- Static Public Member Functions inherited from chrono::modal::ChSymGenEigenvalueSolver
static void GetNaturalFrequencies (const ChVectorDynamic< ScalarType > &eigvals, ChVectorDynamic< double > &freq)
 Retrieve the natural frequencies from an eigenvalues array.
 
static double GetNaturalFrequency (ScalarType eigval)
 Retrieve the natural frequencies from an eigenvalue.
 
static ScalarType GetOptimalShift (double freq)
 Get the optimal shift corresponding to a given frequency.
 
- Static Public Member Functions inherited from chrono::modal::ChGeneralizedEigenvalueSolver< double >
static void SortRitzPairs (ChVectorDynamic< ScalarType > &eigvals, ChMatrixDynamic< ScalarType > &eigvects, std::function< bool(const ChVectorDynamic< ScalarType > &, int, int)> ordering_fun=[](const ChVectorDynamic< std::complex< double >> &eigv, int a, int b) { return std::abs(eigv(a))< std::abs(eigv(b));})
 Sort the eigenvalues and eigenvectors in the order specified by the ordering function in-place.
 
static double GetMaxResidual (const ChSparseMatrix &A, const ChSparseMatrix &B, const ChMatrixDynamic< ScalarType > &eigvects, const ChVectorDynamic< ScalarType > &eigvals)
 
static double GetMaxResidual (const ChSparseMatrix &K, const ChSparseMatrix &M, const ChSparseMatrix &Cq, const ChMatrixDynamic< ScalarType > &eigvects, const ChVectorDynamic< ScalarType > &eigvals)
 
static double GetMaxResidual (const ChSparseMatrix &K, const ChSparseMatrix &R, const ChSparseMatrix &M, const ChSparseMatrix &Cq, const ChMatrixDynamic< ScalarType > &eigvects, const ChVectorDynamic< ScalarType > &eigvals)
 
static double BuildUndampedSystem (const ChSparseMatrix &M, const ChSparseMatrix &K, const ChSparseMatrix &Cq, ChSparseMatrix &A, ChSparseMatrix &B, bool scaleCq)
 Build the quadratic eigenvalue problem matrix for the undamped case. More...
 
static double BuildDampedSystem (const ChSparseMatrix &M, const ChSparseMatrix &R, const ChSparseMatrix &K, const ChSparseMatrix &Cq, ChSparseMatrix &A, ChSparseMatrix &B, bool scaleCq)
 Build the quadratic eigenvalue problem matrix for the damped case. More...
 
static void InsertUniqueRitzPairs (const ChVectorDynamic< ScalarType > &eigvals_source, const ChMatrixDynamic< ScalarType > &eigvects_source, ChVectorDynamic< ScalarType > &eigvals_total, ChMatrixDynamic< ScalarType > &eigvects_total, std::function< double(ScalarType)> freq_from_eigval_fun, int &found_eigs, int num_eigvals_source, double equal_freq_tolerance=1e-4)
 Add unique ritz pairs to a wider set of ritz pairs. More...
 
- Public Attributes inherited from chrono::modal::ChGeneralizedEigenvalueSolver< double >
double tolerance
 tolerance for the iterative solver.
 
int max_iterations
 upper limit for the number of iterations. If too low might not converge.
 
bool verbose
 turn to true to see some diagnostic.
 
bool sort_ritz_pairs
 sort the eigenvalues based on the smallest absolute value
 
- Static Protected Member Functions inherited from chrono::modal::ChGeneralizedEigenvalueSolver< double >
static Eigen::PermutationMatrix< Eigen::Dynamic, Eigen::Dynamic > GetPermutationMatrix (int num_elements, std::function< bool(int, int)> ordering_fun)
 Returns the permutation matrix to sort the given elements based on the ordering function.
 
- Protected Attributes inherited from chrono::modal::ChGeneralizedEigenvalueSolver< double >
ChTimer m_timer_matrix_assembly
 timer for matrix assembly
 
ChTimer m_timer_eigen_setup
 timer for eigensolver setup
 
ChTimer m_timer_eigen_solver
 timer for eigensolver solution
 
ChTimer m_timer_solution_postprocessing
 timer for conversion of eigensolver solution
 
const int m_min_subspace_size
 

The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono_modal/ChSymGenEigenvalueSolver.h
  • /builds/uwsbel/chrono/src/chrono_modal/ChSymGenEigenvalueSolver.cpp