chrono::modal::ChGeneralizedEigenvalueSolver Class Referenceabstract

Description

Base interface class for eigensolvers for the undamped constrained generalized problem (-wsquare*M + K)*x = 0 s.t.

Cq*x = 0 Children classes can implement this in different ways, overridding Solve()

#include <ChEigenvalueSolver.h>

Inheritance diagram for chrono::modal::ChGeneralizedEigenvalueSolver:
Collaboration diagram for chrono::modal::ChGeneralizedEigenvalueSolver:

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 =0
 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 =0
 Solve the constrained eigenvalue problem (-wsquare*M + K)*x = 0 s.t. More...
 
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::ChGeneralizedEigenvalueSolver::Solve ( ChAssembly assembly,
ChMatrixDynamic< std::complex< double >> &  eigvects,
ChVectorDynamic< std::complex< double >> &  eigvals,
ChVectorDynamic< double > &  freq,
ChEigenvalueSolverSettings  settings = 0 
) const
pure virtual

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
assemblyassembly on which to apply the eigen solver
eigvectsoutput matrix n x n_v with eigenvectors as columns, will be resized
eigvalsoutput vector with n eigenvalues, will be resized.
freqoutput vector with n frequencies [Hz], as f=w/(2*PI), will be resized.
settingsoptional: settings for the solver, or n. of desired lower eigenvalues. If =0, return all eigenvalues.

Implemented in chrono::modal::ChGeneralizedEigenvalueSolverLanczos, and chrono::modal::ChGeneralizedEigenvalueSolverKrylovSchur.

◆ Solve() [2/2]

virtual bool chrono::modal::ChGeneralizedEigenvalueSolver::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
pure virtual

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
Minput M matrix, n_v x n_v
Kinput K matrix, n_v x n_v
Cqinput Cq matrix of constraint jacobians, n_c x n_v
eigvectsoutput matrix n x n_v with eigenvectors as columns, will be resized
eigvalsoutput vector with n eigenvalues, will be resized.
freqoutput vector with n frequencies [Hz], as f=w/(2*PI), will be resized.
settingsoptional: settings for the solver, or n. of desired lower eigenvalues. If =0, return all eigenvalues.

Implemented in chrono::modal::ChGeneralizedEigenvalueSolverLanczos, and chrono::modal::ChGeneralizedEigenvalueSolverKrylovSchur.


The documentation for this class was generated from the following file:
  • /builds/uwsbel/chrono/src/chrono_modal/ChEigenvalueSolver.h