HypreSolver
The GeMA Hypre Numeric Solver Plugin
Loading...
Searching...
No Matches
Plugin options

The syntax for creating a HYPRE Numeric Solver object follows the basic syntax used for creating every plugin based object. In addition, the HYPRE solver supports several optional attributes that can be used to configure the solver and preconditioner types that will be used, together with tolerances and several other solver specific options.

Example 1

NumericalSolver
{
id = 'solver',
typeName = 'HypreSolver',
description = 'Iterative matrix solver',
solverMethod = 'pcg',
precond = 'boomeramg',
-- Default options for boomeramg
precondOptions = {strongThreshold = 0.7, relaxationType = "sym-l1-gauss-seidel", coarsenType = "pmis",
interpType = "extended-i-gpu", aggressiveCoarsenLevels = 2, coarsenPaths = 2}
}

Example 2

NumericalSolver
{
id = 'solver',
typeName = 'HypreSolver',
description = 'Iterative matrix solver',
solverMethod = 'ilu',
-- Default options for ilu
solverOptions = {type = "ilut", dropThreshold = 0.06, triSolver = "direct", fillRate = 5, fillLevel = 0}
}

Different from other GeMA Solver plugins, HYPRE treats solvers and preconditioners as equal objects. In this fashion, all solvers can work as preconditioners, with especial cases for ILU and BoomerAMG that when used as main solvers do not support preconditioning. For best results (stability and speed) we recommend using the PCG as the main solver and BoomerAMG as preconditioner and a small number of "maxIter" (i.e. 200) for large systems. Other methods can easily break/fail solving systems.

IMPORTANT: For now BoomerAMG is not recommend for solving 'FULL' coupling / strong coupled. Matrix entries are handled individually instead of per node, which may cause such cases to completely fail.

Fields

Field Description Type Required Def. Value
id The numeric solver name. String Yes
typeName The plugin name. Should be equal to "HypreSolver". String Yes
description A description of the numeric solver purpose. String No
Solver and preconditioner definition options:
solverMethod Defines the type of linear solver to be used. Allowed values are: "pcg", "boomeramg", "bicgstab", "ilu", "gmres", "flexgmres", "lgmres", "cogmres" and "hybrid". String No "pcg"
solverOptions A table with solver options. Used by "ilu" and "boomeramg" solver methods. (ILU / BoomerAMG options table) Table No nil
precond Defines the type of preconditioner to be used. Allowed values are: "none", "pcg", "boomeramg", "bicgstab", "ilu", "gmres", "flexgmres", "lgmres", "cogmres" and "hybrid". String No "none"
precondOptions A table with preconditioner options. Used by "ilu" and "boomeramg" preconditioners. Table No nil
General options:
maxIter Defines the maximum number of iterations for the solver. Integer No 100
tol The convergence tolerance. Number No 1.0e-5
printIterations A boolean flag that when set to true prints the number of iterations. Boolean No false
printResidual A boolean flag that when set to true prints the residual. Boolean No false
printConsoleMessages A boolean flag that when set to true enables the printing the internal HYPRE messages. Note: Those messages appear only in the console, not in the GeMA log. Boolean No false

Field Description Type Required Def. Value
ILU options:
type The ILU type. Available options are: "iluk", "ilut", "gmres-iluk", "gmres-ilut", "nsh-iluk", "nsh-ilut", "ras-iluk", "ras-ilut", "ddpq-gmres-iluk", "ddpq-gmres-ilut", "gmres-rap-ilu0". String No "ilut"
fillLevel The fill level used by "iluk" variants. Integer No 0
dropThreshold The drop threshold of matrix entries used by "ilut" variants. Real No 1e-2
triSolver The triangular solver type. Available values are "iterative", "direct". String No "direct"
fillRate The fill rate used by "ilut" variants. Represents the maximum allowed non-zeros per matrix row. Integer No 5

Field Description Type Required Def. Value
BoomerAMG options:
strongThreshold The strong threshold affecting the coarsening and interpolation. Accpets values in range (0,1). Real No 0.9
relaxationType The smoother used for multigrid relaxation. (Defaults to symetric l1 coarsening). Available types are "jacobi-1", "jacobi-2", "gauss-seidel", "gauss-seidel-sor-fw", "gauss-seidel-sor-bw", "sym-gauss-seidel-sor", "gauss-elimination", "two-gauss-seidel-1", "two-gauss-seidel-2", "l1-gauss-seidel-fw", "l1-gauss-seidel-bw", "chebyshev", "kaczmarz", "sym-l1-gauss-seidel". String No "sym-l1-gauss-seidel"
coarsenType The coarsening strategy. Available types are "falgout", "pmis", "hmis", "cgc", "cgc-e". String No "pmis"
interpType The interpolation type used. Available types are "classic", "ls", "classic-hyp", "direct-gpu", "multipass-1", "multipass-2", "extended-i-gpu", "extended-i", "standard-1", "standard-2", "ff", "ff1", "extended-gpu", "adaptive-gpu", "extended-mat", "extended-i-mat", "extended-e-mat". String No "extended-i-gpu"
aggressiveCoarsenLevels The number of levels to apply aggressive coarsening. Integer No 4
coarsenPaths The number of paths checked during coarsening. (More paths less aggressive) Integer No 1