Multigrid solvers
The following inputs can be set directly in the AMReX solver classes but we set them via the MFIX-Exa routines because we may want different inputs for the different solvers called by MFIX-Exa.
Nodal projection
NOTE: the nodal solver settings are read in directly by AMReX, the MAC and diffusion settings by MFIX-Exa.
These control the nodal projection and must be preceded by “nodal_proj.”:
Description |
Type |
Default |
|
verbose |
Verbosity of multigrid solver in nodal projection |
Int |
0 |
bottom_verbose |
Verbosity of BiCGStab solver in nodal projection |
Int |
0 |
mg_rtol |
Relative tolerance in nodal projection |
Real |
1.e-11 |
mg_atol |
Absolute tolerance in nodal projection |
Real |
1.e-14 |
maxiter |
Maximum number of iterations in the nodal projection |
Int |
100 |
bottom_maxiter |
Maximum number of iterations in the nodal projection bottom solver if using bicg, cg, bicgcg or cgbicg |
Int |
100 |
mg_max_coarsening_level |
Maximum number of coarser levels to allowin the nodal projection If set to 0, the bottom solver will be called at the current level |
Int |
100 |
bottom_solver |
Which bottom solver to use in the nodal projection Options are bicgcg, bicgstab, cg, cgbicg, smoother or hypre |
String |
bicgcg |
hypre_namespace |
Namespace to use in the nodal projection when using hypre to control hypre specific settings. It can be any string. |
String |
hypre |
hypre_interface |
Which interface to use in the nodal projection when using hypre Options are ij, semi_structured or structured |
String |
ij |
MAC projection
These control the MAC projection and must be preceded by “mac_proj.”:
Description |
Type |
Default |
|
|---|---|---|---|
verbose |
Verbosity of multigrid solver in MAC projection |
Int |
0 |
bottom_verbose |
Verbosity of BiCGStab solver in MAC projection |
Int |
0 |
mg_rtol |
Relative tolerance in MAC projection |
Real |
1.e-11 |
mg_atol |
Absolute tolerance in MAC projection |
Real |
1.e-14 |
maxiter |
Maximum number of iterations in the MAC projection |
Int |
200 |
bottom_maxiter |
Maximum number of iterations in the MAC projection bottom solver if using bicg, cg, bicgcg or cgbicg |
Int |
200 |
mg_max_coarsening_level |
Maximum number of coarser levels to allow in the MAC projection If set to 0, the bottom solver will be called at the current level |
Int |
100 |
bottom_solver |
Which bottom solver to use in the MAC projection Options are bicgcg, bicgstab, cg, cgbicg, smoother or hypre |
String |
bicgcg |
hypre_namespace |
Namespace to use in the MAC projection when using hypre to control hypre specific settings. It can be any string. |
String |
hypre |
hypre_interface |
Which interface to use in the MAC projection when using hypre Options are ij, semi_structured or structured |
String |
ij |
NOTE: If the nodal_proj and mac_proj hypre_namespace’s are set, they must be distinct unless set to
hypre, in which case the default behavior is recovered in which case hypre settings apply to all solvers.
Diffusion
These control the diffusion solver and must be preceded by “diffusion.”:
Description |
Type |
Default |
|
|---|---|---|---|
verbose |
Verbosity of linear solver for diffusion solve |
Int |
0 |
bottom_verbose |
Verbosity of BiCGStab solver in diffusion solve |
Int |
0 |
mg_rtol |
Relative tolerance in diffusion solve |
Real |
1.e-11 |
mg_atol |
Absolute tolerance in diffusion solve |
Real |
1.e-14 |
maxiter |
Maximum number of iterations in diffusion solve |
Int |
100 |
bottom_maxiter |
Maximum number of iterations in diffusion solve bottom solver if using bicg, cg, bicgcg or cgbicg |
Int |
100 |
mg_max_coarsening_level |
Maximum number of coarser levels to allow in diffusion solve If set to 0, the bottom solver will be called at the current level |
Int |
100 |
bottom_solver |
Which bottom solver to use in the diffusion solve Options are bicgcg, bicgstab, cg, cgbicg, or smoother |
String |
bicgcg |
Hypre Settings
The following inputs control the hypre settings and are read directly
by AMReX when we use hypre as the bottom solver, i.e., when
nodal_proj.bottom_solver = hypre and/or when
mac_proj.bottom_solver = hypre (see Multigrid solvers)
These settings must be preceded by the hypre_namespace setting corresponding
to the solver (see Multigrid solvers).
NOTE: By default, the MAC and nodal projections use the same settings
specified with the namespace hypre, however the solvers can be configured
separately by specifying mac_proj.hypre_namespace and nodal_proj.hypre_namespace.
When not using the default namespace hypre, additional restrictions apply:
Both
mac_proj.hypre_namespaceandnodal_proj.hypre_namespacemust be set.mac_proj.hypre_namespaceandnodal_proj.hypre_namespacemust be unique.
Description |
Type |
Default |
|
verbose |
Verbosity of hypre |
Int |
0 |
adjust_singular_matrix |
Should be true if the problem to be solved has singular matrix |
Bool |
false |
hypre_solver |
Type of hypre solver Options are BoomerAMG, GMRES, COGMRES, LGMRES, FlexGMRES, BiCGSTAB, PCG or Hybrid |
String |
BoomerAMG |
hypre_preconditioner |
Type of preconditioner Options are BoomerAMG or euclid |
String |
none |
recompute_preconditioner |
Recompute preconditioner during runs |
Bool |
true |
write_matrix_files |
Write out matrix into text files |
Bool |
false |
overwrite_existing_matrix_files |
Over-write existing matrix files |
Bool |
false |
bamg_verbose |
Verbosity of BoomerAMG preconditioner |
Int |
0 |
bamg_logging |
When using BoomerAMG preconditioner See HYPRE_BoomerAMGSetLogging |
Int |
0 |
bamg_coarsen_type |
When using BoomerAMG preconditioner See HYPRE_BoomerAMGSetCoarsenType |
Int |
6 |
bamg_cycle_type |
When using BoomerAMG preconditioner See HYPRE_BoomerAMGSetCycleType |
Int |
1 |
bamg_relax_type |
When using BoomerAMG preconditioner See HYPRE_BoomerAMGSetRelaxType |
Int |
6 |
bamg_relax_order |
When using BoomerAMG preconditioner See HYPRE_BoomerAMGSetRelaxOrder |
Int |
1 |
bamg_num_sweeps |
When using BoomerAMG preconditioner See HYPRE_BoomerAMGSetNumSweeps |
Int |
2 |
bamg_max_levels |
When using BoomerAMG preconditioner See HYPRE_BoomerAMGSetMaxLevels |
Int |
20 |
bamg_strong_threshold |
When using BoomerAMG preconditioner See HYPRE_BoomerAMGSetStrongThreshold |
Real |
0.57 |
bamg_interp_type |
When using BoomerAMG preconditioner HYPRE_BoomerAMGSetInterpType |
Int |
0 |