Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
oomph::HypreInterface Class Reference

An interface class to the suite of Hypre solvers and preconditioners to allow use of: More...

#include <hypre_solver.h>

+ Inheritance diagram for oomph::HypreInterface:

Public Types

enum  Hypre_method_types {
  CG , GMRES , BiCGStab , BoomerAMG ,
  Euclid , ParaSails , None
}
 Enumerated flag to define which Hypre methods are used CAREFUL: DON'T CHANGE THE ORDER OF THESE! More...
 

Public Member Functions

 HypreInterface ()
 Constructor.
 
 ~HypreInterface ()
 Destructor.
 
 HypreInterface (const HypreInterface &)=delete
 Broken copy constructor.
 
void operator= (const HypreInterface &)=delete
 Broken assignment operator.
 
void enable_hypre_error_messages ()
 Turn on the hypre error messages.
 
void disable_hypre_error_messages ()
 Turn off hypre error messages.
 
unsigned existing_solver ()
 Function to return value of which solver (if any) is currently stored.
 
unsigned existing_preconditioner ()
 Function return value of which preconditioner (if any) is stored.
 

Protected Member Functions

void hypre_clean_up_memory ()
 Function deletes all solver data.
 
void hypre_matrix_setup (CRDoubleMatrix *matrix_pt)
 Function which sets values of First_global_row, Last_global_row and other partitioning data and creates the distributed Hypre matrix (stored in Matrix_ij/Matrix_par) from the CRDoubleMatrix.
 
void hypre_solver_setup ()
 Sets up the data required for to use as an oomph-lib LinearSolver or Preconditioner. This must be called after the Hypre matrix has been generated using hypre_matrix_setup(...).
 
void hypre_solve (const DoubleVector &rhs, DoubleVector &solution)
 Helper function performs a solve if any solver exists.
 
void doc_hypre_parameters ()
 Doc parameters used in hypre solver.
 

Protected Attributes

bool Output_info
 Flag is true to output info and results of timings.
 
unsigned Max_iter
 Maximum number of iterations used in solver.
 
double Tolerance
 Tolerance used to terminate solver.
 
unsigned Hypre_method
 Hypre method flag. Valid values are specified in enumeration.
 
unsigned Internal_preconditioner
 Preconditioner method flag used with Hypre's PCG, GMRES and BiCGStab in solve(...) or resolve(...). Valid values are BoomerAMG, Euclid, ParaSails or None (all enumerated above), for any other value no preconditioner is set.
 
unsigned AMG_print_level
 Used to set the Hypre printing level for AMG 0: no printout 1: print setup information 2: print solve information 3: print setup and solve information.
 
unsigned AMG_max_levels
 Maximum number of levels used in AMG.
 
double AMG_max_row_sum
 Parameter to identify diagonally dominant parts of the matrix in AMG.
 
bool AMG_using_simple_smoothing
 Flag to determine whether simple smoothers (determined by the AMG_simple_smoother flag) or complex smoothers (determined by the AMG_complex_smoother flag are used in AMG.
 
unsigned AMG_simple_smoother
 Simple smoothing methods used in BoomerAMG. To use these methods set AMG_using_simple_smoothing to true. Here are the current options (from hypre's HYPRE_parcsr_ls.h):
 
unsigned AMG_complex_smoother
 Complex smoothing methods used in BoomerAMG. To use these methods set AMG_using_simple_smoothing to false Here are the current options (from hypre's HYPRE_parcsr_ls.h):
 
unsigned AMG_smoother_iterations
 The number of smoother iterations to apply.
 
double AMG_damping
 Damping factor for BoomerAMG smoothed Jacobi or hybrid SOR.
 
double AMG_strength
 Connection strength threshold parameter for BoomerAMG.
 
double AMG_truncation
 Interpolation truncation factor for BoomerAMG.
 
unsigned AMG_coarsening
 AMG coarsening strategy. Coarsening types include: 0 = CLJP (parallel coarsening using independent sets) 1 = classical RS with no boundary treatment (not recommended in parallel) 3 = modified RS with 3rd pass to add C points on the boundaries 6 = Falgout (uses 1 then CLJP using interior coarse points as first independent set) 8 = PMIS (parallel coarsening using independent sets - lower complexities than 0, maybe also slower convergence) 10= HMIS (one pass RS on each processor then PMIS on interior coarse points as first independent set) 11= One pass RS on each processor (not recommended)
 
int ParaSails_symmetry
 ParaSails symmetry flag, used to inform ParaSails of Symmetry of definitenss of problem and type of ParaSails preconditioner: 0 = nonsymmetric and/or indefinite problem, nonsymmetric preconditioner 1 = SPD problem, and SPD (factored preconditioner) 2 = nonsymmetric, definite problem and SDP (factored preconditoner)
 
int ParaSails_nlevel
 ParaSails nlevel parameter.
 
double ParaSails_thresh
 ParaSails thresh parameter.
 
double ParaSails_filter
 ParaSails filter parameter.
 
double Euclid_droptol
 Euclid drop tolerance for ILU(k) and ILUT factorization.
 
bool Euclid_rowScale
 Flag to switch on Euclid row scaling.
 
bool Euclid_using_ILUT
 Flag to determine if ILUT (if true) or ILU(k) is used in Euclid.
 
bool Euclid_using_BJ
 Flag to determine if Block Jacobi is used instead of PILU.
 
int Euclid_level
 Euclid level parameter for ILU(k) factorization.
 
unsigned Euclid_print_level
 Flag to set the level of printing from Euclid when the Euclid destructor is called 0: no printing (default) 1: prints summary of runtime settings and timings 2: as 1 plus prints memory usage.
 
bool AMGEuclidSmoother_use_block_jacobi
 
bool AMGEuclidSmoother_use_row_scaling
 
bool AMGEuclidSmoother_use_ilut
 
unsigned AMGEuclidSmoother_level
 
double AMGEuclidSmoother_drop_tol
 
unsigned AMGEuclidSmoother_print_level
 
unsigned Krylov_print_level
 Used to set the Hypre printing level for the Krylov subspace solvers.
 
bool Hypre_error_messages
 Flag to determine if non-zero values of the Hypre error flag plus Hypre error messages are output to screen at various points in the solve function, i.e. after:
 
bool Delete_input_data
 Internal flag which is true when hypre_setup or hypre_solve can delete input matrix.
 
bool Using_distributed_rhs
 Internal flag which tell the solver if the rhs Vector is distributed or not.
 
bool Returning_distributed_solution
 Internal flag which tell the solver if the solution Vector to be returned is distributed or not.
 

Private Attributes

bool Delete_matrix
 Hypre copies matrix data from oomph-lib's CRDoubleMatrix into its own data structures, doubling the memory requirements. As far as the Hypre solvers are concerned the oomph-lib matrix is no longer required and could be deleted to save memory. However, this will not be the expected behaviour and therefore needs to be requested explicitly by the user by changing this flag from false (its default) to true.
 
HYPRE_IJMatrix Matrix_ij
 The Hypre_IJMatrix version of the matrix used in solve(...), resolve(...) or preconditioner_solve(...).
 
HYPRE_ParCSRMatrix Matrix_par
 The Hypre_ParCSRMatrix version of the matrix used in solve(...), resolve(...) or preconditioner_solve(...).
 
HYPRE_Solver Solver
 The Hypre solver used in solve(...), resolve(...) or preconditioner_solve(...). [This is a C structure!].
 
HYPRE_Solver Preconditioner
 The internal Hypre preconditioner used in conjunction with Solver. [This is a C structure!].
 
unsigned Existing_solver
 Used to keep track of which solver (if any) is currently stored.
 
unsigned Existing_preconditioner
 Used to keep track of which preconditioner (if any) is currently stored.
 
LinearAlgebraDistributionHypre_distribution_pt
 the distribution for this helpers-
 

Detailed Description

An interface class to the suite of Hypre solvers and preconditioners to allow use of:

BoomerAMG (AMG), CG, GMRES or BiCGStab, Euclid (ILU) or ParaSails (Approximate inverse)

Hypre's Krylov subspace solvers (CG, GMRES and BiCGStab) may be preconditioned using:

    BoomerAMG, Euclid or ParaSails

Definition at line 138 of file hypre_solver.h.

Member Enumeration Documentation

◆ Hypre_method_types

Enumerated flag to define which Hypre methods are used CAREFUL: DON'T CHANGE THE ORDER OF THESE!

Enumerator
CG 
GMRES 
BiCGStab 
BoomerAMG 
Euclid 
ParaSails 
None 

Definition at line 286 of file hypre_solver.h.

Constructor & Destructor Documentation

◆ HypreInterface() [1/2]

oomph::HypreInterface::HypreInterface ( )
inline

◆ ~HypreInterface()

oomph::HypreInterface::~HypreInterface ( )
inline

◆ HypreInterface() [2/2]

oomph::HypreInterface::HypreInterface ( const HypreInterface )
delete

Broken copy constructor.

Member Function Documentation

◆ disable_hypre_error_messages()

void oomph::HypreInterface::disable_hypre_error_messages ( )
inline

Turn off hypre error messages.

Definition at line 279 of file hypre_solver.h.

References Hypre_error_messages.

◆ doc_hypre_parameters()

void oomph::HypreInterface::doc_hypre_parameters ( )
inlineprotected

◆ enable_hypre_error_messages()

void oomph::HypreInterface::enable_hypre_error_messages ( )
inline

Turn on the hypre error messages.

Definition at line 273 of file hypre_solver.h.

References Hypre_error_messages.

◆ existing_preconditioner()

unsigned oomph::HypreInterface::existing_preconditioner ( )
inline

Function return value of which preconditioner (if any) is stored.

Definition at line 304 of file hypre_solver.h.

References Existing_preconditioner.

◆ existing_solver()

unsigned oomph::HypreInterface::existing_solver ( )
inline

Function to return value of which solver (if any) is currently stored.

Definition at line 298 of file hypre_solver.h.

References Existing_solver.

Referenced by oomph::HyprePreconditioner::preconditioner_solve(), and oomph::HypreSolver::resolve().

◆ hypre_clean_up_memory()

void oomph::HypreInterface::hypre_clean_up_memory ( )
protected

◆ hypre_matrix_setup()

void oomph::HypreInterface::hypre_matrix_setup ( CRDoubleMatrix matrix_pt)
protected

Function which sets values of First_global_row, Last_global_row and other partitioning data and creates the distributed Hypre matrix (stored in Matrix_ij/Matrix_par) from the CRDoubleMatrix.

Helper function which creates a Hypre matrix from a CRDoubleMatrix If OOMPH-LIB has been set up for MPI use, the Hypre matrix is distributed over the available processors.

Definition at line 548 of file hypre_solver.cc.

References oomph::HypreHelpers::check_HYPRE_error_flag(), oomph::CRDoubleMatrix::clear(), oomph::LinearAlgebraDistribution::communicator_pt(), oomph::HypreHelpers::create_HYPRE_Matrix(), Delete_input_data, oomph::DistributableLinearAlgebraObject::distribution_pt(), hypre__global_error, Hypre_distribution_pt, Hypre_error_messages, Matrix_ij, Matrix_par, oomph::CRDoubleMatrix::nrow(), and oomph::oomph_info.

Referenced by oomph::HyprePreconditioner::setup(), oomph::HypreSolver::solve(), and oomph::HypreSolver::solve().

◆ hypre_solve()

void oomph::HypreInterface::hypre_solve ( const DoubleVector rhs,
DoubleVector solution 
)
protected

◆ hypre_solver_setup()

void oomph::HypreInterface::hypre_solver_setup ( )
protected

Sets up the data required for to use as an oomph-lib LinearSolver or Preconditioner. This must be called after the Hypre matrix has been generated using hypre_matrix_setup(...).

Sets up the solver data required for use in an oomph-lib LinearSolver or Preconditioner, once the Hypre matrix has been generated using hypre_matrix_setup(...).

Definition at line 592 of file hypre_solver.cc.

References AMG_coarsening, AMG_complex_smoother, AMG_damping, AMG_max_levels, AMG_max_row_sum, AMG_print_level, AMG_simple_smoother, AMG_smoother_iterations, AMG_strength, AMG_truncation, AMG_using_simple_smoothing, AMGEuclidSmoother_drop_tol, AMGEuclidSmoother_level, AMGEuclidSmoother_print_level, AMGEuclidSmoother_use_block_jacobi, AMGEuclidSmoother_use_ilut, AMGEuclidSmoother_use_row_scaling, BiCGStab, BoomerAMG, CG, oomph::HypreHelpers::check_HYPRE_error_flag(), oomph::LinearAlgebraDistribution::communicator_pt(), oomph::HypreHelpers::create_HYPRE_Vector(), Euclid, Euclid_droptol, Euclid_level, Euclid_print_level, Euclid_rowScale, oomph::HypreHelpers::euclid_settings_helper(), Euclid_using_BJ, Euclid_using_ILUT, Existing_preconditioner, Existing_solver, GMRES, hypre__global_error, Hypre_distribution_pt, Hypre_error_messages, Hypre_method, Internal_preconditioner, Krylov_print_level, Matrix_par, Max_iter, oomph::oomph_info, Output_info, ParaSails, ParaSails_filter, ParaSails_nlevel, ParaSails_symmetry, ParaSails_thresh, Solver, oomph::TimingHelpers::timer(), and Tolerance.

Referenced by oomph::HyprePreconditioner::setup(), oomph::HypreSolver::solve(), and oomph::HypreSolver::solve().

◆ operator=()

void oomph::HypreInterface::operator= ( const HypreInterface )
delete

Broken assignment operator.

Member Data Documentation

◆ AMG_coarsening

unsigned oomph::HypreInterface::AMG_coarsening
protected

AMG coarsening strategy. Coarsening types include: 0 = CLJP (parallel coarsening using independent sets) 1 = classical RS with no boundary treatment (not recommended in parallel) 3 = modified RS with 3rd pass to add C points on the boundaries 6 = Falgout (uses 1 then CLJP using interior coarse points as first independent set) 8 = PMIS (parallel coarsening using independent sets - lower complexities than 0, maybe also slower convergence) 10= HMIS (one pass RS on each processor then PMIS on interior coarse points as first independent set) 11= One pass RS on each processor (not recommended)

Definition at line 459 of file hypre_solver.h.

Referenced by oomph::HypreSolver::amg_coarsening(), oomph::HyprePreconditioner::amg_coarsening(), doc_hypre_parameters(), hypre_solver_setup(), and HypreInterface().

◆ AMG_complex_smoother

unsigned oomph::HypreInterface::AMG_complex_smoother
protected

Complex smoothing methods used in BoomerAMG. To use these methods set AMG_using_simple_smoothing to false Here are the current options (from hypre's HYPRE_parcsr_ls.h):

  • 4 : FSAI (routines needed to set: HYPRE_BoomerAMGSetFSAIMaxSteps, HYPRE_BoomerAMGSetFSAIMaxStepSize, HYPRE_BoomerAMGSetFSAIEigMaxIters, HYPRE_BoomerAMGSetFSAIKapTolerance)
  • 5 : ParILUK (routines needed to set: HYPRE_ILUSetLevelOfFill, HYPRE_ILUSetType)
  • 6 : Schwarz (routines needed to set: HYPRE_BoomerAMGSetDomainType, HYPRE_BoomerAMGSetOverlap, HYPRE_BoomerAMGSetVariant, HYPRE_BoomerAMGSetSchwarzRlxWeight)
  • 7 : Pilut (routines needed to set: HYPRE_BoomerAMGSetDropTol, HYPRE_BoomerAMGSetMaxNzPerRow)
  • 8 : ParaSails (routines needed to set: HYPRE_BoomerAMGSetSym, HYPRE_BoomerAMGSetLevel, HYPRE_BoomerAMGSetFilter, HYPRE_BoomerAMGSetThreshold)
  • 9 : Euclid (routines needed to set: HYPRE_BoomerAMGSetEuclidFile)

Definition at line 433 of file hypre_solver.h.

Referenced by oomph::HypreSolver::amg_complex_smoother(), oomph::HyprePreconditioner::amg_complex_smoother(), doc_hypre_parameters(), hypre_solver_setup(), and HypreInterface().

◆ AMG_damping

double oomph::HypreInterface::AMG_damping
protected

Damping factor for BoomerAMG smoothed Jacobi or hybrid SOR.

Definition at line 439 of file hypre_solver.h.

Referenced by oomph::HypreSolver::amg_damping(), oomph::HyprePreconditioner::amg_damping(), doc_hypre_parameters(), hypre_solver_setup(), and HypreInterface().

◆ AMG_max_levels

unsigned oomph::HypreInterface::AMG_max_levels
protected

◆ AMG_max_row_sum

double oomph::HypreInterface::AMG_max_row_sum
protected

Parameter to identify diagonally dominant parts of the matrix in AMG.

Definition at line 357 of file hypre_solver.h.

Referenced by oomph::HypreSolver::amg_max_row_sum(), oomph::HyprePreconditioner::amg_max_row_sum(), doc_hypre_parameters(), hypre_solver_setup(), and HypreInterface().

◆ AMG_print_level

unsigned oomph::HypreInterface::AMG_print_level
protected

Used to set the Hypre printing level for AMG 0: no printout 1: print setup information 2: print solve information 3: print setup and solve information.

Definition at line 351 of file hypre_solver.h.

Referenced by oomph::HypreSolver::amg_print_level(), oomph::HyprePreconditioner::amg_print_level(), doc_hypre_parameters(), hypre_solver_setup(), and HypreInterface().

◆ AMG_simple_smoother

unsigned oomph::HypreInterface::AMG_simple_smoother
protected

Simple smoothing methods used in BoomerAMG. To use these methods set AMG_using_simple_smoothing to true. Here are the current options (from hypre's HYPRE_parcsr_ls.h):

(Optional) Defines the smoother to be used. It uses the given smoother on the fine grid, the up and the down cycle and sets the solver on the coarsest level to Gaussian elimination (9). The default is $\ell_1$-Gauss-Seidel, forward solve (13) on the down cycle and backward solve (14) on the up cycle.

There are the following options for relax_type:

  • 0 : Jacobi
  • 1 : Gauss-Seidel, sequential (very slow!)
  • 2 : Gauss-Seidel, interior points in parallel, boundary sequential (slow!)
  • 3 : hybrid Gauss-Seidel or SOR, forward solve
  • 4 : hybrid Gauss-Seidel or SOR, backward solve
  • 5 : hybrid chaotic Gauss-Seidel (works only with OpenMP)
  • 6 : hybrid symmetric Gauss-Seidel or SSOR
  • 7 : Jacobi (uses Matvec)
  • 8 : $\ell_1$-scaled hybrid symmetric Gauss-Seidel
  • 9 : Gaussian elimination (only on coarsest level)
  • 10 : On-processor direct forward solve for matrices with triangular structure
  • 11 : Two Stage approximation to GS. Uses the strict lower part of the diagonal matrix
  • 12 : Two Stage approximation to GS. Uses the strict lower part of the diagonal matrix and a second iteration for additional error approximation
  • 13 : $\ell_1$ Gauss-Seidel, forward solve
  • 14 : $\ell_1$ Gauss-Seidel, backward solve
  • 15 : CG (warning - not a fixed smoother - may require FGMRES)
  • 16 : Chebyshev
  • 17 : FCF-Jacobi
  • 18 : $\ell_1$-scaled jacobi
  • 19 : Gaussian elimination (old version)
  • 21 : The same as 8 except forcing serialization on CPU ( # OMP-thread = 1)
  • 29 : Direct solve: use Gaussian elimination & BLAS (with pivoting) (old version)
  • 30 : Kaczmarz
  • 88: The same methods as 8 with a convergent l1-term
  • 89: Symmetric l1-hybrid Gauss-Seidel (i.e., 13 followed by 14)
  • 98 : LU with pivoting
  • 99 : LU with pivoting -199 : Matvec with the inverse

Definition at line 411 of file hypre_solver.h.

Referenced by oomph::HypreSolver::amg_simple_smoother(), oomph::HyprePreconditioner::amg_simple_smoother(), doc_hypre_parameters(), hypre_solver_setup(), and HypreInterface().

◆ AMG_smoother_iterations

unsigned oomph::HypreInterface::AMG_smoother_iterations
protected

◆ AMG_strength

double oomph::HypreInterface::AMG_strength
protected

Connection strength threshold parameter for BoomerAMG.

Definition at line 442 of file hypre_solver.h.

Referenced by oomph::HypreSolver::amg_strength(), oomph::HyprePreconditioner::amg_strength(), doc_hypre_parameters(), hypre_solver_setup(), and HypreInterface().

◆ AMG_truncation

double oomph::HypreInterface::AMG_truncation
protected

Interpolation truncation factor for BoomerAMG.

Definition at line 445 of file hypre_solver.h.

Referenced by oomph::HypreSolver::amg_truncation(), oomph::HyprePreconditioner::amg_truncation(), doc_hypre_parameters(), hypre_solver_setup(), and HypreInterface().

◆ AMG_using_simple_smoothing

bool oomph::HypreInterface::AMG_using_simple_smoothing
protected

Flag to determine whether simple smoothers (determined by the AMG_simple_smoother flag) or complex smoothers (determined by the AMG_complex_smoother flag are used in AMG.

Definition at line 362 of file hypre_solver.h.

Referenced by oomph::HypreSolver::amg_using_complex_smoothing(), oomph::HyprePreconditioner::amg_using_complex_smoothing(), oomph::HypreSolver::amg_using_simple_smoothing(), oomph::HyprePreconditioner::amg_using_simple_smoothing(), oomph::HyprePreconditioner::amg_using_simple_smoothing_flag(), doc_hypre_parameters(), hypre_solver_setup(), and HypreInterface().

◆ AMGEuclidSmoother_drop_tol

double oomph::HypreInterface::AMGEuclidSmoother_drop_tol
protected

Definition at line 506 of file hypre_solver.h.

Referenced by hypre_solver_setup(), and HypreInterface().

◆ AMGEuclidSmoother_level

unsigned oomph::HypreInterface::AMGEuclidSmoother_level
protected

Definition at line 505 of file hypre_solver.h.

Referenced by hypre_solver_setup(), and HypreInterface().

◆ AMGEuclidSmoother_print_level

unsigned oomph::HypreInterface::AMGEuclidSmoother_print_level
protected

Definition at line 507 of file hypre_solver.h.

Referenced by hypre_solver_setup(), and HypreInterface().

◆ AMGEuclidSmoother_use_block_jacobi

bool oomph::HypreInterface::AMGEuclidSmoother_use_block_jacobi
protected

Definition at line 502 of file hypre_solver.h.

Referenced by hypre_solver_setup(), and HypreInterface().

◆ AMGEuclidSmoother_use_ilut

bool oomph::HypreInterface::AMGEuclidSmoother_use_ilut
protected

Definition at line 504 of file hypre_solver.h.

Referenced by hypre_solver_setup(), and HypreInterface().

◆ AMGEuclidSmoother_use_row_scaling

bool oomph::HypreInterface::AMGEuclidSmoother_use_row_scaling
protected

Definition at line 503 of file hypre_solver.h.

Referenced by hypre_solver_setup(), and HypreInterface().

◆ Delete_input_data

bool oomph::HypreInterface::Delete_input_data
protected

Internal flag which is true when hypre_setup or hypre_solve can delete input matrix.

Definition at line 634 of file hypre_solver.h.

Referenced by hypre_matrix_setup(), oomph::HyprePreconditioner::setup(), oomph::HypreSolver::solve(), and oomph::HypreSolver::solve().

◆ Delete_matrix

bool oomph::HypreInterface::Delete_matrix
private

Hypre copies matrix data from oomph-lib's CRDoubleMatrix into its own data structures, doubling the memory requirements. As far as the Hypre solvers are concerned the oomph-lib matrix is no longer required and could be deleted to save memory. However, this will not be the expected behaviour and therefore needs to be requested explicitly by the user by changing this flag from false (its default) to true.

Definition at line 654 of file hypre_solver.h.

◆ Euclid_droptol

double oomph::HypreInterface::Euclid_droptol
protected

Euclid drop tolerance for ILU(k) and ILUT factorization.

Definition at line 479 of file hypre_solver.h.

Referenced by oomph::HypreSolver::euclid_droptol(), oomph::HyprePreconditioner::euclid_droptol(), hypre_solver_setup(), and HypreInterface().

◆ Euclid_level

int oomph::HypreInterface::Euclid_level
protected

Euclid level parameter for ILU(k) factorization.

Definition at line 491 of file hypre_solver.h.

Referenced by oomph::HypreSolver::euclid_level(), oomph::HyprePreconditioner::euclid_level(), hypre_solver_setup(), and HypreInterface().

◆ Euclid_print_level

unsigned oomph::HypreInterface::Euclid_print_level
protected

Flag to set the level of printing from Euclid when the Euclid destructor is called 0: no printing (default) 1: prints summary of runtime settings and timings 2: as 1 plus prints memory usage.

Definition at line 498 of file hypre_solver.h.

Referenced by oomph::HypreSolver::euclid_print_level(), oomph::HyprePreconditioner::euclid_print_level(), hypre_solver_setup(), and HypreInterface().

◆ Euclid_rowScale

bool oomph::HypreInterface::Euclid_rowScale
protected

◆ Euclid_using_BJ

bool oomph::HypreInterface::Euclid_using_BJ
protected

◆ Euclid_using_ILUT

bool oomph::HypreInterface::Euclid_using_ILUT
protected

◆ Existing_preconditioner

unsigned oomph::HypreInterface::Existing_preconditioner
private

Used to keep track of which preconditioner (if any) is currently stored.

Definition at line 676 of file hypre_solver.h.

Referenced by existing_preconditioner(), hypre_clean_up_memory(), hypre_solver_setup(), and HypreInterface().

◆ Existing_solver

unsigned oomph::HypreInterface::Existing_solver
private

Used to keep track of which solver (if any) is currently stored.

Definition at line 673 of file hypre_solver.h.

Referenced by existing_solver(), hypre_clean_up_memory(), hypre_solve(), hypre_solver_setup(), and HypreInterface().

◆ Hypre_distribution_pt

LinearAlgebraDistribution* oomph::HypreInterface::Hypre_distribution_pt
private

the distribution for this helpers-

Definition at line 679 of file hypre_solver.h.

Referenced by hypre_matrix_setup(), hypre_solve(), hypre_solver_setup(), HypreInterface(), and ~HypreInterface().

◆ Hypre_error_messages

bool oomph::HypreInterface::Hypre_error_messages
protected

Flag to determine if non-zero values of the Hypre error flag plus Hypre error messages are output to screen at various points in the solve function, i.e. after:

  1. setting up the Hypre matrix
  2. setting up the preconditioner
  3. setting up the solver
  4. setting up the Hypre vectors
  5. solving
  6. getting the solution vector
  7. deallocation of solver data

Definition at line 630 of file hypre_solver.h.

Referenced by disable_hypre_error_messages(), enable_hypre_error_messages(), hypre_clean_up_memory(), hypre_matrix_setup(), hypre_solve(), hypre_solver_setup(), and HypreInterface().

◆ Hypre_method

unsigned oomph::HypreInterface::Hypre_method
protected

◆ Internal_preconditioner

unsigned oomph::HypreInterface::Internal_preconditioner
protected

Preconditioner method flag used with Hypre's PCG, GMRES and BiCGStab in solve(...) or resolve(...). Valid values are BoomerAMG, Euclid, ParaSails or None (all enumerated above), for any other value no preconditioner is set.

Definition at line 344 of file hypre_solver.h.

Referenced by doc_hypre_parameters(), hypre_solver_setup(), HypreInterface(), oomph::HyprePreconditioner::HyprePreconditioner(), oomph::HypreSolver::internal_preconditioner(), and oomph::HyprePreconditioner::internal_preconditioner().

◆ Krylov_print_level

unsigned oomph::HypreInterface::Krylov_print_level
protected

Used to set the Hypre printing level for the Krylov subspace solvers.

Definition at line 511 of file hypre_solver.h.

Referenced by doc_hypre_parameters(), hypre_solver_setup(), HypreInterface(), and oomph::HypreSolver::krylov_print_level().

◆ Matrix_ij

HYPRE_IJMatrix oomph::HypreInterface::Matrix_ij
private

The Hypre_IJMatrix version of the matrix used in solve(...), resolve(...) or preconditioner_solve(...).

Definition at line 658 of file hypre_solver.h.

Referenced by hypre_clean_up_memory(), and hypre_matrix_setup().

◆ Matrix_par

HYPRE_ParCSRMatrix oomph::HypreInterface::Matrix_par
private

The Hypre_ParCSRMatrix version of the matrix used in solve(...), resolve(...) or preconditioner_solve(...).

Definition at line 662 of file hypre_solver.h.

Referenced by hypre_matrix_setup(), hypre_solve(), and hypre_solver_setup().

◆ Max_iter

unsigned oomph::HypreInterface::Max_iter
protected

◆ Output_info

bool oomph::HypreInterface::Output_info
protected

◆ ParaSails_filter

double oomph::HypreInterface::ParaSails_filter
protected

◆ ParaSails_nlevel

int oomph::HypreInterface::ParaSails_nlevel
protected

◆ ParaSails_symmetry

int oomph::HypreInterface::ParaSails_symmetry
protected

ParaSails symmetry flag, used to inform ParaSails of Symmetry of definitenss of problem and type of ParaSails preconditioner: 0 = nonsymmetric and/or indefinite problem, nonsymmetric preconditioner 1 = SPD problem, and SPD (factored preconditioner) 2 = nonsymmetric, definite problem and SDP (factored preconditoner)

Definition at line 467 of file hypre_solver.h.

Referenced by hypre_solver_setup(), HypreInterface(), oomph::HypreSolver::parasails_symmetry(), and oomph::HyprePreconditioner::parasails_symmetry().

◆ ParaSails_thresh

double oomph::HypreInterface::ParaSails_thresh
protected

◆ Preconditioner

HYPRE_Solver oomph::HypreInterface::Preconditioner
private

The internal Hypre preconditioner used in conjunction with Solver. [This is a C structure!].

Definition at line 670 of file hypre_solver.h.

◆ Returning_distributed_solution

bool oomph::HypreInterface::Returning_distributed_solution
protected

Internal flag which tell the solver if the solution Vector to be returned is distributed or not.

Definition at line 643 of file hypre_solver.h.

◆ Solver

HYPRE_Solver oomph::HypreInterface::Solver
private

The Hypre solver used in solve(...), resolve(...) or preconditioner_solve(...). [This is a C structure!].

Definition at line 666 of file hypre_solver.h.

Referenced by hypre_clean_up_memory(), hypre_solve(), and hypre_solver_setup().

◆ Tolerance

double oomph::HypreInterface::Tolerance
protected

◆ Using_distributed_rhs

bool oomph::HypreInterface::Using_distributed_rhs
protected

Internal flag which tell the solver if the rhs Vector is distributed or not.

Definition at line 639 of file hypre_solver.h.


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