24 nx(nx_), ny(ny_), nz(nz_), nxy(nx_*ny_), nxyz(nxy*nz_), boxx(boxx_), boxy(boxy_), boxz(boxz_),
25 xsp(1/boxx_), ysp(1/boxy_), zsp(1/boxz_), mrad(new double[wl_hgridcu*wl_seq_length]) {
26 const unsigned int b1=1<<21,b2=1<<22,b3=1<<24,b4=1<<25,b5=1<<27,b6=1<<28;
27 const double xstep=
boxx/wl_fgrid,ystep=
boxy/wl_fgrid,zstep=
boxz/wl_fgrid;
29 unsigned int f,*e=
const_cast<unsigned int*
> (
wl);
30 double xlo,ylo,zlo,xhi,yhi,zhi,minr,*radp=
mrad;
31 for(zlo=0,zhi=zstep,lz=0;lz<wl_hgrid;zlo=zhi,zhi+=zstep,lz++) {
32 for(ylo=0,yhi=ystep,ly=0;ly<wl_hgrid;ylo=yhi,yhi+=ystep,ly++) {
33 for(xlo=0,xhi=xstep,lx=0;lx<wl_hgrid;xlo=xhi,xhi+=xstep,lx++) {
35 for(q=e[0]+1;q<wl_seq_length;q++) {
41 compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i-1,j,k);
42 if((f&b1)==0) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i+1,j,k);
43 }
else if((f&b1)==b1) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i+1,j,k);
45 compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j-1,k);
46 if((f&b3)==0) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j+1,k);
47 }
else if((f&b3)==b3) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j+1,k);
49 compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j,k-1);
50 if((f&b5)==0) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j,k+1);
51 }
else if((f&b5)==b5) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j,k+1);
60 compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j,k);
81 void voro_base::compute_minimum(
double &minr,
double &xlo,
double &xhi,
double &ylo,
double &yhi,
double &zlo,
double &zhi,
int ti,
int tj,
int tk) {
83 if(ti>0) {temp=
boxx*ti-xhi;radsq=temp*temp;}
84 else if(ti<0) {temp=xlo-
boxx*(1+ti);radsq=temp*temp;}
87 if(tj>0) {temp=
boxy*tj-yhi;radsq+=temp*temp;}
88 else if(tj<0) {temp=ylo-
boxy*(1+tj);radsq+=temp*temp;}
90 if(tk>0) {temp=
boxz*tk-zhi;radsq+=temp*temp;}
91 else if(tk<0) {temp=zlo-
boxz*(1+tk);radsq+=temp*temp;}
93 if(radsq<minr) minr=radsq;
101 char *fmp=(
const_cast<char*
>(format));
107 if(*fmp==
'n')
return true;
108 else if(*fmp==0)
return false;
Master configuration file for setting various compile-time options.
The table of block worklists that are used during the cell computation, which is part of the voro_bas...
voro_base(int nx_, int ny_, int nz_, double boxx_, double boxy_, double boxz_)
bool contains_neighbor(const char *format)
static const unsigned int wl[wl_seq_length *wl_hgridcu]
Header file for the base Voronoi container class.