// Determines face blocking void Foam::channelIndex::walkOppositeFaces ( const polyMesh& mesh, const labelList& startFaces, boolList& blockedFace ) { const cellList& cells = mesh.cells(); const faceList& faces = mesh.faces(); label nBnd = mesh.nFaces() - mesh.nInternalFaces(); DynamicList<label> frontFaces(startFaces); forAll(frontFaces, i) { label facei = frontFaces[i]; blockedFace[facei] = true; }
Foam::tmp<Foam::scalarField> Foam::movingBodyTopoFvMesh::calcMotionMask() const { Info<< "Updating vertex markup" << endl; tmp<scalarField> tvertexMarkup(new scalarField(allPoints().size(), 0)); scalarField& vertexMarkup = tvertexMarkup(); cellZoneID movingCellsID(movingCellsName_, cellZones()); // In order to do a correct update on a mask on processor boundaries, // Detection of moving cells should use patchNeighbourField for // processor (not coupled!) boundaries. This is done by expanding // a moving cell set into a field and making sure that processor patch // points move in sync. Not done at the moment, probably best to do // using parallel update of pointFields. HJ, 19/Feb/2011 // If moving cells are found, perform mark-up if (movingCellsID.active()) { // Get cell-point addressing const labelListList& cp = cellPoints(); // Get labels of all moving cells const labelList& movingCells = cellZones()[movingCellsID.index()]; forAll (movingCells, cellI) { const labelList& curCp = cp[movingCells[cellI]]; forAll (curCp, pointI) { vertexMarkup[curCp[pointI]] = 1; } } } faceZoneID frontFacesID(frontFacesName_, faceZones()); if (frontFacesID.active()) { const faceZone& frontFaces = faceZones()[frontFacesID.index()]; const labelList& mp = frontFaces().meshPoints(); forAll (mp, mpI) { vertexMarkup[mp[mpI]] = 1; } } faceZoneID backFacesID(backFacesName_, faceZones()); if (backFacesID.active()) { const faceZone& backFaces = faceZones()[backFacesID.index()]; const labelList& mp = backFaces().meshPoints(); forAll (mp, mpI) { vertexMarkup[mp[mpI]] = 1; } } return tvertexMarkup; }