Commit a0c343ab authored by Henry Weller's avatar Henry Weller
Browse files

functionObjectList::readFunctionObject: Add support for functionObject arguments containing '()'s

parent f823a0ce
......@@ -26,12 +26,11 @@ Class
Description
Specify a functionObject dictionary file to include, expects the
functionObject name to follow (without quotes).
functionObject name to follow with option arguments (without quotes).
Search for functionObject dictionary file in
user/group/shipped directories.
The search scheme allows for version-specific and
version-independent files using the following hierarchy:
Searches for functionObject dictionary file in user/group/shipped
directories allowing for version-specific and version-independent files
using the following hierarchy:
- \b user settings:
- ~/.OpenFOAM/\<VERSION\>/caseDicts/postProcessing
- ~/.OpenFOAM/caseDicts/postProcessing
......@@ -44,9 +43,16 @@ Description
- \b other (shipped) settings:
- $WM_PROJECT_DIR/etc/caseDicts/postProcessing
An example of the \c \#includeFunc directive:
The optional field arguments included in the name are inserted in 'field' or
'fields' entries in the functionObject dictionary and included in the name
of the functionObject entry to avoid conflict.
Examples:
\verbatim
#includeFunc <funcName>
#includeFunc Q
#includeFunc components(U)
#includeFunc mag(Ux)
#includeFunc mag(p)
\endverbatim
See Also
......
......@@ -113,6 +113,7 @@ bool Foam::functionObjectList::readFunctionObject
string::stripInvalid<word>(funcNameArgs);
word funcName(funcNameArgs);
int argLevel = 0;
wordList args;
word::size_type start = 0;
......@@ -129,18 +130,29 @@ bool Foam::functionObjectList::readFunctionObject
if (c == '(')
{
funcName.resize(i);
start = i+1;
if (argLevel == 0)
{
funcName.resize(i);
start = i+1;
}
++argLevel;
}
else if (c == ',')
{
args.append(funcNameArgs(start, i - start));
start = i+1;
if (argLevel == 1)
{
args.append(funcNameArgs(start, i - start));
start = i+1;
}
}
else if (c == ')')
{
args.append(funcNameArgs(start, i - start));
break;
if (argLevel == 1)
{
args.append(funcNameArgs(start, i - start));
break;
}
--argLevel;
}
++i;
......
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object magU;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
sides
{
type calculated;
value uniform 0;
}
empty
{
type empty;
}
}
// ************************************************************************* //
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object magU;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
sides
{
type calculated;
value uniform 0;
}
empty
{
type empty;
}
}
// ************************************************************************* //
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment