|
Neko 1.99.7
A portable framework for high-order spectral element flow simulations
|
Implements multigrid using the TreeAMG hierarchy structure. USE: More...
Data Types | |
| type | tamg_solver_t |
| Type for the TreeAMG solver. More... | |
| type | tamg_wrk_t |
Functions/Subroutines | |
| subroutine | tamg_mg_init (this, ax, xh, coef, msh, gs_h, nlvls, blst, max_iter, cheby_degree) |
| Initialization of the TreeAMG multigrid solver. | |
| subroutine | tamg_mg_free (this) |
| free tree amg solver object | |
| subroutine | tamg_mg_invalidate_eigs (this) |
| Re-estimate every level's eigenvalues on the next solve. Needed when the operator changes underneath the hierarchy. | |
| subroutine | tamg_mg_set_eig_refresh (this, warm_start, power_its_refresh) |
| Set the eigenvalue re-estimation policy on every level. | |
| subroutine | tamg_mg_solve (this, z, r, n) |
| Solver function for the TreeAMG solver object. | |
| subroutine | tamg_mg_cycle (this, zero_initial_guess) |
| multigrid cycle for the TreeAMG solver object | |
| subroutine | tamg_mg_cycle_d (this, zero_initial_guess) |
| multigrid cycle for the TreeAMG solver object on device | |
| subroutine | calc_resid (r, x, b, amg, lvl, n) |
| Wrapper function to calculate residyal. | |
| subroutine | print_preagg_info (lvl, nagg, agg_type) |
| subroutine | print_resid_info (r, x, b, r_d, x_d, b_d, amg, lvl, n) |
| subroutine | fill_lvl_map (amg) |
| Create index mapping between levels and directly to finest level. | |
| subroutine | build_agg_csr (amg) |
| Build the transpose of map_finest2lvl in CSR form: for every aggregate on a level, the list of finest-level dofs that map to it. This lets the flat matvec walk aggregates rather than dofs, so its restriction becomes a segmented reduction with disjoint writes instead of an atomic scatter. Two O(n) passes per level. | |
type(tamg_hierarchy_t) :: amg type(tamg_solver_t) :: amg_solver
call amginit(ax, Xh, coef, msh, gs_h, 3) call amg_solverinit(amg, niter)
call amg_solversolve(xx, f, n)
|
private |
| amg | The tamg hierarchy, with the level maps already filled |
Cache-line padding for the per-thread partials, in elements of rp. 32 doubles = 256 B, the A64FX line; a multiple of the 64 B line everywhere else.
Definition at line 615 of file tree_amg_multigrid.f90.

|
private |
| r | The residual to be returned |
| x | The current solution |
| b | The right-hand side |
| amg | The TreeAMG object |
| lvl | Current level of the cycle |
| n | Number of dofs |
Definition at line 504 of file tree_amg_multigrid.f90.

|
private |
| amg | The tamg hierarchy |
Definition at line 558 of file tree_amg_multigrid.f90.

|
private |
Definition at line 536 of file tree_amg_multigrid.f90.
|
private |
| this | The Solver object. |
| zero_initial_guess | Flag for when the initial guess is zero |
Definition at line 354 of file tree_amg_multigrid.f90.

|
private |
| this | The Solver object. |
| zero_initial_guess | Flag for when the initial guess is zero |
Definition at line 423 of file tree_amg_multigrid.f90.
|
private |
Definition at line 230 of file tree_amg_multigrid.f90.
| subroutine tree_amg_multigrid::tamg_mg_init | ( | class(tamg_solver_t), intent(inout), target | this, |
| class(ax_t), intent(in), target | ax, | ||
| type(space_t), intent(in), target | xh, | ||
| type(coef_t), intent(in), target | coef, | ||
| type(mesh_t), intent(in), target | msh, | ||
| type(gs_t), intent(in), target | gs_h, | ||
| integer, intent(in) | nlvls, | ||
| type(bc_list_t), intent(in), target | blst, | ||
| integer, intent(in) | max_iter, | ||
| integer, intent(in) | cheby_degree | ||
| ) |
| ax | Finest level matvec operator |
| Xh | Finest level field |
| coef | Finest level coeff thing |
| msh | Finest level mesh information |
| gs_h | Finest level gather scatter operator |
| nlvls | Number of levels for the TreeAMG hierarchy |
| blst | Finest level BC list |
| max_iter | Number of AMG iterations |
Definition at line 111 of file tree_amg_multigrid.f90.

|
private |
Definition at line 273 of file tree_amg_multigrid.f90.
|
private |
| warm_start | Restart from the saved eigenvector |
| power_its_refresh | Iterations to use when restarting |
Definition at line 285 of file tree_amg_multigrid.f90.
|
private |
| z | The solution to be returned |
| r | The right-hand side |
| n | Number of dofs |
Definition at line 301 of file tree_amg_multigrid.f90.
