29 #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 MeshZones<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
154 arrayRangeVolume_.reset(arraySelection->GetNumberOfArrays());
155 arraySelection->AddArray
159 arrayRangeVolume_ += 1;
164 getSelectedArrayEntries(arraySelection);
169 void Foam::vtkPVFoam::updateInfoLagrangian
171 vtkDataArraySelection* arraySelection
189 arrayRangeLagrangian_.reset(arraySelection->GetNumberOfArrays());
192 HashSet<fileName> cloudDirs;
202 dbPtr_->path()/times[timei].name()/lagrangianPrefix,
209 arraySelection->AddArray
211 (cloudIter.key() +
" - lagrangian").c_str()
215 arrayRangeLagrangian_ += cloudDirs.size();
220 getSelectedArrayEntries(arraySelection);
225 void Foam::vtkPVFoam::updateInfoPatches
227 vtkDataArraySelection* arraySelection,
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();
255 iter != groups.end();
259 const word& groupName = iter.key();
265 nFaces += patches[patchIDs[i]].size();
271 string vtkGrpName = groupName +
" - group";
272 arraySelection->AddArray(vtkGrpName.c_str());
276 if (enabledEntriesSet.found(vtkGrpName))
278 if (!reader_->GetShowGroupsOnly())
280 enabledEntriesSet.erase(vtkGrpName);
283 const polyPatch& pp = patches[patchIDs[i]];
288 pp.name() +
" - " + pp.type()
291 enabledEntriesSet.insert(vtkPatchName);
302 if (!reader_->GetShowGroupsOnly())
306 const polyPatch& pp = patches[
patchi];
310 const string vtkPatchName = pp.name() +
" - " + pp.type();
313 arraySelection->AddArray(vtkPatchName.c_str());
327 dbPtr_().findInstance
341 if (ioObj.typeHeaderOk<polyBoundaryMesh>(
true))
343 polyBoundaryMeshEntries patchEntries(ioObj);
348 wordList names(patchEntries.size());
351 forAll(patchEntries, patchi)
353 const dictionary& patchDict = patchEntries[
patchi].dict();
362 HashTable<labelList, word> groups(patchEntries.size());
364 forAll(patchEntries, patchi)
366 const dictionary& patchDict = patchEntries[
patchi].dict();
369 patchDict.readIfPresent(
"inGroups", groupNames);
371 forAll(groupNames, groupI)
377 if (iter != groups.end())
379 iter().append(patchi);
383 groups.insert(groupNames[groupI],
labelList(1, patchi));
392 iter != groups.end();
396 const word& groupName = iter.key();
402 nFaces += sizes[patchIDs[i]];
408 string vtkGrpName = groupName +
" - group";
409 arraySelection->AddArray(vtkGrpName.c_str());
413 if (enabledEntriesSet.found(vtkGrpName))
415 if (!reader_->GetShowGroupsOnly())
417 enabledEntriesSet.erase(vtkGrpName);
420 if (sizes[patchIDs[i]])
432 names[patchIDs[i]] +
" - " + patchType
435 enabledEntriesSet.insert(vtkPatchName);
446 if (!reader_->GetShowGroupsOnly())
450 configDict_.lookupOrDefault
467 const string vtkPatchName
469 names[patchi] +
" - " + patchType
472 arraySelection->AddArray(vtkPatchName.c_str());
478 enabledEntriesSet.insert(vtkPatchName);
491 enabledEntries = enabledEntriesSet.toc();
496 getSelectedArrayEntries(arraySelection);
501 void Foam::vtkPVFoam::updateInfoZones
503 vtkDataArraySelection* arraySelection
506 if (!reader_->GetIncludeZones())
514 <<
" [meshPtr=" << (meshPtr_ ?
"set" :
"nullptr") <<
"]" <<
endl;
522 namesLst = getZoneNames(meshPtr_->cellZones());
526 namesLst = getZoneNames(
"cellZones");
529 arrayRangeCellZones_.reset(arraySelection->GetNumberOfArrays());
532 arraySelection->AddArray
534 (namesLst[elemI] +
" - cellZone").c_str()
537 arrayRangeCellZones_ += namesLst.size();
543 namesLst = getZoneNames(meshPtr_->faceZones());
547 namesLst = getZoneNames(
"faceZones");
550 arrayRangeFaceZones_.reset(arraySelection->GetNumberOfArrays());
553 arraySelection->AddArray
555 (namesLst[elemI] +
" - faceZone").c_str()
558 arrayRangeFaceZones_ += namesLst.size();
564 namesLst = getZoneNames(meshPtr_->pointZones());
568 namesLst = getZoneNames(
"pointZones");
571 arrayRangePointZones_.reset(arraySelection->GetNumberOfArrays());
574 arraySelection->AddArray
576 (namesLst[elemI] +
" - pointZone").c_str()
579 arrayRangePointZones_ += namesLst.size();
584 getSelectedArrayEntries(arraySelection);
589 void Foam::vtkPVFoam::updateInfoSets
591 vtkDataArraySelection* arraySelection
594 if (!reader_->GetIncludeSets())
607 word facesInstance = dbPtr_().findInstance
614 word setsInstance = dbPtr_().findInstance
622 IOobjectList
objects(dbPtr_(), setsInstance, meshDir_/
"sets");
626 Info<<
" Foam::vtkPVFoam::updateInfoSets read " 627 << objects.names() <<
" from " << setsInstance <<
endl;
631 arrayRangeCellSets_.reset(arraySelection->GetNumberOfArrays());
632 arrayRangeCellSets_ += addToSelection<cellSet>
639 arrayRangeFaceSets_.reset(arraySelection->GetNumberOfArrays());
640 arrayRangeFaceSets_ += addToSelection<faceSet>
647 arrayRangePointSets_.reset(arraySelection->GetNumberOfArrays());
648 arrayRangePointSets_ += addToSelection<pointSet>
658 getSelectedArrayEntries(arraySelection);
663 void Foam::vtkPVFoam::updateInfoFields()
668 <<
" [meshPtr=" << (meshPtr_ ?
"set" :
"nullptr") <<
"]" 672 vtkDataArraySelection* fieldSelection = reader_->GetFieldSelection();
679 regionPrefix = meshRegion_;
682 const Time& runTime = dbPtr_();
687 if (fieldSelection->GetNumberOfArrays() == 0 && !meshPtr_)
691 configDict_.lookupOrDefault
702 IOobjectList
objects(runTime, times[timei].
name(), regionPrefix);
706 objectNameSet.insert(iter.key());
710 const wordList objectNames(objectNameSet.toc());
716 enabledEntries.setSize(defaultFields.size());
719 enabledEntries[i] = objectNames[defaultFields[i]];
725 enabledEntries = getSelectedArrayEntries(fieldSelection);
728 fieldSelection->RemoveAllArrays();
733 IOobjectList
objects(runTime, times[timei].
name(), regionPrefix);
735 addFieldsToSelection<fvPatchField, volMesh>
741 addInternalFieldsToSelection<fvPatchField, volMesh>
747 addFieldsToSelection<fvsPatchField, surfaceMesh>
753 addFieldsToSelection<pointPatchField, pointMesh>
761 setSelectedArrayEntries(fieldSelection, enabledEntries);
765 void Foam::vtkPVFoam::updateInfoLagrangianFields()
772 vtkDataArraySelection* fieldSelection =
773 reader_->GetLagrangianFieldSelection();
776 stringList enabledEntries = getSelectedArrayEntries(fieldSelection);
777 fieldSelection->RemoveAllArrays();
791 const arrayRange& range = arrayRangeLagrangian_;
794 for (
label partId = range.start(); partId < range.end(); ++ partId)
803 lagrangianPrefix/getPartName(partId)
806 addToSelection<IOField<label>>(fieldSelection,
objects);
807 addToSelection<IOField<scalar>>(fieldSelection,
objects);
808 addToSelection<IOField<vector>>(fieldSelection,
objects);
809 addToSelection<IOField<sphericalTensor>>(fieldSelection,
objects);
810 addToSelection<IOField<symmTensor>>(fieldSelection,
objects);
811 addToSelection<IOField<tensor>>(fieldSelection,
objects);
816 setSelectedArrayEntries(fieldSelection, enabledEntries);
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.
bool findStrings(const wordReListMatcher &matcher, const std::string &str)
Return true if string matches one of the regular expressions.
virtual fileNameList readDir(const fileName &, const fileType=fileType::file, const bool filterVariants=true, const bool followLink=true) const =0
Read a directory and return the entries as a string list.
stressControl lookup("compactNormalStress") >> compactNormalStress
friend class const_iterator
Declare friendship with the const_iterator.
static const word null
An empty word.
List< label > labelList
A List of labels.
HashSet wordHashSet
A HashSet with word keys.
const fileOperation & fileHandler()
Get current file handler.
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
MeshZones< cellZone, polyMesh > meshCellZones
A MeshZones with the type cellZone.
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.
virtual void flush() const
Forcibly wait until all output done. Flush any cached data.
List< word > wordList
A List of words.
List< string > stringList
A List of strings.
List< wordRe > wordReList
A List of wordRe (word or regular expression)
friend class iterator
Declare friendship with the iterator.
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
#define InfoInFunction
Report an information message using Foam::Info.