mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
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:
@ -298,10 +298,10 @@ void rewriteField
|
||||
|
||||
label nChanged = 0;
|
||||
|
||||
forAllConstIter(HashTable<word>, thisNames, iter)
|
||||
forAllConstIters(thisNames, iter)
|
||||
{
|
||||
const word& patchName = iter.key();
|
||||
const word& newName = iter();
|
||||
const word& newName = iter.object();
|
||||
|
||||
Info<< "Looking for entry for patch " << patchName << endl;
|
||||
|
||||
@ -376,13 +376,13 @@ void rewriteFields
|
||||
const HashTable<word>& nbrNames
|
||||
)
|
||||
{
|
||||
forAll(fieldNames, i)
|
||||
for (const word& fieldName : fieldNames)
|
||||
{
|
||||
rewriteField
|
||||
(
|
||||
isTestRun,
|
||||
runTime,
|
||||
fieldNames[i],
|
||||
fieldName,
|
||||
thisNames,
|
||||
nbrNames
|
||||
);
|
||||
|
||||
@ -51,7 +51,7 @@ void MapConsistentVolFields
|
||||
|
||||
IOobjectList fields = objects.lookupClass(fieldType::typeName);
|
||||
|
||||
forAllIter(IOobjectList, fields, fieldIter)
|
||||
forAllConstIters(fields, fieldIter)
|
||||
{
|
||||
Info<< " interpolating " << fieldIter()->name()
|
||||
<< endl;
|
||||
|
||||
@ -60,7 +60,7 @@ void MapLagrangianFields
|
||||
{
|
||||
IOobjectList fields = objects.lookupClass(IOField<Type>::typeName);
|
||||
|
||||
forAllIter(IOobjectList, fields, fieldIter)
|
||||
forAllConstIters(fields, fieldIter)
|
||||
{
|
||||
Info<< " mapping lagrangian field "
|
||||
<< fieldIter()->name() << endl;
|
||||
@ -98,7 +98,7 @@ void MapLagrangianFields
|
||||
IOobjectList fieldFields =
|
||||
objects.lookupClass(IOField<Field<Type>>::typeName);
|
||||
|
||||
forAllIter(IOobjectList, fieldFields, fieldIter)
|
||||
forAllConstIters(fieldFields, fieldIter)
|
||||
{
|
||||
Info<< " mapping lagrangian fieldField "
|
||||
<< fieldIter()->name() << endl;
|
||||
@ -137,7 +137,7 @@ void MapLagrangianFields
|
||||
IOobjectList fieldFields =
|
||||
objects.lookupClass(CompactIOField<Field<Type>, Type>::typeName);
|
||||
|
||||
forAllIter(IOobjectList, fieldFields, fieldIter)
|
||||
forAllConstIters(fieldFields, fieldIter)
|
||||
{
|
||||
Info<< " mapping lagrangian fieldField "
|
||||
<< fieldIter()->name() << endl;
|
||||
|
||||
@ -51,7 +51,7 @@ void MapVolFields
|
||||
|
||||
IOobjectList fields = objects.lookupClass(fieldType::typeName);
|
||||
|
||||
forAllIter(IOobjectList, fields, fieldIter)
|
||||
forAllConstIters(fields, fieldIter)
|
||||
{
|
||||
IOobject fieldTargetIOobject
|
||||
(
|
||||
|
||||
@ -39,7 +39,7 @@ void UnMapped(const IOobjectList& objects)
|
||||
{
|
||||
IOobjectList fields = objects.lookupClass(Type::typeName);
|
||||
|
||||
forAllConstIter(IOobjectList, fields, fieldIter)
|
||||
forAllConstIters(fields, fieldIter)
|
||||
{
|
||||
mvBak(fieldIter()->objectPath(), "unmapped");
|
||||
}
|
||||
|
||||
@ -58,7 +58,7 @@ void MapLagrangianFields
|
||||
{
|
||||
IOobjectList fields = objects.lookupClass(IOField<Type>::typeName);
|
||||
|
||||
forAllIter(IOobjectList, fields, fieldIter)
|
||||
forAllConstIters(fields, fieldIter)
|
||||
{
|
||||
const word& fieldName = fieldIter()->name();
|
||||
|
||||
@ -97,7 +97,7 @@ void MapLagrangianFields
|
||||
IOobjectList fieldFields =
|
||||
objects.lookupClass(IOField<Field<Type>>::typeName);
|
||||
|
||||
forAllIter(IOobjectList, fieldFields, fieldIter)
|
||||
forAllConstIters(fieldFields, fieldIter)
|
||||
{
|
||||
const word& fieldName = fieldIter()->name();
|
||||
|
||||
@ -149,7 +149,7 @@ void MapLagrangianFields
|
||||
IOobjectList fieldFields =
|
||||
objects.lookupClass(CompactIOField<Field<Type>, Type>::typeName);
|
||||
|
||||
forAllIter(IOobjectList, fieldFields, fieldIter)
|
||||
forAllConstIters(fieldFields, fieldIter)
|
||||
{
|
||||
const word& fieldName = fieldIter()->name();
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2018 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -131,52 +131,56 @@ void MapVolFields
|
||||
const fvMesh& meshSource = static_cast<const fvMesh&>(interp.srcRegion());
|
||||
const fvMesh& meshTarget = static_cast<const fvMesh&>(interp.tgtRegion());
|
||||
|
||||
IOobjectList fields = objects.lookupClass(fieldType::typeName);
|
||||
// Available fields, sorted order
|
||||
const wordList fieldNames =
|
||||
(
|
||||
selectedFields.empty()
|
||||
? objects.sortedNames(fieldType::typeName)
|
||||
: objects.sortedNames(fieldType::typeName, selectedFields)
|
||||
);
|
||||
|
||||
forAllIter(IOobjectList, fields, fieldIter)
|
||||
for (const word& fieldName : fieldNames)
|
||||
{
|
||||
const word& fieldName = fieldIter()->name();
|
||||
const fieldType fieldSource(*(objects[fieldName]), meshSource);
|
||||
|
||||
if (selectedFields.empty() || selectedFields.found(fieldName))
|
||||
IOobject targetIO
|
||||
(
|
||||
fieldName,
|
||||
meshTarget.time().timeName(),
|
||||
meshTarget,
|
||||
IOobject::MUST_READ
|
||||
);
|
||||
|
||||
if (targetIO.typeHeaderOk<fieldType>(true))
|
||||
{
|
||||
const fieldType fieldSource(*fieldIter(), meshSource);
|
||||
Info<< " interpolating onto existing field "
|
||||
<< fieldName << endl;
|
||||
|
||||
IOobject targetIO
|
||||
fieldType fieldTarget(targetIO, meshTarget);
|
||||
|
||||
interp.mapSrcToTgt(fieldSource, cop, fieldTarget);
|
||||
|
||||
evaluateConstraintTypes(fieldTarget);
|
||||
|
||||
fieldTarget.write();
|
||||
}
|
||||
else
|
||||
{
|
||||
Info<< " creating new field "
|
||||
<< fieldName << endl;
|
||||
|
||||
targetIO.readOpt() = IOobject::NO_READ;
|
||||
|
||||
tmp<fieldType> tfieldTarget
|
||||
(
|
||||
fieldName,
|
||||
meshTarget.time().timeName(),
|
||||
meshTarget,
|
||||
IOobject::MUST_READ
|
||||
interp.mapSrcToTgt(fieldSource, cop)
|
||||
);
|
||||
|
||||
if (targetIO.typeHeaderOk<fieldType>(true))
|
||||
{
|
||||
Info<< " interpolating onto existing field "
|
||||
<< fieldName << endl;
|
||||
fieldType fieldTarget(targetIO, meshTarget);
|
||||
fieldType fieldTarget(targetIO, tfieldTarget);
|
||||
|
||||
interp.mapSrcToTgt(fieldSource, cop, fieldTarget);
|
||||
evaluateConstraintTypes(fieldTarget);
|
||||
|
||||
evaluateConstraintTypes(fieldTarget);
|
||||
|
||||
fieldTarget.write();
|
||||
}
|
||||
else
|
||||
{
|
||||
Info<< " creating new field "
|
||||
<< fieldName << endl;
|
||||
|
||||
targetIO.readOpt() = IOobject::NO_READ;
|
||||
|
||||
tmp<fieldType>
|
||||
tfieldTarget(interp.mapSrcToTgt(fieldSource, cop));
|
||||
|
||||
fieldType fieldTarget(targetIO, tfieldTarget);
|
||||
|
||||
evaluateConstraintTypes(fieldTarget);
|
||||
|
||||
fieldTarget.write();
|
||||
}
|
||||
fieldTarget.write();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,7 +39,7 @@ void UnMapped(const IOobjectList& objects)
|
||||
{
|
||||
IOobjectList fields = objects.lookupClass(Type::typeName);
|
||||
|
||||
forAllConstIter(IOobjectList, fields, fieldIter)
|
||||
forAllConstIters(fields, fieldIter)
|
||||
{
|
||||
mvBak(fieldIter()->objectPath(), "unmapped");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user