aabb_m Module


Uses

  • module~~aabb_m~~UsesGraph module~aabb_m aabb_m module~strings_m strings_m module~aabb_m->module~strings_m module~constants_m constants_m module~aabb_m->module~constants_m module~strings_m->module~constants_m iso_fortran_env iso_fortran_env module~constants_m->iso_fortran_env

Used by

  • module~~aabb_m~~UsedByGraph module~aabb_m aabb_m module~aabbtree_m aabbtree_m module~aabbtree_m->module~aabb_m module~pairtab_m pairtab_m module~pairtab_m->module~aabbtree_m module~aabbtree_sm aabbtree_sm module~aabbtree_sm->module~aabbtree_m module~interaction_m interaction_m module~interaction_m->module~pairtab_m module~bd_solver_m bd_solver_m module~bd_solver_m->module~interaction_m module~setup_m setup_m module~setup_m->module~interaction_m module~setup_m->module~bd_solver_m program~main main program~main->module~setup_m

Contents


Interfaces

public interface operator(+)

  • public function aabb_union(x, y) result(z)

    Combines AABBs x and y to return a new AABB z.

    Arguments

    Type IntentOptional AttributesName
    type(aabb_t), intent(in) :: x

    An aabb_t instance.

    type(aabb_t), intent(in) :: y

    An aabb_t instance.

    Return Value type(aabb_t)


Derived Types

type, public :: aabb_t

Components

TypeVisibility AttributesNameInitial
real(kind=rp), public, dimension(3):: lbnd
real(kind=rp), public, dimension(3):: ubnd
real(kind=rp), public, dimension(3):: center
real(kind=rp), public :: srfarea

Type-Bound Procedures

procedure, public :: init => aabb_init
procedure, public :: print => aabb_print
procedure, public :: clear => aabb_clear
procedure, public :: get_extent => aabb_get_extent
procedure, public :: update => aabb_update
procedure, public :: fatten => aabb_fatten
procedure, public :: includes => aabb_includes
procedure, public :: overlaps => aabb_overlaps
procedure, private :: calc_center => aabb_calc_center
procedure, private :: calc_srfarea => aabb_calc_srfarea

Functions

public function aabb_includes(this, other) result(res)

Returns true if this includes other, false otherwise. Inclusion is considered in a strict sense.

Arguments

Type IntentOptional AttributesName
class(aabb_t), intent(in) :: this

An aabb_t instance.

type(aabb_t), intent(in) :: other

An aabb_t instance.

Return Value logical

public function aabb_overlaps(this, other) result(res)

Returns true if this overlaps other, false otherwise. Touching does not count as an overlap.

Arguments

Type IntentOptional AttributesName
class(aabb_t), intent(in) :: this

An aabb_t instance.

type(aabb_t), intent(in) :: other

An aabb_t instance.

Return Value logical

public function aabb_union(x, y) result(z)

Combines AABBs x and y to return a new AABB z.

Arguments

Type IntentOptional AttributesName
type(aabb_t), intent(in) :: x

An aabb_t instance.

type(aabb_t), intent(in) :: y

An aabb_t instance.

Return Value type(aabb_t)


Subroutines

public subroutine aabb_init(this, lbnd, ubnd)

Initializes an aabb_t instance from lower and upper bounds.

Arguments

Type IntentOptional AttributesName
class(aabb_t), intent(out) :: this

An aabb_t instance.

real(kind=rp), intent(in), dimension(3):: lbnd

Lower bound

real(kind=rp), intent(in), dimension(3):: ubnd

Upper bound

public subroutine aabb_print(this, frmt, str)

Prints an AABB.

Arguments

Type IntentOptional AttributesName
class(aabb_t), intent(in) :: this

An aabb_t instance.

character(len=*), intent(in), optional :: frmt

Fortran-style format string for a real number. Default: (g0.6).

character(len=:), intent(out), optional allocatable:: str

If present, the output is printed to this string instead of STDOUT.

public subroutine aabb_clear(this)

Clears all attributes of an AABB and sets them to zero.

Arguments

Type IntentOptional AttributesName
class(aabb_t), intent(inout) :: this

An aabb_t instance.

public subroutine aabb_get_extent(this, extent)

Calculates the extent of an aabb. The extent of an AABB is defined as the difference between its upper and lower bounds.

Arguments

Type IntentOptional AttributesName
class(aabb_t), intent(in) :: this

An aabb_t instance.

real(kind=rp), intent(out), dimension(3):: extent

Extent of an AABB.

public subroutine aabb_update(this, lbnd, ubnd)

Updates an AABB with new bounds.

Arguments

Type IntentOptional AttributesName
class(aabb_t), intent(inout) :: this

An aabb_t instance.

real(kind=rp), intent(in), optional dimension(3):: lbnd

Lower bound

real(kind=rp), intent(in), optional dimension(3):: ubnd

Upper bound

public subroutine aabb_fatten(this, frac)

Fattens an AABB by a fraction of its base extent.

Arguments

Type IntentOptional AttributesName
class(aabb_t), intent(inout) :: this

An aabb_t instance.

real(kind=rp), intent(in) :: frac

Fraction of AABB base extent.

public subroutine aabb_calc_center(this)

Calculates the center of an aabb.

Arguments

Type IntentOptional AttributesName
class(aabb_t), intent(inout) :: this

An aabb_t instance.

public subroutine aabb_calc_srfarea(this)

Calculates the surface area of an aabb.

Arguments

Type IntentOptional AttributesName
class(aabb_t), intent(inout) :: this

An aabb_t instance.