Neko 0.9.99
A portable framework for high-order spectral element flow simulations
|
Implements the base type for TreeAMG hierarchy structure.
Data Types | |
type | tamg_hierarchy_t |
Type for a TreeAMG hierarchy. More... | |
type | tamg_lvl_t |
Type for storing TreeAMG level information. More... | |
type | tamg_node_t |
Type for storing TreeAMG tree node information. More... | |
Functions/Subroutines | |
subroutine | tamg_init (this, ax, xh, coef, msh, gs_h, nlvls, blst) |
Initialization of TreeAMG hierarchy. | |
subroutine, public | tamg_lvl_init (tamg_lvl, lvl, nnodes, ndofs) |
Initialization of a TreeAMG level. | |
subroutine, public | tamg_node_init (node, gid, ndofs) |
Initialization of a TreeAMG tree node. | |
recursive subroutine | tamg_matvec (this, vec_out, vec_in, lvl_out) |
Wrapper for matrix vector product using the TreeAMG hierarchy structure b=Ax done as vec_out = A * vec_in. | |
recursive subroutine | tamg_matvec_impl (this, vec_out, vec_in, lvl, lvl_out) |
Matrix vector product using the TreeAMG hierarchy structure b=Ax done as vec_out = A * vec_in This is done on a level by level basis. | |
recursive subroutine | tamg_matvec_flat_impl (this, vec_out, vec_in, lvl_blah, lvl_out) |
Ignore this. For piecewise constant, can create index map directly to finest level. | |
subroutine | tamg_restriction_operator (this, vec_out, vec_in, lvl) |
Restriction operator for TreeAMG. vec_out = R * vec_in. | |
subroutine | tamg_prolongation_operator (this, vec_out, vec_in, lvl) |
Prolongation operator for TreeAMG. vec_out = P * vec_in. | |
subroutine tree_amg::tamg_init | ( | class(tamg_hierarchy_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 | ||
) |
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 |
Definition at line 117 of file tree_amg.f90.
subroutine, public tree_amg::tamg_lvl_init | ( | type(tamg_lvl_t), intent(inout) | tamg_lvl, |
integer, intent(in) | lvl, | ||
integer, intent(in) | nnodes, | ||
integer, intent(in) | ndofs | ||
) |
tamg_lvl | The TreeAMG level |
lvl | The level id |
nnodes | Number of nodes on the level (number of aggregates) |
ndofs | Number of dofs on the level |
Definition at line 154 of file tree_amg.f90.
|
private |
vec_out | Result of Ax |
vec_in | Vector to be multiplied by linear system. A * vec_in |
lvl_out | Level of the TreeAMG hierarchy on which the matvec is done. This also specifies the hieararchy level of the incoming vector |
Definition at line 198 of file tree_amg.f90.
|
private |
isleaf true If on finest level, pass to neko ax_t matvec operator
Call local finite element assembly
pass down through hierarchy
Map input level to finest level
Average on overlapping dofs
Finest level matvec (Call local finite element assembly)
Map finest level matvec back to output level
Definition at line 274 of file tree_amg.f90.
|
private |
vec_out | The vector to be returned by level lvl |
vec_in | The vector pased to level lvl |
lvl | The current level of the matvec (wrt tree traversal) |
lvl_out | Level of the TreeAMG hierarchy on which the matvec is output. |
isleaf true If on finest level, pass to neko ax_t matvec operator
Call local finite element assembly
pass down through hierarchy
lvl is finer than desired output project input vector to finer grid
restrict to coarser grid
lvl is coarser then desired output. Continue down tree
Definition at line 215 of file tree_amg.f90.
subroutine, public tree_amg::tamg_node_init | ( | type(tamg_node_t), intent(inout) | node, |
integer, intent(in) | gid, | ||
integer, intent(in) | ndofs | ||
) |
node | The TreeAMG tree node |
gid | The gid for the node |
ndofs | Number of dofs in the node |
Definition at line 177 of file tree_amg.f90.
|
private |
vec_out | The vector to be returned. On level lvl |
vec_in | The vector pased into operator. On level lvl-1 |
lvl | The target level of the returned vector after prolongation (wrt tree traversal) |
Definition at line 363 of file tree_amg.f90.
|
private |
vec_out | The vector to be returned. On level lvl |
vec_in | The vector pased into operator. On level lvl-1 |
lvl | The target level of the returned vector after restrction (wrt tree traversal) |
Definition at line 333 of file tree_amg.f90.