Neko 1.99.1
A portable framework for high-order spectral element flow simulations
|
Axis Aligned Bounding Box (aabb) Tree. More...
Public Member Functions | |
procedure, pass, public | init (this, initial_capacity) |
Initializes the AABB tree. | |
procedure, pass, public | build (this, objects) |
Builds the tree. | |
procedure, pass, public | insert_object (this, object, object_index) |
Inserts an object into the tree. | |
procedure, pass, public | get_size (this) |
Returns the size of the tree, in number of leaves. | |
procedure, pass, public | get_root_index (this) |
Returns the index of the root node. | |
procedure, pass, public | get_parent_index (this, node_index) |
Returns the index of the parent node of the node at the given index. | |
procedure, pass, public | get_left_index (this, node_index) |
Returns the index of the left node of the node at the given index. | |
procedure, pass, public | get_right_index (this, node_index) |
Returns the index of the right node of the node at the given index. | |
procedure, pass, public | get_node (this, node_index) |
Returns the node at the given index. | |
procedure, pass, public | get_root_node (this) |
Returns the root node of the tree. | |
procedure, pass, public | get_parent_node (this, node_index) |
Returns the parent node of the node at the given index. | |
procedure, pass, public | get_left_node (this, node_index) |
Returns the left node of the node at the given index. | |
procedure, pass, public | get_right_node (this, node_index) |
Returns the right node of the node at the given index. | |
procedure, pass, public | get_aabb (this, node_index) |
procedure, pass, public | query_overlaps (this, object, object_index, overlaps) |
Queries the tree for overlapping objects. | |
procedure, pass, public | print (this) |
Prints the tree. | |
procedure, pass(this) | allocate_node (this) |
Allocates a new node in the tree. | |
procedure, pass(this) | deallocate_node (this, node_index) |
Deallocates a node in the tree. | |
procedure, pass(this) | resize_node_pool (this, new_capacity) |
Resizes the node pool. | |
procedure, pass(this) | insert_leaf (this, leaf_node_index) |
Inserts a leaf into the tree. | |
procedure, pass(this) | fix_upwards_tree (this, tree_start_index) |
Fixes the tree upwards. | |
procedure, pass(this) | valid_tree (this) |
Validates the tree. | |
Public Attributes | |
integer | root_node_index = AABB_NULL_NODE |
integer | allocated_node_count = 0 |
integer | next_free_node_index = AABB_NULL_NODE |
integer | node_capacity = 0 |
integer | growth_size = 1 |
Private Attributes | |
type(aabb_node_t), dimension(:), allocatable | nodes |
Definition at line 130 of file aabb_tree.f90.
procedure, pass(this) aabb_tree::aabb_tree_t::allocate_node | ( | class(aabb_tree_t), intent(inout) | this | ) |
Definition at line 179 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::build | ( | class(aabb_tree_t), intent(inout) | this, |
class(*), dimension(:), intent(in) | objects | ||
) |
Definition at line 143 of file aabb_tree.f90.
procedure, pass(this) aabb_tree::aabb_tree_t::deallocate_node | ( | class(aabb_tree_t), intent(inout) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 180 of file aabb_tree.f90.
procedure, pass(this) aabb_tree::aabb_tree_t::fix_upwards_tree | ( | class(aabb_tree_t), intent(inout) | this, |
integer, intent(in) | tree_start_index | ||
) |
This method is used to fix the tree upwards after an insertion. It is used to expand the nodes of the tree to fit the new leaf node.
Definition at line 184 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_aabb | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 169 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_left_index | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 154 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_left_node | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 164 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_node | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 159 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_parent_index | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 152 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_parent_node | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 162 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_right_index | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 156 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_right_node | ( | class(aabb_tree_t), intent(in) | this, |
integer, intent(in) | node_index | ||
) |
Definition at line 166 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_root_index | ( | class(aabb_tree_t), intent(in) | this | ) |
Definition at line 150 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::get_root_node | ( | class(aabb_tree_t), intent(in) | this | ) |
Definition at line 160 of file aabb_tree.f90.
Definition at line 148 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::init | ( | class(aabb_tree_t), intent(inout) | this, |
integer, intent(in) | initial_capacity | ||
) |
Definition at line 142 of file aabb_tree.f90.
procedure, pass(this) aabb_tree::aabb_tree_t::insert_leaf | ( | class(aabb_tree_t), intent(inout) | this, |
integer, intent(in) | leaf_node_index | ||
) |
Definition at line 182 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::insert_object | ( | class(aabb_tree_t), intent(inout) | this, |
class(*), intent(in) | object, | ||
integer, intent(in) | object_index | ||
) |
Definition at line 144 of file aabb_tree.f90.
Definition at line 174 of file aabb_tree.f90.
procedure, pass, public aabb_tree::aabb_tree_t::query_overlaps | ( | class(aabb_tree_t), intent(in) | this, |
class(*), intent(in) | object, | ||
integer, intent(in) | object_index, | ||
integer, dimension(:), intent(inout), allocatable | overlaps | ||
) |
Definition at line 171 of file aabb_tree.f90.
procedure, pass(this) aabb_tree::aabb_tree_t::resize_node_pool | ( | class(aabb_tree_t), intent(inout) | this, |
integer, intent(in) | new_capacity | ||
) |
Definition at line 181 of file aabb_tree.f90.
Definition at line 186 of file aabb_tree.f90.
integer aabb_tree::aabb_tree_t::allocated_node_count = 0 |
Definition at line 134 of file aabb_tree.f90.
integer aabb_tree::aabb_tree_t::growth_size = 1 |
Definition at line 137 of file aabb_tree.f90.
integer aabb_tree::aabb_tree_t::next_free_node_index = AABB_NULL_NODE |
Definition at line 135 of file aabb_tree.f90.
integer aabb_tree::aabb_tree_t::node_capacity = 0 |
Definition at line 136 of file aabb_tree.f90.
|
private |
Definition at line 132 of file aabb_tree.f90.
integer aabb_tree::aabb_tree_t::root_node_index = AABB_NULL_NODE |
Definition at line 133 of file aabb_tree.f90.