openfoam/applications/utilities/postProcessing/dataConversion/foamToVTK/findClouds.H
Mark Olesen bcabe827f6 ENH: dedicated HashSetOps, HashTableOps namespaces
- relocated HashSetPlusEqOp and HashTablePlusEqOp to
  HashSetOps::plusEqOp and HashTableOps::plusEqOp, respectively

- additional functions for converting between a labelHashSet
  and a PackedBoolList or List<bool>:

  From lists selections to labelHashSet indices:

      HashSetOps::used(const PackedBoolList&);
      HashSetOps::used(const UList<bool>&);

  From labelHashSet to list forms:

      PackedBoolList bitset(const labelHashSet&);
      List<bool> bools(const labelHashSet&);
2018-03-06 11:41:34 +01:00

78 lines
1.9 KiB
C

// check all time directories for the following:
// Any cloud names:
wordHashSet allCloudDirs;
if (timeDirs.size() && !noLagrangian)
{
const fileName& baseDir = mesh.time().path();
const fileName cloudPrefix(regionPrefix/cloud::prefix);
Info<< "Searching for lagrangian ... " << flush;
forAll(timeDirs, timeI)
{
const word& timeName = timeDirs[timeI].name();
// DO NOT USE -->> runTime.setTime(timeDirs[timeI], timeI); <<--
// It incurs a large overhead when done so frequently.
fileNameList cloudDirs = readDir
(
baseDir/timeName/cloudPrefix,
fileName::DIRECTORY
);
for (const word& cloudName : cloudDirs)
{
IOobjectList cloudObjs
(
mesh,
timeName,
cloudPrefix/cloudName
);
// Clouds require "coordinates".
// The "positions" are for v1706 and lower.
if (cloudObjs.found("coordinates") || cloudObjs.found("positions"))
{
if (allCloudDirs.insert(cloudName))
{
Info<< nl << " At time: " << timeName
<< " detected cloud directory : " << cloudName
<< flush;
}
}
}
}
if (allCloudDirs.empty())
{
Info<< "none detected." << endl;
}
if (Pstream::parRun())
{
Pstream::combineGather(allCloudDirs, HashSetOps::plusEqOp<word>());
Pstream::combineScatter(allCloudDirs);
}
}
// Sorted list of cloud names
const wordList cloudNames(allCloudDirs.sortedToc());
if (cloudNames.size())
{
// Complete the echo information
Info<< "(";
for (const word& cloudName : cloudNames)
{
Info<< ' ' << cloudName;
}
Info<< " ) " << endl;
}
// ************************************************************************* //