48 unsigned char _allowed_neighbour_cells_mask)
51 if (_allowed_self_cells_mask & 0xF0 || _allowed_neighbour_cells_mask & 0xF0)
55 if (_allowed_neighbour_cells_mask &
_DEAD_CELL_)
return -1;
60 _allowed_self_cells_mask & _DEAD_CELL_)
75 for(
int ik=0; ik<3; ik++)
88 for(
int ik=0; ik<3; ik++)
100 for(
int ii=0; ii<3; ii++)
104 for(
int ii=0; ii<2; ii++)
105 for(
int ik=0; ik<2; ik++)
134 for(
int ii=0; ii<3; ii++)
137 for(
int ik=0; ik<ii; ik++)
138 if (_sequence[ii] == _sequence[ik])
143 if (!cname)
return -1;
167 for(
int ik=0; ik<3; ik++)
169 if (_adim[ik] < 1 || _adim[ik] >
_mgrid->
dir[ik].
dim)
return -1;
171 adim[ik] = _adim[ik];
187 int bff[3] = {1, 1, 1}, true_coord =
sequence[
ip];
189 bff[true_coord] =
pdim[true_coord];
195 for(
int iq=0; iq<
adim[true_coord]; iq++)
221 for(
int ik=0; ik<3; ik++)
223 if (_adim[ik] < 1 || _adim[ik] >
_mgrid->
dir[ik].
dim)
return -1;
225 adim[ik] = _adim[ik];
244 for(i012[0]=0; i012[0]<
adim[0]; i012[0]++)
245 for(i012[1]=0; i012[1]<adim[1]; i012[1]++)
246 for(i012[2]=0; i012[2]<adim[2]; i012[2]++)
249 i012[0]*adim[
_Y_]*adim[
_Z_] + i012[1]*adim[
_Z_] + i012[2];
252 for(
int ik=0; ik<3; ik++)
270 for(
int ik=0; ik<3; ik++)
287 int ok_counter = 0, bff[3],
dim = adim[0]*adim[1]*adim[2];
294 for(
int i0=0; i0<adim[0]; i0++)
296 bff[0] = left[0] + i0;
298 for(
int i1=0; i1<adim[1]; i1++)
300 bff[1] = left[1] + i1;
302 for(
int i2=0; i2<adim[2]; i2++)
304 bff[2] = left[2] + i2;
318 ok_arr[i0*adim[1]*adim[2] + i1*adim[2] + i2] = qcell;
333 for(
int i0=0; i0<
adim[0]; i0++)
335 int i0s = i0 + shift[0];
337 for(
int i1=0; i1<adim[1]; i1++)
339 int i1s = i1 + shift[1];
341 for(
int i2=0; i2<adim[2]; i2++)
343 int i2s = i2 + shift[2];
346 MgridCombiCell *qcell = ok_arr + i0s*gdim[1]*gdim[2] + i1s*gdim[2] + i2s;
349 if (!qcell->
cell)
return -1;
363 for(
int i0=0; i0<
adim[0]; i0++)
365 int i0s = i0 + shift[0];
367 for(
int i1=0; i1<adim[1]; i1++)
369 int i1s = i1 + shift[1];
371 for(
int i2=0; i2<adim[2]; i2++)
373 int i2s = i2 + shift[2];
376 MgridCombiCell *qcell = ok_arr + i0s*gdim[1]*gdim[2] + i1s*gdim[2] + i2s;
379 if (!qcell->
cell)
continue;
409 unsigned char oddity[3];
417 for(
int ik=0; ik<3; ik++)
428 oddity[ik] =
adim[ik]%2;
439 for(
int ik=0; ik<3; ik++)
482 if (ok_counter == adim[0]*adim[1]*adim[2] ||
486 int shift[3] = {0, 0, 0};
496 int gdim[3], gleft[3];
498 for(
int iq=0; iq<3; iq++)
500 gdim[iq] = adim[iq]*2 - 1;
512 for(
int i0=0; i0<adim[0]; i0++)
513 for(
int i1=0; i1<adim[1]; i1++)
514 for(
int i2=0; i2<adim[2]; i2++)
516 int gshift[3] = {i0, i1, i2};
522 for(
int iq=0; iq<3; iq++)
523 left[iq] = gleft[iq] + gshift[iq];
545 int right[3], bff[3];
549 for(
int ik=0; ik<3; ik++)
550 right[ik] =
left[ik] +
adim[ik] - 1;
556 for(
int xyz=
_X_; ; xyz = (xyz+1)%3)
564 int d1 = (xyz+1)%3, d2 = (xyz+2)%3;
568 if (
left[xyz] <= 0 && right[xyz] >= dir->
dim - 1)
592 for(
int side=0; side<=1; side++)
598 if (
left[xyz] <= 0)
continue;
599 bff[xyz] = --
left[xyz];
605 if (right[xyz] >= dir->
dim - 1)
continue;
606 bff[xyz] = ++right[xyz];
610 for(bff[d1]=
left[d1]; bff[d1]<=right[d1]; bff[d1]++)
611 for(bff[d2]=
left[d2]; bff[d2]<=right[d2]; bff[d2]++)
656 for(
int iq=0; iq<3; iq++)
657 point->
xx[iq] = xx[iq];