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

View File

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

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / 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
This file is part of OpenFOAM.
@ -191,7 +191,7 @@ bool Foam::functionObjects::fieldCoordinateSystemTransform::execute()
{
fieldSet_.updateSelection();
for (const word& fieldName : fieldSet_.selection())
for (const word& fieldName : fieldSet_.selectionNames())
{
transform<scalar>(fieldName);
transform<vector>(fieldName);
@ -210,9 +210,9 @@ bool Foam::functionObjects::fieldCoordinateSystemTransform::execute()
bool Foam::functionObjects::fieldCoordinateSystemTransform::write()
{
forAllConstIters(fieldSet_, iter)
for (const word& fieldName : fieldSet_.selectionNames())
{
writeObject(transformFieldName(iter()));
writeObject(transformFieldName(fieldName));
}
return true;

View File

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

View File

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

View File

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