33 void Foam::PDRblock::createPoints(
pointField& pts)
const
35 const label ni =
sizes().
x();
36 const label nj =
sizes().
y();
37 const label nk =
sizes().
z();
41 for (label
k=0;
k<=nk; ++
k)
43 for (label j=0; j<=nj; ++j)
45 for (label i=0; i<=ni; ++i)
49 pt.
x() = grid_.x()[i];
50 pt.y() = grid_.y()[j];
51 pt.z() = grid_.z()[
k];
58 Foam::label Foam::PDRblock::addInternalFaces
60 faceList::iterator& faceIter,
61 labelList::iterator& ownIter,
62 labelList::iterator& neiIter
65 const label ni = sizes().x();
66 const label nj = sizes().y();
67 const label nk = sizes().z();
69 const labelList::iterator firstIter = ownIter;
71 for (label
k=0;
k<nk; ++
k)
73 for (label j=0; j<nj; ++j)
75 for (label i=0; i<ni; ++i)
77 const label celli = cellLabel(i, j,
k);
86 f[0] = pointLabel(i+1, j,
k);
87 f[1] = pointLabel(i+1, j+1,
k);
88 f[2] = pointLabel(i+1, j+1,
k+1);
89 f[3] = pointLabel(i+1, j,
k+1);
92 *neiIter = cellLabel(i+1, j,
k);
105 f[0] = pointLabel(i, j+1,
k);
106 f[1] = pointLabel(i, j+1,
k+1);
107 f[2] = pointLabel(i+1, j+1,
k+1);
108 f[3] = pointLabel(i+1, j+1,
k);
111 *neiIter = cellLabel(i, j+1,
k);
124 f[0] = pointLabel(i, j,
k+1);
125 f[1] = pointLabel(i+1, j,
k+1);
126 f[2] = pointLabel(i+1, j+1,
k+1);
127 f[3] = pointLabel(i, j+1,
k+1);
130 *neiIter = cellLabel(i, j,
k+1);
140 return (ownIter - firstIter);
144 Foam::label Foam::PDRblock::addBoundaryFaces
147 faceList::iterator& faceIter,
148 labelList::iterator& ownIter
151 const label ni = sizes().x();
152 const label nj = sizes().y();
153 const label nk = sizes().z();
155 const labelList::iterator firstIter = ownIter;
162 for (label
k=0;
k<nk; ++
k)
164 for (label j=0; j<nj; ++j)
170 f[0] = pointLabel(0, j,
k);
171 f[1] = pointLabel(0, j,
k+1);
172 f[2] = pointLabel(0, j+1,
k+1);
173 f[3] = pointLabel(0, j+1,
k);
175 *ownIter = cellLabel(0, j,
k);
185 for (label
k=0;
k<nk; ++
k)
187 for (label j=0; j<nj; ++j)
193 f[0] = pointLabel(ni, j,
k);
194 f[1] = pointLabel(ni, j+1,
k);
195 f[2] = pointLabel(ni, j+1,
k+1);
196 f[3] = pointLabel(ni, j,
k+1);
198 *ownIter = cellLabel(ni-1, j,
k);
208 for (label i=0; i<ni; ++i)
210 for (label
k=0;
k<nk; ++
k)
216 f[0] = pointLabel(i, 0,
k);
217 f[1] = pointLabel(i+1, 0,
k);
218 f[2] = pointLabel(i+1, 0,
k+1);
219 f[3] = pointLabel(i, 0,
k+1);
221 *ownIter = cellLabel(i, 0,
k);
231 for (label i=0; i<ni; ++i)
233 for (label
k=0;
k<nk; ++
k)
239 f[0] = pointLabel(i, nj,
k);
240 f[1] = pointLabel(i, nj,
k+1);
241 f[2] = pointLabel(i+1, nj,
k+1);
242 f[3] = pointLabel(i+1, nj,
k);
244 *ownIter = cellLabel(i, nj-1,
k);
254 for (label i=0; i<ni; ++i)
256 for (label j=0; j<nj; ++j)
262 f[0] = pointLabel(i, j, 0);
263 f[1] = pointLabel(i, j+1, 0);
264 f[2] = pointLabel(i+1, j+1, 0);
265 f[3] = pointLabel(i+1, j, 0);
267 *ownIter = cellLabel(i, j, 0);
277 for (label i=0; i<ni; ++i)
279 for (label j=0; j<nj; ++j)
285 f[0] = pointLabel(i, j, nk);
286 f[1] = pointLabel(i+1, j, nk);
287 f[2] = pointLabel(i+1, j+1, nk);
288 f[3] = pointLabel(i, j+1, nk);
290 *ownIter = cellLabel(i, j, nk-1);
299 return (ownIter - firstIter);
312 auto faceIter = faces.begin();
313 auto ownIter = own.begin();
314 auto neiIter = nei.begin();
318 addInternalFaces(faceIter, ownIter, neiIter);
324 for (
const boundaryEntry& bentry : patches_)
326 for (
const label shapeFacei : bentry.faces_)
328 addBoundaryFaces(shapeFacei, faceIter, ownIter);
348 label startFace = nInternalFaces();
352 for (
const boundaryEntry& bentry : patches_)
370 startFace += bentry.size_;
385 Info<<
"Outer region is active, using blockMesh generation" <<
nl;
386 return meshBlockMesh(io);
390 Info<<
"Outer region is inactive, using ijk generation" <<
nl;
391 return innerMesh(io);