MFEM
v3.2
Finite element discretization library
|
#include <hypre.hpp>
Public Member Functions | |
HypreLOBPCG (MPI_Comm comm) | |
~HypreLOBPCG () | |
void | SetTol (double 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 | SetPreconditioner (Solver &precond) |
void | SetOperator (Operator &A) |
void | SetMassMatrix (Operator &M) |
void | Solve () |
Solve the eigenproblem. More... | |
void | GetEigenvalues (Array< double > &eigenvalues) |
Collect the converged eigenvalues. More... | |
HypreParVector & | GetEigenvector (unsigned int i) |
Extract a single eigenvector. More... | |
HypreParVector ** | StealEigenvectors () |
Transfer ownership of the converged eigenvectors. More... | |
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.
void mfem::HypreLOBPCG::GetEigenvalues | ( | Array< double > & | eigenvalues | ) |
HypreParVector & mfem::HypreLOBPCG::GetEigenvector | ( | unsigned int | i | ) |
|
inline |
void mfem::HypreLOBPCG::SetPreconditioner | ( | Solver & | precond | ) |
void mfem::HypreLOBPCG::SetPrecondUsageMode | ( | int | pcg_mode | ) |
void mfem::HypreLOBPCG::Solve | ( | ) |
|
inline |