 MFEM  v4.5.1 Finite element discretization library
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) const
Collect the converged eigenvalues. More...

const HypreParVectorGetEigenvector (unsigned int i) const
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 1897 of file hypre.hpp.

## Constructor & Destructor Documentation

 mfem::HypreLOBPCG::HypreLOBPCG ( MPI_Comm comm )

Definition at line 6096 of file hypre.cpp.

 mfem::HypreLOBPCG::~HypreLOBPCG ( )

Definition at line 6116 of file hypre.cpp.

## Member Function Documentation

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

Collect the converged eigenvalues.

Definition at line 6229 of file hypre.cpp.

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

Extract a single eigenvector.

Definition at line 6241 of file hypre.cpp.

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

Definition at line 6247 of file hypre.cpp.

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

Definition at line 6219 of file hypre.cpp.

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

Definition at line 6142 of file hypre.cpp.

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

Definition at line 1991 of file hypre.hpp.

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

Definition at line 6172 of file hypre.cpp.

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

Definition at line 6163 of file hypre.cpp.

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

Definition at line 6157 of file hypre.cpp.

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

Definition at line 6148 of file hypre.cpp.

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

Definition at line 1993 of file hypre.hpp.

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

Definition at line 6132 of file hypre.cpp.

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

Definition at line 2000 of file hypre.hpp.

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

Definition at line 6126 of file hypre.cpp.

 void mfem::HypreLOBPCG::Solve ( )

Solve the eigenproblem.

Definition at line 6286 of file hypre.cpp.

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

Transfer ownership of the converged eigenvectors.

Definition at line 2012 of file hypre.hpp.

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