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_;
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);
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_;
163 const polyBoundaryMesh&
patches = mesh.boundaryMesh();
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()]);
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());
267 const cellZoneList& zMesh = mesh.cellZones();
268 for (
int partId =
range.start(); partId <
range.end(); ++partId)
270 const word zoneName = getPartName(partId);
271 const label zoneId = zMesh.findIndex(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_;
435 const faceZoneList& zMesh = mesh.faceZones();
436 for (
int partId =
range.start(); partId <
range.end(); ++partId)
438 const word zoneName = getPartName(partId);
439 const label zoneId = zMesh.findIndex(zoneName);
441 if (!partStatus_[partId] || zoneId < 0)
449 <<
"Creating VTKmesh for faceZone[" << zoneId <<
"] "
453 vtkPolyData* vtkmesh = patchVTKMesh(zoneName, zMesh[zoneId].patch());
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_;
553 const pointZoneList& zMesh = mesh.pointZones();
554 for (
int partId =
range.start(); partId <
range.end(); ++partId)
556 word zoneName = getPartName(partId);
557 label zoneId = zMesh.findIndex(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++;
#define forAll(list, i)
Loop across all elements in list.
#define forAllConstIter(Container, container, iter)
Iterate across all elements in the container object of type.
void setSize(const label)
Reset size of List.
label size() const
Return the number of elements in the UPtrList.
static void printMemory()
Simple memory used debugging information.
const fvPatchList & patches
#define InfoInFunction
Report an information message using Foam::Info.
List< label > labelList
A List of labels.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Ostream & endl(Ostream &os)
Add newline and flush stream.
PrimitivePatch< UIndirectList< face >, const pointField & > uindirectPrimitivePatch
Foam::uindirectPrimitivePatch.
void inplaceRenumber(const labelUList &oldToNew, ListType &)
Inplace renumber the values of a list.
HashSet< label, Hash< label > > labelHashSet
A HashSet with label keys.
const word cloudName(propsDict.lookup("cloudName"))