33 #include "vtkPV3FoamReader.h"
34 #include "uindirectPrimitivePatch.H"
37 #include "vtkDataArraySelection.h"
38 #include "vtkMultiBlockDataSet.h"
39 #include "vtkPolyData.h"
40 #include "vtkUnstructuredGrid.h"
46 vtkMultiBlockDataSet* output,
60 Info<<
"<beg> Foam::vtkPV3Foam::convertMeshVolume" <<
endl;
66 for (
int partId =
range.start(); partId <
range.end(); ++partId)
68 const word partName =
"internalMesh";
98 Info<<
"<end> Foam::vtkPV3Foam::convertMeshVolume" <<
endl;
106 vtkMultiBlockDataSet* output,
110 arrayRange&
range = arrayRangeLagrangian_;
111 range.block(blockNo);
113 const fvMesh&
mesh = *meshPtr_;
117 Info<<
"<beg> Foam::vtkPV3Foam::convertMeshLagrangian" <<
endl;
121 for (
int partId =
range.start(); partId <
range.end(); ++partId)
123 const word
cloudName = getPartName(partId);
125 if (!partStatus_[partId])
137 partDataset_[partId] = datasetNo++;
149 Info<<
"<end> Foam::vtkPV3Foam::convertMeshLagrangian" <<
endl;
157 vtkMultiBlockDataSet* output,
161 arrayRange&
range = arrayRangePatches_;
162 range.block(blockNo);
164 const fvMesh&
mesh = *meshPtr_;
169 Info<<
"<beg> Foam::vtkPV3Foam::convertMeshPatches" <<
endl;
173 for (
int partId =
range.start(); partId <
range.end(); ++partId)
175 if (!partStatus_[partId])
180 const word patchName = getPartName(partId);
189 Info<<
"Creating VTK mesh for patches [" << patchIds <<
"] "
190 << patchName <<
endl;
193 vtkPolyData* vtkmesh = NULL;
194 if (patchIds.size() == 1)
196 vtkmesh = patchVTKMesh(patchName,
patches[patchIds.begin().key()]);
204 sz +=
patches[iter.key()].size();
210 const polyPatch& pp =
patches[iter.key()];
213 meshFaceLabels[sz++] = pp.start()+i;
216 UIndirectList<face> fcs(
mesh.
faces(), meshFaceLabels);
219 vtkmesh = patchVTKMesh(patchName, pp);
228 partDataset_[partId] = datasetNo++;
240 Info<<
"<end> Foam::vtkPV3Foam::convertMeshPatches" <<
endl;
248 vtkMultiBlockDataSet* output,
252 arrayRange&
range = arrayRangeCellZones_;
253 range.block(blockNo);
255 const fvMesh&
mesh = *meshPtr_;
258 zonePolyDecomp_.setSize(
range.size());
267 Info<<
"<beg> Foam::vtkPV3Foam::convertMeshCellZones" <<
endl;
272 for (
int partId =
range.start(); partId <
range.end(); ++partId)
274 const word zoneName = getPartName(partId);
275 const label zoneId = zMesh.findZoneID(zoneName);
277 if (!partStatus_[partId] || zoneId < 0)
284 Info<<
"Creating VTK mesh for cellZone[" << zoneId <<
"] "
288 fvMeshSubset subsetter(
mesh);
289 subsetter.setLargeCellSubset(zMesh[zoneId]);
291 vtkUnstructuredGrid* vtkmesh = volumeVTKMesh
294 zonePolyDecomp_[datasetNo]
303 zonePolyDecomp_[datasetNo].superCells()
308 zonePolyDecomp_[datasetNo].addPointCellLabels()
312 zonePolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
317 partDataset_[partId] = datasetNo++;
329 Info<<
"<end> Foam::vtkPV3Foam::convertMeshCellZones" <<
endl;
337 vtkMultiBlockDataSet* output,
341 arrayRange&
range = arrayRangeCellSets_;
342 range.block(blockNo);
344 const fvMesh&
mesh = *meshPtr_;
347 csetPolyDecomp_.setSize(
range.size());
351 Info<<
"<beg> Foam::vtkPV3Foam::convertMeshCellSets" <<
endl;
355 for (
int partId =
range.start(); partId <
range.end(); ++partId)
357 const word partName = getPartName(partId);
359 if (!partStatus_[partId])
366 Info<<
"Creating VTK mesh for cellSet=" << partName <<
endl;
369 const cellSet cSet(
mesh, partName);
370 fvMeshSubset subsetter(
mesh);
371 subsetter.setLargeCellSubset(cSet);
373 vtkUnstructuredGrid* vtkmesh = volumeVTKMesh
376 csetPolyDecomp_[datasetNo]
385 csetPolyDecomp_[datasetNo].superCells()
390 csetPolyDecomp_[datasetNo].addPointCellLabels()
394 csetPolyDecomp_[datasetNo].pointMap() = subsetter.pointMap();
399 partDataset_[partId] = datasetNo++;
411 Info<<
"<end> Foam::vtkPV3Foam::convertMeshCellSets" <<
endl;
419 vtkMultiBlockDataSet* output,
423 arrayRange&
range = arrayRangeFaceZones_;
424 range.block(blockNo);
426 const fvMesh&
mesh = *meshPtr_;
435 Info<<
"<beg> Foam::vtkPV3Foam::convertMeshFaceZones" <<
endl;
440 for (
int partId =
range.start(); partId <
range.end(); ++partId)
442 const word zoneName = getPartName(partId);
443 const label zoneId = zMesh.findZoneID(zoneName);
445 if (!partStatus_[partId] || zoneId < 0)
452 Info<<
"Creating VTKmesh for faceZone[" << zoneId <<
"] "
456 vtkPolyData* vtkmesh = patchVTKMesh(zoneName, zMesh[zoneId]());
463 partDataset_[partId] = datasetNo++;
475 Info<<
"<end> Foam::vtkPV3Foam::convertMeshFaceZones" <<
endl;
483 vtkMultiBlockDataSet* output,
487 arrayRange&
range = arrayRangeFaceSets_;
488 range.block(blockNo);
490 const fvMesh&
mesh = *meshPtr_;
494 Info<<
"<beg> Foam::vtkPV3Foam::convertMeshFaceSets" <<
endl;
498 for (
int partId =
range.start(); partId <
range.end(); ++partId)
500 const word partName = getPartName(partId);
502 if (!partStatus_[partId])
509 Info<<
"Creating VTK mesh for faceSet=" << partName <<
endl;
512 const faceSet fSet(
mesh, partName);
514 vtkPolyData* vtkmesh = faceSetVTKMesh(
mesh, fSet);
520 partDataset_[partId] = datasetNo++;
532 Info<<
"<end> Foam::vtkPV3Foam::convertMeshFaceSets" <<
endl;
540 vtkMultiBlockDataSet* output,
544 arrayRange&
range = arrayRangePointZones_;
545 range.block(blockNo);
547 const fvMesh&
mesh = *meshPtr_;
551 Info<<
"<beg> Foam::vtkPV3Foam::convertMeshPointZones" <<
endl;
558 for (
int partId =
range.start(); partId <
range.end(); ++partId)
560 word zoneName = getPartName(partId);
561 label zoneId = zMesh.findZoneID(zoneName);
563 if (!partStatus_[partId] || zoneId < 0)
568 vtkPolyData* vtkmesh = pointZoneVTKMesh(
mesh, zMesh[zoneId]);
574 partDataset_[partId] = datasetNo++;
587 Info<<
"<end> Foam::vtkPV3Foam::convertMeshPointZones" <<
endl;
596 vtkMultiBlockDataSet* output,
600 arrayRange&
range = arrayRangePointSets_;
601 range.block(blockNo);
603 const fvMesh&
mesh = *meshPtr_;
607 Info<<
"<beg> Foam::vtkPV3Foam::convertMeshPointSets" <<
endl;
611 for (
int partId =
range.start(); partId <
range.end(); ++partId)
613 word partName = getPartName(partId);
615 if (!partStatus_[partId])
622 Info<<
"Creating VTK mesh for pointSet=" << partName <<
endl;
625 const pointSet pSet(
mesh, partName);
627 vtkPolyData* vtkmesh = pointSetVTKMesh(
mesh, pSet);
633 partDataset_[partId] = datasetNo++;
645 Info<<
"<end> Foam::vtkPV3Foam::convertMeshPointSets" <<
endl;