template<typename ScalarT>
class chrono::modal::ChGeneralizedEigenvalueSolver< ScalarT >
Base interface class for generalized eigenvalue solvers A*x = lambda*B*x.
Currently it is implied that the derived eigensolvers are iterative.
|
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...
|
|
template<typename ScalarT>
Add unique ritz pairs to a wider set of ritz pairs.
The ('eigvals_source', 'eigvects_source') are going to be added to the ('eigvals_total', 'eigvects_total') set only if the frequency of the modes are unique with respect to the ones already stored. The 'freq_from_eigval_fun' function is used to extract the frequency from the eigenvalues. 'found_eigs' is the number of eigenvalues already stored in the ('eigvals_total', 'eigvects_total') set. Most of the times is equal to eigvects_total.cols(), but it might be less if some exceeding eigenvalues have been found. Similar consideration for 'num_eigvals_source'. 'equal_freq_tolerance' is the tolerance used to consider two frequencies as equal.