Zones: Now derived from PtrListDictionary to provide faster lookup
Now the HashTable underlying PtrListDictionary is used for zone lookup by name which is a lot faster than the linear search method used previously if there are a large number of zones.
This commit is contained in:
@ -1209,7 +1209,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
FatalIOErrorIn(args.executable().c_str(), dict)
|
||||
<< "Cannot find zone " << zoneNames[zonei]
|
||||
<< endl << "Valid zones are " << mesh.faceZones().names()
|
||||
<< endl << "Valid zones are " << mesh.faceZones().toc()
|
||||
<< exit(FatalIOError);
|
||||
}
|
||||
|
||||
@ -1222,7 +1222,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
FatalIOErrorIn(args.executable().c_str(), dict)
|
||||
<< "Cannot find opposite zone " << oppositeZoneNames[zonei]
|
||||
<< endl << "Valid zones are " << mesh.faceZones().names()
|
||||
<< endl << "Valid zones are " << mesh.faceZones().toc()
|
||||
<< exit(FatalIOError);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2012-2023 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2012-2024 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -73,7 +73,7 @@ void Foam::faceSelections::faceZoneSelection::select
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Cannot find faceZone " << zoneName_ << nl << "Valid zones are "
|
||||
<< mesh_.faceZones().names()
|
||||
<< mesh_.faceZones().toc()
|
||||
<< exit(FatalError);
|
||||
}
|
||||
|
||||
|
||||
@ -142,7 +142,7 @@ Foam::mergePolyMesh::mergePolyMesh(polyMesh& mesh)
|
||||
// Insert point, face and cell zones into the list
|
||||
|
||||
// Point zones
|
||||
wordList curPointZoneNames = mesh_.pointZones().names();
|
||||
wordList curPointZoneNames = mesh_.pointZones().toc();
|
||||
if (curPointZoneNames.size())
|
||||
{
|
||||
pointZoneNames_.setCapacity(2*curPointZoneNames.size());
|
||||
@ -156,7 +156,7 @@ Foam::mergePolyMesh::mergePolyMesh(polyMesh& mesh)
|
||||
pointZonesAddedPoints_.setSize(pointZoneNames_.size());
|
||||
|
||||
// Face zones
|
||||
wordList curFaceZoneNames = mesh_.faceZones().names();
|
||||
wordList curFaceZoneNames = mesh_.faceZones().toc();
|
||||
|
||||
if (curFaceZoneNames.size())
|
||||
{
|
||||
@ -171,7 +171,7 @@ Foam::mergePolyMesh::mergePolyMesh(polyMesh& mesh)
|
||||
faceZonesAddedFaces_.setSize(faceZoneNames_.size());
|
||||
|
||||
// Cell zones
|
||||
wordList curCellZoneNames = mesh_.cellZones().names();
|
||||
wordList curCellZoneNames = mesh_.cellZones().toc();
|
||||
|
||||
if (curCellZoneNames.size())
|
||||
{
|
||||
|
||||
@ -1196,7 +1196,7 @@ void matchRegions
|
||||
labelList zoneSizes(cellZones.size(), 0);
|
||||
{
|
||||
List<wordList> zoneNames(Pstream::nProcs());
|
||||
zoneNames[Pstream::myProcNo()] = cellZones.names();
|
||||
zoneNames[Pstream::myProcNo()] = cellZones.toc();
|
||||
Pstream::gatherList(zoneNames);
|
||||
Pstream::scatterList(zoneNames);
|
||||
|
||||
|
||||
@ -272,11 +272,11 @@ Foam::autoPtr<Foam::fvMesh> Foam::loadOrCreateMesh
|
||||
// Determine zones
|
||||
// ~~~~~~~~~~~~~~~
|
||||
|
||||
wordList pointZoneNames(mesh.pointZones().names());
|
||||
wordList pointZoneNames(mesh.pointZones().toc());
|
||||
Pstream::scatter(pointZoneNames);
|
||||
wordList faceZoneNames(mesh.faceZones().names());
|
||||
wordList faceZoneNames(mesh.faceZones().toc());
|
||||
Pstream::scatter(faceZoneNames);
|
||||
wordList cellZoneNames(mesh.cellZones().names());
|
||||
wordList cellZoneNames(mesh.cellZones().toc());
|
||||
Pstream::scatter(cellZoneNames);
|
||||
|
||||
if (!haveMesh)
|
||||
|
||||
@ -261,7 +261,7 @@ void Foam::ensightMesh::correct()
|
||||
// faceZones
|
||||
if (faceZones_)
|
||||
{
|
||||
wordList faceZoneNamesAll = mesh_.faceZones().names();
|
||||
wordList faceZoneNamesAll = mesh_.faceZones().toc();
|
||||
// Need to sort the list of all face zones since the index may vary
|
||||
// from processor to processor...
|
||||
sort(faceZoneNamesAll);
|
||||
|
||||
@ -148,7 +148,7 @@ int main(int argc, char *argv[])
|
||||
if (args.optionFound("faceZones"))
|
||||
{
|
||||
wordReList zoneNames(args.optionLookup("faceZones")());
|
||||
const wordList allZoneNames(mfz.names());
|
||||
const wordList allZoneNames(mfz.toc());
|
||||
forAll(zoneNames, i)
|
||||
{
|
||||
const wordRe& zoneName = zoneNames[i];
|
||||
|
||||
Reference in New Issue
Block a user