void Foam::vtkPV3Foam::convertMeshPatches ( vtkMultiBlockDataSet* output, int& blockNo ) { partInfo& selector = partInfoPatches_; selector.block(blockNo); // set output block label datasetNo = 0; // restart at dataset 0 const fvMesh& mesh = *meshPtr_; const polyBoundaryMesh& patches = mesh.boundaryMesh(); if (debug) { Info<< "<beg> Foam::vtkPV3Foam::convertMeshPatches" << endl; printMemory(); } for (int partId = selector.start(); partId < selector.end(); ++partId) { const word patchName = getPartName(partId); const label patchId = patches.findPatchID(patchName); if (!partStatus_[partId] || patchId < 0) { continue; } if (debug) { Info<< "Creating VTK mesh for patch[" << patchId <<"] " << patchName << endl; } vtkPolyData* vtkmesh = patchVTKMesh(patches[patchId]); if (vtkmesh) { AddToBlock(output, vtkmesh, selector, datasetNo, patchName); vtkmesh->Delete(); partDataset_[partId] = datasetNo++; } } // anything added? if (datasetNo) { ++blockNo; } if (debug) { Info<< "<end> Foam::vtkPV3Foam::convertMeshPatches" << endl; printMemory(); } }
void Foam::vtkPVFoam::convertMeshPatches ( vtkMultiBlockDataSet* output, int& blockNo ) { arrayRange& range = arrayRangePatches_; range.block(blockNo); // set output block label datasetNo = 0; // restart at dataset 0 const fvMesh& mesh = *meshPtr_; const polyBoundaryMesh& patches = mesh.boundaryMesh(); if (debug) { Info<< "<beg> Foam::vtkPVFoam::convertMeshPatches" << endl; printMemory(); } for (int partId = range.start(); partId < range.end(); ++partId) { if (!partStatus_[partId]) { continue; } const word patchName = getPartName(partId); labelHashSet patchIds(patches.patchSet(List<wordRe>(1, wordRe(patchName)))); if (debug) { Info<< "Creating VTK mesh for patches [" << patchIds <<"] " << patchName << endl; } vtkPolyData* vtkmesh = nullptr; if (patchIds.size() == 1) { vtkmesh = patchVTKMesh(patchName, patches[patchIds.begin().key()]); } else { // Patch group. Collect patch faces. label sz = 0; forAllConstIter(labelHashSet, patchIds, iter) { sz += patches[iter.key()].size(); } labelList meshFaceLabels(sz); sz = 0; forAllConstIter(labelHashSet, patchIds, iter) { const polyPatch& pp = patches[iter.key()]; forAll(pp, i) { meshFaceLabels[sz++] = pp.start()+i; } } UIndirectList<face> fcs(mesh.faces(), meshFaceLabels); uindirectPrimitivePatch pp(fcs, mesh.points()); vtkmesh = patchVTKMesh(patchName, pp); } if (vtkmesh) { AddToBlock(output, vtkmesh, range, datasetNo, patchName); vtkmesh->Delete(); partDataset_[partId] = datasetNo++; } }