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
65 const label ni = sizes().x();
66 const label nj = sizes().y();
67 const label nk = sizes().z();
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
151 const label ni = sizes().x();
152 const label nj = sizes().y();
153 const label nk = sizes().z();
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);
void resize(const label len)
Adjust allocated size of list.
constexpr char nl
The newline '\n' character (0x0a)
face * iterator
Random access iterator for traversing a UList.
const Cmpt & y() const noexcept
Access to the vector y component.
label k
Boltzmann constant.
label nPoints() const
The number of mesh points (nx+1)*(ny+1)*(nz+1) in the i-j-k mesh.
PtrList< polyPatch > polyPatchList
Store lists of polyPatch as a PtrList.
vectorField pointField
pointField is a vectorField.
Foam::autoPtr< Foam::dynamicFvMesh > meshPtr
label pointLabel(const label i, const label j, const label k) const
The linear point index for an i-j-k position.
const labelVector & sizes() const
The (i,j,k) addressing dimensions.
autoPtr< polyMesh > innerMesh(const IOobject &io) const
Create polyMesh for inner-mesh only, ignore any outer block definitions.
const T * set(const label i) const
Return const pointer to element (can be nullptr), or nullptr for out-of-range access (ie...
iterator begin() noexcept
Return an iterator to begin traversing the UList.
const Cmpt & x() const noexcept
Access to the vector x component.
const Cmpt & z() const noexcept
Access to the vector z component.
vector point
Point is a vector.
const polyBoundaryMesh & patches
Automatically write from objectRegistry::writeObject()
messageStream Info
Information stream (stdout output on master, null elsewhere)
static autoPtr< polyPatch > New(const word &patchType, const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm)
Return pointer to a new patch created on freestore from components.
IOobject io("surfaceFilmProperties", mesh.time().constant(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, IOobject::NO_REGISTER)
autoPtr< polyMesh > mesh(const IOobject &io) const
Create polyMesh for grid definition and patch information.
static autoPtr< T > New(Args &&... args)
Construct autoPtr with forwarding arguments.
Defines the attributes of an object for which implicit objectRegistry management is supported...