Neko
0.9.0
A portable framework for high-order spectral element flow simulations
|
Axis Aligned Bounding Box (aabb) implementation in Fortran. More...
Data Types | |
interface | merge |
Merge two aabbs. More... | |
interface | intersection |
Intersect two aabbs. More... | |
type | aabb_t |
Axis Aligned Bounding Box (aabb) data structure. More... | |
Functions/Subroutines | |
type(aabb_t) function, public | get_aabb (object, padding) |
Construct the aabb of a predefined object. More... | |
subroutine | add_padding (this, padding) |
Add padding to the aabb. More... | |
type(aabb_t) function | get_aabb_element (object) |
Get the aabb of an arbitrary element. More... | |
type(aabb_t) function | get_aabb_mesh (object) |
Get the aabb of a mesh. More... | |
type(aabb_t) function | get_aabb_tri_mesh (object) |
Get the aabb of a triangular mesh. More... | |
type(aabb_t) function | get_aabb_tet_mesh (object) |
Get the aabb of a tetrahedral mesh. More... | |
subroutine | aabb_init (this, lower_left_front, upper_right_back) |
Initialize the aabb. More... | |
pure real(kind=dp) function, dimension(3) | aabb_get_min (this) |
Get the minimum point of the aabb. More... | |
pure real(kind=dp) function, dimension(3) | aabb_get_max (this) |
Get the maximum point of the aabb. More... | |
pure real(kind=dp) function | aabb_get_width (this) |
Get the width of the aabb. Also known as the x-axis length. More... | |
pure real(kind=dp) function | aabb_get_depth (this) |
Get the depth of the aabb. Also known as the y-axis length. More... | |
pure real(kind=dp) function | aabb_get_height (this) |
Get the height of the aabb. Also known as the z-axis length. More... | |
pure real(kind=dp) function | aabb_get_diameter (this) |
Get the diameter length of the aabb. More... | |
pure real(kind=dp) function | aabb_get_surface_area (this) |
Get the surface area of the aabb. More... | |
pure real(kind=dp) function, dimension(3) | aabb_get_center (this) |
Get the center of the aabb. More... | |
pure real(kind=dp) function, dimension(3) | aabb_get_diagonal (this) |
Get the diagonal of the aabb. More... | |
logical function | aabb_overlaps (this, other) |
Check if two aabbs are overlapping. More... | |
logical function | aabb_contains_other (this, other) |
Check if this aabb contains another aabb. More... | |
logical function | aabb_contains_point (this, p) |
Check if this aabb contains a point. More... | |
type(aabb_t) function | merge_aabb (box1, box2) |
Merge two aabbs. More... | |
type(aabb_t) function | intersection_aabb (box1, box2) |
Get the intersection of two aabbs. More... | |
pure real(kind=dp) function | calculate_surface_area (this) |
Calculate the surface area of the aabb. More... | |
pure logical function | aabb_less (this, other) |
Less than comparison operator. More... | |
pure logical function | aabb_greater (this, other) |
Greater than comparison operator. More... | |
This is a Fortran implementation of an Axis Aligned Bounding Box (aabb) data structure. The aabb is a box that is aligned to the x, y and z axes. It is defined by two points, the lower left front corner and the upper right back corner. This is the base data structure for the aabb_Tree, which is used to accelerate a Signed Distance Function.
type(aabb_t) function, public aabb::get_aabb | ( | class(*), intent(in) | object, |
real(kind=dp), intent(in), optional | padding | ||
) |
This function is used to get the aabb of a predefined object. Optionally, the user can define the padding of the aabb, which is a multiple of the diameter of the aabb. This is used to avoid numerical issues when the object itself it axis aligned.
Current support:
[in] | object | The object to get the aabb of. |
[in] | padding | The padding of the aabb. |
Definition at line 180 of file aabb.f90.
This function calculates the aabb of an element. The aabb is defined by the lower left front corner and the upper right back corner. The aabb is calculated by finding the minimum and maximum x, y and z coordinate for all points in the arbitrary element type.
object | The arbitrary element to get the aabb of. |
Definition at line 241 of file aabb.f90.
This function calculates the aabb of a mesh. The aabb is defined by the lower left front corner and the upper right back corner. The aabb is calculated by merging the aabb of all elements in the mesh.
object | The mesh to get the aabb of. |
Definition at line 268 of file aabb.f90.
|
private |
This function calculates the aabb of a mesh. The aabb is defined by the lower left front corner and the upper right back corner. The aabb is calculated by merging the aabb of all elements in the mesh.
object | The tetrahedral mesh to get the aabb of. |
Definition at line 312 of file aabb.f90.
|
private |
This function calculates the aabb of a mesh. The aabb is defined by the lower left front corner and the upper right back corner. The aabb is calculated by merging the aabb of all elements in the mesh.
object | The triangular mesh to get the aabb of. |
Definition at line 290 of file aabb.f90.