50 procedure box_union_constructor
57 integer,
intent(in) :: dim
58 class(box_union_t),
pointer :: box
64 safe_allocate(box%bounding_box_l(1:dim))
68 box%bounding_box_l =
m_zero
75 type(box_union_t),
intent(inout) :: this
86 class(box_union_t),
intent(in) :: this
87 integer,
intent(in) :: nn
88 real(real64),
contiguous,
intent(in) :: xx(:,:)
89 real(real64),
optional,
intent(in) :: tol
90 logical :: contained(nn)
93 real(real64) :: point(1:this%dim)
94 type(box_iterator_t) :: iter
95 class(box_t),
pointer :: box
99 point(1:this%dim) = xx(ip, 1:this%dim)
100 contained(ip) = .false.
102 call iter%start(this%list)
103 do while (iter%has_next())
104 box => iter%get_next()
105 contained(ip) = box%contains_point(point, tol)
106 if (contained(ip))
exit
109 contained(ip) = contained(ip) .neqv. this%is_inside_out()
116 class(box_union_t),
intent(in) :: this
117 integer,
optional,
intent(in) :: iunit
118 type(namespace_t),
optional,
intent(in) :: namespace
129 class(box_union_t),
intent(in) :: this
130 type(unit_t),
intent(in) :: unit_length
subroutine box_union_write_info(this, iunit, namespace)
subroutine box_union_finalize(this)
class(box_union_t) function, pointer box_union_constructor(dim)
character(len=box_info_len) function box_union_short_info(this, unit_length)
recursive logical function, dimension(nn) box_union_contains_points(this, nn, xx, tol)
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 union other boxes.
Abstract class for boxes that are made up of a list of boxes.