50 void Foam::cellSplitter::getFaceInfo
71 const faceZone& fZone = mesh_.
faceZones()[zoneID];
73 zoneFlip = fZone.flipMap()[fZone.whichFace(faceI)];
80 Foam::label Foam::cellSplitter::newOwner
83 const Map<labelList>& cellToCells
86 label oldOwn = mesh_.faceOwner()[faceI];
90 if (fnd == cellToCells.end())
101 const cell& cFaces = mesh_.cells()[oldOwn];
103 return newCells[
findIndex(cFaces, faceI)];
108 Foam::label Foam::cellSplitter::newNeighbour
111 const Map<labelList>& cellToCells
114 label oldNbr = mesh_.faceNeighbour()[faceI];
118 if (fnd == cellToCells.end())
129 const cell& cFaces = mesh_.cells()[oldNbr];
131 return newCells[
findIndex(cFaces, faceI)];
139 Foam::cellSplitter::cellSplitter(
const polyMesh&
mesh)
156 const Map<point>& cellToMidPoint,
157 polyTopoChange& meshMod
160 addedPoints_.clear();
161 addedPoints_.resize(cellToMidPoint.size());
170 label cellI = iter.key();
172 label anchorPoint = mesh_.cellPoints()[cellI][0];
185 addedPoints_.insert(cellI, addedPointI);
197 Map<labelList> cellToCells(cellToMidPoint.size());
201 label cellI = iter.key();
203 const cell& cFaces = mesh_.cells()[cellI];
212 for (label i = 1; i < cFaces.size(); i++)
227 newCells[i] = addedCellI;
230 cellToCells.insert(cellI, newCells);
246 label cellI = iter.key();
248 label midPointI = addedPoints_[cellI];
250 const cell& cFaces = mesh_.cells()[cellI];
252 const labelList& cEdges = mesh_.cellEdges()[cellI];
256 label edgeI = cEdges[i];
257 const edge&
e = mesh_.edges()[edgeI];
265 const labelList& newCells = cellToCells[cellI];
267 label cell0 = newCells[
findIndex(cFaces, face0)];
268 label cell1 = newCells[
findIndex(cFaces, face1)];
275 const face& f0 = mesh_.faces()[face0];
279 bool edgeInFaceOrder = (f0[f0.fcIndex(index)] == e[1]);
284 if (edgeInFaceOrder == (mesh_.faceOwner()[face0] == cellI))
321 const face& f1 = mesh_.faces()[face1];
325 bool edgeInFaceOrder = (f1[f1.fcIndex(index)] == e[1]);
330 if (edgeInFaceOrder == (mesh_.faceOwner()[face1] == cellI))
372 boolList faceUpToDate(mesh_.nFaces(),
true);
376 label cellI = iter.key();
378 const cell& cFaces = mesh_.cells()[cellI];
382 label faceI = cFaces[i];
384 faceUpToDate[faceI] =
false;
388 forAll(faceUpToDate, faceI)
390 if (!faceUpToDate[faceI])
392 const face&
f = mesh_.faces()[faceI];
394 if (mesh_.isInternalFace(faceI))
396 label newOwn = newOwner(faceI, cellToCells);
397 label newNbr = newNeighbour(faceI, cellToCells);
439 label newOwn = newOwner(faceI, cellToCells);
441 label patchID, zoneID, zoneFlip;
442 getFaceInfo(faceI, patchID, zoneID, zoneFlip);
448 mesh_.faces()[faceI],
461 faceUpToDate[faceI] =
true;
471 Map<label> newAddedPoints(addedPoints_.size());
475 label oldCellI = iter.key();
477 label newCellI = morphMap.reverseCellMap()[oldCellI];
479 label oldPointI = iter();
481 label newPointI = morphMap.reversePointMap()[oldPointI];
483 if (newCellI >= 0 && newPointI >= 0)
485 newAddedPoints.insert(newCellI, newPointI);
490 addedPoints_.transfer(newAddedPoints);