chrono::modal::ChModalSolverUndamped< EigenvalueSolverType > Class Template Reference

Description

template<typename EigenvalueSolverType>
class chrono::modal::ChModalSolverUndamped< EigenvalueSolverType >

Modal solver for undamped systems (-w^2*M+K)*x = 0 s.t.

Cq*x = 0 Contrary to eigensolvers, these classes deals directly with Chrono data structures, creating the appropriate setup for running the inner eigensolver. Multiple requests spanning different frequency ranges can be specified.

#include <ChModalSolverUndamped.h>

Inheritance diagram for chrono::modal::ChModalSolverUndamped< EigenvalueSolverType >:
Collaboration diagram for chrono::modal::ChModalSolverUndamped< EigenvalueSolverType >:

Public Types

using ScalarType = typename EigenvalueSolverType::ScalarType
 

Public Member Functions

 ChModalSolverUndamped (int n_lower_modes, double base_freq=1e-5, bool scaleCq=true, bool verbose=false, std::shared_ptr< EigenvalueSolverType > solver=chrono_types::make_shared< EigenvalueSolverType >())
 Creates a modal solver for the undamped case. More...
 
 ChModalSolverUndamped (std::vector< ChFreqSpan > freq_spans, bool scaleCq=true, bool verbose=false, std::shared_ptr< EigenvalueSolverType > solver=chrono_types::make_shared< EigenvalueSolverType >())
 Creates a modal solver for the undamped case. More...
 
int Solve (const ChAssembly &assembly, ChMatrixDynamic< ScalarType > &eigvects, ChVectorDynamic< ScalarType > &eigvals, ChVectorDynamic< double > &freq) const
 Solve the constrained eigenvalue problem retrieving it from the ChAssembly. More...
 
int Solve (const ChSparseMatrix &K, const ChSparseMatrix &M, const ChSparseMatrix &Cq, ChMatrixDynamic< ScalarType > &eigvects, ChVectorDynamic< ScalarType > &eigvals, ChVectorDynamic< double > &freq) const
 Solve the constrained eigenvalue problem setting it up from individual matrices. More...
 
std::shared_ptr< EigenvalueSolverType > GetEigenSolver () const
 Get the inner eigensolver.
 
- Public Member Functions inherited from chrono::modal::ChModalSolver
 ChModalSolver (int n_lower_modes, double base_freq, bool scaleCq, bool verbose)
 Creates a modal solver. More...
 
 ChModalSolver (std::vector< ChFreqSpan > freq_spans, bool scaleCq, bool verbose)
 Creates a modal solver. More...
 
int GetNumRequestedModes () const
 Get the total number of requested modes.
 
void SetClipPositionCoords (bool val)
 Clip the eigenvectors to only the position coordinates.
 
const std::vector< ChFreqSpan > & GetFrequencySpans () const
 Get the set of frequency spans for which modes are requested.
 
double GetTimeMatrixAssembly () const
 Get cumulative time for matrix assembly.
 
double GetTimeEigenSolver () const
 Get cumulative time eigensolver solution.
 
double GetTimeSolutionPostProcessing () const
 Get cumulative time for post-solver solution postprocessing.
 

Protected Attributes

std::shared_ptr< EigenvalueSolverType > m_solver
 
- Protected Attributes inherited from chrono::modal::ChModalSolver
ChTimer m_timer_matrix_assembly
 timer for matrix assembly
 
ChTimer m_timer_eigen_solver
 timer for eigensolver solution
 
ChTimer m_timer_solution_postprocessing
 timer for conversion of eigensolver solution
 
std::vector< ChFreqSpan > m_freq_spans
 frequency spans for which modes are requested
 
bool m_clip_position_coords
 store only the part of each eigenvector that refers to the position coordinates More...
 
bool m_scaleCq = true
 if true, the Cq matrix is scaled to improve conditioning
 
bool m_verbose = false
 if true, additional information is printed during the solution process
 

Constructor & Destructor Documentation

◆ ChModalSolverUndamped() [1/2]

template<typename EigenvalueSolverType >
chrono::modal::ChModalSolverUndamped< EigenvalueSolverType >::ChModalSolverUndamped ( int  n_lower_modes,
double  base_freq = 1e-5,
bool  scaleCq = true,
bool  verbose = false,
std::shared_ptr< EigenvalueSolverType >  solver = chrono_types::make_shared<EigenvalueSolverType>() 
)
inline

Creates a modal solver for the undamped case.

n_lower_modes number of lowest modes to be found. base_freq frequency around which the modes will be found; higher values can help finding eigenvalues for ill-conditioned problems. scaleCq if true, the Cq matrix is scaled to improve conditioning. verbose if true, additional information is printed during the solution process. solver the inner eigensolver to be used.

◆ ChModalSolverUndamped() [2/2]

template<typename EigenvalueSolverType >
chrono::modal::ChModalSolverUndamped< EigenvalueSolverType >::ChModalSolverUndamped ( std::vector< ChFreqSpan >  freq_spans,
bool  scaleCq = true,
bool  verbose = false,
std::shared_ptr< EigenvalueSolverType >  solver = chrono_types::make_shared<EigenvalueSolverType>() 
)
inline

Creates a modal solver for the undamped case.

freq_spans pair of number of modes and frequency around which the modes will be found. ill-conditioned problems. scaleCq if true, the Cq matrix is scaled to improve conditioning. verbose if true, additional information is printed during the solution process. solver the inner eigensolver to be used.

Member Function Documentation

◆ Solve() [1/2]

template<typename EigenvalueSolverType >
int chrono::modal::ChModalSolverUndamped< EigenvalueSolverType >::Solve ( const ChAssembly assembly,
ChMatrixDynamic< ScalarType > &  eigvects,
ChVectorDynamic< ScalarType > &  eigvals,
ChVectorDynamic< double > &  freq 
) const

Solve the constrained eigenvalue problem retrieving it from the ChAssembly.

Only the position part of the eigenvectors is returned, unless SetClipPositionCoords(false) is called.

◆ Solve() [2/2]

template<typename EigenvalueSolverType >
int chrono::modal::ChModalSolverUndamped< EigenvalueSolverType >::Solve ( const ChSparseMatrix K,
const ChSparseMatrix M,
const ChSparseMatrix Cq,
ChMatrixDynamic< ScalarType > &  eigvects,
ChVectorDynamic< ScalarType > &  eigvals,
ChVectorDynamic< double > &  freq 
) const

Solve the constrained eigenvalue problem setting it up from individual matrices.

Only the position part of the eigenvectors is returned, unless SetClipPositionCoords(false) is called.


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