Foam::polyPatch::polyPatch ( const word& name, const label size, const label start, const label index, const polyBoundaryMesh& bm, const word& patchType ) : patchIdentifier(name, index), primitivePatch ( faceSubList(bm.mesh().faces(), size, start), bm.mesh().points() ), start_(start), boundaryMesh_(bm), faceCellsPtr_(NULL), gpuFaceCells(), mePtr_(NULL) { if ( patchType != word::null && constraintType(patchType) && findIndex(inGroups(), patchType) == -1 ) { inGroups().append(patchType); } }
Foam::polyPatch::polyPatch ( const word& name, const dictionary& dict, const label index, const polyBoundaryMesh& bm, const word& patchType ) : patchIdentifier(name, dict, index), primitivePatch ( faceSubList ( bm.mesh().faces(), readLabel(dict.lookup("nFaces")), readLabel(dict.lookup("startFace")) ), bm.mesh().points() ), start_(readLabel(dict.lookup("startFace"))), boundaryMesh_(bm), faceCellsPtr_(NULL), mePtr_(NULL) { if ( patchType != word::null && constraintType(patchType) && findIndex(inGroups(), patchType) == -1 ) { inGroups().append(patchType); } }
Foam::polyPatch::polyPatch ( const polyPatch& pp, const polyBoundaryMesh& bm, const label index, const labelUList& mapAddressing, const label newStart ) : patchIdentifier(pp, index), primitivePatch ( faceSubList ( bm.mesh().faces(), mapAddressing.size(), newStart ), bm.mesh().points() ), start_(newStart), boundaryMesh_(bm), faceCellsPtr_(NULL), gpuFaceCells(), mePtr_(NULL) {}
Foam::immersedBoundaryPolyPatch::immersedBoundaryPolyPatch ( const word& name, const label size, const label start, const label index, const polyBoundaryMesh& bm ) : polyPatch(name, size, start, index, bm), ibMesh_ ( IOobject ( name + ".ftr", bm.mesh().time().constant(), // instance "triSurface", // local bm.mesh(), // registry IOobject::MUST_READ, IOobject::NO_WRITE ) ), internalFlow_(false), triSurfSearchPtr_(NULL) {}
Foam::immersedBoundaryPolyPatch::immersedBoundaryPolyPatch ( const immersedBoundaryPolyPatch& pp, const polyBoundaryMesh& bm, const label index, const label newSize, const label newStart ) : polyPatch(pp, bm, index, newSize, newStart), ibMesh_ ( IOobject ( pp.name() + ".ftr", bm.mesh().time().constant(), // instance "triSurface", // local bm.mesh(), // registry IOobject::MUST_READ, IOobject::NO_WRITE ) ), internalFlow_(pp.internalFlow()), triSurfSearchPtr_(NULL) {}
Foam::immersedBoundaryPolyPatch::immersedBoundaryPolyPatch ( const word& name, const dictionary& dict, const label index, const polyBoundaryMesh& bm ) : polyPatch(name, dict, index, bm), ibMesh_ ( IOobject ( name + ".ftr", bm.mesh().time().constant(), // instance "triSurface", // local bm.mesh(), // registry IOobject::MUST_READ, IOobject::NO_WRITE ) ), internalFlow_(dict.lookup("internalFlow")), triSurfSearchPtr_(NULL) { if (size() > 0) { FatalIOErrorIn ( "immersedBoundaryPolyPatch::immersedBoundaryPolyPatch\n" "(\n" " const word& name,\n" " const dictionary& dict,\n" " const label index,\n" " const polyBoundaryMesh& bm\n" ")", dict ) << "Faces detected in the immersedBoundaryPolyPatch. " << "This is not allowed: please make sure that the patch size " << "equals zero." << abort(FatalIOError); } }
Foam::polyPatch::polyPatch ( const word& name, const label size, const label start, const label index, const polyBoundaryMesh& bm ) : patchIdentifier(name, index), primitivePatch ( faceSubList(bm.mesh().faces(), size, start), bm.mesh().points() ), start_(start), boundaryMesh_(bm), faceCellsPtr_(NULL), mePtr_(NULL) {}
Foam::polyPatch::polyPatch ( const polyPatch& pp, const polyBoundaryMesh& bm ) : patchIdentifier(pp), primitivePatch ( faceSubList ( bm.mesh().faces(), pp.size(), pp.start() ), bm.mesh().points() ), start_(pp.start()), boundaryMesh_(bm), faceCellsPtr_(NULL), mePtr_(NULL) {}
Foam::polyPatch::polyPatch ( const word& name, const dictionary& dict, const label index, const polyBoundaryMesh& bm ) : patchIdentifier(name, dict, index), primitivePatch ( faceSubList ( bm.mesh().faces(), readLabel(dict.lookup("nFaces")), readLabel(dict.lookup("startFace")) ), bm.mesh().points() ), start_(readLabel(dict.lookup("startFace"))), boundaryMesh_(bm), faceCellsPtr_(NULL), mePtr_(NULL) {}
triSurface triangulate ( const polyBoundaryMesh& bMesh, const labelHashSet& includePatches, const labelListIOList& finalAgglom, labelList& triSurfaceToAgglom, const globalIndex& globalNumbering, const polyBoundaryMesh& coarsePatches ) { const polyMesh& mesh = bMesh.mesh(); // Storage for surfaceMesh. Size estimate. DynamicList<labelledTri> triangles ( mesh.nFaces() - mesh.nInternalFaces() ); label newPatchI = 0; label localTriFaceI = 0; forAllConstIter(labelHashSet, includePatches, iter) { const label patchI = iter.key(); const polyPatch& patch = bMesh[patchI]; const pointField& points = patch.points(); label nTriTotal = 0; forAll(patch, patchFaceI) { const face& f = patch[patchFaceI]; faceList triFaces(f.nTriangles(points)); label nTri = 0; f.triangles(points, nTri, triFaces); forAll(triFaces, triFaceI) { const face& f = triFaces[triFaceI]; triangles.append(labelledTri(f[0], f[1], f[2], newPatchI)); nTriTotal++; triSurfaceToAgglom[localTriFaceI++] = globalNumbering.toGlobal ( Pstream::myProcNo(), finalAgglom[patchI][patchFaceI] + coarsePatches[patchI].start() ); } } newPatchI++; } triSurfaceToAgglom.resize(localTriFaceI-1); triangles.shrink(); // Create globally numbered tri surface triSurface rawSurface(triangles, mesh.points()); // Create locally numbered tri surface triSurface surface ( rawSurface.localFaces(), rawSurface.localPoints() ); // Add patch names to surface surface.patches().setSize(newPatchI); newPatchI = 0; forAllConstIter(labelHashSet, includePatches, iter) { const label patchI = iter.key(); const polyPatch& patch = bMesh[patchI]; surface.patches()[newPatchI].index() = patchI; surface.patches()[newPatchI].name() = patch.name(); surface.patches()[newPatchI].geometricType() = patch.type(); newPatchI++; } return surface; }