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 | ChGeneralizedEigenvalueSolver |
Base interface class for generalized eigenvalue solvers A*x = lambda*B*x. 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 | ChModalEventReceiver |
Custom Irrlicht event receiver for modal analysis visualization. More... | |
class | ChModalSolver |
Base class for modal solvers. More... | |
class | ChModalSolverDamped |
Modal solver for damped systems of the form (-w^2*M + i*w*R + K)*x = 0 s.t. More... | |
class | ChModalSolverUndamped |
Modal solver for undamped systems (-w^2*M+K)*x = 0 s.t. More... | |
class | ChModalVisualSystemIrrlicht |
Customized Chrono Irrlicht visualization for modal analaysis. More... | |
class | ChSymGenEigenvalueSolver |
Base interface class for iterative eigenvalue solvers for generalized problem with real symmetric matrices. More... | |
class | ChSymGenEigenvalueSolverKrylovSchur |
Generalized iterative eigenvalue solver implementing Krylov-Schur shift-and-invert method for real symmetric matrices. More... | |
class | ChSymGenEigenvalueSolverLanczos |
Generalized iterative eigenvalue solver implementing Lanczos shift-and-invert method for real symmetric matrices. More... | |
class | ChUnsymGenEigenvalueSolver |
Base interface class for iterative eigenvalue solvers for generalized problem with real generic matrices. More... | |
class | ChUnsymGenEigenvalueSolverKrylovSchur |
Generalized iterative eigenvalue solver implementing Krylov-Schur shift-and-invert method for real generic matrices. More... | |
Functions | |
template<typename EigSolverType > | |
int | Solve (EigSolverType &eig_solver, ChSparseMatrix &A, ChSparseMatrix &B, ChMatrixDynamic< typename EigSolverType::ScalarType > &eigvects, ChVectorDynamic< typename EigSolverType::ScalarType > &eigvals, const std::list< std::pair< int, typename EigSolverType::ScalarType >> &eig_requests, bool uniquify=true, int eigvects_clipping_length=0) |
Helper function to solve any kind of generalized eigenvalue problem even with multiple requests. More... | |
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 (ChSparseMatrix &HCQ, const ChSparseMatrix &H, const ChSparseMatrix &Cq, bool resize_and_reserve=true) |
void | util_convert_to_colmajor (Eigen::SparseMatrix< double, Eigen::ColMajor, int > &H_col, const ChSparseMatrix &H) |
void | BuildDampedEigenProblemMatrices (ChAssembly &assembly, ChSystemDescriptor &temp_descriptor, ChSparseMatrix &A, ChSparseMatrix &B, int n_vars) |
Partially build the damped eigenvalue problem matrices A and B from a given ChAssembly. More... | |
void | BuildUndampedEigenProblemMatrices (ChAssembly &assembly, ChSystemDescriptor &temp_descriptor, ChSparseMatrix &A, ChSparseMatrix &B, int n_vars) |
Partially build the undamped eigenvalue problem matrices A and B from a given ChAssembly. More... | |
void | CountNonZerosForEachRow (const ChSparseMatrix &Q, Eigen::VectorXi &nonZerosPerRow, int offset) |
void | CountNonZerosForEachRowTransposed (const ChSparseMatrix &Q_transp, Eigen::VectorXi &nonZerosPerRow, int offset) |
Function Documentation
◆ BuildDampedEigenProblemMatrices()
void chrono::modal::BuildDampedEigenProblemMatrices | ( | ChAssembly & | assembly, |
ChSystemDescriptor & | temp_descriptor, | ||
ChSparseMatrix & | A, | ||
ChSparseMatrix & | B, | ||
int | n_vars | ||
) |
Partially build the damped eigenvalue problem matrices A and B from a given ChAssembly.
WARNING: Cq and Cq' signs are not flipped here: the user is expected to flip it during scaling (if any) The final shape of the matrices is:
A = [ 0 I 0 ] [ -K -R -Cq' ] [ -Cq 0 0 ]
B = [ I 0 0 ] [ 0 M 0 ] [ 0 0 0 ]
◆ 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_convert_to_colmajor()
void chrono::modal::util_convert_to_colmajor | ( | Eigen::SparseMatrix< double, Eigen::ColMajor, int > & | H_col, |
const ChSparseMatrix & | H | ||
) |
- Parameters
-
H_col resulting sparse matrix (column major) H input sparse matrix (row major)
◆ util_sparse_assembly_2x2symm()
void chrono::modal::util_sparse_assembly_2x2symm | ( | ChSparseMatrix & | HCQ, |
const ChSparseMatrix & | H, | ||
const ChSparseMatrix & | Cq, | ||
bool | resize_and_reserve = true |
||
) |
- Parameters
-
HCQ resulting square sparse matrix H square sparse H matrix, [n_v, n_v] Cq rectangular sparse Cq [n_c, n_v]