chrono::modal::ChKrylovSchurEig Class Reference

Description

Compute (complex) eigenvalues and eigenvectors using the Krylov-Schur algorithm.

Adapted from Matlab code at https://github.com/dingxiong/KrylovSchur Use one of the chrono::modal::callback_Ax provided above depending on the type of problem that you must solve.

#include <ChKrylovSchurEig.h>

Public Member Functions

 ChKrylovSchurEig (ChMatrixDynamic< std::complex< double >> &v, ChVectorDynamic< std::complex< double >> &eig, bool &isC, bool &flag, int &nc, int &ni, callback_Ax *Ax_function, ChVectorDynamic< std::complex< double >> &v1, const int n, const int k, const int m, const int maxIt, const double tol)
 

Constructor & Destructor Documentation

◆ ChKrylovSchurEig()

chrono::modal::ChKrylovSchurEig::ChKrylovSchurEig ( ChMatrixDynamic< std::complex< double >> &  v,
ChVectorDynamic< std::complex< double >> &  eig,
bool &  isC,
bool &  flag,
int &  nc,
int &  ni,
callback_Ax Ax_function,
ChVectorDynamic< std::complex< double >> &  v1,
const int  n,
const int  k,
const int  m,
const int  maxIt,
const double  tol 
)
Parameters
voutput matrix with eigenvectors as columns, will be resized
eigoutput vector with eigenvalues (real part not zero if some damping), will be resized
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
Ax_functioncompute the A*x operation, assuming standard eigenvalue problem A*v=lambda*v.
v1initial approx of eigenvector, or random
nsize of A
knumber of needed eigenvalues
mKrylov restart threshold (largest dimension of krylov subspace)
maxItmax iteration number
toltolerance

The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono_modal/ChKrylovSchurEig.h
  • /builds/uwsbel/chrono/src/chrono_modal/ChKrylovSchurEig.cpp