37 label hexBlock::vtxLabel(label a, label
b, label c)
const
39 return (a + b*(xDim_ + 1) + c*(xDim_ + 1)*(yDim_ + 1));
46 hexBlock::hexBlock(
const label nx,
const label ny,
const label nz)
51 blockHandedness_(noPoints),
52 points_((xDim_ + 1)*(yDim_ + 1)*(zDim_ + 1))
62 is >> points_[i].x() >> points_[i].y() >> points_[i].z();
66 vector i = points_[xDim_] - points_[0];
67 vector j = points_[(xDim_ + 1)*yDim_] - points_[0];
68 vector k = points_[(xDim_ + 1)*(yDim_ + 1)*zDim_] - points_[0];
70 if (((i ^ j) &
k) > 0)
72 Info <<
"right-handed block" <<
endl;
73 blockHandedness_ = right;
78 blockHandedness_ = left;
89 if (blockHandedness_ == right)
91 for (label k = 0; k <= zDim_ - 1; k++)
93 for (label j = 0; j <= yDim_ - 1; j++)
95 for (label i = 0; i <= xDim_ - 1; i++)
100 hexLabels[0] = vtxLabel(i, j, k);
101 hexLabels[1] = vtxLabel(i+1, j, k);
102 hexLabels[2] = vtxLabel(i+1, j+1, k);
103 hexLabels[3] = vtxLabel(i, j+1, k);
104 hexLabels[4] = vtxLabel(i, j, k+1);
105 hexLabels[5] = vtxLabel(i+1, j, k+1);
106 hexLabels[6] = vtxLabel(i+1, j+1, k+1);
107 hexLabels[7] = vtxLabel(i, j+1, k+1);
114 else if (blockHandedness_ == left)
116 for (label k = 0; k <= zDim_ - 1; k++)
118 for (label j = 0; j <= yDim_ - 1; j++)
120 for (label i = 0; i <= xDim_ - 1; i++)
125 hexLabels[0] = vtxLabel(i, j, k+1);
126 hexLabels[1] = vtxLabel(i+1, j, k+1);
127 hexLabels[2] = vtxLabel(i+1, j+1, k+1);
128 hexLabels[3] = vtxLabel(i, j+1, k+1);
129 hexLabels[4] = vtxLabel(i, j, k);
130 hexLabels[5] = vtxLabel(i+1, j, k);
131 hexLabels[6] = vtxLabel(i+1, j+1, k);
132 hexLabels[7] = vtxLabel(i, j+1, k);
142 <<
"Unable to determine block handedness as points "
143 <<
"have not been read in yet"
158 if (range.size() != 6)
162 "patchFaces(const label direc, const labelList& range) const"
163 ) <<
"Invalid size of the range array: " << range.size()
164 <<
". Should be 6 (xMin, xMax, yMin, yMax, zMin, zMax"
168 label xMinRange = range[0];
169 label xMaxRange = range[1];
170 label yMinRange = range[2];
171 label yMaxRange = range[3];
172 label zMinRange = range[4];
173 label zMaxRange = range[5];
185 (yMaxRange - yMinRange + 1)*(zMaxRange - zMinRange + 1)
189 for (label k = zMinRange - 1; k <= zMaxRange - 1; k++)
191 for (label j = yMinRange - 1; j <= yMaxRange - 1; j++)
193 result[
p].setSize(4);
196 result[
p][0] = vtxLabel(xDim_, j, k);
197 result[
p][1] = vtxLabel(xDim_, j+1, k);
198 result[
p][2] = vtxLabel(xDim_, j+1, k+1);
199 result[
p][3] = vtxLabel(xDim_, j, k+1);
214 (xMaxRange - xMinRange + 1)*(zMaxRange - zMinRange + 1)
218 for (label i = xMinRange - 1; i <= xMaxRange - 1; i++)
220 for (label k = zMinRange - 1; k <= zMaxRange - 1; k++)
222 result[
p].setSize(4);
225 result[
p][0] = vtxLabel(i, yDim_, k);
226 result[
p][1] = vtxLabel(i, yDim_, k + 1);
227 result[
p][2] = vtxLabel(i + 1, yDim_, k + 1);
228 result[
p][3] = vtxLabel(i + 1, yDim_, k);
243 (xMaxRange - xMinRange + 1)*(yMaxRange - yMinRange + 1)
247 for (label i = xMinRange - 1; i <= xMaxRange - 1; i++)
249 for (label j = yMinRange - 1; j <= yMaxRange - 1; j++)
251 result[
p].setSize(4);
254 result[
p][0] = vtxLabel(i, j, zDim_);
255 result[
p][1] = vtxLabel(i + 1, j, zDim_);
256 result[
p][2] = vtxLabel(i + 1, j + 1, zDim_);
257 result[
p][3] = vtxLabel(i, j + 1, zDim_);
272 (yMaxRange - yMinRange + 1)*(zMaxRange - zMinRange + 1)
276 for (label k = zMinRange - 1; k <= zMaxRange - 1; k++)
278 for (label j = yMinRange - 1; j <= yMaxRange - 1; j++)
280 result[
p].setSize(4);
283 result[
p][0] = vtxLabel(0, j, k);
284 result[
p][1] = vtxLabel(0, j, k + 1);
285 result[
p][2] = vtxLabel(0, j + 1, k + 1);
286 result[
p][3] = vtxLabel(0, j + 1, k);
301 (xMaxRange - xMinRange + 1)*(zMaxRange - zMinRange + 1)
305 for (label i = xMinRange - 1; i <= xMaxRange - 1; i++)
307 for (label k = zMinRange - 1; k <= zMaxRange - 1; k++)
309 result[
p].setSize(4);
312 result[
p][0] = vtxLabel(i, 0, k);
313 result[
p][1] = vtxLabel(i + 1, 0, k);
314 result[
p][2] = vtxLabel(i + 1, 0, k + 1);
315 result[
p][3] = vtxLabel(i, 0, k + 1);
330 (xMaxRange - xMinRange + 1)*(yMaxRange - yMinRange + 1)
334 for (label i = xMinRange - 1; i <= xMaxRange - 1; i++)
336 for (label j = yMinRange - 1; j <= yMaxRange - 1; j++)
338 result[
p].setSize(4);
341 result[
p][0] = vtxLabel(i, j, 0);
342 result[
p][1] = vtxLabel(i, j + 1, 0);
343 result[
p][2] = vtxLabel(i + 1, j + 1, 0);
344 result[
p][3] = vtxLabel(i + 1, j, 0);
358 "patchFaces(const label direc, const labelList& range) const"
359 ) <<
"direction out of range (1 to 6): " << direc
366 if (blockHandedness_ == noPoints)
370 "patchFaces(const label direc, const labelList& range) const"
371 ) <<
"Unable to determine block handedness as points "
372 <<
"have not been read in yet"
375 else if (blockHandedness_ == left)
380 result[faceI] = result[faceI].reverseFace();