13#ifndef VOROPP_CONTAINER_HH
14#define VOROPP_CONTAINER_HH
67 Other.walls =
nullptr;
77 Other.walls =
nullptr;
97 for(
wall **wp=
walls;wp<
wep;wp++)
if(!((*wp)->point_inside(x,y,z)))
return false;
106 template<
class c_
class>
108 for(
wall **wp=
walls;wp<
wep;wp++)
if(!((*wp)->cut_cell(c,x,y,z)))
return false;
224 template<
class v_cell>
226 int &i,
int &j,
int &k,
double &x,
double &y,
double &z,
int &disp)
const {
228 x=*(
pp++);y=*(
pp++);z=*
pp;
234 disp=ijk-i-
nx*(j+
ny*k);
247 inline void initialize_search(
int ci,
int cj,
int ck,
int ijk,
int &i,
int &j,
int &k,
int &disp)
const {
251 disp=ijk-i-
nx*(j+
ny*k);
260 inline void frac_pos(
double x,
double y,
double z,
double ci,
double cj,
double ck,
261 double &
fx,
double &
fy,
double &
fz)
const {
295 inline bool put_remap(
int &ijk,
double &x,
double &y,
double &z)
const;
296 inline bool remap(
int &ai,
int &aj,
int &ak,
int &ci,
int &cj,
int &ck,
double &x,
double &y,
double &z,
int &ijk)
const;
312 void put(
int n,
double x,
double y,
double z);
326 template<
class v_cell,
class c_loop>
338 template<
class v_cell>
341 return vc.compute_cell(c,ijk,q,i,j,k);
351 template<
class v_cell>
355 double *
pp=
p[ijk]+3*
co[ijk]++;
356 *(
pp++)=x;*(
pp++)=y;*
pp=z;
380 void put(
int n,
double x,
double y,
double z,
double r);
392 template<
class v_cell,
class c_loop>
404 template<
class v_cell>
407 return vc.compute_cell(c,ijk,q,i,j,k);
418 template<
class v_cell>
423 *(
pp++)=x;*(
pp++)=y;*(
pp++)=z;*
pp=r;
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Header file for the loop classes.
Header file for the voronoicell and related classes.
Class for representing a particle system in a three-dimensional rectangular box.
Definition container.hh:136
bool put_remap(int &ijk, double &x, double &y, double &z) const
Definition container.cc:189
const bool yperiodic
Definition container.hh:155
double ** p
Definition container.hh:165
bool put_locate_block(int &ijk, double &x, double &y, double &z)
Definition container.cc:169
const int ps
Definition container.hh:181
const double bz
Definition container.hh:149
int ** id
Definition container.hh:161
bool remap(int &ai, int &aj, int &ak, int &ci, int &cj, int &ck, double &x, double &y, double &z, int &ijk) const
Definition container.cc:218
~container_base()
Definition container.cc:47
int * mem
Definition container.hh:174
int total_particles() const
Definition container.hh:287
const bool xperiodic
Definition container.hh:152
const double az
Definition container.hh:147
bool initialize_voronoicell(v_cell &c, int ijk, int q, int ci, int cj, int ck, int &i, int &j, int &k, double &x, double &y, double &z, int &disp) const
Definition container.hh:225
container_base & operator=(const container_base &Other)=delete
container_base(container_base &&Other) noexcept
Definition container.hh:187
container_base & operator=(container_base &&Other)=delete
int * co
Definition container.hh:168
void add_particle_memory(int i)
Definition container.cc:320
const double ax
Definition container.hh:139
const double ay
Definition container.hh:143
void region_count() const
Definition container.cc:345
const bool zperiodic
Definition container.hh:158
void frac_pos(double x, double y, double z, double ci, double cj, double ck, double &fx, double &fy, double &fz) const
Definition container.hh:260
bool point_inside(double x, double y, double z) const
Definition container.cc:413
container_base(container_base &Other)=delete
const double by
Definition container.hh:145
int region_index(int ci, int cj, int ck, int ei, int ej, int ek, double &qx, double &qy, double &qz, int &disp) const
Definition container.hh:279
void initialize_search(int ci, int cj, int ck, int ijk, int &i, int &j, int &k, int &disp) const
Definition container.hh:247
const double bx
Definition container.hh:141
Extension of the container_base class for computing radical Voronoi tessellations.
Definition container.hh:373
void clear()
Definition container.cc:358
bool compute_cell(v_cell &c, int ijk, int q, voro_compute< container > &vc) const
Definition container.hh:405
voro_compute< container_poly > make_compute() const
Definition container.cc:69
bool find_voronoi_cell(double x, double y, double z, double &rx, double &ry, double &rz, int &pid, voro_compute< container > &vc) const
Definition container.cc:290
void put(int n, double x, double y, double z, double r)
Definition container.cc:118
bool compute_cell(v_cell &c, c_loop &vl, voro_compute< container > &vc) const
Definition container.hh:393
void compute_all_cells(voro_compute< container > &vc)
Definition container.cc:378
double sum_cell_volumes(voro_compute< container > &vc)
Definition container.cc:400
bool compute_ghost_cell(v_cell &c, double x, double y, double z, double r, voro_compute< container > &vc)
Definition container.hh:419
Extension of the container_base class for computing regular Voronoi tessellations.
Definition container.hh:305
void clear()
Definition container.cc:352
bool compute_ghost_cell(v_cell &c, double x, double y, double z, voro_compute< container > &vc)
Definition container.hh:352
void put(int n, double x, double y, double z)
Definition container.cc:105
voro_compute< container > make_compute() const
Definition container.cc:63
double sum_cell_volumes(voro_compute< container > &vc)
Definition container.cc:388
bool find_voronoi_cell(double x, double y, double z, double &rx, double &ry, double &rz, int &pid, voro_compute< container > &vc) const
Definition container.cc:252
bool compute_cell(v_cell &c, c_loop &vl, voro_compute< container > &vc) const
Definition container.hh:327
void compute_all_cells(voro_compute< container > &vc)
Definition container.cc:367
bool compute_cell(v_cell &c, int ijk, int q, voro_compute< container > &vc) const
Definition container.hh:339
A class for storing ordering information when particles are added to a container.
Definition c_loops.hh:44
Class containing all of the routines that are specific to computing the regular Voronoi tessellation.
Definition rad_option.hh:27
Class containing all of the routines that are specific to computing the radical Voronoi tessellation.
Definition rad_option.hh:89
double max_radius
Definition rad_option.hh:100
Class containing data structures common across all particle container classes.
Definition v_base.hh:28
const double boxy
Definition v_base.hh:46
const int nxyz
Definition v_base.hh:42
const int ny
Definition v_base.hh:33
const int nx
Definition v_base.hh:31
const int nxy
Definition v_base.hh:39
const int nz
Definition v_base.hh:35
const double boxx
Definition v_base.hh:44
const double boxz
Definition v_base.hh:48
Template for carrying out Voronoi cell computations.
Definition v_compute.hh:42
Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information.
Definition cell.hh:327
Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information.
Definition cell.hh:222
A class for storing a list of pointers to walls.
Definition container.hh:55
wall_list()
Definition container.cc:419
wall ** wel
Definition container.hh:116
wall_list(const wall_list &Other)=delete
void deallocate()
Definition container.cc:435
wall_list(wall_list &&Other) noexcept
Definition container.hh:65
wall_list & operator=(wall_list &&Other)
Definition container.hh:69
int current_wall_size
Definition container.hh:118
~wall_list()
Definition container.cc:424
bool point_inside_walls(double x, double y, double z) const
Definition container.hh:96
void add_wall(wall &w)
Definition container.hh:90
bool apply_walls(c_class &c, double x, double y, double z) const
Definition container.hh:107
wall_list & operator=(const wall_list &Other)=delete
wall ** wep
Definition container.hh:61
wall ** walls
Definition container.hh:58
void add_wall(wall *w)
Definition container.hh:84
void increase_wall_memory()
Definition container.cc:440
Pure virtual class from which wall objects are derived.
Definition container.hh:34
virtual ~wall()
Definition container.hh:36
virtual bool cut_cell(voronoicell &c, double x, double y, double z) const =0
virtual bool cut_cell(voronoicell_neighbor &c, double x, double y, double z) const =0
virtual bool point_inside(double x, double y, double z) const =0
Header file for the small helper functions.
Master configuration file for setting various compile-time options.
Header file for the classes encapsulating functionality for the regular and radical Voronoi tessellat...
Header file for the base Voronoi container class.
Header file for the voro_compute template and related classes.