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))
58 void hexBlock::readPoints(Istream& is)
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)
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)
161 <<
"Invalid size of the range array: " <<
range.size()
162 <<
". Should be 6 (xMin, xMax, yMin, yMax, zMin, zMax" 166 label xMinRange =
range[0];
167 label xMaxRange =
range[1];
168 label yMinRange =
range[2];
169 label yMaxRange =
range[3];
170 label zMinRange =
range[4];
171 label zMaxRange =
range[5];
183 (yMaxRange - yMinRange + 1)*(zMaxRange - zMinRange + 1)
187 for (label
k = zMinRange - 1;
k <= zMaxRange - 1;
k++)
189 for (label j = yMinRange - 1; j <= yMaxRange - 1; j++)
191 result[
p].setSize(4);
194 result[
p][0] = vtxLabel(xDim_, j,
k);
195 result[
p][1] = vtxLabel(xDim_, j+1,
k);
196 result[
p][2] = vtxLabel(xDim_, j+1,
k+1);
197 result[
p][3] = vtxLabel(xDim_, j,
k+1);
212 (xMaxRange - xMinRange + 1)*(zMaxRange - zMinRange + 1)
216 for (label i = xMinRange - 1; i <= xMaxRange - 1; i++)
218 for (label
k = zMinRange - 1;
k <= zMaxRange - 1;
k++)
220 result[
p].setSize(4);
223 result[
p][0] = vtxLabel(i, yDim_,
k);
224 result[
p][1] = vtxLabel(i, yDim_,
k + 1);
225 result[
p][2] = vtxLabel(i + 1, yDim_,
k + 1);
226 result[
p][3] = vtxLabel(i + 1, yDim_,
k);
241 (xMaxRange - xMinRange + 1)*(yMaxRange - yMinRange + 1)
245 for (label i = xMinRange - 1; i <= xMaxRange - 1; i++)
247 for (label j = yMinRange - 1; j <= yMaxRange - 1; j++)
249 result[
p].setSize(4);
252 result[
p][0] = vtxLabel(i, j, zDim_);
253 result[
p][1] = vtxLabel(i + 1, j, zDim_);
254 result[
p][2] = vtxLabel(i + 1, j + 1, zDim_);
255 result[
p][3] = vtxLabel(i, j + 1, zDim_);
270 (yMaxRange - yMinRange + 1)*(zMaxRange - zMinRange + 1)
274 for (label
k = zMinRange - 1;
k <= zMaxRange - 1;
k++)
276 for (label j = yMinRange - 1; j <= yMaxRange - 1; j++)
278 result[
p].setSize(4);
281 result[
p][0] = vtxLabel(0, j,
k);
282 result[
p][1] = vtxLabel(0, j,
k + 1);
283 result[
p][2] = vtxLabel(0, j + 1,
k + 1);
284 result[
p][3] = vtxLabel(0, j + 1,
k);
299 (xMaxRange - xMinRange + 1)*(zMaxRange - zMinRange + 1)
303 for (label i = xMinRange - 1; i <= xMaxRange - 1; i++)
305 for (label
k = zMinRange - 1;
k <= zMaxRange - 1;
k++)
307 result[
p].setSize(4);
310 result[
p][0] = vtxLabel(i, 0,
k);
311 result[
p][1] = vtxLabel(i + 1, 0,
k);
312 result[
p][2] = vtxLabel(i + 1, 0,
k + 1);
313 result[
p][3] = vtxLabel(i, 0,
k + 1);
328 (xMaxRange - xMinRange + 1)*(yMaxRange - yMinRange + 1)
332 for (label i = xMinRange - 1; i <= xMaxRange - 1; i++)
334 for (label j = yMinRange - 1; j <= yMaxRange - 1; j++)
336 result[
p].setSize(4);
339 result[
p][0] = vtxLabel(i, j, 0);
340 result[
p][1] = vtxLabel(i, j + 1, 0);
341 result[
p][2] = vtxLabel(i + 1, j + 1, 0);
342 result[
p][3] = vtxLabel(i + 1, j, 0);
355 <<
"direction out of range (1 to 6): " << direc
362 if (blockHandedness_ == noPoints)
365 <<
"Unable to determine block handedness as points " 366 <<
"have not been read in yet" 369 else if (blockHandedness_ == left)
374 result[facei].flip();
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Ostream & endl(Ostream &os)
Add newline and flush stream.
label k
Boltzmann constant.
List< labelList > labelListList
List of labelList.
#define forAll(list, i)
Loop across all elements in list.
List< face > faceList
List of faces.
void setSize(const label n)
Alias for resize()
const dimensionedScalar b
Wien displacement law constant: default SI units: [m.K].
errorManip< error > abort(error &err)
const dimensionedScalar c
Speed of light in a vacuum.
messageStream Info
Information stream (stdout output on master, null elsewhere)
List< label > labelList
A List of labels.