MFEM  v4.5.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) 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 1908 of file hypre.hpp.

## ◆ HypreLOBPCG()

 mfem::HypreLOBPCG::HypreLOBPCG ( MPI_Comm comm )

Definition at line 6097 of file hypre.cpp.

## ◆ ~HypreLOBPCG()

 mfem::HypreLOBPCG::~HypreLOBPCG ( )

Definition at line 6117 of file hypre.cpp.

## ◆ GetEigenvalues()

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

Collect the converged eigenvalues.

Definition at line 6230 of file hypre.cpp.

## ◆ GetEigenvector()

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

Extract a single eigenvector.

Definition at line 6242 of file hypre.cpp.

## ◆ SetInitialVectors()

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

Definition at line 6248 of file hypre.cpp.

## ◆ SetMassMatrix()

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

Definition at line 6220 of file hypre.cpp.

## ◆ SetMaxIter()

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

Definition at line 6143 of file hypre.cpp.

## ◆ SetNumModes()

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

Definition at line 2002 of file hypre.hpp.

## ◆ SetOperator()

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

Definition at line 6173 of file hypre.cpp.

## ◆ SetPreconditioner()

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

Definition at line 6164 of file hypre.cpp.

## ◆ SetPrecondUsageMode()

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

Definition at line 6158 of file hypre.cpp.

## ◆ SetPrintLevel()

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

Definition at line 6149 of file hypre.cpp.

## ◆ SetRandomSeed()

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

Definition at line 2004 of file hypre.hpp.

## ◆ SetRelTol()

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

Definition at line 6133 of file hypre.cpp.

## ◆ SetSubSpaceProjector()

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

Definition at line 2011 of file hypre.hpp.

## ◆ SetTol()

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

Definition at line 6127 of file hypre.cpp.

## ◆ Solve()

 void mfem::HypreLOBPCG::Solve ( )

Solve the eigenproblem.

Definition at line 6287 of file hypre.cpp.

## ◆ StealEigenvectors()

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

Transfer ownership of the converged eigenvectors.

Definition at line 2023 of file hypre.hpp.

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