ENH: Updated fieldSelection dependent code

This commit is contained in:
Andrew Heather
2019-01-21 11:56:53 +00:00
parent d11a5091a4
commit bc12ce2ac9
6 changed files with 28 additions and 23 deletions

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
\\/ M anipulation | Copyright (C) 2018 OpenCFD Ltd. \\/ M anipulation | Copyright (C) 2018-2019 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -164,17 +164,22 @@ int main(int argc, char *argv[])
functionObjects::fileFieldSelection fields(mesh); functionObjects::fileFieldSelection fields(mesh);
if (args.found("fields")) if (args.found("fields"))
{ {
fields.insert(args.getList<wordRe>("fields")); fields.resetFieldFilters
(
HashSet<wordRe>(args.getList<wordRe>("fields"))
);
} }
if (args.found("field")) if (args.found("field"))
{ {
fields.insert(args.opt<wordRe>("field")); fields.resetFieldFilters(args.opt<wordRe>("field"));
} }
// Externally stored dictionary for functionObjectList // Externally stored dictionary for functionObjectList
// if not constructed from runTime // if not constructed from runTime
dictionary functionsDict; dictionary functionsDict;
HashSet<wordRe> fieldFilters(fields.filters());
// Construct functionObjectList // Construct functionObjectList
autoPtr<functionObjectList> functionsPtr autoPtr<functionObjectList> functionsPtr
( (
@ -183,7 +188,7 @@ int main(int argc, char *argv[])
args, args,
runTime, runTime,
functionsDict, functionsDict,
fields fieldFilters // include any additional command-line fields
) )
); );
@ -193,8 +198,6 @@ int main(int argc, char *argv[])
Info<< "Time = " << runTime.timeName() << endl; Info<< "Time = " << runTime.timeName() << endl;
fields.updateSelection();
if (mesh.readUpdate() != polyMesh::UNCHANGED) if (mesh.readUpdate() != polyMesh::UNCHANGED)
{ {
// Update functionObjectList if mesh changes // Update functionObjectList if mesh changes
@ -205,10 +208,14 @@ int main(int argc, char *argv[])
args, args,
runTime, runTime,
functionsDict, functionsDict,
fields fieldFilters
); );
} }
fields.resetFieldFilters(fieldFilters);
fields.updateSelection();
const bool throwingIOErr = FatalIOError.throwExceptions(); const bool throwingIOErr = FatalIOError.throwExceptions();
try try
@ -218,7 +225,7 @@ int main(int argc, char *argv[])
args, args,
runTime, runTime,
mesh, mesh,
fields.selection(), fields.selectionNames(),
functionsPtr(), functionsPtr(),
timei == timeDirs.size()-1 timei == timeDirs.size()-1
); );

View File

@ -151,7 +151,7 @@ bool Foam::functionObjects::columnAverage::execute()
// Make fields up to date with current selection // Make fields up to date with current selection
fieldSet_.updateSelection(); fieldSet_.updateSelection();
for (const word& fieldName : fieldSet_.selection()) for (const word& fieldName : fieldSet_.selectionNames())
{ {
columnAverageField<scalar>(fieldName); columnAverageField<scalar>(fieldName);
columnAverageField<vector>(fieldName); columnAverageField<vector>(fieldName);
@ -166,7 +166,7 @@ bool Foam::functionObjects::columnAverage::execute()
bool Foam::functionObjects::columnAverage::write() bool Foam::functionObjects::columnAverage::write()
{ {
for (const word& fieldName : fieldSet_.selection()) for (const word& fieldName : fieldSet_.selectionNames())
{ {
const word resultName("columnAverage(" + fieldName + ")"); const word resultName("columnAverage(" + fieldName + ")");
const regIOobject* obj = const regIOobject* obj =

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation | Copyright (C) 2017-2018 OpenCFD Ltd. \\/ M anipulation | Copyright (C) 2017-2019 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -191,7 +191,7 @@ bool Foam::functionObjects::fieldCoordinateSystemTransform::execute()
{ {
fieldSet_.updateSelection(); fieldSet_.updateSelection();
for (const word& fieldName : fieldSet_.selection()) for (const word& fieldName : fieldSet_.selectionNames())
{ {
transform<scalar>(fieldName); transform<scalar>(fieldName);
transform<vector>(fieldName); transform<vector>(fieldName);
@ -210,9 +210,9 @@ bool Foam::functionObjects::fieldCoordinateSystemTransform::execute()
bool Foam::functionObjects::fieldCoordinateSystemTransform::write() bool Foam::functionObjects::fieldCoordinateSystemTransform::write()
{ {
forAllConstIters(fieldSet_, iter) for (const word& fieldName : fieldSet_.selectionNames())
{ {
writeObject(transformFieldName(iter())); writeObject(transformFieldName(fieldName));
} }
return true; return true;

View File

@ -60,9 +60,8 @@ void Foam::functionObjects::fieldExtents::writeFileHeader(Ostream& os)
writeCommented(os, "Time"); writeCommented(os, "Time");
forAllConstIters(fieldSet_.selection(), iter) for (const word& fieldName : fieldSet_.selectionNames())
{ {
const word& fieldName = iter();
if (internalField_) if (internalField_)
{ {
writeTabbed(os, fieldName + "_internal"); writeTabbed(os, fieldName + "_internal");
@ -183,7 +182,7 @@ bool Foam::functionObjects::fieldExtents::write()
Log << type() << " " << name() << " write:" << nl; Log << type() << " " << name() << " write:" << nl;
for (const word& fieldName : fieldSet_.selection()) for (const word& fieldName : fieldSet_.selectionNames())
{ {
calcFieldExtents<scalar>(fieldName, true); calcFieldExtents<scalar>(fieldName, true);
calcFieldExtents<vector>(fieldName); calcFieldExtents<vector>(fieldName);

View File

@ -90,9 +90,8 @@ void Foam::functionObjects::fieldMinMax::writeFileHeader(Ostream& os)
} }
else else
{ {
forAllConstIters(fieldSet_.selection(), iter) for (const word& fieldName : fieldSet_.selectionNames())
{ {
const word& fieldName = iter();
writeTabbed(os, "min(" + fieldName + ')'); writeTabbed(os, "min(" + fieldName + ')');
writeTabbed(os, "max(" + fieldName + ')'); writeTabbed(os, "max(" + fieldName + ')');
} }
@ -153,7 +152,7 @@ bool Foam::functionObjects::fieldMinMax::write()
if (!location_) writeTime(file()); if (!location_) writeTime(file());
Log << type() << " " << name() << " write:" << nl; Log << type() << " " << name() << " write:" << nl;
for (const word& fieldName : fieldSet_.selection()) for (const word& fieldName : fieldSet_.selectionNames())
{ {
calcMinMaxFields<scalar>(fieldName, mdCmpt); calcMinMaxFields<scalar>(fieldName, mdCmpt);
calcMinMaxFields<vector>(fieldName, mode_); calcMinMaxFields<vector>(fieldName, mode_);

View File

@ -64,7 +64,7 @@ void Foam::functionObjects::residuals::writeFileHeader(Ostream& os)
writeCommented(os, "Time"); writeCommented(os, "Time");
for (const word& fieldName : fieldSet_.selection()) for (const word& fieldName : fieldSet_.selectionNames())
{ {
writeFileHeader<scalar>(os, fieldName); writeFileHeader<scalar>(os, fieldName);
writeFileHeader<vector>(os, fieldName); writeFileHeader<vector>(os, fieldName);
@ -193,7 +193,7 @@ bool Foam::functionObjects::residuals::execute()
if (writeFields_) if (writeFields_)
{ {
for (const word& fieldName : fieldSet_.selection()) for (const word& fieldName : fieldSet_.selectionNames())
{ {
initialiseField<scalar>(fieldName); initialiseField<scalar>(fieldName);
initialiseField<vector>(fieldName); initialiseField<vector>(fieldName);
@ -214,7 +214,7 @@ bool Foam::functionObjects::residuals::write()
{ {
writeTime(file()); writeTime(file());
for (const word& fieldName : fieldSet_.selection()) for (const word& fieldName : fieldSet_.selectionNames())
{ {
writeResidual<scalar>(fieldName); writeResidual<scalar>(fieldName);
writeResidual<vector>(fieldName); writeResidual<vector>(fieldName);