40 type(box_list_t),
public :: list
50 class(multibox_t),
intent(inout) :: this
52 type(box_iterator_t) :: iter
53 class(box_t),
pointer :: box
57 safe_deallocate_a(this%bounding_box_l)
59 call iter%start(this%list)
60 do while (iter%has_next())
61 box => iter%get_next()
62 safe_deallocate_p(box)
75 class(multibox_t),
intent(in) :: this
76 class(basis_vectors_t),
optional,
intent(in) :: axes
77 real(real64) :: bounds(2, this%dim)
79 real(real64) :: box_bounds(2, this%dim)
80 type(box_iterator_t) :: iter
81 class(box_t),
pointer :: box
87 call iter%start(this%list)
88 do while (iter%has_next())
89 box => iter%get_next()
90 if (this%is_inside_out())
then
91 call box%turn_inside_out()
100 if (this%is_inside_out())
then
101 call box%turn_inside_out()
110 class(multibox_t),
intent(inout) :: this
111 class(box_t),
intent(in) :: new_box
117 assert(this%dim == new_box%dim)
119 do idir = 1, this%dim
120 if (new_box%bounding_box_l(idir) > this%bounding_box_l(idir))
then
121 this%bounding_box_l(idir) = new_box%bounding_box_l(idir)
125 call this%list%add(new_box)
Box bounds along some axes.
real(real64), parameter, public m_huge
This module implements fully polymorphic linked lists, and some specializations thereof.
real(real64) function, dimension(2, this%dim) multibox_bounds(this, axes)
subroutine multibox_add_box(this, new_box)
subroutine, public multibox_end(this)
class to tell whether a point is inside or outside
Abstract class for boxes that are made up of a list of boxes.