MFEM v4.7.0 Finite element discretization library
Searching...
No Matches
mfem::HypreLOBPCG Class Reference

#include <hypre.hpp>

## Public Member Functions

HypreLOBPCG (MPI_Comm comm)

~HypreLOBPCG ()

void SetTol (real_t tol)

void SetRelTol (real_t 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.

void GetEigenvalues (Array< real_t > &eigenvalues) const
Collect the converged eigenvalues.

const HypreParVectorGetEigenvector (unsigned int i) const
Extract a single eigenvector.

HypreParVector ** StealEigenvectors ()
Transfer ownership of the converged eigenvectors.

## 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 2009 of file hypre.hpp.

## ◆ HypreLOBPCG()

 mfem::HypreLOBPCG::HypreLOBPCG ( MPI_Comm comm )

Definition at line 6220 of file hypre.cpp.

## ◆ ~HypreLOBPCG()

 mfem::HypreLOBPCG::~HypreLOBPCG ( )

Definition at line 6240 of file hypre.cpp.

## ◆ GetEigenvalues()

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

Collect the converged eigenvalues.

Definition at line 6353 of file hypre.cpp.

## ◆ GetEigenvector()

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

Extract a single eigenvector.

Definition at line 6365 of file hypre.cpp.

## ◆ SetInitialVectors()

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

Definition at line 6371 of file hypre.cpp.

## ◆ SetMassMatrix()

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

Definition at line 6343 of file hypre.cpp.

## ◆ SetMaxIter()

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

Definition at line 6266 of file hypre.cpp.

## ◆ SetNumModes()

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

Definition at line 2103 of file hypre.hpp.

## ◆ SetOperator()

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

Definition at line 6296 of file hypre.cpp.

## ◆ SetPreconditioner()

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

Definition at line 6287 of file hypre.cpp.

## ◆ SetPrecondUsageMode()

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

Definition at line 6281 of file hypre.cpp.

## ◆ SetPrintLevel()

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

Definition at line 6272 of file hypre.cpp.

## ◆ SetRandomSeed()

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

Definition at line 2105 of file hypre.hpp.

## ◆ SetRelTol()

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

Definition at line 6256 of file hypre.cpp.

## ◆ SetSubSpaceProjector()

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

Definition at line 2112 of file hypre.hpp.

## ◆ SetTol()

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

Definition at line 6250 of file hypre.cpp.

## ◆ Solve()

 void mfem::HypreLOBPCG::Solve ( )

Solve the eigenproblem.

Definition at line 6410 of file hypre.cpp.

## ◆ StealEigenvectors()

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

Transfer ownership of the converged eigenvectors.

Definition at line 2124 of file hypre.hpp.

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