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

Implements smoothers for use with TreeAMG matrix vector product.

Data Types

type  amg_cheby_t
 Type for Chebyshev iteration using TreeAMG matvec. More...
 
type  amg_jacobi_t
 Type for Chebyshev iteration using TreeAMG matvec. More...
 

Functions/Subroutines

subroutine amg_cheby_init (this, n, lvl, max_iter)
 Initialization of chebyshev.
 
subroutine amg_cheby_power (this, amg, n)
 Power method to approximate largest eigenvalue.
 
subroutine amg_cheby_solve (this, x, f, n, amg, niter)
 Chebyshev smoother From Saad's iterative methods textbook.
 
subroutine amg_jacobi_init (this, n, lvl, max_iter)
 Initialization of Jacobi (this is expensive...)
 
subroutine amg_jacobi_diag (this, amg, n)
 SAMPLE MATRIX DIAGONAL VALUES (DO NOT USE, EXPENSIVE)
 
subroutine amg_jacobi_solve (this, x, f, n, amg, niter)
 Jacobi smoother.
 
subroutine amg_smoo_monitor (lvl, smoo)
 
subroutine amg_cheby_monitor (lvl, lam)
 

Function/Subroutine Documentation

◆ amg_cheby_init()

subroutine tree_amg_smoother::amg_cheby_init ( class(amg_cheby_t), intent(inout), target  this,
integer, intent(in n,
integer, intent(in lvl,
integer, intent(in max_iter 
)
Parameters
nNumber of dofs
lvlThe tamg hierarchy level on which the iterations are to be applied
max_iterThe number of iterations (chebyshev degree)

Definition at line 86 of file tree_amg_smoother.f90.

Here is the call graph for this function:

◆ amg_cheby_monitor()

subroutine tree_amg_smoother::amg_cheby_monitor ( integer, intent(in lvl,
real(kind=rp), intent(in lam 
)
private

Definition at line 328 of file tree_amg_smoother.f90.

Here is the caller graph for this function:

◆ amg_cheby_power()

subroutine tree_amg_smoother::amg_cheby_power ( class(amg_cheby_t), intent(inout this,
type(tamg_hierarchy_t), intent(inout amg,
integer, intent(in n 
)
private
Parameters
amgTreeAMG object
nNumber of dofs

Definition at line 108 of file tree_amg_smoother.f90.

Here is the call graph for this function:

◆ amg_cheby_solve()

subroutine tree_amg_smoother::amg_cheby_solve ( class(amg_cheby_t), intent(inout this,
real(kind=rp), dimension(n), intent(inout x,
real(kind=rp), dimension(n), intent(inout f,
integer, intent(in n,
class(tamg_hierarchy_t), intent(inout amg,
integer, intent(in), optional  niter 
)
private
Parameters
xThe solution to be returned
fThe right-hand side
nNumber of dofs
amgThe TreeAMG object

Definition at line 181 of file tree_amg_smoother.f90.

◆ amg_jacobi_diag()

subroutine tree_amg_smoother::amg_jacobi_diag ( class(amg_jacobi_t), intent(inout this,
type(tamg_hierarchy_t), intent(inout amg,
integer, intent(in n 
)
private
Parameters
amgTreeAMG object
nNumber of dofs

Definition at line 259 of file tree_amg_smoother.f90.

◆ amg_jacobi_init()

subroutine tree_amg_smoother::amg_jacobi_init ( class(amg_jacobi_t), intent(inout), target  this,
integer, intent(in n,
integer, intent(in lvl,
integer, intent(in max_iter 
)
private
Parameters
nNumber of dofs
lvlThe tamg hierarchy level on which the iterations are to be applied
max_iterThe number of iterations

Definition at line 240 of file tree_amg_smoother.f90.

◆ amg_jacobi_solve()

subroutine tree_amg_smoother::amg_jacobi_solve ( class(amg_jacobi_t), intent(inout this,
real(kind=rp), dimension(n), intent(inout x,
real(kind=rp), dimension(n), intent(inout f,
integer, intent(in n,
class(tamg_hierarchy_t), intent(inout amg,
integer, intent(in), optional  niter 
)
private
Parameters
xThe solution to be returned
fThe right-hand side
nNumber of dofs
amgThe TreeAMG object

w = A x

r = f - Ax

r = Dinv * (f - Ax)

x = x + omega * Dinv * (f - Ax)

Definition at line 277 of file tree_amg_smoother.f90.

◆ amg_smoo_monitor()

subroutine tree_amg_smoother::amg_smoo_monitor ( integer, intent(in lvl,
class(amg_cheby_t), intent(in smoo 
)
private

Definition at line 317 of file tree_amg_smoother.f90.

Here is the caller graph for this function: