MFEM
v4.0
Finite element discretization library
|
The BoomerAMG solver in hypre. More...
#include <hypre.hpp>
Public Member Functions | |
HypreBoomerAMG () | |
HypreBoomerAMG (HypreParMatrix &A) | |
virtual void | SetOperator (const Operator &op) |
Set/update the solver for the given operator. More... | |
void | SetSystemsOptions (int dim) |
void | SetElasticityOptions (ParFiniteElementSpace *fespace) |
void | SetPrintLevel (int print_level) |
virtual | operator HYPRE_Solver () const |
The typecast to HYPRE_Solver returns the internal amg_precond. More... | |
virtual HYPRE_PtrToParSolverFcn | SetupFcn () const |
hypre's internal Setup function More... | |
virtual HYPRE_PtrToParSolverFcn | SolveFcn () const |
hypre's internal Solve function More... | |
virtual | ~HypreBoomerAMG () |
Public Member Functions inherited from mfem::HypreSolver | |
HypreSolver () | |
HypreSolver (HypreParMatrix *_A) | |
virtual void | Mult (const HypreParVector &b, HypreParVector &x) const |
Solve the linear system Ax=b. More... | |
virtual void | Mult (const Vector &b, Vector &x) const |
Operator application: y=A(x) . More... | |
virtual | ~HypreSolver () |
Public Member Functions inherited from mfem::Solver | |
Solver (int s=0, bool iter_mode=false) | |
Initialize a square Solver with size s. More... | |
Solver (int h, int w, bool iter_mode=false) | |
Initialize a Solver with height h and width w. More... | |
Public Member Functions inherited from mfem::Operator | |
Operator (int s=0) | |
Construct a square Operator with given size s (default 0). More... | |
Operator (int h, int w) | |
Construct an Operator with the given height (output size) and width (input size). More... | |
int | Height () const |
Get the height (size of output) of the Operator. Synonym with NumRows(). More... | |
int | NumRows () const |
Get the number of rows (size of output) of the Operator. Synonym with Height(). More... | |
int | Width () const |
Get the width (size of input) of the Operator. Synonym with NumCols(). More... | |
int | NumCols () const |
Get the number of columns (size of input) of the Operator. Synonym with Width(). More... | |
virtual MemoryClass | GetMemoryClass () const |
Return the MemoryClass preferred by the Operator. More... | |
virtual void | MultTranspose (const Vector &x, Vector &y) const |
Action of the transpose operator: y=A^t(x) . The default behavior in class Operator is to generate an error. More... | |
virtual Operator & | GetGradient (const Vector &x) const |
Evaluate the gradient operator at the point x. The default behavior in class Operator is to generate an error. More... | |
virtual const Operator * | GetProlongation () const |
Prolongation operator from linear algebra (linear system) vectors, to input vectors for the operator. NULL means identity. More... | |
virtual const Operator * | GetRestriction () const |
Restriction operator from input vectors for the operator to linear algebra (linear system) vectors. NULL means identity. More... | |
void | FormLinearSystem (const Array< int > &ess_tdof_list, Vector &x, Vector &b, Operator *&A, Vector &X, Vector &B, int copy_interior=0) |
Form a constrained linear system using a matrix-free approach. More... | |
virtual void | RecoverFEMSolution (const Vector &X, const Vector &b, Vector &x) |
Reconstruct a solution vector x (e.g. a GridFunction) from the solution X of a constrained linear system obtained from Operator::FormLinearSystem(). More... | |
void | PrintMatlab (std::ostream &out, int n=0, int m=0) const |
Prints operator with input size n and output size m in Matlab format. More... | |
virtual | ~Operator () |
Virtual destructor. More... | |
Type | GetType () const |
Return the type ID of the Operator class. More... | |
Additional Inherited Members | |
Public Types inherited from mfem::Operator | |
enum | Type { ANY_TYPE, MFEM_SPARSEMAT, Hypre_ParCSR, PETSC_MATAIJ, PETSC_MATIS, PETSC_MATSHELL, PETSC_MATNEST, PETSC_MATHYPRE, PETSC_MATGENERIC } |
Enumeration defining IDs for some classes derived from Operator. More... | |
Public Attributes inherited from mfem::Solver | |
bool | iterative_mode |
If true, use the second argument of Mult() as an initial guess. More... | |
Protected Attributes inherited from mfem::HypreSolver | |
HypreParMatrix * | A |
The linear system matrix. More... | |
HypreParVector * | B |
Right-hand side and solution vector. More... | |
HypreParVector * | X |
int | setup_called |
Was hypre's Setup function called already? More... | |
Protected Attributes inherited from mfem::Operator | |
int | height |
Dimension of the output / number of rows in the matrix. More... | |
int | width |
Dimension of the input / number of columns in the matrix. More... | |
mfem::HypreBoomerAMG::HypreBoomerAMG | ( | HypreParMatrix & | A | ) |
|
inlinevirtual |
The typecast to HYPRE_Solver returns the internal amg_precond.
Implements mfem::HypreSolver.
void mfem::HypreBoomerAMG::SetElasticityOptions | ( | ParFiniteElementSpace * | fespace | ) |
A special elasticity version of BoomerAMG that takes advantage of geometric rigid body modes and could perform better on some problems, see "Improving algebraic multigrid interpolation operators for linear elasticity problems", Baker, Kolev, Yang, NLAA 2009, DOI:10.1002/nla.688. As with SetSystemsOptions(), this solver assumes Ordering::byVDIM.
|
virtual |
Set/update the solver for the given operator.
Reimplemented from mfem::HypreSolver.
|
inline |
void mfem::HypreBoomerAMG::SetSystemsOptions | ( | int | dim | ) |
More robust options for systems, such as elasticity. Note that BoomerAMG assumes Ordering::byVDIM in the finite element space used to generate the matrix A.
|
inlinevirtual |
hypre's internal Setup function
Implements mfem::HypreSolver.
|
inlinevirtual |
hypre's internal Solve function
Implements mfem::HypreSolver.