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 logical :: contained(nn)
92 real(real64) :: point(1:this%dim)
93 type(box_iterator_t) :: iter
94 class(box_t),
pointer :: box
98 point(1:this%dim) = xx(ip, 1:this%dim)
99 contained(ip) = .false.
101 call iter%start(this%list)
102 do while (iter%has_next())
103 box => iter%get_next()
104 contained(ip) = box%contains_point(point)
105 if (contained(ip))
exit
108 contained(ip) = contained(ip) .neqv. this%is_inside_out()
115 class(box_union_t),
intent(in) :: this
116 integer,
optional,
intent(in) :: iunit
117 type(namespace_t),
optional,
intent(in) :: namespace
128 class(box_union_t),
intent(in) :: this
129 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)
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.