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]