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;
204 dbPtr_->path()/times[timei].name()/lagrangianPrefix,
211 arraySelection->AddArray
213 (cloudIter.key() +
" - lagrangian").c_str()
217 arrayRangeLagrangian_ += cloudDirs.size();
222 getSelectedArrayEntries(arraySelection);
224 Info<<
"<end> Foam::vtkPVFoam::updateInfoLagrangian" <<
endl;
229 void Foam::vtkPVFoam::updateInfoPatches
231 vtkDataArraySelection* arraySelection,
238 Info<<
"<beg> Foam::vtkPVFoam::updateInfoPatches" 239 <<
" [meshPtr=" << (meshPtr_ ?
"set" :
"nullptr") <<
"]" <<
endl;
243 HashSet<string> enabledEntriesSet(enabledEntries);
245 arrayRangePatches_.reset(arraySelection->GetNumberOfArrays());
250 const polyBoundaryMesh& patches = meshPtr_->boundaryMesh();
251 const HashTable<labelList, word>& groups = patches.groupPatchIDs();
252 const wordList allPatchNames = patches.names();
260 iter != groups.end();
264 const word& groupName = iter.key();
270 nFaces += patches[patchIDs[i]].size();
276 string vtkGrpName = groupName +
" - group";
277 arraySelection->AddArray(vtkGrpName.c_str());
281 if (enabledEntriesSet.found(vtkGrpName))
283 if (!reader_->GetShowGroupsOnly())
285 enabledEntriesSet.erase(vtkGrpName);
288 const polyPatch& pp = patches[patchIDs[i]];
293 pp.name() +
" - " + pp.type()
296 enabledEntriesSet.insert(vtkPatchName);
308 if (!reader_->GetShowGroupsOnly())
312 const polyPatch& pp = patches[
patchi];
316 const string vtkPatchName = pp.name() +
" - " + pp.type();
319 arraySelection->AddArray(vtkPatchName.c_str());
333 dbPtr_().findInstance
347 if (ioObj.typeHeaderOk<polyBoundaryMesh>(
true))
349 polyBoundaryMeshEntries patchEntries(ioObj);
355 wordList names(patchEntries.size());
358 forAll(patchEntries, patchi)
360 const dictionary& patchDict = patchEntries[
patchi].dict();
370 HashTable<labelList, word> groups(patchEntries.size());
372 forAll(patchEntries, patchi)
374 const dictionary& patchDict = patchEntries[
patchi].dict();
377 patchDict.readIfPresent(
"inGroups", groupNames);
379 forAll(groupNames, groupI)
385 if (iter != groups.end())
387 iter().append(patchi);
391 groups.insert(groupNames[groupI],
labelList(1, patchi));
400 iter != groups.end();
404 const word& groupName = iter.key();
410 nFaces += sizes[patchIDs[i]];
416 string vtkGrpName = groupName +
" - group";
417 arraySelection->AddArray(vtkGrpName.c_str());
421 if (enabledEntriesSet.found(vtkGrpName))
423 if (!reader_->GetShowGroupsOnly())
425 enabledEntriesSet.erase(vtkGrpName);
428 if (sizes[patchIDs[i]])
440 names[patchIDs[i]] +
" - " + patchType
443 enabledEntriesSet.insert(vtkPatchName);
455 if (!reader_->GetShowGroupsOnly())
459 configDict_.lookupOrDefault
476 const string vtkPatchName
478 names[patchi] +
" - " + patchType
481 arraySelection->AddArray(vtkPatchName.c_str());
487 enabledEntriesSet.insert(vtkPatchName);
500 enabledEntries = enabledEntriesSet.toc();
505 getSelectedArrayEntries(arraySelection);
507 Info<<
"<end> Foam::vtkPVFoam::updateInfoPatches" <<
endl;
512 void Foam::vtkPVFoam::updateInfoZones
514 vtkDataArraySelection* arraySelection
517 if (!reader_->GetIncludeZones())
524 Info<<
"<beg> Foam::vtkPVFoam::updateInfoZones" 525 <<
" [meshPtr=" << (meshPtr_ ?
"set" :
"nullptr") <<
"]" <<
endl;
535 namesLst = getZoneNames(meshPtr_->cellZones());
539 namesLst = getZoneNames(
"cellZones");
542 arrayRangeCellZones_.reset(arraySelection->GetNumberOfArrays());
545 arraySelection->AddArray
547 (namesLst[elemI] +
" - cellZone").c_str()
550 arrayRangeCellZones_ += namesLst.size();
558 namesLst = getZoneNames(meshPtr_->faceZones());
562 namesLst = getZoneNames(
"faceZones");
565 arrayRangeFaceZones_.reset(arraySelection->GetNumberOfArrays());
568 arraySelection->AddArray
570 (namesLst[elemI] +
" - faceZone").c_str()
573 arrayRangeFaceZones_ += namesLst.size();
581 namesLst = getZoneNames(meshPtr_->pointZones());
585 namesLst = getZoneNames(
"pointZones");
588 arrayRangePointZones_.reset(arraySelection->GetNumberOfArrays());
591 arraySelection->AddArray
593 (namesLst[elemI] +
" - pointZone").c_str()
596 arrayRangePointZones_ += namesLst.size();
601 getSelectedArrayEntries(arraySelection);
603 Info<<
"<end> Foam::vtkPVFoam::updateInfoZones" <<
endl;
608 void Foam::vtkPVFoam::updateInfoSets
610 vtkDataArraySelection* arraySelection
613 if (!reader_->GetIncludeSets())
620 Info<<
"<beg> Foam::vtkPVFoam::updateInfoSets" <<
endl;
626 word facesInstance = dbPtr_().findInstance
633 word setsInstance = dbPtr_().findInstance
641 IOobjectList
objects(dbPtr_(), setsInstance, meshDir_/
"sets");
645 Info<<
" Foam::vtkPVFoam::updateInfoSets read " 646 << objects.names() <<
" from " << setsInstance <<
endl;
650 arrayRangeCellSets_.reset(arraySelection->GetNumberOfArrays());
651 arrayRangeCellSets_ += addToSelection<cellSet>
658 arrayRangeFaceSets_.reset(arraySelection->GetNumberOfArrays());
659 arrayRangeFaceSets_ += addToSelection<faceSet>
666 arrayRangePointSets_.reset(arraySelection->GetNumberOfArrays());
667 arrayRangePointSets_ += addToSelection<pointSet>
677 getSelectedArrayEntries(arraySelection);
679 Info<<
"<end> Foam::vtkPVFoam::updateInfoSets" <<
endl;
684 void Foam::vtkPVFoam::updateInfoLagrangianFields()
688 Info<<
"<beg> Foam::vtkPVFoam::updateInfoLagrangianFields" 692 vtkDataArraySelection* fieldSelection =
693 reader_->GetLagrangianFieldSelection();
696 stringList enabledEntries = getSelectedArrayEntries(fieldSelection);
697 fieldSelection->RemoveAllArrays();
711 const arrayRange& range = arrayRangeLagrangian_;
714 for (
label partId = range.start(); partId < range.end(); ++ partId)
723 lagrangianPrefix/getPartName(partId)
726 addToSelection<IOField<label>>(fieldSelection,
objects);
727 addToSelection<IOField<scalar>>(fieldSelection,
objects);
728 addToSelection<IOField<vector>>(fieldSelection,
objects);
729 addToSelection<IOField<sphericalTensor>>(fieldSelection,
objects);
730 addToSelection<IOField<symmTensor>>(fieldSelection,
objects);
731 addToSelection<IOField<tensor>>(fieldSelection,
objects);
736 setSelectedArrayEntries(fieldSelection, enabledEntries);
740 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.
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.
const fileOperation & fileHandler()
Get current file handler.
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.
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.
ZoneMesh< cellZone, polyMesh > cellZoneMesh
A ZoneMesh with the type cellZone.