MFEM  v4.2.0
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Classes | Public Member Functions | List of all members
mfem::HypreLOBPCG Class Reference

#include <hypre.hpp>

Public Member Functions

 HypreLOBPCG (MPI_Comm comm)
 
 ~HypreLOBPCG ()
 
void SetTol (double tol)
 
void SetRelTol (double 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. More...
 
void GetEigenvalues (Array< double > &eigenvalues)
 Collect the converged eigenvalues. More...
 
HypreParVectorGetEigenvector (unsigned int i)
 Extract a single eigenvector. More...
 
HypreParVector ** StealEigenvectors ()
 Transfer ownership of the converged eigenvectors. More...
 

Detailed Description

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.

Definition at line 1241 of file hypre.hpp.

Constructor & Destructor Documentation

mfem::HypreLOBPCG::HypreLOBPCG ( MPI_Comm  comm)

Definition at line 4191 of file hypre.cpp.

mfem::HypreLOBPCG::~HypreLOBPCG ( )

Definition at line 4211 of file hypre.cpp.

Member Function Documentation

void mfem::HypreLOBPCG::GetEigenvalues ( Array< double > &  eigenvalues)

Collect the converged eigenvalues.

Definition at line 4323 of file hypre.cpp.

HypreParVector & mfem::HypreLOBPCG::GetEigenvector ( unsigned int  i)

Extract a single eigenvector.

Definition at line 4335 of file hypre.cpp.

void mfem::HypreLOBPCG::SetInitialVectors ( int  num_vecs,
HypreParVector **  vecs 
)

Definition at line 4341 of file hypre.cpp.

void mfem::HypreLOBPCG::SetMassMatrix ( Operator M)

Definition at line 4313 of file hypre.cpp.

void mfem::HypreLOBPCG::SetMaxIter ( int  max_iter)

Definition at line 4237 of file hypre.cpp.

void mfem::HypreLOBPCG::SetNumModes ( int  num_eigs)
inline

Definition at line 1335 of file hypre.hpp.

void mfem::HypreLOBPCG::SetOperator ( Operator A)

Definition at line 4267 of file hypre.cpp.

void mfem::HypreLOBPCG::SetPreconditioner ( Solver precond)

Definition at line 4258 of file hypre.cpp.

void mfem::HypreLOBPCG::SetPrecondUsageMode ( int  pcg_mode)

Definition at line 4252 of file hypre.cpp.

void mfem::HypreLOBPCG::SetPrintLevel ( int  logging)

Definition at line 4243 of file hypre.cpp.

void mfem::HypreLOBPCG::SetRandomSeed ( int  s)
inline

Definition at line 1337 of file hypre.hpp.

void mfem::HypreLOBPCG::SetRelTol ( double  rel_tol)

Definition at line 4227 of file hypre.cpp.

void mfem::HypreLOBPCG::SetSubSpaceProjector ( Operator proj)
inline

Definition at line 1344 of file hypre.hpp.

void mfem::HypreLOBPCG::SetTol ( double  tol)

Definition at line 4221 of file hypre.cpp.

void mfem::HypreLOBPCG::Solve ( )

Solve the eigenproblem.

Definition at line 4380 of file hypre.cpp.

HypreParVector** mfem::HypreLOBPCG::StealEigenvectors ( )
inline

Transfer ownership of the converged eigenvectors.

Definition at line 1356 of file hypre.hpp.


The documentation for this class was generated from the following files: