10 #ifndef VOROPP_CONTAINER_PRD_HH
11 #define VOROPP_CONTAINER_PRD_HH
95 int nx_,
int ny_,
int nz_,
int init_mem_,
int ps);
101 for(ijk=0;ijk<
oxyz;ijk++)
for(q=0;q<
co[ijk];q++)
102 printf(
"%d %g %g %g\n",
id[ijk][q],
p[ijk][
ps*q],
p[ijk][
ps*q+1],
p[ijk][
ps*q+2]);
123 template<
class v_cell>
124 inline 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) {
126 double *pp=
p[ijk]+
ps*q;
127 x=*(pp++);y=*(pp++);z=*pp;
152 inline void frac_pos(
double x,
double y,
double z,
double ci,
double cj,
double ck,
double &fx,
double &fy,
double &fz) {
171 inline int region_index(
int ci,
int cj,
int ck,
int ei,
int ej,
int ek,
double &qx,
double &qy,
double &qz,
int &disp) {
172 int qi=ci+(ei-
nx),qj=cj+(ej-
ey),qk=ck+(ek-
ez);
173 int iv(
step_div(qi,
nx));
if(iv!=0) {qx=iv*
bx;qi-=
nx*iv;}
else qx=0;
175 return qi+
nx*(qj+
oy*qk);
182 void put_locate_block(
int &ijk,
double &x,
double &y,
double &z,
int &ai,
int &aj,
int &ak);
194 if(di<0||di>=
nx||dj<0||dj>=
oy||dk<0||dk>=
oz)
202 void put_image(
int reg,
int fijk,
int l,
double dx,
double dy,
double dz);
203 inline void remap(
int &ai,
int &aj,
int &ak,
int &ci,
int &cj,
int &ck,
double &x,
double &y,
double &z,
int &ijk);
214 container_periodic(
double bx_,
double bxy_,
double by_,
double bxz_,
double byz_,
double bz_,
215 int nx_,
int ny_,
int nz_,
int init_mem_);
217 void put(
int n,
double x,
double y,
double z);
218 void put(
int n,
double x,
double y,
double z,
int &ai,
int &aj,
int &ak);
220 void import(FILE *fp=stdin);
229 inline void import(
const char* filename) {
230 FILE *fp=safe_fopen(filename,
"r");
244 FILE *fp=safe_fopen(filename,
"r");
253 template<
class c_loop>
258 fprintf(fp,
"%d %g %g %g\n",
id[vl.ijk][vl.q],*pp,pp[1],pp[2]);
270 FILE *fp=safe_fopen(filename,
"w");
277 template<
class c_loop>
282 fprintf(fp,
"// id %d\nsphere{<%g,%g,%g>,s}\n",
283 id[vl.ijk][vl.q],*pp,pp[1],pp[2]);
295 FILE *fp=safe_fopen(filename,
"w");
303 template<
class c_loop>
307 pp=
p[vl.ijk]+
ps*vl.q;
322 FILE *fp=safe_fopen(filename,
"w");
330 template<
class c_loop>
334 fprintf(fp,
"// cell %d\n",
id[vl.ijk][vl.q]);
335 pp=
p[vl.ijk]+
ps*vl.q;
350 FILE *fp=safe_fopen(filename,
"w");
359 template<
class c_loop>
361 int ijk,q;
double *pp;
365 ijk=vl.ijk;q=vl.q;pp=
p[ijk]+
ps*q;
366 c.
output_custom(format,
id[ijk][q],*pp,pp[1],pp[2],default_radius,fp);
371 ijk=vl.ijk;q=vl.q;pp=
p[ijk]+
ps*q;
372 c.
output_custom(format,
id[ijk][q],*pp,pp[1],pp[2],default_radius,fp);
377 void print_custom(
const char *format,
const char *filename);
378 bool find_voronoi_cell(
double x,
double y,
double z,
double &rx,
double &ry,
double &rz,
int &pid);
387 template<
class v_cell,
class c_loop>
399 template<
class v_cell>
401 int k(ijk/(
nx*
oy)),ijkt(ijk-(
nx*oy)*k),j(ijkt/
nx),i(ijkt-j*
nx);
418 int nx_,
int ny_,
int nz_,
int init_mem_);
420 void put(
int n,
double x,
double y,
double z,
double r);
421 void put(
int n,
double x,
double y,
double z,
double r,
int &ai,
int &aj,
int &ak);
423 void import(FILE *fp=stdin);
432 inline void import(
const char* filename) {
433 FILE *fp=safe_fopen(filename,
"r");
447 FILE *fp=safe_fopen(filename,
"r");
456 template<
class c_loop>
461 fprintf(fp,
"%d %g %g %g %g\n",
id[vl.ijk][vl.q],*pp,pp[1],pp[2],pp[3]);
475 FILE *fp=safe_fopen(filename,
"w");
482 template<
class c_loop>
487 fprintf(fp,
"// id %d\nsphere{<%g,%g,%g>,%g}\n",
488 id[vl.ijk][vl.q],*pp,pp[1],pp[2],pp[3]);
500 FILE *fp(safe_fopen(filename,
"w"));
508 template<
class c_loop>
512 pp=
p[vl.ijk]+
ps*vl.q;
527 FILE *fp(safe_fopen(filename,
"w"));
535 template<
class c_loop>
539 fprintf(fp,
"// cell %d\n",
id[vl.ijk][vl.q]);
540 pp=
p[vl.ijk]+
ps*vl.q;
555 FILE *fp(safe_fopen(filename,
"w"));
564 template<
class c_loop>
566 int ijk,q;
double *pp;
570 ijk=vl.ijk;q=vl.q;pp=
p[ijk]+
ps*q;
576 ijk=vl.ijk;q=vl.q;pp=
p[ijk]+
ps*q;
589 template<
class v_cell,
class c_loop>
601 template<
class v_cell>
603 int k(ijk/(
nx*
oy)),ijkt(ijk-(
nx*oy)*k),j(ijkt/
nx),i(ijkt-j*
nx);
607 void print_custom(
const char *format,
const char *filename);
608 bool find_voronoi_cell(
double x,
double y,
double z,
double &rx,
double &ry,
double &rz,
int &pid);