Users:General FEM Analysis/Solvers Reference/Eigensolvers

From Carat++ Public Wiki
Jump to: navigation, search


Carat++ offers one in-house eigen solver which is independant of any third part libraries and two solvers which are depending on the TRILINOS package.

All of this solvers are based on Krylow subspace-iteration methods.

Contents

In-house algorithm

Eigen Subspace Iteration

This is a self-programmed Krylow-Schur method based on a Skyline matrix storage format. It is based on the in-house linear solver Crout Skyline as sub-solving routine.

Within the input block the tolerance and the maximum number of iterations has to be defined.

PC-SOLVER 1: EIGEN_SUBSPACE_IT
 SUBSOLVE = CROUT_SKYLINE ! or CHOLMOD
 SUBSOLVE_EIG = LAPACK ! or JACOBI or QR
 BANDWITH = CUTHILL_MCKEE
 REL_TOLERANCE = 1E-12
 MAX_NUM_ITER = 5000

Like for all Skyline matrix applications, a bandwidth optimization is strictly recommended.

TRILINOS-based algorithm

Eigen Subspace Iteration

This is in principle the same algorithm as the one implemented in the in-house solver. The differences are that the linear algebra is based on TRILINOS Epetra (CSR-Matrix) and any linear TRILINOS solver can be used as a sub-solver.

PC-SOLVER 1: TRILINOS_EIGEN_SUBSPACE_IT
 BANDWITH = CUTHILL_MCKEE
 REL_TOLERANCE = 1E-12
 MAX_NUM_ITER = 1000
 SUB_SOLVER = PC-SOLVER 2   ! Any TRILINOS linear solver
 OUTPUT = WARNINGS          ! choose: WARNINGS  ERRORS  DETAILS

ANASAZI eigen solver

ANASAZI is the eigen solver package of TRILINOS, providing Block-Krylow-Schur and Block-Davidson methods. In general an ANASAZI solver should perform better than the in-house coded subspace iteration solver, so ANASAZI should be prefered if it is available.

PC-SOLVER 1: TRILINOS_ANASAZI
 BANDWITH = CUTHILL_MCKEE
 REL_TOLERANCE = 1E-12
 MAX_NUM_ITER = 1000
 TYPE = BLOCK_KRYLOV_SCHUR
 SUB_SOLVER = PC-SOLVER 2   ! Any TRILINOS linear solver
 OUTPUT = DETAILS           ! choose: WARNINGS  ERRORS  DETAILS




Whos here now:   Members 0   Guests 0   Bots & Crawlers 1
 
Personal tools
Content for Developers