44 void Foam::meshReader::addPolyBoundaryFace
47 const label cellFaceId,
48 const label nCreatedFaces
53 <<
" add bnd for cell " << cellId
54 <<
" face " << cellFaceId
60 const face& thisFace =
cellFaces_[cellId][cellFaceId];
63 if (cellPolys_[cellId][cellFaceId] > nInternalFaces_)
65 Info<<
"meshReader::createPolyBoundary(): "
66 <<
"Problem with face: " << thisFace << endl
67 <<
"Probably multiple definitions "
68 <<
"of a single boundary face." << endl
71 else if (cellPolys_[cellId][cellFaceId] >= 0)
73 Info<<
"meshReader::createPolyBoundary(): "
74 <<
"Problem with face: " << thisFace << endl
75 <<
"Probably trying to define a boundary face "
76 <<
"on a previously matched internal face." << endl
78 << meshFaces_[cellPolys_[cellId][cellFaceId]]
82 meshFaces_[nCreatedFaces] = thisFace;
83 cellPolys_[cellId][cellFaceId] = nCreatedFaces;
87 void Foam::meshReader::addPolyBoundaryFace
89 const cellFaceIdentifier& identifier,
90 const label nCreatedFaces
93 addPolyBoundaryFace(identifier.cell, identifier.face, nCreatedFaces);
99 void Foam::meshReader::createPolyBoundary()
101 label nBoundaryFaces = 0;
102 label nMissingFaces = 0;
103 label nInterfaces = 0;
110 cell& curCell = cellPolys_[cellI];
121 forAll(boundaryIds_, patchI)
123 nBoundaryFaces += boundaryIds_[patchI].size();
127 <<
"There are " << nMissingFaces
128 <<
" faces to be patched and " << nBoundaryFaces
129 <<
" specified - collect missed boundaries to final patch" <<
endl;
131 patchStarts_.setSize(boundaryIds_.size());
132 patchSizes_.setSize(boundaryIds_.size());
134 label nCreatedFaces = nInternalFaces_;
135 label baffleOffset = cFaces.size();
136 interfaces_.setSize(baffleIds_.size());
139 forAll(boundaryIds_, patchI)
141 const List<cellFaceIdentifier>& idList = boundaryIds_[patchI];
143 patchStarts_[patchI] = nCreatedFaces;
146 if (patchPhysicalTypes_[patchI] ==
"baffle")
150 for (label side = 0; side < 2; ++side)
152 label position = nInterfaces;
156 label baffleI = idList[bndI].cell - baffleOffset;
161 && baffleI < baffleFaces_.size()
162 && baffleIds_[baffleI].size()
167 baffleIds_[baffleI][side],
174 baffleIds_[baffleI].clear();
177 interfaces_[position][side] = nCreatedFaces;
187 nInterfaces += (count - (count % 2)) / 2;
189 else if (patchPhysicalTypes_[patchI] ==
"monitoring")
192 List<label> monitoring(idList.size());
197 label cellId = idList[bndI].cell;
198 label faceId = idList[bndI].face;
201 if (cellId < baffleOffset)
203 label faceNr = cellPolys_[cellId][faceId];
206 monitoring[monitorI++] = faceNr;
211 monitoringSets_.insert(patchNames_[patchI], monitoring);
218 if (idList[bndI].cell < baffleOffset)
232 patchSizes_[patchI] = nCreatedFaces - patchStarts_[patchI];
236 Info<<
"Missing faces added to patch after face "
237 << nCreatedFaces <<
":" <<
endl;
241 for (label side = 0; side < 2; ++side)
243 label position = nInterfaces;
245 forAll(baffleIds_, baffleI)
247 if (baffleIds_[baffleI].size())
252 baffleIds_[baffleI][side],
256 interfaces_[position][side] = nCreatedFaces;
261 baffleIds_[baffleI].clear();
271 nInterfaces += (nMissingFaces - (nMissingFaces % 2)) / 2;
276 const labelList& curFaces = cellPolys_[cellI];
278 forAll(curFaces, cellFaceI)
280 if (curFaces[cellFaceI] < 0)
283 if (nMissingFaces < 4)
285 const face& thisFace = cFaces[cellI][cellFaceI];
287 Info<<
" cell " << cellI <<
" face " << cellFaceI
288 <<
" (original cell " << origCellId_[cellI] <<
")"
289 <<
" face: " << thisFace
292 else if (nMissingFaces == 5)
297 addPolyBoundaryFace(cellI, cellFaceI, nCreatedFaces);
304 Info<<
"Added " << nMissingFaces <<
" unmatched faces" <<
endl;
306 if (nMissingFaces > 0)
308 patchSizes_[patchSizes_.size() - 1] = nMissingFaces;
312 patchStarts_.setSize(patchStarts_.size() - 1);
316 meshFaces_.setSize(nCreatedFaces);
320 labelList markupFaces(meshFaces_.size(), 0);
324 const labelList& curFaces = cellPolys_[cellI];
328 markupFaces[curFaces[faceI]]++;
332 for (label i = nInternalFaces_; i < markupFaces.size(); i++)
337 label nProblemFaces = 0;
339 forAll(markupFaces, faceI)
341 if (markupFaces[faceI] != 2)
343 const face& problemFace = meshFaces_[faceI];
345 Info<<
"meshReader::createPolyBoundary() : "
346 <<
"problem with face " << faceI <<
": addressed "
347 << markupFaces[faceI] <<
" times (should be 2!). Face: "
348 << problemFace <<
endl;
354 if (nProblemFaces > 0)
356 Info<<
"Number of incorrectly matched faces: "
357 << nProblemFaces <<
endl;
361 if (nInterfaces < interfaces_.size())
363 interfaces_.setSize(nInterfaces);
366 Info<<
"Number of boundary faces: " << nBoundaryFaces <<
nl
367 <<
"Total number of faces: " << nCreatedFaces <<
nl
368 <<
"Number of interfaces: " << nInterfaces <<
endl;
375 Foam::meshReader::polyBoundaryPatches(
const polyMesh&
mesh)
377 label nUsed = 0, nEmpty = 0;
378 label
nPatches = patchStarts_.size();
382 forAll(patchSizes_, patchI)
384 if (patchSizes_[patchI] > 0)
386 oldToNew[patchI] = nUsed++;
391 oldToNew[patchI] = nPatches - nEmpty;
399 Info<<
"Removing " << nEmpty <<
" empty patches" <<
endl;
407 patchTypes_.setSize(nPatches);
408 patchNames_.setSize(nPatches);
409 patchStarts_.setSize(nPatches);
410 patchSizes_.setSize(nPatches);
413 List<polyPatch*>
p(nPatches);
431 forAll(patchStarts_, patchI)
438 patchStarts_[patchI],