33 #include "vtkPVFoamReader.h" 37 #include "vtkDataArraySelection.h" 38 #include "vtkMultiBlockDataSet.h" 39 #include "vtkPolyData.h" 40 #include "vtkUnstructuredGrid.h" 44 void Foam::vtkPVFoam::convertMeshVolume
46 vtkMultiBlockDataSet* output,
50 arrayRange& range = arrayRangeVolume_;
53 const fvMesh& mesh = *meshPtr_;
56 regionPolyDecomp_.
setSize(range.size());
66 for (
int partId = range.start(); partId < range.end(); ++partId)
68 const word partName =
"internalMesh";
70 if (!partStatus_[partId])
75 vtkUnstructuredGrid* vtkmesh = volumeVTKMesh
78 regionPolyDecomp_[datasetNo]
83 AddToBlock(output, vtkmesh, range, datasetNo, partName);
86 partDataset_[partId] = datasetNo++;
103 void Foam::vtkPVFoam::convertMeshLagrangian
105 vtkMultiBlockDataSet* output,
109 arrayRange& range = arrayRangeLagrangian_;
110 range.block(blockNo);
112 const fvMesh& mesh = *meshPtr_;
120 for (
int partId = range.start(); partId < range.end(); ++partId)
122 const word cloudName = getPartName(partId);
124 if (!partStatus_[partId])
129 vtkPolyData* vtkmesh = lagrangianVTKMesh(mesh, cloudName);
133 AddToBlock(output, vtkmesh, range, datasetNo, cloudName);
136 partDataset_[partId] = datasetNo++;
153 void Foam::vtkPVFoam::convertMeshPatches
155 vtkMultiBlockDataSet* output,
159 arrayRange& range = arrayRangePatches_;
160 range.block(blockNo);
162 const fvMesh& mesh = *meshPtr_;
171 for (
int partId = range.start(); partId < range.end(); ++partId)
173 if (!partStatus_[partId])
178 const word patchName = getPartName(partId);
181 patchIds(patches.patchSet(List<wordRe>(1, wordRe(patchName))));
186 <<
"Creating VTK mesh for patches [" << patchIds <<
"] " 187 << patchName <<
endl;
190 vtkPolyData* vtkmesh =
nullptr;
191 if (patchIds.size() == 1)
193 vtkmesh = patchVTKMesh(patchName, patches[patchIds.begin().key()]);
201 sz += patches[iter.key()].size();
207 const polyPatch& pp = patches[iter.key()];
210 meshFaceLabels[sz++] = pp.start()+i;
213 UIndirectList<face> fcs(mesh.faces(), meshFaceLabels);
216 vtkmesh = patchVTKMesh(patchName, pp);
222 AddToBlock(output, vtkmesh, range, datasetNo, patchName);
225 partDataset_[partId] = datasetNo++;
242 void Foam::vtkPVFoam::convertMeshCellZones
244 vtkMultiBlockDataSet* output,
248 arrayRange& range = arrayRangeCellZones_;
249 range.block(blockNo);
251 const fvMesh& mesh = *meshPtr_;
254 zonePolyDecomp_.
setSize(range.size());
268 for (
int partId = range.start(); partId < range.end(); ++partId)
270 const word zoneName = getPartName(partId);
271 const label zoneId = zMesh.findZoneID(zoneName);
273 if (!partStatus_[partId] || zoneId < 0)
281 <<
"Creating VTK mesh for cellZone[" << zoneId <<
"] " 285 fvMeshSubset subsetter(mesh);
286 subsetter.setLargeCellSubset(zMesh[zoneId]);
288 vtkUnstructuredGrid* vtkmesh = volumeVTKMesh
291 zonePolyDecomp_[datasetNo]
300 zonePolyDecomp_[datasetNo].superCells()
305 zonePolyDecomp_[datasetNo].addPointCellLabels()
309 zonePolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
311 AddToBlock(output, vtkmesh, range, datasetNo, zoneName);
314 partDataset_[partId] = datasetNo++;
331 void Foam::vtkPVFoam::convertMeshCellSets
333 vtkMultiBlockDataSet* output,
337 arrayRange& range = arrayRangeCellSets_;
338 range.block(blockNo);
340 const fvMesh& mesh = *meshPtr_;
343 csetPolyDecomp_.
setSize(range.size());
351 for (
int partId = range.start(); partId < range.end(); ++partId)
353 const word partName = getPartName(partId);
355 if (!partStatus_[partId])
363 <<
"Creating VTK mesh for cellSet=" << partName <<
endl;
366 const cellSet cSet(mesh, partName);
367 fvMeshSubset subsetter(mesh);
368 subsetter.setLargeCellSubset(cSet);
370 vtkUnstructuredGrid* vtkmesh = volumeVTKMesh
373 csetPolyDecomp_[datasetNo]
382 csetPolyDecomp_[datasetNo].superCells()
387 csetPolyDecomp_[datasetNo].addPointCellLabels()
391 csetPolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
393 AddToBlock(output, vtkmesh, range, datasetNo, partName);
396 partDataset_[partId] = datasetNo++;
413 void Foam::vtkPVFoam::convertMeshFaceZones
415 vtkMultiBlockDataSet* output,
419 arrayRange& range = arrayRangeFaceZones_;
420 range.block(blockNo);
422 const fvMesh& mesh = *meshPtr_;
436 for (
int partId = range.start(); partId < range.end(); ++partId)
438 const word zoneName = getPartName(partId);
439 const label zoneId = zMesh.findZoneID(zoneName);
441 if (!partStatus_[partId] || zoneId < 0)
449 <<
"Creating VTKmesh for faceZone[" << zoneId <<
"] " 453 vtkPolyData* vtkmesh = patchVTKMesh(zoneName, zMesh[zoneId]());
457 AddToBlock(output, vtkmesh, range, datasetNo, zoneName);
460 partDataset_[partId] = datasetNo++;
477 void Foam::vtkPVFoam::convertMeshFaceSets
479 vtkMultiBlockDataSet* output,
483 arrayRange& range = arrayRangeFaceSets_;
484 range.block(blockNo);
486 const fvMesh& mesh = *meshPtr_;
494 for (
int partId = range.start(); partId < range.end(); ++partId)
496 const word partName = getPartName(partId);
498 if (!partStatus_[partId])
506 <<
"Creating VTK mesh for faceSet=" << partName <<
endl;
509 const faceSet fSet(mesh, partName);
511 vtkPolyData* vtkmesh = faceSetVTKMesh(mesh, fSet);
514 AddToBlock(output, vtkmesh, range, datasetNo, partName);
517 partDataset_[partId] = datasetNo++;
534 void Foam::vtkPVFoam::convertMeshPointZones
536 vtkMultiBlockDataSet* output,
540 arrayRange& range = arrayRangePointZones_;
541 range.block(blockNo);
543 const fvMesh& mesh = *meshPtr_;
554 for (
int partId = range.start(); partId < range.end(); ++partId)
556 word zoneName = getPartName(partId);
557 label zoneId = zMesh.findZoneID(zoneName);
559 if (!partStatus_[partId] || zoneId < 0)
564 vtkPolyData* vtkmesh = pointZoneVTKMesh(mesh, zMesh[zoneId]);
567 AddToBlock(output, vtkmesh, range, datasetNo, zoneName);
570 partDataset_[partId] = datasetNo++;
589 void Foam::vtkPVFoam::convertMeshPointSets
591 vtkMultiBlockDataSet* output,
595 arrayRange& range = arrayRangePointSets_;
596 range.block(blockNo);
598 const fvMesh& mesh = *meshPtr_;
606 for (
int partId = range.start(); partId < range.end(); ++partId)
608 word partName = getPartName(partId);
610 if (!partStatus_[partId])
618 <<
"Creating VTK mesh for pointSet=" << partName <<
endl;
621 const pointSet pSet(mesh, partName);
623 vtkPolyData* vtkmesh = pointSetVTKMesh(mesh, pSet);
626 AddToBlock(output, vtkmesh, range, datasetNo, partName);
629 partDataset_[partId] = datasetNo++;
const polyBoundaryMesh & boundaryMesh() const
Return boundary mesh.
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
void inplaceRenumber(const labelUList &oldToNew, ListType &)
Inplace renumber the values of a list.
static void printMemory()
Simple memory used debugging information.
Ostream & endl(Ostream &os)
Add newline and flush stream.
HashSet< label, Hash< label > > labelHashSet
A HashSet with label keys.
List< label > labelList
A List of labels.
MeshZones< pointZone, polyMesh > meshPointZones
A MeshZones with the type pointZone.
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
MeshZones< cellZone, polyMesh > meshCellZones
A MeshZones with the type cellZone.
MeshZones< faceZone, polyMesh > meshFaceZones
A MeshZones with the type faceZone.
void setSize(const label)
Reset size of List.
PrimitivePatch< UIndirectList< face >, const pointField & > uindirectPrimitivePatch
Foam::uindirectPrimitivePatch.
#define InfoInFunction
Report an information message using Foam::Info.