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

#include <hypre.hpp>

Public Member Functions

 HypreAME (MPI_Comm comm)
 
 ~HypreAME ()
 
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 SetPreconditioner (HypreSolver &precond)
 
void SetOperator (const HypreParMatrix &A)
 
void SetMassMatrix (const HypreParMatrix &M)
 
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

AME eigenvalue solver in hypre

The Auxiliary space Maxwell Eigensolver (AME) is designed to find the lowest eigenmodes of the generalized eigenvalue problem: Curl Curl x = lambda M x where the Curl Curl operator is discretized using Nedelec finite element basis functions. Properties of this discretization are essential to eliminating the large null space of the Curl Curl operator.

This eigensolver relies upon the LOBPCG eigensolver internally. It is also expected that the preconditioner supplied to this method will be the HypreAMS preconditioner defined above.

As with LOBPCG, the operator set in the preconditioner need not be the same as A. This flexibility may be useful in solving eigenproblems which bare a strong resemblance to the Curl Curl problems for which AME is designed.

Unlike LOBPCG, this eigensolver requires that the mass matrix be set. It is possible to circumvent this by passing an identity operator as the mass matrix but it seems unlikely that this would be useful so it is not the default behavior.

Definition at line 2149 of file hypre.hpp.

Constructor & Destructor Documentation

◆ HypreAME()

mfem::HypreAME::HypreAME ( MPI_Comm comm)

Definition at line 6520 of file hypre.cpp.

◆ ~HypreAME()

mfem::HypreAME::~HypreAME ( )

Definition at line 6537 of file hypre.cpp.

Member Function Documentation

◆ GetEigenvalues()

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

Collect the converged eigenvalues.

Definition at line 6641 of file hypre.cpp.

◆ GetEigenvector()

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

Extract a single eigenvector.

Definition at line 6665 of file hypre.cpp.

◆ SetMassMatrix()

void mfem::HypreAME::SetMassMatrix ( const HypreParMatrix & M)

Definition at line 6622 of file hypre.cpp.

◆ SetMaxIter()

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

Definition at line 6586 of file hypre.cpp.

◆ SetNumModes()

void mfem::HypreAME::SetNumModes ( int num_eigs)

Definition at line 6562 of file hypre.cpp.

◆ SetOperator()

void mfem::HypreAME::SetOperator ( const HypreParMatrix & A)

Definition at line 6607 of file hypre.cpp.

◆ SetPreconditioner()

void mfem::HypreAME::SetPreconditioner ( HypreSolver & precond)

Definition at line 6601 of file hypre.cpp.

◆ SetPrintLevel()

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

Definition at line 6592 of file hypre.cpp.

◆ SetRelTol()

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

Definition at line 6576 of file hypre.cpp.

◆ SetTol()

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

Definition at line 6570 of file hypre.cpp.

◆ Solve()

void mfem::HypreAME::Solve ( )

Solve the eigenproblem.

Definition at line 6629 of file hypre.cpp.

◆ StealEigenvectors()

HypreParVector ** mfem::HypreAME::StealEigenvectors ( )

Transfer ownership of the converged eigenvectors.

Definition at line 6676 of file hypre.cpp.


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