![]() |
MFEM v4.8.0
Finite element discretization library
|
#include <hypre.hpp>
Public Member Functions | |
| HypreLOBPCG (MPI_Comm comm) | |
| ~HypreLOBPCG () | |
| void | SetTol (real_t tol) |
| void | SetRelTol (real_t rel_tol) |
| void | SetMaxIter (int max_iter) |
| void | SetPrintLevel (int logging) |
| void | SetNumModes (int num_eigs) |
| void | SetPrecondUsageMode (int pcg_mode) |
| void | SetRandomSeed (int s) |
| void | SetInitialVectors (int num_vecs, HypreParVector **vecs) |
| void | SetPreconditioner (Solver &precond) |
| void | SetOperator (Operator &A) |
| void | SetMassMatrix (Operator &M) |
| void | SetSubSpaceProjector (Operator &proj) |
| void | Solve () |
| Solve the eigenproblem. | |
| void | GetEigenvalues (Array< real_t > &eigenvalues) const |
| Collect the converged eigenvalues. | |
| const HypreParVector & | GetEigenvector (unsigned int i) const |
| Extract a single eigenvector. | |
| HypreParVector ** | StealEigenvectors () |
| Transfer ownership of the converged eigenvectors. | |
LOBPCG eigenvalue solver in hypre
The Locally Optimal Block Preconditioned Conjugate Gradient (LOBPCG) eigenvalue solver is designed to find the lowest eigenmodes of the generalized eigenvalue problem: A x = lambda M x where A is symmetric, potentially indefinite and M is symmetric positive definite. The eigenvectors are M-orthonormal, meaning that x^T M x = 1 and x^T M y = 0, if x and y are distinct eigenvectors. The matrix M is optional and is assumed to be the identity if left unset.
The efficiency of LOBPCG relies on the availability of a suitable preconditioner for the matrix A. The preconditioner is supplied through the SetPreconditioner() method. It should be noted that the operator used with the preconditioner need not be A itself.
For more information regarding LOBPCG see "Block Locally Optimal Preconditioned Eigenvalue Xolvers (BLOPEX) in Hypre and PETSc" by A. Knyazev, M. Argentati, I. Lashuk, and E. Ovtchinnikov, SISC, 29(5), 2224-2239, 2007.
| const HypreParVector & mfem::HypreLOBPCG::GetEigenvector | ( | unsigned int | i | ) | const |
| void mfem::HypreLOBPCG::SetInitialVectors | ( | int | num_vecs, |
| HypreParVector ** | vecs ) |
|
inline |
| void mfem::HypreLOBPCG::SetPreconditioner | ( | Solver & | precond | ) |
| void mfem::HypreLOBPCG::SetPrecondUsageMode | ( | int | pcg_mode | ) |
|
inline |
| void mfem::HypreLOBPCG::Solve | ( | ) |
|
inline |