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

This commit is contained in:
Henry Weller 2016-05-31 17:47:21 +01:00
parent c022a97ff4
commit 1be464d23d
4 changed files with 31 additions and 81 deletions

View File

@ -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

View File

@ -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;

View File

@ -1,34 +0,0 @@
/*--------------------------------*- 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;
}
}
// ************************************************************************* //

View File

@ -1,34 +0,0 @@
/*--------------------------------*- 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;
}
}
// ************************************************************************* //