From 8e0981d9ed28706ec723b28d6d76530ab899e751 Mon Sep 17 00:00:00 2001 From: Henry Weller <http://cfd.direct> Date: Fri, 9 Sep 2016 11:01:37 +0100 Subject: [PATCH] functionObjectList::readFunctionObject: Added support for region specification Now the postProcess utility '-region' option works correctly, e.g. for the chtMultiRegionSimpleFoam/heatExchanger case postProcess -region air -func "mag(U)" calculates 'mag(U)' for all the time steps in region 'air'. --- .../functionObjectList/functionObjectList.C | 33 +++++++++++++++++-- .../functionObjectList/functionObjectList.H | 3 +- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C index 7bd1882942b..04cfc5acfb4 100644 --- a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C +++ b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C @@ -151,7 +151,8 @@ bool Foam::functionObjectList::readFunctionObject ( const string& funcNameArgs, dictionary& functionsDict, - HashSet<word>& requiredFields + HashSet<word>& requiredFields, + const word& region ) { // Parse the optional functionObject arguments: @@ -291,6 +292,12 @@ bool Foam::functionObjectList::readFunctionObject funcDict.set(entry::New(entryStream).ptr()); } + // Insert the region name if specified + if (region != word::null) + { + funcDict.set("region", region); + } + // Merge this functionObject dictionary into functionsDict dictionary funcArgsDict; funcArgsDict.add(string::validate<word>(funcNameArgs), funcDict); @@ -352,6 +359,14 @@ Foam::autoPtr<Foam::functionObjectList> Foam::functionObjectList::New dictionary& functionsDict = controlDict.subDict("functions"); + word region = word::null; + + // Set the region name if specified + if (args.optionFound("region")) + { + region = args["region"]; + } + if ( args.optionFound("dict") @@ -377,7 +392,13 @@ Foam::autoPtr<Foam::functionObjectList> Foam::functionObjectList::New if (args.optionFound("func")) { - readFunctionObject(args["func"], functionsDict, requiredFields); + readFunctionObject + ( + args["func"], + functionsDict, + requiredFields, + region + ); } if (args.optionFound("funcs")) @@ -386,7 +407,13 @@ Foam::autoPtr<Foam::functionObjectList> Foam::functionObjectList::New forAll(funcs, i) { - readFunctionObject(funcs[i], functionsDict, requiredFields); + readFunctionObject + ( + funcs[i], + functionsDict, + requiredFields, + region + ); } } diff --git a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.H b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.H index da27e7d7f36..405e6133692 100644 --- a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.H +++ b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.H @@ -218,7 +218,8 @@ public: ( const string& funcNameArgs0, dictionary& functionsDict, - HashSet<word>& requiredFields + HashSet<word>& requiredFields, + const word& region = word::null ); //- Read and set the function objects if their data have changed -- GitLab