chrono::modal Namespace Reference

Description

Namespace with classes for the modal module.

Classes

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  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 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
Qorthonormal 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]
skvoid (*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
Qorthonormal 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]
isC0 = k-th eigenvalue is real, 1= k-th and k-th+1 are complex conjugate pairs
flag0 = has converged, 1 = hasn't converged
ncnumber of converged eigenvalues
ninumber of used iterations
v1void (*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
nsize of A
knumber of needed eigenvalues
mKrylov restart threshold (largest dimension of krylov subspace)
maxItmax iteration number
toltolerance

◆ sparse_assembly_2x2symm()

void chrono::modal::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

◆ 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