void Foam::nearestToCell::combine(topoSet& set, const bool add) const { // Construct search engine withouth tet decomposition. meshSearch queryMesh(mesh_, false); forAll(points_, pointI) { addOrDelete(set, queryMesh.findNearestCell(points_[pointI]), add); }
void Foam::surfaceSets::getSurfaceSets ( const polyMesh& mesh, const fileName&, const triSurface&, const triSurfaceSearch& querySurf, const pointField& outsidePts, const label nCutLayers, labelHashSet& inside, labelHashSet& outside, labelHashSet& cut ) { // Construct search engine on mesh meshSearch queryMesh(mesh); // Cut faces with surface and classify cells cellClassification cellType ( mesh, queryMesh, querySurf, outsidePts ); if (nCutLayers > 0) { // Trim cutCells so they are max nCutLayers away (as seen in point-cell // walk) from outside cells. cellType.trimCutCells ( nCutLayers, cellClassification::OUTSIDE, cellClassification::INSIDE ); } forAll(cellType, celli) { label cType = cellType[celli]; if (cType == cellClassification::CUT) { cut.insert(celli); } else if (cType == cellClassification::INSIDE) { inside.insert(celli); } else if (cType == cellClassification::OUTSIDE) { outside.insert(celli); } }
void Foam::surfaceSets::getSurfaceSets ( const polyMesh& mesh, const fileName&, const triSurface&, const triSurfaceSearch& querySurf, const pointField& outsidePts, const label nCutLayers, labelHashSet& inside, labelHashSet& outside, labelHashSet& cut ) { // Construct search engine on mesh meshSearch queryMesh(mesh, true); // Check all 'outside' points forAll(outsidePts, outsideI) { const point& outsidePoint = outsidePts[outsideI]; // Find cell point is in. Linear search. if (queryMesh.findCell(outsidePoint, -1, false) == -1) { FatalErrorIn ( "surfaceSets::getSurfaceSets" "(const polyMesh&, const fileName&, const triSurface&" ", const triSurfaceSearch&, const pointField&" ", labelHashSet&, labelHashSet&, labelHashSet&)" ) << "outsidePoint " << outsidePoint << " is not inside any cell" << exit(FatalError); } } // Cut faces with surface and classify cells cellClassification cellType ( mesh, queryMesh, querySurf, outsidePts ); if (nCutLayers > 0) { // Trim cutCells so they are max nCutLayers away (as seen in point-cell // walk) from outside cells. cellType.trimCutCells ( nCutLayers, cellClassification::OUTSIDE, cellClassification::INSIDE ); } forAll(cellType, cellI) { label cType = cellType[cellI]; if (cType == cellClassification::CUT) { cut.insert(cellI); } else if (cType == cellClassification::INSIDE) { inside.insert(cellI); } else if (cType == cellClassification::OUTSIDE) { outside.insert(cellI); } }