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 real(real64),
optional,
intent(in) :: tol
96 logical :: contained(nn)
99 real(real64) :: point(1:this%dim)
100 type(box_iterator_t) :: iter
101 class(box_t),
pointer :: box
105 point(1:this%dim) = xx(ip, 1:this%dim)
106 contained(ip) = .
true.
108 call iter%start(this%list)
109 do while (iter%has_next())
110 box => iter%get_next()
111 contained(ip) = box%contains_point(point, tol)
112 if (.not. contained(ip))
exit
115 contained(ip) = contained(ip) .neqv. this%is_inside_out()
122 class(box_intersection_t),
intent(in) :: this
123 integer,
optional,
intent(in) :: iunit
124 type(namespace_t),
optional,
intent(in) :: namespace
135 class(box_intersection_t),
intent(in) :: this
136 type(unit_t),
intent(in) :: unit_length
recursive logical function, dimension(nn) box_intersection_contains_points(this, nn, xx, tol)
subroutine box_intersection_finalize(this)
class(box_intersection_t) function, pointer box_intersection_constructor(dim)
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.