Multigrid Inputs
incflo uses AMReX’s multigrid solver, MLMG, for the projections and for the implicit diffusion solves. The AMReX documentation on Linear Solvers describes the solver and its parameters (e.g. the available bottom solvers).
Projections
The MAC and nodal projections are done by AMReX-Hydro’s MacProjector and NodalProjector
classes, which read their own options (verbosity, maximum number of iterations, bottom solver, …)
with the prefix “mac_proj” or “nodal_proj”. These are documented in AMReX-Hydro’s documentation on
projections inputs. The cell-centered projection
(incflo.use_cc_proj = 1) is also done with the MacProjector, so it uses the “mac_proj”
options.
In addition, incflo reads the following, which must be preceded by “mac_proj” or “nodal_proj”:
Description |
Type |
Default |
|
|---|---|---|---|
mg_rtol |
Relative tolerance |
Real
float
|
1.e-11
1.e-4
|
mg_atol |
Absolute tolerance |
Real
float
|
1.e-14
1.e-7
|
mg_max_coarsening_level |
Maximum number of coarser levels to allow. If set to 0, the bottom solver will be called at the current level |
Int |
100 |
Diffusion
The diffusion solves are set up by incflo itself. Their options must be preceded by
“scalar_diffusion” (tracers, temperature and, with incflo.use_tensor_solve = false, the
component-wise velocity solve) or “tensor_diffusion” (the velocity solve with
incflo.use_tensor_solve = true):
Description |
Type |
Default |
|
|---|---|---|---|
verbose |
Verbosity of incflo’s diffusion routines |
Int |
0 |
mg_verbose |
Verbosity of the multigrid solver |
Int |
0 |
mg_bottom_verbose |
Verbosity of the bottom solver (“scalar_diffusion” also accepts bottom_verbose) |
Int |
0 |
mg_max_iter |
Maximum number of multigrid iterations |
Int |
100 |
mg_bottom_maxiter |
Maximum number of iterations in the bottom solver |
Int |
100 |
mg_max_fmg_iter |
Number of full multigrid cycles before switching to V-cycles |
Int |
0 |
mg_max_coarsening_level |
Maximum number of coarser levels to allow. If set to 0, the bottom solver will be called at the current level |
Int |
100 |
mg_maxorder |
Maximum order (2, 3 or 4) of the interpolation used at boundaries |
Int |
2 |
mg_rtol |
Relative tolerance |
Real
float
|
1.e-11
1.e-4
|
mg_atol |
Absolute tolerance |
Real
float
|
1.e-14
1.e-7
|
bottom_solver |
Which bottom solver to use: smoother or hypre. Any other value gives MLMG’s default bottom solver for these operators, BiCGStab |
String |
bicgstab |
num_pre_smooth |
Number of smoother iterations when going down the V-cycle |
Int |
2 |
num_post_smooth |
Number of smoother iterations when going up the V-cycle |
Int |
2 |
use_gauss_seidel |
“tensor_diffusion” only: use Gauss-Seidel rather than Jacobi smoothing (not used when there is an EB) |
Bool |
true |
The hypre bottom solver requires incflo to be built with HYPRE support (USE_HYPRE = TRUE or
-DINCFLO_HYPRE=yes). hypre’s own options take the prefix “hypre”; see the
External Solvers
section of the AMReX documentation.