MFEM  v3.3.2 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)
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 932 of file hypre.hpp.

## Constructor & Destructor Documentation

 mfem::HypreLOBPCG::HypreLOBPCG ( MPI_Comm comm )

Definition at line 3145 of file hypre.cpp.

 mfem::HypreLOBPCG::~HypreLOBPCG ( )

Definition at line 3165 of file hypre.cpp.

## Member Function Documentation

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

Collect the converged eigenvalues.

Definition at line 3277 of file hypre.cpp.

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

Extract a single eigenvector.

Definition at line 3289 of file hypre.cpp.

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

Definition at line 3295 of file hypre.cpp.

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

Definition at line 3267 of file hypre.cpp.

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

Definition at line 3191 of file hypre.cpp.

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

Definition at line 1026 of file hypre.hpp.

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

Definition at line 3221 of file hypre.cpp.

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

Definition at line 3212 of file hypre.cpp.

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

Definition at line 3206 of file hypre.cpp.

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

Definition at line 3197 of file hypre.cpp.

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

Definition at line 1028 of file hypre.hpp.

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

Definition at line 3181 of file hypre.cpp.

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

Definition at line 1035 of file hypre.hpp.

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

Definition at line 3175 of file hypre.cpp.

 void mfem::HypreLOBPCG::Solve ( )

Solve the eigenproblem.

Definition at line 3334 of file hypre.cpp.

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

Transfer ownership of the converged eigenvectors.

Definition at line 1047 of file hypre.hpp.

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