MFEM v4.7.0
Finite element discretization library
|
#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 HypreParVector & | GetEigenvector (unsigned int i) const |
Extract a single eigenvector. | |
HypreParVector ** | StealEigenvectors () |
Transfer ownership of the converged eigenvectors. | |
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.
const HypreParVector & mfem::HypreAME::GetEigenvector | ( | unsigned int | i | ) | const |
void mfem::HypreAME::SetMassMatrix | ( | const HypreParMatrix & | M | ) |
void mfem::HypreAME::SetOperator | ( | const HypreParMatrix & | A | ) |
void mfem::HypreAME::SetPreconditioner | ( | HypreSolver & | precond | ) |
HypreParVector ** mfem::HypreAME::StealEigenvectors | ( | ) |