MFEM v4.7.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 |