Skip to content

Commit

Permalink
Added docs for HMG
Browse files Browse the repository at this point in the history
  • Loading branch information
fdkong committed Dec 2, 2020
1 parent abce0e3 commit 06d2925
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 1 deletion.
65 changes: 65 additions & 0 deletions framework/doc/content/source/preconditioners/HMGPreconditioner.md
@@ -0,0 +1,65 @@
# HMG (High-performance (Hybrid) multigrid method)

## Overview

[HMG](https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/PC/PCHMG.html) 's
essential idea is to separate a multigrid method into two steps;
matrix coarsening and level solvers. The main motivation of HMG in
the first place is to use
[HYPRE](https://computing.llnl.gov/projects/hypre-scalable-linear-solvers-multigrid-methods)
to do matrix coarsening and generate interpolations
and use [PETSc](https://www.mcs.anl.gov/petsc/) preconditioners/solvers as level solvers.
However, the code is more general, and it can use other
codes such as [GAMG](https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/PC/PCGAMG.html)
or a user code to generate interpolations.


## Example 1

```
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'hmg'
[]
```

This configuration use HYPRE to generate interpolations
and use SOR preconditioners from PETSc as level solvers.

## Example 2

```
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hmg_use_subspace_coarsening'
petsc_options_value = 'hmg true'
petsc_options = '-snes_view'
[]
```

If there are multiple nonlinear variables, this configuration will reuse interpolations
generated for the first nonlinear variable for all other variables. This will significantly
speedup preconditioner setup. We demonstrate this capability for
neutron transport calculations in the following paper:

```tex
@article{kong2020highly,
title={{A Highly Parallel Multilevel Newton--Krylov--Schwarz Method with Subspace-Based Coarsening and Partition-Based Balancing for the Multigroup Neutron Transport Equation on Three-Dimensional Unstructured Meshes}},
author={Kong, Fande and Wang, Yaqi and Gaston, Derek R and Permann, Cody J and Slaughter, Andrew E and Lindsay, Alexander D and DeHart, Mark D and Martineau, Richard C},
journal={SIAM Journal on Scientific Computing},
volume={42},
number={5},
pages={C193--C220},
year={2020},
publisher={SIAM}
}
```

A complete toy example is [test/tests/preconditioners/hmg/diffusion_hmg.i]
2 changes: 1 addition & 1 deletion test/tests/preconditioners/hmg/tests
@@ -1,5 +1,5 @@
[Tests]
design = 'Preconditioning/index.md'
design = 'HMGPreconditioner.md'
issues = '#16210'

[hmg]
Expand Down

0 comments on commit 06d2925

Please sign in to comment.