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