Description
Solves the undamped constrained eigenvalue problem with the Krylov-Schur iterative method.
This is an efficient method to compute only the lower n modes, ex. when there are so many degreees of freedom that it would make a full solution impossible. It uses an iterative method and it exploits the sparsity of the matrices.
#include <ChEigenvalueSolver.h>
Public Member Functions | |
virtual bool | Solve (const ChSparseMatrix &M, const ChSparseMatrix &K, const ChSparseMatrix &Cq, ChMatrixDynamic< std::complex< double >> &eigvects, ChVectorDynamic< std::complex< double >> &eigvals, ChVectorDynamic< double > &freq, ChEigenvalueSolverSettings settings=0) const override |
Solve the constrained eigenvalue problem (-wsquare*M + K)*x = 0 s.t. More... | |
virtual bool | Solve (ChAssembly &assembly, ChMatrixDynamic< std::complex< double >> &eigvects, ChVectorDynamic< std::complex< double >> &eigvals, ChVectorDynamic< double > &freq, ChEigenvalueSolverSettings settings=0) const override |
Solve the constrained eigenvalue problem (-wsquare*M + K)*x = 0 s.t. More... | |
Public Member Functions inherited from chrono::modal::ChGeneralizedEigenvalueSolver | |
double | GetTimeMatrixAssembly () const |
Get cumulative time for matrix assembly. | |
double | GetTimeEigenSetup () const |
Get cumulative time eigensolver setup. | |
double | GetTimeEigenSolver () const |
Get cumulative time eigensolver solution. | |
double | GetTimeSolutionPostProcessing () const |
Get cumulative time for post-solver solution postprocessing. | |
Additional Inherited Members | |
Protected Attributes inherited from chrono::modal::ChGeneralizedEigenvalueSolver | |
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 | |
Member Function Documentation
◆ Solve() [1/2]
|
overridevirtual |
Solve the constrained eigenvalue problem (-wsquare*M + K)*x = 0 s.t.
Cq*x = 0 If n_modes=0, return all eigenvalues, otherwise only the first lower n_modes.
- Parameters
-
assembly assembly on which to apply the eigen solver eigvects output matrix n x n_v with eigenvectors as columns, will be resized eigvals output vector with n eigenvalues, will be resized. freq output vector with n frequencies [Hz], as f=w/(2*PI), will be resized. settings optional: settings for the solver, or n. of desired lower eigenvalues. If =0, return all eigenvalues.
Implements chrono::modal::ChGeneralizedEigenvalueSolver.
◆ Solve() [2/2]
|
overridevirtual |
Solve the constrained eigenvalue problem (-wsquare*M + K)*x = 0 s.t.
Cq*x = 0 If n_modes=0, return all eigenvalues, otherwise only the first lower n_modes.
- Parameters
-
M input M matrix, n_v x n_v K input K matrix, n_v x n_v Cq input Cq matrix of constraint jacobians, n_c x n_v eigvects output matrix n x n_v with eigenvectors as columns, will be resized eigvals output vector with n eigenvalues, will be resized. freq output vector with n frequencies [Hz], as f=w/(2*PI), will be resized. settings optional: settings for the solver, or n. of desired lower eigenvalues. If =0, return all eigenvalues.
Implements chrono::modal::ChGeneralizedEigenvalueSolver.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono_modal/ChEigenvalueSolver.h
- /builds/uwsbel/chrono/src/chrono_modal/ChEigenvalueSolver.cpp