const Foam::labelListList& Foam::primitiveMesh::edgeFaces() const { if (!efPtr_) { if (debug) { Pout<< "primitiveMesh::edgeFaces() : calculating edgeFaces" << endl; if (debug == -1) { // For checking calls:abort so we can quickly hunt down // origin of call FatalErrorIn("primitiveMesh::edgeFaces()") << abort(FatalError); } } // Invert faceEdges efPtr_ = new labelListList(nEdges()); invertManyToMany(nEdges(), faceEdges(), *efPtr_); } return *efPtr_; }
void Foam::PrimitivePatch<Face, FaceList, PointField, PointType>:: visitPointRegion ( const label pointi, const labelList& pFaces, const label startFacei, const label startEdgeI, boolList& pFacesHad ) const { label index = findIndex(pFaces, startFacei); if (!pFacesHad[index]) { // Mark face as been visited. pFacesHad[index] = true; // Step to next edge on face which is still using pointi const labelList& fEdges = faceEdges()[startFacei]; label nextEdgeI = -1; forAll(fEdges, i) { label edgeI = fEdges[i]; const edge& e = edges()[edgeI]; if (edgeI != startEdgeI && (e[0] == pointi || e[1] == pointi)) { nextEdgeI = edgeI; break; } }
<< ps[pointi].z() << endl; } // Write edges. // Note: edges are in local point labels so convert const edgeList& es = edges(); const labelList& meshPts = meshPoints(); forAll(es, edgei) { os << meshPts[es[edgei].start()] + 1 << ' ' << meshPts[es[edgei].end()] + 1 << endl; } // Write faces in terms of edges. const labelListList& faceEs = faceEdges(); if (writeSorted) { label faceIndex = 0; forAll(myPatches, patchI) { for ( label patchFaceI = 0; patchFaceI < myPatches[patchI].size(); patchFaceI++ ) { const label faceI = faceMap[faceIndex++];
void Foam::primitiveMesh::calcCellEdges() const { // Loop through all faces and mark up cells with edges of the face. // Check for duplicates if (debug) { Pout<< "primitiveMesh::calcCellEdges() : " << "calculating cellEdges" << endl; if (debug == -1) { // For checking calls:abort so we can quickly hunt down // origin of call FatalErrorIn("primitiveMesh::calcCellEdges()") << abort(FatalError); } } // It is an error to attempt to recalculate cellEdges // if the pointer is already set if (cePtr_) { FatalErrorIn("primitiveMesh::calcCellEdges() const") << "cellEdges already calculated" << abort(FatalError); } else { // Set up temporary storage List<DynamicList<label, edgesPerCell_> > ce(nCells()); // Get reference to faceCells and faceEdges const labelList& own = faceOwner(); const labelList& nei = faceNeighbour(); const labelListList& fe = faceEdges(); // loop through the list again and add edges; checking for duplicates forAll(own, faceI) { DynamicList<label, edgesPerCell_>& curCellEdges = ce[own[faceI]]; const labelList& curEdges = fe[faceI]; forAll(curEdges, edgeI) { if (findIndex(curCellEdges, curEdges[edgeI]) == -1) { // Add the edge curCellEdges.append(curEdges[edgeI]); } } } forAll(nei, faceI) { DynamicList<label, edgesPerCell_>& curCellEdges = ce[nei[faceI]]; const labelList& curEdges = fe[faceI]; forAll(curEdges, edgeI) { if (findIndex(curCellEdges, curEdges[edgeI]) == -1) { // add the edge curCellEdges.append(curEdges[edgeI]); } } }