chrono::modal Namespace Reference

Description

Namespace with classes for the modal module.

Classes

class  callback_Ax
 Generic A*x callback. More...
 
class  callback_Ax_sparse_complexshiftinvert
 The callback to be used for "A*x" where for shift&invert is: A = (As - sigma Bs)/Bs , with COMPLEX sigma shift, so A*x = (As - sigma Bs)/(Bs*x), just like a linear system with coefficient matrix (As - sigma Bs) and known rhs Bs*x. More...
 
class  callback_Ax_sparse_shiftinvert
 The callback to be used for "A*x" where for shift&invert is: A = (As - sigma Bs)/Bs , so A*x = (As - sigma Bs)/(Bs*x), just like a linear system with coefficient matrix (As - sigma Bs) and known rhs Bs*x. More...
 
class  ChEigenvalueSolverSettings
 Class for passing basic settings to the Solve() function of the various solvers. More...
 
class  ChGeneralizedEigenvalueSolver
 Base interface class for eigensolvers for the undamped constrained generalized problem (-wsquare*M + K)*x = 0 s.t. More...
 
class  ChGeneralizedEigenvalueSolverKrylovSchur
 Solves the undamped constrained eigenvalue problem with the Krylov-Schur iterative method. More...
 
class  ChGeneralizedEigenvalueSolverLanczos
 Solves the undamped constrained eigenvalue problem with the Lanczos iterative method. More...
 
class  ChKrylovSchurEig
 Compute (complex) eigenvalues and eigenvectors using the Krylov-Schur algorithm. More...
 
class  ChModalAssembly
 Class for assemblies of items, for example ChBody, ChLink, ChMesh, etc. More...
 
class  ChModalDamping
 Base class for damping models of modal reduced assemblies. More...
 
class  ChModalDampingCustom
 Class for damping defined with an user-defined matrix that could be obtained via external tools such as Matlab or FEA. More...
 
class  ChModalDampingFactorAssembly
 Class for setting the damping via N damping factors z_i for all the modes of the subassembly, where assembly n.modes = (boundary coords+internal modes) R^ = V'^-1 * Dd * V^-1 with Dd=diag { 2 z_1 w_1, 2 z_2 w_2, ..., 2 z_i w_i }, and V = eigenvectors of (M^, K^). More...
 
class  ChModalDampingFactorRayleigh
 Class for setting the damping via N damping factors z_i of the internal mode coordinates and alpha-beta Rayleigh damping for the boundary nodes, assuming R^ = [Rbb Rbm ] [Rmb Rmm ] with Rmm=diag { 2 z_1 w_1, 2 z_2 w_2, ..., 2 z_i w_i }, Rbb= alpha*Mbb + beta*Kbb, Rbm = 0, Rmb = 0. More...
 
class  ChModalDampingFactorRmm
 Class for setting the damping via N damping factors z_i of the internal mode coordinates. More...
 
class  ChModalDampingNone
 Class for no damping model. More...
 
class  ChModalDampingRayleigh
 Class for simple Rayleigh damping model R^ = alpha*M^ + beta*K^ where M^ and K^ are the reduced matrices, both for boundary nodes and modal coords. More...
 
class  ChModalDampingReductionR
 Class for damping as reduction of the original damping matrix via the eigenvectors of the undamped assembly, i.e. More...
 
class  ChModalSolveDamped
 Class for computing eigenvalues/eigenvectors for the DAMPED constrained system. More...
 
class  ChModalSolveUndamped
 Class for computing eigenvalues/eigenvectors for the undamped constrained system. More...
 
class  ChQuadraticEigenvalueSolver
 Base interface class for eigensolvers for the damped dynamic problem ie. More...
 
class  ChQuadraticEigenvalueSolverKrylovSchur
 Solves the eigenvalue problem with the Krylov-Schur iterative method. More...
 
class  ChQuadraticEigenvalueSolverNullspaceDirect
 Solves the eigenvalue problem with a direct method: first does LU factorization of Cq jacobians to find the null space, then solves the problem using the direct Eigen::EigenSolver. More...
 

Functions

void placeMatrix (Eigen::SparseMatrix< double, Eigen::ColMajor, int > &HCQ, const ChSparseMatrix &H, int row_start, int col_start)
 
void ordschur (ChMatrixDynamic< std::complex< double >> &U, ChMatrixDynamic< std::complex< double >> &T, ChVectorDynamic< bool > &select)
 
int testConverge (ChMatrixDynamic< std::complex< double >> &H, int k, int i, double tol)
 
void truncateKrylov (ChMatrixDynamic< std::complex< double >> &Q, ChMatrixDynamic< std::complex< double >> &H, const int k, const int m)
 
void sortSchur (ChMatrixDynamic< std::complex< double >> &US, ChMatrixDynamic< std::complex< double >> &TS, bool &isC, const ChMatrixDynamic< std::complex< double >> &A, const int k)
 
void expandKrylov (ChMatrixDynamic< std::complex< double >> &Q, ChMatrixDynamic< std::complex< double >> &H, callback_Ax *Ax_function, int sk, int ek)
 
void KrylovSchur (ChMatrixDynamic< std::complex< double >> &Q, ChMatrixDynamic< std::complex< double >> &H, bool &isC, bool &flag, int &nc, int &ni, callback_Ax *Ax_function, const ChVectorDynamic< std::complex< double >> &v1, const int n, const int k, const int m, const int maxIt, const double tol)
 
void swap (ChModalAssembly &first, ChModalAssembly &second)
 
void util_sparse_assembly_2x2symm (Eigen::SparseMatrix< double, Eigen::ColMajor, int > &HCQ, const ChSparseMatrix &H, const ChSparseMatrix &Cq)
 

Function Documentation

◆ swap()

void chrono::modal::swap ( ChModalAssembly first,
ChModalAssembly second 
)

Implemented as a friend (as opposed to a member function) so classes with a ChModalAssembly member can use ADL when implementing their own swap.

◆ util_sparse_assembly_2x2symm()

void chrono::modal::util_sparse_assembly_2x2symm ( Eigen::SparseMatrix< double, Eigen::ColMajor, int > &  HCQ,
const ChSparseMatrix H,
const ChSparseMatrix Cq 
)
Parameters
HCQresulting square sparse matrix (column major)
Hsquare sparse H matrix, n_v x n_v
Cqrectangular sparse Cq n_c x n_v