Project Chrono: chrono::modal::ChQuadraticEigenvalueSolver Class Reference

Public Member Functions | Protected Attributes | List of all members
chrono::modal::ChQuadraticEigenvalueSolver Class Referenceabstract

## Description

Base interface class for eigensolvers for the damped dynamic problem ie.

the quadratic eigenvalue problem (lambda^2*M + lambda*R + K)*x = 0 s.t. Cq*x = 0 also (-w^2*M + i*w*R + K)*x = 0, with complex w (where w.length() = undamped nat.freq) Children classes can implement this in different ways, overridding Solve()

`#include <ChEigenvalueSolver.h>`

Inheritance diagram for chrono::modal::ChQuadraticEigenvalueSolver:
[legend]
Collaboration diagram for chrono::modal::ChQuadraticEigenvalueSolver:
[legend]

## Public Member Functions
virtual bool | Solve (const ChSparseMatrix &M, const ChSparseMatrix &R, const ChSparseMatrix &K, const ChSparseMatrix &Cq, ChMatrixDynamic< std::complex< double > > &eigvects, ChVectorDynamic< std::complex< double > > &eigvals, ChVectorDynamic< double > &freq, ChVectorDynamic< double > &damping_ratio, ChEigenvalueSolverSettings settings=0) const =0
| Solve the quadratic eigenvalue problem (lambda^2*M + lambda*R + K)*x = 0 s.t.
virtual bool | Solve (ChAssembly &assembly, ChMatrixDynamic< std::complex< double > > &eigvects, ChVectorDynamic< std::complex< double > > &eigvals, ChVectorDynamic< double > &freq, ChVectorDynamic< double > &damping_ratio, ChEigenvalueSolverSettings settings=0) const =0
| Solve the quadratic eigenvalue problem (lambda^2*M + lambda*R + K)*x = 0 s.t.
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
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]

virtual bool chrono::modal::ChQuadraticEigenvalueSolver::Solve | ( | ChAssembly & | assembly,
|  | ChMatrixDynamic< std::complex< double > > & | eigvects,
|  | ChVectorDynamic< std::complex< double > > & | eigvals,
|  | ChVectorDynamic< double > & | freq,
|  | ChVectorDynamic< double > & | damping_ratio,
|  | ChEigenvalueSolverSettings | settings = 0 ) const
| pure virtual

Solve the quadratic eigenvalue problem (lambda^2*M + lambda*R + 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 with eigenvectors as columns, will be resized
  eigvals | output vector with eigenvalues (real part not zero if some damping), will be resized
  freq | output vector with n undamped frequencies [Hz], as f=w/(2*PI), will be resized.
  damping_ratio | output vector with n damping rations r=damping/critical_damping.
  settings | optional: settings for the solver, or n. of desired lower eigenvalues. If =0, return all eigenvalues.

Implemented in chrono::modal::ChQuadraticEigenvalueSolverKrylovSchur, and chrono::modal::ChQuadraticEigenvalueSolverNullspaceDirect.

## ◆ Solve() [2/2]

virtual bool chrono::modal::ChQuadraticEigenvalueSolver::Solve | ( | const ChSparseMatrix & | M,
|  | const ChSparseMatrix & | R,
|  | const ChSparseMatrix & | K,
|  | const ChSparseMatrix & | Cq,
|  | ChMatrixDynamic< std::complex< double > > & | eigvects,
|  | ChVectorDynamic< std::complex< double > > & | eigvals,
|  | ChVectorDynamic< double > & | freq,
|  | ChVectorDynamic< double > & | damping_ratio,
|  | ChEigenvalueSolverSettings | settings = 0 ) const
| pure virtual

Solve the quadratic eigenvalue problem (lambda^2*M + lambda*R + 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
  R | input R matrix
  K | input K matrix
  Cq | input Cq matrix of constraint jacobians
  eigvects | output matrix with eigenvectors as columns, will be resized
  eigvals | output vector with eigenvalues (real part not zero if some damping), will be resized
  freq | output vector with n undamped frequencies [Hz], as f=w/(2*PI), will be resized.
  damping_ratio | output vector with n damping rations r=damping/critical_damping.
  settings | optional: settings for the solver, or n. of desired lower eigenvalues. If =0, return all eigenvalues.

Implemented in chrono::modal::ChQuadraticEigenvalueSolverKrylovSchur, and chrono::modal::ChQuadraticEigenvalueSolverNullspaceDirect.

The documentation for this class was generated from the following file:

- D:/W/B/src/chrono-9.0.1/src/chrono_modal/ChEigenvalueSolver.h