chrono::modal::ChSymGenEigenvalueSolverKrylovSchur Class Reference
Description
Generalized iterative eigenvalue solver implementing Krylov-Schur 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::ChSymGenEigenvalueSolverKrylovSchur:
Collaboration diagram for chrono::modal::ChSymGenEigenvalueSolverKrylovSchur:
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