44 type(cgal_polyhedra_t) :: cgal_poly
45 character(len=1024) :: filename
54 procedure box_cgal_constructor
61 integer,
intent(in) :: dim
62 real(real64),
intent(in) :: center(dim)
63 character(len=*),
intent(in) :: filename
64 real(real64),
intent(in) :: length(dim)
65 type(namespace_t),
intent(in) :: namespace
66 class(box_cgal_t),
pointer :: box
71 message(1) =
"CGAL boxes can only be used in 3 dimensions."
80 bounding_box_max=
m_half*length)
82 box%filename = trim(filename)
85 box%bounding_box_l =
m_half*length + abs(center)
92 type(box_cgal_t),
intent(inout) :: this
104 class(box_cgal_t),
intent(in) :: this
105 integer,
intent(in) :: nn
106 real(real64),
contiguous,
intent(in) :: xx(:,:)
107 logical :: contained(1:nn)
114 contained(:) = .false.
118 .neqv. this%is_inside_out()
125 class(box_cgal_t),
intent(in) :: this
126 integer,
optional,
intent(in) :: iunit
127 type(namespace_t),
optional,
intent(in) :: namespace
131 write(
message(1),
'(2x,a)')
'Type = cgal'
132 write(
message(2),
'(2x,a,x,a)')
'Loaded shape data from file', trim(this%filename)
145 write(
info,
'(3a)')
'BoxShape = cgal; BoxCgalFile = ', trim(this%filename)
class(box_cgal_t) function, pointer box_cgal_constructor(dim, center, filename, length, namespace)
subroutine box_cgal_write_info(this, iunit, namespace)
subroutine box_cgal_finalize(this)
character(len=box_info_len) function box_cgal_short_info(this, unit_length)
logical function, dimension(1:nn) box_cgal_shape_contains_points(this, nn, xx)
subroutine, public box_shape_init(this, namespace, dim, center, bounding_box_min, bounding_box_max, axes)
subroutine, public box_shape_end(this)
subroutine, public cgal_polyhedron_init(cgal_poly, fname, verbose)
logical function, public cgal_polyhedron_point_inside(cgal_poly, xq, yq, zq)
subroutine, public cgal_polyhedron_end(cgal_poly)
real(real64), parameter, public m_half
subroutine, public messages_info(no_lines, iunit, verbose_limit, stress, all_nodes, namespace)
character(len=256), dimension(max_lines), public message
to be output by fatal, warning
subroutine, public messages_fatal(no_lines, only_root_writes, namespace)
brief This module defines the class unit_t which is used by the unit_systems_oct_m module.
Class implementing a box defined by a file read using the cgal library.
Base class for more specialized boxes that are defined by a shape and have a center and basis vectors...