37 return (a + b*(xDim_ + 1) + c*(xDim_ + 1)*(yDim_ + 1));
49 blockHandedness_(noPoints),
50 points_((xDim_ + 1)*(yDim_ + 1)*(zDim_ + 1))
60 is >> points_[i].x() >> points_[i].y() >> points_[i].z();
64 vector i = points_[xDim_] - points_[0];
65 vector j = points_[(xDim_ + 1)*yDim_] - points_[0];
66 vector k = points_[(xDim_ + 1)*(yDim_ + 1)*zDim_] - points_[0];
68 if (((i ^ j) &
k) > 0)
71 blockHandedness_ = right;
76 blockHandedness_ = left;
87 if (blockHandedness_ == right)
89 for (
label k = 0; k <= zDim_ - 1; k++)
91 for (
label j = 0; j <= yDim_ - 1; j++)
93 for (
label i = 0; i <= xDim_ - 1; i++)
98 hexLabels[0] = vtxLabel(i, j, k);
99 hexLabels[1] = vtxLabel(i+1, j, k);
100 hexLabels[2] = vtxLabel(i+1, j+1, k);
101 hexLabels[3] = vtxLabel(i, j+1, k);
102 hexLabels[4] = vtxLabel(i, j, k+1);
103 hexLabels[5] = vtxLabel(i+1, j, k+1);
104 hexLabels[6] = vtxLabel(i+1, j+1, k+1);
105 hexLabels[7] = vtxLabel(i, j+1, k+1);
112 else if (blockHandedness_ == left)
114 for (
label k = 0; k <= zDim_ - 1; k++)
116 for (
label j = 0; j <= yDim_ - 1; j++)
118 for (
label i = 0; i <= xDim_ - 1; i++)
123 hexLabels[0] = vtxLabel(i, j, k+1);
124 hexLabels[1] = vtxLabel(i+1, j, k+1);
125 hexLabels[2] = vtxLabel(i+1, j+1, k+1);
126 hexLabels[3] = vtxLabel(i, j+1, k+1);
127 hexLabels[4] = vtxLabel(i, j, k);
128 hexLabels[5] = vtxLabel(i+1, j, k);
129 hexLabels[6] = vtxLabel(i+1, j+1, k);
130 hexLabels[7] = vtxLabel(i, j+1, k);
140 <<
"Unable to determine block handedness as points " 141 <<
"have not been read in yet" 156 if (range.size() != 6)
159 <<
"Invalid size of the range array: " << range.size()
160 <<
". Should be 6 (xMin, xMax, yMin, yMax, zMin, zMax" 164 label xMinRange = range[0];
165 label xMaxRange = range[1];
166 label yMinRange = range[2];
167 label yMaxRange = range[3];
168 label zMinRange = range[4];
169 label zMaxRange = range[5];
181 (yMaxRange - yMinRange + 1)*(zMaxRange - zMinRange + 1)
185 for (
label k = zMinRange - 1; k <= zMaxRange - 1; k++)
187 for (
label j = yMinRange - 1; j <= yMaxRange - 1; j++)
189 result[
p].setSize(4);
192 result[
p][0] = vtxLabel(xDim_, j, k);
193 result[
p][1] = vtxLabel(xDim_, j+1, k);
194 result[
p][2] = vtxLabel(xDim_, j+1, k+1);
195 result[
p][3] = vtxLabel(xDim_, j, k+1);
210 (xMaxRange - xMinRange + 1)*(zMaxRange - zMinRange + 1)
214 for (
label i = xMinRange - 1; i <= xMaxRange - 1; i++)
216 for (
label k = zMinRange - 1; k <= zMaxRange - 1; k++)
218 result[
p].setSize(4);
221 result[
p][0] = vtxLabel(i, yDim_, k);
222 result[
p][1] = vtxLabel(i, yDim_, k + 1);
223 result[
p][2] = vtxLabel(i + 1, yDim_, k + 1);
224 result[
p][3] = vtxLabel(i + 1, yDim_, k);
239 (xMaxRange - xMinRange + 1)*(yMaxRange - yMinRange + 1)
243 for (
label i = xMinRange - 1; i <= xMaxRange - 1; i++)
245 for (
label j = yMinRange - 1; j <= yMaxRange - 1; j++)
247 result[
p].setSize(4);
250 result[
p][0] = vtxLabel(i, j, zDim_);
251 result[
p][1] = vtxLabel(i + 1, j, zDim_);
252 result[
p][2] = vtxLabel(i + 1, j + 1, zDim_);
253 result[
p][3] = vtxLabel(i, j + 1, zDim_);
268 (yMaxRange - yMinRange + 1)*(zMaxRange - zMinRange + 1)
272 for (
label k = zMinRange - 1; k <= zMaxRange - 1; k++)
274 for (
label j = yMinRange - 1; j <= yMaxRange - 1; j++)
276 result[
p].setSize(4);
279 result[
p][0] = vtxLabel(0, j, k);
280 result[
p][1] = vtxLabel(0, j, k + 1);
281 result[
p][2] = vtxLabel(0, j + 1, k + 1);
282 result[
p][3] = vtxLabel(0, j + 1, k);
297 (xMaxRange - xMinRange + 1)*(zMaxRange - zMinRange + 1)
301 for (
label i = xMinRange - 1; i <= xMaxRange - 1; i++)
303 for (
label k = zMinRange - 1; k <= zMaxRange - 1; k++)
305 result[
p].setSize(4);
308 result[
p][0] = vtxLabel(i, 0, k);
309 result[
p][1] = vtxLabel(i + 1, 0, k);
310 result[
p][2] = vtxLabel(i + 1, 0, k + 1);
311 result[
p][3] = vtxLabel(i, 0, k + 1);
326 (xMaxRange - xMinRange + 1)*(yMaxRange - yMinRange + 1)
330 for (
label i = xMinRange - 1; i <= xMaxRange - 1; i++)
332 for (
label j = yMinRange - 1; j <= yMaxRange - 1; j++)
334 result[
p].setSize(4);
337 result[
p][0] = vtxLabel(i, j, 0);
338 result[
p][1] = vtxLabel(i, j + 1, 0);
339 result[
p][2] = vtxLabel(i + 1, j + 1, 0);
340 result[
p][3] = vtxLabel(i + 1, j, 0);
353 <<
"direction out of range (1 to 6): " << direc
360 if (blockHandedness_ == noPoints)
363 <<
"Unable to determine block handedness as points " 364 <<
"have not been read in yet" 367 else if (blockHandedness_ == left)
372 result[facei].flip();
List< labelList > labelListList
A List of labelList.
#define forAll(list, i)
Loop across all elements in list.
FvWallInfoData< WallInfo, label > label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Ostream & endl(Ostream &os)
Add newline and flush stream.
Vector< scalar > vector
A scalar version of the templated Vector.
label k
Boltzmann constant.
List< label > labelList
A List of labels.
errorManip< error > abort(error &err)
faceList patchFaces(label direc, const labelList &range) const
Return block patch faces given direction and range limits.
void setSize(const label)
Reset size of List.
void readPoints(Istream &)
Read block points.
hexBlock(const label nx, const label ny, const label nz)
Construct from components.
labelListList blockCells() const
Return block cells.