48 void Foam::block::createPoints()
81 for (label
k=0;
k<=nk;
k++)
83 for (label j=0; j<=nj; j++)
85 for (label i=0; i<=ni; i++)
95 scalar wx1 = (1 -
w0)*(1 -
w4)*(1 -
w8) +
w0*(1 -
w5)*(1 -
w9);
100 const scalar sumWx = wx1 + wx2 + wx3 + wx4;
108 scalar wy1 = (1 -
w4)*(1 -
w0)*(1 -
w8) +
w4*(1 -
w1)*(1 -
w11);
113 const scalar sumWy = wy1 + wy2 + wy3 + wy4;
121 scalar wz1 = (1 -
w8)*(1 -
w0)*(1 -
w4) +
w8*(1 -
w3)*(1 -
w7);
126 const scalar sumWz = wz1 + wz2 + wz3 + wz4;
134 const vector edgex1 = p000 + (p100 - p000)*
w0;
135 const vector edgex2 = p010 + (p110 - p010)*
w1;
136 const vector edgex3 = p011 + (p111 - p011)*
w2;
137 const vector edgex4 = p001 + (p101 - p001)*
w3;
139 const vector edgey1 = p000 + (p010 - p000)*
w4;
140 const vector edgey2 = p100 + (p110 - p100)*
w5;
141 const vector edgey3 = p101 + (p111 - p101)*
w6;
142 const vector edgey4 = p001 + (p011 - p001)*
w7;
144 const vector edgez1 = p000 + (p001 - p000)*
w8;
145 const vector edgez2 = p100 + (p101 - p100)*
w9;
146 const vector edgez3 = p110 + (p111 - p110)*
w10;
147 const vector edgez4 = p010 + (p011 - p010)*
w11;
152 wx1*edgex1 + wx2*edgex2 + wx3*edgex3 + wx4*edgex4
153 + wy1*edgey1 + wy2*edgey2 + wy3*edgey3 + wy4*edgey4
154 + wz1*edgez1 + wz2*edgez2 + wz3*edgez3 + wz4*edgez4
162 const vector corx1 = wx1*(
p[0][i] - edgex1);
163 const vector corx2 = wx2*(
p[1][i] - edgex2);
164 const vector corx3 = wx3*(
p[2][i] - edgex3);
165 const vector corx4 = wx4*(
p[3][i] - edgex4);
167 const vector cory1 = wy1*(
p[4][j] - edgey1);
168 const vector cory2 = wy2*(
p[5][j] - edgey2);
169 const vector cory3 = wy3*(
p[6][j] - edgey3);
170 const vector cory4 = wy4*(
p[7][j] - edgey4);
172 const vector corz1 = wz1*(
p[8][
k] - edgez1);
173 const vector corz2 = wz2*(
p[9][
k] - edgez2);
174 const vector corz3 = wz3*(
p[10][
k] - edgez3);
175 const vector corz4 = wz4*(
p[11][
k] - edgez4);
179 corx1 + corx2 + corx3 + corx4
180 + cory1 + cory2 + cory3 + cory4
181 + corz1 + corz2 + corz3 + corz4
195 for (label ii=0; ii<=ni; ii++)
198 const label i = (ii + 1)%(ni + 1);
200 for (label j=0; j<=nj; j++)
202 for (label
k=0;
k<=nk;
k++)
211 (1 -
w0)*(1 -
w4)*(1 -
w8)
225 const scalar sumWf = wf0 + wf1;
247 for (label jj=0; jj<=nj; jj++)
250 const label j = (jj + 1)%(nj + 1);
252 for (label i=0; i<=ni; i++)
254 for (label
k=0;
k<=nk;
k++)
263 (1 -
w4)*(1 -
w1)*(1 -
w8)
277 const scalar sumWf = wf2 + wf3;
299 for (label kk=0; kk<=nk; kk++)
302 const label
k = (kk + 1)%(nk + 1);
304 for (label i=0; i<=ni; i++)
306 for (label j=0; j<=nj; j++)
315 (1 -
w8)*(1 -
w0)*(1 -
w4)
329 const scalar sumWf = wf4 + wf5;
352 void Foam::block::createCells()
354 const label ni = density().x();
355 const label nj = density().y();
356 const label nk = density().z();
358 blockCells_.resize(nCells());
362 for (label
k=0;
k<nk; ++
k)
364 for (label j=0; j<nj; ++j)
366 for (label i=0; i<ni; ++i)
368 blockCells_[celli][0] = pointLabel(i, j,
k);
369 blockCells_[celli][1] = pointLabel(i+1, j,
k);
370 blockCells_[celli][2] = pointLabel(i+1, j+1,
k);
371 blockCells_[celli][3] = pointLabel(i, j+1,
k);
372 blockCells_[celli][4] = pointLabel(i, j,
k+1);
373 blockCells_[celli][5] = pointLabel(i+1, j,
k+1);
374 blockCells_[celli][6] = pointLabel(i+1, j+1,
k+1);
375 blockCells_[celli][7] = pointLabel(i, j+1,
k+1);
384 template<
class OutputIterator>
385 OutputIterator Foam::block::addBoundaryFaces
391 const label ni = density().x();
392 const label nj = density().y();
393 const label nk = density().z();
400 for (label
k=0;
k<nk; ++
k)
402 for (label j=0; j<nj; ++j)
408 f[0] = pointLabel(0, j,
k);
409 f[1] = pointLabel(0, j,
k+1);
410 f[2] = pointLabel(0, j+1,
k+1);
411 f[3] = pointLabel(0, j+1,
k);
420 for (label
k=0;
k<nk; ++
k)
422 for (label j=0; j<nj; ++j)
428 f[0] = pointLabel(ni, j,
k);
429 f[1] = pointLabel(ni, j+1,
k);
430 f[2] = pointLabel(ni, j+1,
k+1);
431 f[3] = pointLabel(ni, j,
k+1);
440 for (label i=0; i<ni; ++i)
442 for (label
k=0;
k<nk; ++
k)
448 f[0] = pointLabel(i, 0,
k);
449 f[1] = pointLabel(i+1, 0,
k);
450 f[2] = pointLabel(i+1, 0,
k+1);
451 f[3] = pointLabel(i, 0,
k+1);
460 for (label i=0; i<ni; ++i)
462 for (label
k=0;
k<nk; ++
k)
468 f[0] = pointLabel(i, nj,
k);
469 f[1] = pointLabel(i, nj,
k+1);
470 f[2] = pointLabel(i+1, nj,
k+1);
471 f[3] = pointLabel(i+1, nj,
k);
480 for (label i=0; i<ni; ++i)
482 for (label j=0; j<nj; ++j)
488 f[0] = pointLabel(i, j, 0);
489 f[1] = pointLabel(i, j+1, 0);
490 f[2] = pointLabel(i+1, j+1, 0);
491 f[3] = pointLabel(i+1, j, 0);
500 for (label i=0; i<ni; ++i)
502 for (label j=0; j<nj; ++j)
508 f[0] = pointLabel(i, j, nk);
509 f[1] = pointLabel(i+1, j, nk);
510 f[2] = pointLabel(i+1, j+1, nk);
511 f[3] = pointLabel(i, j+1, nk);
522 void Foam::block::createBoundary()
524 const label countx = (density().y() * density().z());
525 const label county = (density().z() * density().x());
526 const label countz = (density().x() * density().y());
531 blockPatches_[patchi].resize(countx);
532 addBoundaryFaces(patchi, blockPatches_[patchi].
begin());
536 blockPatches_[patchi].resize(countx);
537 addBoundaryFaces(patchi, blockPatches_[patchi].
begin());
541 blockPatches_[patchi].resize(county);
542 addBoundaryFaces(patchi, blockPatches_[patchi].
begin());
546 blockPatches_[patchi].resize(county);
547 addBoundaryFaces(patchi, blockPatches_[patchi].
begin());
551 blockPatches_[patchi].resize(countz);
552 addBoundaryFaces(patchi, blockPatches_[patchi].
begin());
556 blockPatches_[patchi].resize(countz);
557 addBoundaryFaces(patchi, blockPatches_[patchi].
begin());