ENH: use typed lookup versions instead of xyz::typeName literals

This commit is contained in:
Mark Olesen
2022-05-16 17:33:01 +02:00
parent 95e2a2e887
commit b712e7289e
12 changed files with 76 additions and 116 deletions

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2016-2021 OpenCFD Ltd.
Copyright (C) 2016-2022 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -829,16 +829,16 @@ int main(int argc, char *argv[])
if
(
obj.headerClassName() == volScalarField::typeName
|| obj.headerClassName() == volVectorField::typeName
|| obj.headerClassName() == volSphericalTensorField::typeName
|| obj.headerClassName() == volTensorField::typeName
|| obj.headerClassName() == volSymmTensorField::typeName
|| obj.headerClassName() == surfaceScalarField::typeName
|| obj.headerClassName() == surfaceVectorField::typeName
|| obj.headerClassName() == surfaceSphericalTensorField::typeName
|| obj.headerClassName() == surfaceSymmTensorField::typeName
|| obj.headerClassName() == surfaceTensorField::typeName
obj.isHeaderClass<volScalarField>()
|| obj.isHeaderClass<volVectorField>()
|| obj.isHeaderClass<volSphericalTensorField>()
|| obj.isHeaderClass<volTensorField>()
|| obj.isHeaderClass<volSymmTensorField>()
|| obj.isHeaderClass<surfaceScalarField>()
|| obj.isHeaderClass<surfaceVectorField>()
|| obj.isHeaderClass<surfaceSphericalTensorField>()
|| obj.isHeaderClass<surfaceSymmTensorField>()
|| obj.isHeaderClass<surfaceTensorField>()
)
{
objects.add(objPtr);

View File

@ -153,6 +153,33 @@ void printHelp(Ostream& os)
}
template<class SetType>
void printSets(Ostream& os, const IOobjectList& objects)
{
label n = 0;
for (const IOobject& io : objects.sorted<SetType>())
{
SetType set(io);
if (!n++) os << SetType::typeName << "s:" << nl;
os << '\t' << set.name() << "\tsize:" << set.size() << endl;
}
}
template<class ZoneType>
void printZones(Ostream& os, const ZoneMesh<ZoneType, polyMesh>& zones)
{
label n = 0;
for (const ZoneType& zn : zones)
{
if (!n++) os << ZoneType::typeName << "s:" << nl;
os << '\t' << zn.name() << "\tsize:" << zn.size() << endl;
}
}
void printAllSets(const polyMesh& mesh, Ostream& os)
{
IOobjectList objects
@ -167,64 +194,14 @@ void printAllSets(const polyMesh& mesh, Ostream& os)
),
polyMesh::meshSubDir/"sets"
);
IOobjectList cellSets(objects.lookupClass(cellSet::typeName));
if (cellSets.size())
{
os << "cellSets:" << endl;
forAllConstIters(cellSets, iter)
{
cellSet set(*iter());
os << '\t' << set.name() << "\tsize:" << set.size() << endl;
}
}
IOobjectList faceSets(objects.lookupClass(faceSet::typeName));
if (faceSets.size())
{
os << "faceSets:" << endl;
forAllConstIters(faceSets, iter)
{
faceSet set(*iter());
os << '\t' << set.name() << "\tsize:" << set.size() << endl;
}
}
IOobjectList pointSets(objects.lookupClass(pointSet::typeName));
if (pointSets.size())
{
os << "pointSets:" << endl;
forAllConstIters(pointSets, iter)
{
pointSet set(*iter());
os << '\t' << set.name() << "\tsize:" << set.size() << endl;
}
}
const cellZoneMesh& cellZones = mesh.cellZones();
if (cellZones.size())
{
os << "cellZones:" << endl;
for (const cellZone& zone : cellZones)
{
os << '\t' << zone.name() << "\tsize:" << zone.size() << endl;
}
}
const faceZoneMesh& faceZones = mesh.faceZones();
if (faceZones.size())
{
os << "faceZones:" << endl;
for (const faceZone& zone : faceZones)
{
os << '\t' << zone.name() << "\tsize:" << zone.size() << endl;
}
}
const pointZoneMesh& pointZones = mesh.pointZones();
if (pointZones.size())
{
os << "pointZones:" << endl;
for (const pointZone& zone : pointZones)
{
os << '\t' << zone.name() << "\tsize:" << zone.size() << endl;
}
}
printSets<cellSet>(os, objects);
printSets<faceSet>(os, objects);
printSets<pointSet>(os, objects);
printZones(os, mesh.cellZones());
printZones(os, mesh.faceZones());
printZones(os, mesh.pointZones());
os << endl;
}

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
Copyright (C) 2021-2022 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -105,14 +105,10 @@ int main(int argc, char *argv[])
<< endl;
IOobjectList pointObjects(objects.lookupClass(pointSet::typeName));
//Pout<< "pointSets:" << pointObjects.names() << endl;
forAllConstIters(pointObjects, iter)
for (const IOobject& io : objects.sorted<pointSet>())
{
// Not in memory. Load it.
pointSet set(*iter());
pointSet set(io);
labelList pointLabels(set.sortedToc());
// The original number of zones
@ -139,16 +135,12 @@ int main(int argc, char *argv[])
}
IOobjectList faceObjects(objects.lookupClass(faceSet::typeName));
wordHashSet slaveCellSets;
//Pout<< "faceSets:" << faceObjects.names() << endl;
forAllConstIters(faceObjects, iter)
for (const IOobject& io : objects.sorted<faceSet>())
{
// Not in memory. Load it.
faceSet set(*iter());
faceSet set(io);
labelList faceLabels(set.sortedToc());
DynamicList<label> addressing(set.size());
@ -267,16 +259,12 @@ int main(int argc, char *argv[])
IOobjectList cellObjects(objects.lookupClass(cellSet::typeName));
//Pout<< "cellSets:" << cellObjects.names() << endl;
forAllConstIters(cellObjects, iter)
for (const IOobject& io : objects.sorted<cellSet>())
{
if (!slaveCellSets.found(iter.key()))
if (!slaveCellSets.found(io.name()))
{
// Not in memory. Load it.
cellSet set(*iter());
cellSet set(io);
labelList cellLabels(set.sortedToc());
// The original number of zones

View File

@ -116,11 +116,7 @@ int main(int argc, char *argv[])
// volScalarField
for
(
const word& fieldName
: objects.sortedNames(volScalarField::typeName)
)
for (const word& fieldName : objects.sortedNames<volScalarField>())
{
// Lookup field from dictionary and convert field
label unitNumber;
@ -140,11 +136,7 @@ int main(int argc, char *argv[])
// volVectorField
for
(
const word& fieldName
: objects.sortedNames(volVectorField::typeName)
)
for (const word& fieldName : objects.sortedNames<volVectorField>())
{
// Lookup field from dictionary and convert field
label unitNumber;

View File

@ -65,7 +65,7 @@ class readFieldsHandler
template<class FieldType>
bool loadAndStore(const IOobject& io)
{
if (FieldType::typeName == io.headerClassName())
if (io.isHeaderClass<FieldType>())
{
// Store field on mesh database
Log << " Reading " << io.name()

View File

@ -65,7 +65,7 @@ class readFieldsHandler
template<class FieldType>
bool loadAndStore(const IOobject& io)
{
if (FieldType::typeName == io.headerClassName())
if (io.isHeaderClass<FieldType>())
{
// Store field on mesh database
Log << " Reading " << io.name()