fmm_tree_type Derived Type

type, public :: fmm_tree_type

Data structore to represent the tree for storing sources and targets of the fmm problem


Inherits

type~~fmm_tree_type~~InheritsGraph type~fmm_tree_type fmm_tree_type type~yale_sparse yale_sparse type~fmm_tree_type->type~yale_sparse level_list, particle_list, near_nl, far_nl

Inherited by

type~~fmm_tree_type~~InheritedByGraph type~fmm_tree_type fmm_tree_type type~fmm_type fmm_type type~fmm_type->type~fmm_tree_type tree type~ommp_electrostatics_type ommp_electrostatics_type type~ommp_electrostatics_type->type~fmm_tree_type tree type~ommp_electrostatics_type->type~fmm_type fmm_static, fmm_ipd type~ommp_system ommp_system type~ommp_system->type~ommp_electrostatics_type eel

Contents


Components

Type Visibility Attributes Name Initial
integer(kind=ip), public :: tree_degree = 0

Maximum number of children for each node

integer(kind=ip), public :: n_nodes = 0

Number of nodes in the tree

integer(kind=ip), public :: breadth = 0

Number of levels in the tree

integer(kind=ip), public, allocatable :: children(:,:)

For each node in the tree, its children (0 is the null element)

integer(kind=ip), public, allocatable :: parent(:)

For each node in the tree, its parent (0 is the null element)

integer(kind=ip), public, allocatable :: node_level(:)

For each node the level of the tree in which it is located (1-based)

logical(kind=lp), public, allocatable :: is_leaf(:)

For each node true if is a leaf and false otherwise

type(yale_sparse), public :: level_list

For each level, the list of the nodes contained

integer(kind=ip), public :: n_particles = 0

Number of particles stored in the tree

real(kind=rp), public, pointer :: particles_coords(:,:)

Pointer to particle coordinates

type(yale_sparse), public :: particle_list

List of particles contained in each node, for all non-leaf nodes this list should be empty

integer(kind=ip), public, allocatable :: particle_to_node(:)
real(kind=rp), public, allocatable :: node_centroid(:,:)

For each node its centroid (in cartesian coordinates)

real(kind=rp), public, allocatable :: node_dimension(:)

For each node, its dimension (or radius)

type(yale_sparse), public :: near_nl

List of nodes pair eligible for near-field

type(yale_sparse), public :: far_nl

List of nodes pair eligible for far-field