ENH: allow wordHashSet filter for IOobjectList::names

- simplifies usage.
  Support syncPar check on names() to detect inconsistencies.

- simplify readFields, ReadFields and other routines by using these
  new methods.
This commit is contained in:
Mark Olesen
2018-07-26 14:56:52 +02:00
parent a8ef5610d0
commit 02ad76df4f
51 changed files with 1434 additions and 1397 deletions

View File

@ -173,21 +173,21 @@ bool Foam::domainDecomposition::writeDecomposition(const bool decomposeSets)
IOobjectList objects(*this, facesInstance(), "polyMesh/sets");
{
IOobjectList cSets(objects.lookupClass(cellSet::typeName));
forAllConstIter(IOobjectList, cSets, iter)
forAllConstIters(cSets, iter)
{
cellSets.append(new cellSet(*iter()));
}
}
{
IOobjectList fSets(objects.lookupClass(faceSet::typeName));
forAllConstIter(IOobjectList, fSets, iter)
forAllConstIters(fSets, iter)
{
faceSets.append(new faceSet(*iter()));
}
}
{
IOobjectList pSets(objects.lookupClass(pointSet::typeName));
forAllConstIter(IOobjectList, pSets, iter)
forAllConstIters(pSets, iter)
{
pointSets.append(new pointSet(*iter()));
}

View File

@ -52,7 +52,7 @@ void Foam::lagrangianFieldDecomposer::readFields
);
label lagrangianFieldi = 0;
forAllIter(IOobjectList, lagrangianTypeObjects, iter)
forAllConstIters(lagrangianTypeObjects, iter)
{
lagrangianFields[cloudI].set
(
@ -97,7 +97,7 @@ void Foam::lagrangianFieldDecomposer::readFieldFields
label lagrangianFieldi = 0;
forAllIter(IOobjectList, lagrangianTypeObjectsA, iter)
forAllConstIters(lagrangianTypeObjectsA, iter)
{
lagrangianFields[cloudI].set
(
@ -106,7 +106,7 @@ void Foam::lagrangianFieldDecomposer::readFieldFields
);
}
forAllIter(IOobjectList, lagrangianTypeObjectsB, iter)
forAllConstIters(lagrangianTypeObjectsB, iter)
{
lagrangianFields[cloudI].set
(
@ -129,22 +129,19 @@ Foam::lagrangianFieldDecomposer::decomposeField
Field<Type> procField(field, particleIndices_);
// Create the field for the processor
return tmp<IOField<Type>>
return tmp<IOField<Type>>::New
(
new IOField<Type>
IOobject
(
IOobject
(
field.name(),
procMesh_.time().timeName(),
cloud::prefix/cloudName,
procMesh_,
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
procField
)
field.name(),
procMesh_.time().timeName(),
cloud::prefix/cloudName,
procMesh_,
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
procField
);
}
@ -161,22 +158,19 @@ Foam::lagrangianFieldDecomposer::decomposeFieldField
Field<Field<Type>> procField(field, particleIndices_);
// Create the field for the processor
return tmp<CompactIOField<Field<Type>, Type>>
return tmp<CompactIOField<Field<Type>, Type>>::New
(
new CompactIOField<Field<Type>, Type>
IOobject
(
IOobject
(
field.name(),
procMesh_.time().timeName(),
cloud::prefix/cloudName,
procMesh_,
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
procField
)
field.name(),
procMesh_.time().timeName(),
cloud::prefix/cloudName,
procMesh_,
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
procField
);
}

View File

@ -39,14 +39,14 @@ void Foam::readFields
{
typedef GeometricField<Type, PatchField, GeoMesh> GeoField;
// Search list of objects for fields of type GeomField
// Search list of objects for fields of type GeoField
IOobjectList fieldObjects(objects.lookupClass(GeoField::typeName));
// Remove the cellDist field
IOobjectList::iterator celDistIter = fieldObjects.find("cellDist");
if (celDistIter != fieldObjects.end())
auto iter = fieldObjects.find("cellDist");
if (iter.found())
{
fieldObjects.erase(celDistIter);
fieldObjects.erase(iter);
}
// Get sorted set of names (different processors might read objects in