37 #include "vtkPVFoamReader.h" 44 #include "vtkDataArraySelection.h" 63 explicit zonesEntries(
const IOobject& io)
66 PtrList<entry>(readStream(word(
"regIOobject")))
84 template<
class ZoneType>
87 const ZoneMesh<ZoneType, polyMesh>& zmesh
95 if (zmesh[zoneI].size())
97 names[nZone++] = zmesh[zoneI].name();
100 names.setSize(nZone);
106 Foam::wordList Foam::vtkPVFoam::getZoneNames(
const word& zoneType)
const 114 dbPtr_().findInstance
129 zonesEntries zones(ioObj);
131 names.setSize(zones.size());
134 names[zoneI] = zones[zoneI].keyword();
142 void Foam::vtkPVFoam::updateInfoInternalMesh
144 vtkDataArraySelection* arraySelection
149 Info<<
"<beg> Foam::vtkPVFoam::updateInfoInternalMesh" <<
endl;
154 arrayRangeVolume_.reset(arraySelection->GetNumberOfArrays());
155 arraySelection->AddArray
159 arrayRangeVolume_ += 1;
164 getSelectedArrayEntries(arraySelection);
166 Info<<
"<end> Foam::vtkPVFoam::updateInfoInternalMesh" <<
endl;
171 void Foam::vtkPVFoam::updateInfoLagrangian
173 vtkDataArraySelection* arraySelection
178 Info<<
"<beg> Foam::vtkPVFoam::updateInfoLagrangian" <<
nl 191 arrayRangeLagrangian_.reset(arraySelection->GetNumberOfArrays());
194 HashSet<fileName> cloudDirs;
201 dbPtr_->path()/times[timei].name()/lagrangianPrefix,
208 arraySelection->AddArray
210 (cloudIter.key() +
" - lagrangian").c_str()
214 arrayRangeLagrangian_ += cloudDirs.size();
219 getSelectedArrayEntries(arraySelection);
221 Info<<
"<end> Foam::vtkPVFoam::updateInfoLagrangian" <<
endl;
226 void Foam::vtkPVFoam::updateInfoPatches
228 vtkDataArraySelection* arraySelection,
234 Info<<
"<beg> Foam::vtkPVFoam::updateInfoPatches" 235 <<
" [meshPtr=" << (meshPtr_ ?
"set" :
"nullptr") <<
"]" <<
endl;
239 HashSet<string> enabledEntriesSet(enabledEntries);
241 arrayRangePatches_.reset(arraySelection->GetNumberOfArrays());
246 const polyBoundaryMesh& patches = meshPtr_->boundaryMesh();
247 const HashTable<labelList, word>& groups = patches.groupPatchIDs();
248 const wordList allPatchNames = patches.names();
256 iter != groups.end();
260 const word& groupName = iter.key();
266 nFaces += patches[patchIDs[i]].size();
272 string vtkGrpName = groupName +
" - group";
273 arraySelection->AddArray(vtkGrpName.c_str());
277 if (enabledEntriesSet.found(vtkGrpName))
279 if (!reader_->GetShowGroupsOnly())
281 enabledEntriesSet.erase(vtkGrpName);
284 const polyPatch& pp = patches[patchIDs[i]];
287 string vtkPatchName = pp.name() +
" - patch";
288 enabledEntriesSet.insert(vtkPatchName);
300 if (!reader_->GetShowGroupsOnly())
304 const polyPatch& pp = patches[
patchi];
309 arraySelection->AddArray
311 (pp.name() +
" - patch").c_str()
326 dbPtr_().findInstance
340 if (ioObj.typeHeaderOk<polyBoundaryMesh>(
true))
342 polyBoundaryMeshEntries patchEntries(ioObj);
348 wordList names(patchEntries.size());
353 const dictionary& patchDict = patchEntries[
patchi].dict();
363 HashTable<labelList, word> groups(patchEntries.size());
367 const dictionary& patchDict = patchEntries[
patchi].dict();
370 patchDict.readIfPresent(
"inGroups", groupNames);
372 forAll(groupNames, groupI)
378 if (iter != groups.end())
393 iter != groups.end();
397 const word& groupName = iter.key();
403 nFaces += sizes[patchIDs[i]];
409 string vtkGrpName = groupName +
" - group";
410 arraySelection->AddArray(vtkGrpName.c_str());
414 if (enabledEntriesSet.found(vtkGrpName))
416 if (!reader_->GetShowGroupsOnly())
418 enabledEntriesSet.erase(vtkGrpName);
421 if (sizes[patchIDs[i]])
423 string vtkPatchName =
424 names[patchIDs[i]] +
" - patch";
425 enabledEntriesSet.insert(vtkPatchName);
437 if (!reader_->GetShowGroupsOnly())
444 arraySelection->AddArray
446 (names[patchi] +
" - patch").c_str()
458 enabledEntries = enabledEntriesSet.toc();
463 getSelectedArrayEntries(arraySelection);
465 Info<<
"<end> Foam::vtkPVFoam::updateInfoPatches" <<
endl;
470 void Foam::vtkPVFoam::updateInfoZones
472 vtkDataArraySelection* arraySelection
475 if (!reader_->GetIncludeZones())
482 Info<<
"<beg> Foam::vtkPVFoam::updateInfoZones" 483 <<
" [meshPtr=" << (meshPtr_ ?
"set" :
"nullptr") <<
"]" <<
endl;
493 namesLst = getZoneNames(meshPtr_->cellZones());
497 namesLst = getZoneNames(
"cellZones");
500 arrayRangeCellZones_.reset(arraySelection->GetNumberOfArrays());
503 arraySelection->AddArray
505 (namesLst[elemI] +
" - cellZone").c_str()
508 arrayRangeCellZones_ += namesLst.size();
516 namesLst = getZoneNames(meshPtr_->faceZones());
520 namesLst = getZoneNames(
"faceZones");
523 arrayRangeFaceZones_.reset(arraySelection->GetNumberOfArrays());
526 arraySelection->AddArray
528 (namesLst[elemI] +
" - faceZone").c_str()
531 arrayRangeFaceZones_ += namesLst.size();
539 namesLst = getZoneNames(meshPtr_->pointZones());
543 namesLst = getZoneNames(
"pointZones");
546 arrayRangePointZones_.reset(arraySelection->GetNumberOfArrays());
549 arraySelection->AddArray
551 (namesLst[elemI] +
" - pointZone").c_str()
554 arrayRangePointZones_ += namesLst.size();
559 getSelectedArrayEntries(arraySelection);
561 Info<<
"<end> Foam::vtkPVFoam::updateInfoZones" <<
endl;
566 void Foam::vtkPVFoam::updateInfoSets
568 vtkDataArraySelection* arraySelection
571 if (!reader_->GetIncludeSets())
578 Info<<
"<beg> Foam::vtkPVFoam::updateInfoSets" <<
endl;
584 word facesInstance = dbPtr_().findInstance
591 word setsInstance = dbPtr_().findInstance
599 IOobjectList objects(dbPtr_(), setsInstance, meshDir_/
"sets");
603 Info<<
" Foam::vtkPVFoam::updateInfoSets read " 604 << objects.names() <<
" from " << setsInstance <<
endl;
608 arrayRangeCellSets_.reset(arraySelection->GetNumberOfArrays());
609 arrayRangeCellSets_ += addToSelection<cellSet>
616 arrayRangeFaceSets_.reset(arraySelection->GetNumberOfArrays());
617 arrayRangeFaceSets_ += addToSelection<faceSet>
624 arrayRangePointSets_.reset(arraySelection->GetNumberOfArrays());
625 arrayRangePointSets_ += addToSelection<pointSet>
635 getSelectedArrayEntries(arraySelection);
637 Info<<
"<end> Foam::vtkPVFoam::updateInfoSets" <<
endl;
642 void Foam::vtkPVFoam::updateInfoLagrangianFields()
646 Info<<
"<beg> Foam::vtkPVFoam::updateInfoLagrangianFields" 650 vtkDataArraySelection* fieldSelection =
651 reader_->GetLagrangianFieldSelection();
654 stringList enabledEntries = getSelectedArrayEntries(fieldSelection);
655 fieldSelection->RemoveAllArrays();
669 const arrayRange& range = arrayRangeLagrangian_;
670 for (
label partId = range.start(); partId < range.end(); ++ partId)
679 lagrangianPrefix/getPartName(partId)
682 addToSelection<IOField<label>>(fieldSelection, objects);
683 addToSelection<IOField<scalar>>(fieldSelection, objects);
684 addToSelection<IOField<vector>>(fieldSelection, objects);
685 addToSelection<IOField<sphericalTensor>>(fieldSelection, objects);
686 addToSelection<IOField<symmTensor>>(fieldSelection, objects);
687 addToSelection<IOField<tensor>>(fieldSelection, objects);
692 setSelectedArrayEntries(fieldSelection, enabledEntries);
696 Info<<
"<end> Foam::vtkPVFoam::updateInfoLagrangianFields" <<
endl;
List< instant > instantList
List of instants.
#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.
static word defaultRegion
Return the default region name.
Ostream & endl(Ostream &os)
Add newline and flush stream.
friend class const_iterator
Declare friendship with the const_iterator.
static const word null
An empty word.
List< label > labelList
A List of labels.
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
label readLabel(Istream &is)
static const word prefix
The prefix to local: lagrangian.
const bool writeData(readBool(pdfDictionary.lookup("writeData")))
word name(const complex &)
Return a string representation of a complex.
List< word > wordList
A List of words.
List< string > stringList
A List of strings.
fileNameList readDir(const fileName &, const fileName::Type=fileName::FILE, const bool filtergz=true, const bool followLink=true)
Read a directory and return the entries as a string list.
friend class iterator
Declare friendship with the iterator.
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
ZoneMesh< cellZone, polyMesh > cellZoneMesh
A ZoneMesh with the type cellZone.