|
IFEM
90A354
|
Top-level functions for invoking eigenproblem solvers. More...
Functions | |
| int | solve (SystemMatrix *A, SystemMatrix *B, Vector &eigVal, Matrix &eigVec, int nev, int iop=1, double shift=0.0) |
| Solves the eigenvalue problem using either SPRLAN, LAPACK or SLEPC. More... | |
| bool | solve (SystemMatrix *A, SystemMatrix *B, Vector &eigVal, Matrix &eigVec, int nev, int ncv, int mode, double shift=0.0) |
| Solves the eigenvalue problem (A-lambda*B)*x = 0 using ARPACK. More... | |
Variables | |
| bool | verbose = false |
| If true, print out some Arnoldi iteration info. | |
Top-level functions for invoking eigenproblem solvers.
| int eig::solve | ( | SystemMatrix * | A, |
| SystemMatrix * | B, | ||
| Vector & | eigVal, | ||
| Matrix & | eigVec, | ||
| int | nev, | ||
| int | iop = 1, |
||
| double | shift = 0.0 |
||
| ) |
Solves the eigenvalue problem using either SPRLAN, LAPACK or SLEPC.
| A | The system stiffness matrix | |
| B | The system mass matrix | |
| [out] | eigVal | Computed eigenvalues |
| [out] | eigVec | Computed eigenvectors |
| [in] | nev | Number of eigenvalues/vector to compute |
| [in] | iop | SPRLAN option |
| [in] | shift | Eigenvalue shift |
Depending on the matrix type an alternative eigensolver is tried. Fall back to ARPACK solver if not available.
References PETScMatrix::solveEig(), DenseMatrix::solveEig(), and SPRMatrix::solveEig().
Referenced by solve(), AlgEqSystem::staticCondensation(), and SIMbase::systemModes().
| bool eig::solve | ( | SystemMatrix * | A, |
| SystemMatrix * | B, | ||
| Vector & | eigVal, | ||
| Matrix & | eigVec, | ||
| int | nev, | ||
| int | ncv, | ||
| int | mode, | ||
| double | shift = 0.0 |
||
| ) |
Solves the eigenvalue problem (A-lambda*B)*x = 0 using ARPACK.
| A | The system stiffness matrix | |
| B | The system mass matrix | |
| [out] | eigVal | Computed eigenvalues |
| [out] | eigVec | Computed eigenvectors |
| [in] | nev | Number of eigenvalues/vectors (see ARPack documentation) |
| [in] | ncv | Number of Arnoldi vectors (see ARPack documentation) |
| [in] | mode | Eigensolver method (1...6, see ARPack documentation) |
| [in] | shift | Eigenvalue shift |
References SystemMatrix::add(), AM, SystemMatrix::compressPattern(), SystemMatrix::copy(), SystemMatrix::dim(), eig_drv1_(), eig_drv2_(), eig_drv3_(), eig_drv4_(), eig_drv5_(), eig_drv6_(), iverb, K, M, utl::vector< T >::ptr(), utl::matrixBase< T >::ptr(), utl::vector< T >::resize(), utl::matrix< T >::resize(), solve(), and verbose.