Neko 1.99.7
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 376 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 133 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 186 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 768 of file phmg.f90.

◆ phmg_mg_cycle()

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

Definition at line 605 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 804 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 443 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 499 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 529 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 558 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 586 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 835 of file phmg.f90.

Here is the caller graph for this function: