MFEM v4.9.0
Finite element discretization library
Loading...
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 2055 of file hypre.hpp.

Constructor & Destructor Documentation

◆ HypreLOBPCG()

mfem::HypreLOBPCG::HypreLOBPCG ( MPI_Comm comm)

Definition at line 6294 of file hypre.cpp.

◆ ~HypreLOBPCG()

mfem::HypreLOBPCG::~HypreLOBPCG ( )

Definition at line 6314 of file hypre.cpp.

Member Function Documentation

◆ GetEigenvalues()

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

Collect the converged eigenvalues.

Definition at line 6427 of file hypre.cpp.

◆ GetEigenvector()

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

Extract a single eigenvector.

Definition at line 6439 of file hypre.cpp.

◆ SetInitialVectors()

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

Definition at line 6445 of file hypre.cpp.

◆ SetMassMatrix()

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

Definition at line 6417 of file hypre.cpp.

◆ SetMaxIter()

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

Definition at line 6340 of file hypre.cpp.

◆ SetNumModes()

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

Definition at line 2149 of file hypre.hpp.

◆ SetOperator()

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

Definition at line 6370 of file hypre.cpp.

◆ SetPreconditioner()

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

Definition at line 6361 of file hypre.cpp.

◆ SetPrecondUsageMode()

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

Definition at line 6355 of file hypre.cpp.

◆ SetPrintLevel()

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

Definition at line 6346 of file hypre.cpp.

◆ SetRandomSeed()

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

Definition at line 2151 of file hypre.hpp.

◆ SetRelTol()

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

Definition at line 6330 of file hypre.cpp.

◆ SetSubSpaceProjector()

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

Definition at line 2158 of file hypre.hpp.

◆ SetTol()

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

Definition at line 6324 of file hypre.cpp.

◆ Solve()

void mfem::HypreLOBPCG::Solve ( )

Solve the eigenproblem.

Definition at line 6484 of file hypre.cpp.

◆ StealEigenvectors()

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

Transfer ownership of the converged eigenvectors.

Definition at line 2170 of file hypre.hpp.


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