Neko 1.99.9
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
phmg Module Reference

Hybrid ph-multigrid preconditioner.

Data Types

type  phmg_hrchy_t
 
type  phmg_lvl_t
 
type  phmg_t
 

Functions/Subroutines

subroutine phmg_init (this, coef, bclst, phmg_params)
 
subroutine phmg_init_from_components (this, coef, bclst, smoother_itrs, cheby_acc, crs_tamg_lvls, crs_tamg_itrs, crs_tamg_cheby_degree, pcrs_sched, update_enabled)
 
subroutine phmg_free (this)
 
subroutine phmg_solve (this, z, r, n)
 
subroutine phmg_update (this)
 Bring the preconditioner back in sync after the mesh has changed.
 
subroutine phmg_update_coarse_geometry (this)
 Sample the new fine coordinates on the coarse levels and rebuild their metrics. Level 0 shares the caller's dofmap and coef, so it is skipped.
 
subroutine phmg_update_smoother_acc (this)
 Rebuild the accelerator the Chebyshev smoother uses, which depends on the geometry.
 
subroutine phmg_update_smoother_eigs (this)
 Mark every smoother to re-estimate its eigenvalues on the next solve.
 
subroutine phmg_mg_cycle (this)
 
subroutine phmg_jacobi_smoother (z, r, w, mg, msh, ax, n, lvl)
 Wraps jacobi solve as a residual update relaxation method.
 
subroutine phmg_resid_monitor (z, r, w, mg, msh, ax, lvl, typ)
 
subroutine print_phmg_info (nlvls, smoo_type, phmg)
 

Function/Subroutine Documentation

◆ phmg_free()

subroutine phmg::phmg_free ( class(phmg_t), intent(inout)  this)
private

Definition at line 386 of file phmg.f90.

◆ phmg_init()

subroutine phmg::phmg_init ( class(phmg_t), intent(inout), target  this,
type(coef_t), intent(in), target  coef,
type(bc_list_t), intent(inout), target  bclst,
type(json_file), intent(inout)  phmg_params 
)

Definition at line 134 of file phmg.f90.

◆ phmg_init_from_components()

subroutine phmg::phmg_init_from_components ( class(phmg_t), intent(inout), target  this,
type(coef_t), intent(in), target  coef,
type(bc_list_t), intent(inout), target  bclst,
integer, intent(in)  smoother_itrs,
character(len=:), allocatable  cheby_acc,
integer, intent(in)  crs_tamg_lvls,
integer, intent(in)  crs_tamg_itrs,
integer, intent(in)  crs_tamg_cheby_degree,
integer, dimension(:), intent(in), allocatable  pcrs_sched,
logical, intent(in), optional  update_enabled 
)
private

Initialize Smoothers

Definition at line 187 of file phmg.f90.

Here is the call graph for this function:

◆ phmg_jacobi_smoother()

subroutine phmg::phmg_jacobi_smoother ( type(field_t), intent(inout)  z,
type(field_t), intent(inout)  r,
type(field_t), intent(inout)  w,
type(phmg_lvl_t)  mg,
type(mesh_t), intent(inout)  msh,
class(ax_t), intent(inout)  ax,
integer, intent(in)  n,
integer, intent(in)  lvl 
)
private
Parameters
zsolution vector (inout)
rrhs vector
wscratch work space vector
mgphmg level from hierarchy
mshmesh
Axmatrix vector class object
nvector length
lvlnot used

Definition at line 779 of file phmg.f90.

◆ phmg_mg_cycle()

subroutine phmg::phmg_mg_cycle ( class(phmg_t), intent(inout)  this)
private

Definition at line 616 of file phmg.f90.

◆ phmg_resid_monitor()

subroutine phmg::phmg_resid_monitor ( type(field_t)  z,
type(field_t)  r,
type(field_t)  w,
type(phmg_lvl_t)  mg,
type(mesh_t), intent(inout)  msh,
class(ax_t), intent(inout)  ax,
integer  lvl,
integer  typ 
)
private

Definition at line 815 of file phmg.f90.

◆ phmg_solve()

subroutine phmg::phmg_solve ( class(phmg_t), intent(inout)  this,
real(kind=rp), dimension(n), intent(inout)  z,
real(kind=rp), dimension(n), intent(inout)  r,
integer, intent(in)  n 
)
private

Definition at line 454 of file phmg.f90.

Here is the call graph for this function:

◆ phmg_update()

subroutine phmg::phmg_update ( class(phmg_t), intent(inout)  this)
private

Definition at line 510 of file phmg.f90.

Here is the call graph for this function:

◆ phmg_update_coarse_geometry()

subroutine phmg::phmg_update_coarse_geometry ( class(phmg_t), intent(inout)  this)
private

Definition at line 540 of file phmg.f90.

Here is the caller graph for this function:

◆ phmg_update_smoother_acc()

subroutine phmg::phmg_update_smoother_acc ( class(phmg_t), intent(inout)  this)
private

Definition at line 569 of file phmg.f90.

Here is the caller graph for this function:

◆ phmg_update_smoother_eigs()

subroutine phmg::phmg_update_smoother_eigs ( class(phmg_t), intent(inout)  this)
private

Definition at line 597 of file phmg.f90.

Here is the caller graph for this function:

◆ print_phmg_info()

subroutine phmg::print_phmg_info ( integer, intent(in)  nlvls,
integer, intent(in)  smoo_type,
type(phmg_hrchy_t)  phmg 
)
private

Definition at line 846 of file phmg.f90.

Here is the caller graph for this function: