chrono::modal::ChGeneralizedEigenvalueSolverKrylovSchur Class Reference

## 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>

Inheritance diagram for chrono::modal::ChGeneralizedEigenvalueSolverKrylovSchur:
Collaboration diagram for chrono::modal::ChGeneralizedEigenvalueSolverKrylovSchur:

## 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.

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

## ◆ Solve() [1/2]

 bool chrono::modal::ChGeneralizedEigenvalueSolverKrylovSchur::Solve ( ChAssembly & assembly, ChMatrixDynamic< std::complex< double >> & eigvects, ChVectorDynamic< std::complex< double >> & eigvals, ChVectorDynamic< double > & freq, ChEigenvalueSolverSettings settings = 0 ) const
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]

 bool chrono::modal::ChGeneralizedEigenvalueSolverKrylovSchur::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
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