![]() |
HypreSolver
The GeMA Hypre Numeric Solver Plugin
|
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.
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.
| 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 |