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 | sparse_assembly_2x2symm (Eigen::SparseMatrix< double, Eigen::ColMajor, int > &HCQ, const ChSparseMatrix &H, const ChSparseMatrix &Cq) |
| 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
◆ expandKrylov()
| void chrono::modal::expandKrylov | ( | ChMatrixDynamic< std::complex< double >> & | Q, |
| ChMatrixDynamic< std::complex< double >> & | H, | ||
| callback_Ax * | Ax_function, | ||
| int | sk, | ||
| int | ek | ||
| ) |
- Parameters
-
Q orthonormal matrix with dimension [n x k+1] or [n x k+2] H `Hessenberg' matrix with dimension [k+1 x k] or [k+2 x k+1] sk void (*Ax_function)(ChVectorDynamic<std::complex<double>>& A_x, const ChVectorDynamic<std::complex<double>>& x), ///< compute the A*x operation, for standard eigenvalue problem A*v=lambda*v.
◆ KrylovSchur()
| void chrono::modal::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 | ||
| ) |
- Parameters
-
Q orthonormal matrix with dimension [n x k+1] or [n x k+2] H `Hessenberg' matrix with dimension [k+1 x k] or [k+2 x k+1] isC 0 = k-th eigenvalue is real, 1= k-th and k-th+1 are complex conjugate pairs flag 0 = has converged, 1 = hasn't converged nc number of converged eigenvalues ni number of used iterations v1 void (*Ax_function)(ChVectorDynamic<std::complex<double>>& A_x, const ChVectorDynamic<std::complex<double>>& x), ///< compute the A*x operation, for standard eigenvalue problem A*v=lambda*v. initial approx of eigenvector, or random n size of A k number of needed eigenvalues m Krylov restart threshold (largest dimension of krylov subspace) maxIt max iteration number tol tolerance
◆ sparse_assembly_2x2symm()
| void chrono::modal::sparse_assembly_2x2symm | ( | Eigen::SparseMatrix< double, Eigen::ColMajor, int > & | HCQ, |
| const ChSparseMatrix & | H, | ||
| const ChSparseMatrix & | Cq | ||
| ) |
- Parameters
-
HCQ resulting square sparse matrix (column major) H square sparse H matrix, n_v x n_v Cq rectangular sparse Cq n_c x n_v
◆ 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
-
HCQ resulting square sparse matrix (column major) H square sparse H matrix, n_v x n_v Cq rectangular sparse Cq n_c x n_v