43 mesh.faceZones()[faceZoneID_.
index()]();
46 const labelList& mp = masterFaceLayer.meshPoints();
48 tmp<vectorField> textrusionDir(
new vectorField(mp.size()));
51 if (setLayerPairing())
55 Pout<<
"void layerAdditionRemoval::extrusionDir() const "
56 <<
" for object " <<
name() <<
" : "
57 <<
"Using edges for point insertion" <<
endl;
65 extrusionDir[mpI] = points[ptc[mpI]] - points[mp[mpI]];
72 Pout<<
"void layerAdditionRemoval::extrusionDir() const "
73 <<
" for object " <<
name() <<
" : "
74 <<
"A valid layer could not be found in front of "
75 <<
"the addition face layer. Using face-based "
76 <<
"point normals for point addition"
80 extrusionDir = minLayerThickness_*masterFaceLayer.pointNormals();
86 void Foam::layerAdditionRemoval::addCellLayer
107 Pout<<
"void layerAdditionRemoval::addCellLayer("
108 <<
"polyTopoChange& ref) const for object " <<
name() <<
" : "
109 <<
"Adding cell layer" <<
endl;
114 const polyMesh& mesh = topoChanger().mesh();
116 mesh.faceZones()[faceZoneID_.index()]();
119 const labelList& mp = masterFaceLayer.meshPoints();
123 tmp<vectorField> tpointOffsets = extrusionDir();
132 addedPoints[pointI] =
138 + addDelta_*tpointOffsets()[pointI],
150 mesh.faceZones()[faceZoneID_.index()].masterCells();
152 mesh.faceZones()[faceZoneID_.index()].slaveCells();
154 const labelList& mf = mesh.faceZones()[faceZoneID_.index()];
155 const boolList& mfFlip = mesh.faceZones()[faceZoneID_.index()].flipMap();
158 const labelList& nei = mesh.faceNeighbour();
181 const faceList& zoneFaces = masterFaceLayer.localFaces();
192 const face oldFace = zoneFaces[faceI].reverseFace();
194 face newFace(oldFace.size());
198 newFace[pointI] = addedPoints[oldFace[pointI]];
201 bool flipFaceFlux =
false;
206 mc[faceI] == nei[mf[faceI]]
207 || !mesh.isInternalFace(mf[faceI])
236 const faceList& faces = mesh.faces();
240 const label curfaceID = mf[faceI];
244 if (!mesh.isInternalFace(curfaceID))
255 mesh.boundaryMesh().whichPatch(curfaceID),
266 else if (sc[faceI] == own[curfaceID])
278 mesh.boundaryMesh().whichPatch(curfaceID),
294 faces[curfaceID].reverseFace(),
299 mesh.boundaryMesh().whichPatch(curfaceID),
311 const edgeList& zoneLocalEdges = masterFaceLayer.edges();
313 const labelListList& edgeFaces = masterFaceLayer.edgeFaces();
315 label nInternalEdges = masterFaceLayer.nInternalEdges();
318 mesh.faceZones()[faceZoneID_.index()].meshEdges();
321 for (label curEdgeID = 0; curEdgeID < nInternalEdges; curEdgeID++)
325 newFace[0] = mp[zoneLocalEdges[curEdgeID].start()];
326 newFace[1] = mp[zoneLocalEdges[curEdgeID].end()];
327 newFace[2] = addedPoints[zoneLocalEdges[curEdgeID].end()];
328 newFace[3] = addedPoints[zoneLocalEdges[curEdgeID].start()];
335 addedCells[edgeFaces[curEdgeID][0]],
336 addedCells[edgeFaces[curEdgeID][1]],
338 meshEdges[curEdgeID],
367 label curEdgeID = nInternalEdges;
368 curEdgeID < zoneLocalEdges.size();
373 newFace[0] = mp[zoneLocalEdges[curEdgeID].start()];
374 newFace[1] = mp[zoneLocalEdges[curEdgeID].end()];
375 newFace[2] = addedPoints[zoneLocalEdges[curEdgeID].end()];
376 newFace[3] = addedPoints[zoneLocalEdges[curEdgeID].start()];
379 const labelList& curFaces = meshEdgeFaces[meshEdges[curEdgeID]];
386 const label cf = curFaces[faceI];
388 if (!mesh.isInternalFace(cf))
391 if (zoneMesh.whichZone(cf) != faceZoneID_.index())
394 patchID = mesh.boundaryMesh().whichPatch(cf);
395 zoneID = mesh.faceZones().whichZone(cf);
406 "void Foam::layerAdditionRemoval::setRefinement("
407 "polyTopoChange& ref)"
408 ) <<
"Cannot find patch for edge " << meshEdges[curEdgeID]
409 <<
". Edge: " << mesh.edges()[meshEdges[curEdgeID]]
418 addedCells[edgeFaces[curEdgeID][0]],
421 meshEdges[curEdgeID],
452 const labelList& curFaces = cells[mc[cellI]];
457 if (zoneMesh.whichZone(curFaces[faceI]) != faceZoneID_.index())
459 masterCellFaceMap.insert(curFaces[faceI]);
465 Map<label> masterLayerPointMap(2*mp.size());
469 masterLayerPointMap.insert
477 const labelList masterCellFaces = masterCellFaceMap.toc();
479 forAll (masterCellFaces, faceI)
484 const label curFaceID = masterCellFaces[faceI];
486 const face& oldFace = faces[curFaceID];
488 face newFace(oldFace.size());
490 bool changed =
false;
494 if (masterLayerPointMap.found(oldFace[pointI]))
498 newFace[pointI] = masterLayerPointMap.find(oldFace[pointI])();
502 newFace[pointI] = oldFace[pointI];
510 label modifiedFaceZone = mesh.faceZones().whichZone(curFaceID);
511 bool modifiedFaceZoneFlip =
false;
513 if (modifiedFaceZone >= 0)
515 modifiedFaceZoneFlip =
516 mesh.faceZones()[modifiedFaceZone].flipMap()
518 mesh.faceZones()[modifiedFaceZone].whichFace(curFaceID)
522 if (mesh.isInternalFace(curFaceID))
552 mesh.boundaryMesh().whichPatch(curFaceID),
565 Pout<<
"void layerAdditionRemoval::addCellLayer("
566 <<
"polyTopoChange& ref) const "
567 <<
" for object " <<
name() <<
" : "
568 <<
"Finished adding cell layer" <<
endl;