56 procedure box_intersection_constructor
63 integer,
intent(in) :: dim
64 class(box_intersection_t),
pointer :: box
70 safe_allocate(box%bounding_box_l(1:dim))
74 box%bounding_box_l =
m_zero
81 type(box_intersection_t),
intent(inout) :: this
92 class(box_intersection_t),
intent(in) :: this
93 integer,
intent(in) :: nn
94 real(real64),
contiguous,
intent(in) :: xx(:,:)
95 logical :: contained(nn)
98 real(real64) :: point(1:this%dim)
99 type(box_iterator_t) :: iter
100 class(box_t),
pointer :: box
104 point(1:this%dim) = xx(ip, 1:this%dim)
105 contained(ip) = .
true.
107 call iter%start(this%list)
108 do while (iter%has_next())
109 box => iter%get_next()
110 contained(ip) = box%contains_point(point)
111 if (.not. contained(ip))
exit
114 contained(ip) = contained(ip) .neqv. this%is_inside_out()
121 class(box_intersection_t),
intent(in) :: this
122 integer,
optional,
intent(in) :: iunit
123 type(namespace_t),
optional,
intent(in) :: namespace
134 class(box_intersection_t),
intent(in) :: this
135 type(unit_t),
intent(in) :: unit_length
subroutine box_intersection_finalize(this)
class(box_intersection_t) function, pointer box_intersection_constructor(dim)
recursive logical function, dimension(nn) box_intersection_contains_points(this, nn, xx)
character(len=box_info_len) function box_intersection_short_info(this, unit_length)
subroutine box_intersection_write_info(this, iunit, namespace)
real(real64), parameter, public m_zero
This module implements fully polymorphic linked lists, and some specializations thereof.
subroutine, public multibox_end(this)
brief This module defines the class unit_t which is used by the unit_systems_oct_m module.
Class implementing a box that is an intersection other boxes. Note that the we do not override the bo...
Abstract class for boxes that are made up of a list of boxes.