MFEM  v3.4
Finite element discretization library
Public Types | Public Member Functions | Protected Attributes | List of all members
mfem::HypreSmoother Class Reference

Parallel smoothers in hypre. More...

#include <hypre.hpp>

Inheritance diagram for mfem::HypreSmoother:
[legend]
Collaboration diagram for mfem::HypreSmoother:
[legend]

Public Types

enum  Type {
  Jacobi = 0, l1Jacobi = 1, l1GS = 2, l1GStr = 4,
  lumpedJacobi = 5, GS = 6, Chebyshev = 16, Taubin = 1001,
  FIR = 1002
}
 
- 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 Member Functions

 HypreSmoother ()
 
 HypreSmoother (HypreParMatrix &_A, int type=l1GS, int relax_times=1, double relax_weight=1.0, double omega=1.0, int poly_order=2, double poly_fraction=.3)
 
void SetType (HypreSmoother::Type type, int relax_times=1)
 Set the relaxation type and number of sweeps. More...
 
void SetSOROptions (double relax_weight, double omega)
 Set SOR-related parameters. More...
 
void SetPolyOptions (int poly_order, double poly_fraction)
 Set parameters for polynomial smoothing. More...
 
void SetTaubinOptions (double lambda, double mu, int iter)
 Set parameters for Taubin's lambda-mu method. More...
 
void SetWindowByName (const char *window_name)
 Convenience function for setting canonical windowing parameters. More...
 
void SetWindowParameters (double a, double b, double c)
 Set parameters for windowing function for FIR smoother. More...
 
void SetFIRCoefficients (double max_eig)
 Compute window and Chebyshev coefficients for given polynomial order. More...
 
void SetPositiveDiagonal (bool pos=true)
 After computing l1-norms, replace them with their absolute values. More...
 
virtual void SetOperator (const Operator &op)
 
virtual void Mult (const HypreParVector &b, HypreParVector &x) const
 Relax the linear system Ax=b. More...
 
virtual void Mult (const Vector &b, Vector &x) const
 Operator application: y=A(x). More...
 
virtual ~HypreSmoother ()
 
- 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 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 OperatorGetGradient (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 OperatorGetProlongation () const
 Prolongation operator from linear algebra (linear system) vectors, to input vectors for the operator. NULL means identity. More...
 
virtual const OperatorGetRestriction () 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...
 

Protected Attributes

HypreParMatrixA
 The linear system matrix. More...
 
HypreParVectorB
 Right-hand side and solution vectors. More...
 
HypreParVectorX
 
HypreParVectorV
 Temporary vectors. More...
 
HypreParVectorZ
 
HypreParVectorX0
 FIR Filter Temporary Vectors. More...
 
HypreParVectorX1
 
int type
 
int relax_times
 Number of relaxation sweeps. More...
 
double relax_weight
 Damping coefficient (usually <= 1) More...
 
double omega
 SOR parameter (usually in (0,2)) More...
 
int poly_order
 Order of the smoothing polynomial. More...
 
double poly_fraction
 Fraction of spectrum to smooth for polynomial relaxation. More...
 
int poly_scale
 Apply the polynomial smoother to A or D^{-1/2} A D^{-1/2}. More...
 
double lambda
 Taubin's lambda-mu method parameters. More...
 
double mu
 
int taubin_iter
 
double * l1_norms
 l1 norms of the rows of A More...
 
bool pos_l1_norms
 If set, take absolute values of the computed l1_norms. More...
 
double max_eig_est
 Maximal eigenvalue estimate for polynomial smoothing. More...
 
double min_eig_est
 Minimal eigenvalue estimate for polynomial smoothing. More...
 
double window_params [3]
 Parameters for windowing function of FIR filter. More...
 
double * fir_coeffs
 Combined coefficients for windowing and Chebyshev polynomials. 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...
 

Additional Inherited Members

- Public Attributes inherited from mfem::Solver
bool iterative_mode
 If true, use the second argument of Mult() as an initial guess. More...
 

Detailed Description

Parallel smoothers in hypre.

Definition at line 517 of file hypre.hpp.

Member Enumeration Documentation

◆ Type

Hypre smoother types: 0 = Jacobi 1 = l1-scaled Jacobi 2 = l1-scaled block Gauss-Seidel/SSOR 4 = truncated l1-scaled block Gauss-Seidel/SSOR 5 = lumped Jacobi 6 = Gauss-Seidel 16 = Chebyshev 1001 = Taubin polynomial smoother 1002 = FIR polynomial smoother.

Enumerator
Jacobi 
l1Jacobi 
l1GS 
l1GStr 
lumpedJacobi 
GS 
Chebyshev 
Taubin 
FIR 

Definition at line 575 of file hypre.hpp.

Constructor & Destructor Documentation

◆ HypreSmoother() [1/2]

mfem::HypreSmoother::HypreSmoother ( )

Definition at line 1777 of file hypre.cpp.

◆ HypreSmoother() [2/2]

mfem::HypreSmoother::HypreSmoother ( HypreParMatrix _A,
int  type = l1GS,
int  relax_times = 1,
double  relax_weight = 1.0,
double  omega = 1.0,
int  poly_order = 2,
double  poly_fraction = .3 
)

Definition at line 1796 of file hypre.cpp.

◆ ~HypreSmoother()

mfem::HypreSmoother::~HypreSmoother ( )
virtual

Definition at line 2071 of file hypre.cpp.

Member Function Documentation

◆ Mult() [1/2]

void mfem::HypreSmoother::Mult ( const HypreParVector b,
HypreParVector x 
) const
virtual

Relax the linear system Ax=b.

Definition at line 1981 of file hypre.cpp.

◆ Mult() [2/2]

void mfem::HypreSmoother::Mult ( const Vector x,
Vector y 
) const
virtual

Operator application: y=A(x).

Implements mfem::Operator.

Definition at line 2044 of file hypre.cpp.

◆ SetFIRCoefficients()

void mfem::HypreSmoother::SetFIRCoefficients ( double  max_eig)

Compute window and Chebyshev coefficients for given polynomial order.

Definition at line 1941 of file hypre.cpp.

◆ SetOperator()

void mfem::HypreSmoother::SetOperator ( const Operator op)
virtual

Set/update the associated operator. Must be called after setting the HypreSmoother type and options.

Implements mfem::Solver.

Definition at line 1864 of file hypre.cpp.

◆ SetPolyOptions()

void mfem::HypreSmoother::SetPolyOptions ( int  poly_order,
double  poly_fraction 
)

Set parameters for polynomial smoothing.

Definition at line 1828 of file hypre.cpp.

◆ SetPositiveDiagonal()

void mfem::HypreSmoother::SetPositiveDiagonal ( bool  pos = true)
inline

After computing l1-norms, replace them with their absolute values.

By default, the l1-norms take their sign from the corresponding diagonal entries in the associated matrix.

Definition at line 605 of file hypre.hpp.

◆ SetSOROptions()

void mfem::HypreSmoother::SetSOROptions ( double  relax_weight,
double  omega 
)

Set SOR-related parameters.

Definition at line 1822 of file hypre.cpp.

◆ SetTaubinOptions()

void mfem::HypreSmoother::SetTaubinOptions ( double  lambda,
double  mu,
int  iter 
)

Set parameters for Taubin's lambda-mu method.

Definition at line 1834 of file hypre.cpp.

◆ SetType()

void mfem::HypreSmoother::SetType ( HypreSmoother::Type  type,
int  relax_times = 1 
)

Set the relaxation type and number of sweeps.

Definition at line 1816 of file hypre.cpp.

◆ SetWindowByName()

void mfem::HypreSmoother::SetWindowByName ( const char *  window_name)

Convenience function for setting canonical windowing parameters.

Definition at line 1842 of file hypre.cpp.

◆ SetWindowParameters()

void mfem::HypreSmoother::SetWindowParameters ( double  a,
double  b,
double  c 
)

Set parameters for windowing function for FIR smoother.

Definition at line 1857 of file hypre.cpp.

Member Data Documentation

◆ A

HypreParMatrix* mfem::HypreSmoother::A
protected

The linear system matrix.

Definition at line 521 of file hypre.hpp.

◆ B

HypreParVector* mfem::HypreSmoother::B
mutableprotected

Right-hand side and solution vectors.

Definition at line 523 of file hypre.hpp.

◆ fir_coeffs

double* mfem::HypreSmoother::fir_coeffs
protected

Combined coefficients for windowing and Chebyshev polynomials.

Definition at line 562 of file hypre.hpp.

◆ l1_norms

double* mfem::HypreSmoother::l1_norms
protected

l1 norms of the rows of A

Definition at line 551 of file hypre.hpp.

◆ lambda

double mfem::HypreSmoother::lambda
protected

Taubin's lambda-mu method parameters.

Definition at line 546 of file hypre.hpp.

◆ max_eig_est

double mfem::HypreSmoother::max_eig_est
protected

Maximal eigenvalue estimate for polynomial smoothing.

Definition at line 555 of file hypre.hpp.

◆ min_eig_est

double mfem::HypreSmoother::min_eig_est
protected

Minimal eigenvalue estimate for polynomial smoothing.

Definition at line 557 of file hypre.hpp.

◆ mu

double mfem::HypreSmoother::mu
protected

Definition at line 547 of file hypre.hpp.

◆ omega

double mfem::HypreSmoother::omega
protected

SOR parameter (usually in (0,2))

Definition at line 537 of file hypre.hpp.

◆ poly_fraction

double mfem::HypreSmoother::poly_fraction
protected

Fraction of spectrum to smooth for polynomial relaxation.

Definition at line 541 of file hypre.hpp.

◆ poly_order

int mfem::HypreSmoother::poly_order
protected

Order of the smoothing polynomial.

Definition at line 539 of file hypre.hpp.

◆ poly_scale

int mfem::HypreSmoother::poly_scale
protected

Apply the polynomial smoother to A or D^{-1/2} A D^{-1/2}.

Definition at line 543 of file hypre.hpp.

◆ pos_l1_norms

bool mfem::HypreSmoother::pos_l1_norms
protected

If set, take absolute values of the computed l1_norms.

Definition at line 553 of file hypre.hpp.

◆ relax_times

int mfem::HypreSmoother::relax_times
protected

Number of relaxation sweeps.

Definition at line 533 of file hypre.hpp.

◆ relax_weight

double mfem::HypreSmoother::relax_weight
protected

Damping coefficient (usually <= 1)

Definition at line 535 of file hypre.hpp.

◆ taubin_iter

int mfem::HypreSmoother::taubin_iter
protected

Definition at line 548 of file hypre.hpp.

◆ type

int mfem::HypreSmoother::type
protected

Smoother type from hypre_ParCSRRelax() in ams.c plus extensions, see the enumeration Type below.

Definition at line 531 of file hypre.hpp.

◆ V

HypreParVector* mfem::HypreSmoother::V
mutableprotected

Temporary vectors.

Definition at line 525 of file hypre.hpp.

◆ window_params

double mfem::HypreSmoother::window_params[3]
protected

Parameters for windowing function of FIR filter.

Definition at line 559 of file hypre.hpp.

◆ X

HypreParVector * mfem::HypreSmoother::X
mutableprotected

Definition at line 523 of file hypre.hpp.

◆ X0

HypreParVector* mfem::HypreSmoother::X0
mutableprotected

FIR Filter Temporary Vectors.

Definition at line 527 of file hypre.hpp.

◆ X1

HypreParVector * mfem::HypreSmoother::X1
mutableprotected

Definition at line 527 of file hypre.hpp.

◆ Z

HypreParVector * mfem::HypreSmoother::Z
mutableprotected

Definition at line 525 of file hypre.hpp.


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