mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Updated wildcard handling for function object field entries
This commit is contained in:
@ -176,7 +176,7 @@ int main(int argc, char *argv[])
|
|||||||
args,
|
args,
|
||||||
runTime,
|
runTime,
|
||||||
functionsDict,
|
functionsDict,
|
||||||
fields.selection()
|
fields
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -196,7 +196,7 @@ int main(int argc, char *argv[])
|
|||||||
args,
|
args,
|
||||||
runTime,
|
runTime,
|
||||||
functionsDict,
|
functionsDict,
|
||||||
fields.selection()
|
fields
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -54,7 +54,7 @@ bool Foam::functionEntries::includeFuncEntry::execute
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
const word fNameArgs(is);
|
const word fNameArgs(is);
|
||||||
HashSet<word> selectedFields;
|
HashSet<wordRe> selectedFields;
|
||||||
|
|
||||||
return functionObjectList::readFunctionObject
|
return functionObjectList::readFunctionObject
|
||||||
(
|
(
|
||||||
|
|||||||
@ -176,7 +176,7 @@ bool Foam::functionObjectList::readFunctionObject
|
|||||||
(
|
(
|
||||||
const string& funcNameArgs,
|
const string& funcNameArgs,
|
||||||
dictionary& functionsDict,
|
dictionary& functionsDict,
|
||||||
HashSet<word>& requiredFields,
|
HashSet<wordRe>& requiredFields,
|
||||||
const word& region
|
const word& region
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -190,7 +190,7 @@ bool Foam::functionObjectList::readFunctionObject
|
|||||||
word funcName(funcNameArgs);
|
word funcName(funcNameArgs);
|
||||||
|
|
||||||
int argLevel = 0;
|
int argLevel = 0;
|
||||||
wordList args;
|
wordReList args;
|
||||||
|
|
||||||
List<Tuple2<word, string>> namedArgs;
|
List<Tuple2<word, string>> namedArgs;
|
||||||
bool namedArg = false;
|
bool namedArg = false;
|
||||||
@ -236,11 +236,14 @@ bool Foam::functionObjectList::readFunctionObject
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
args.append
|
args.append
|
||||||
|
(
|
||||||
|
wordRe
|
||||||
(
|
(
|
||||||
word::validate
|
word::validate
|
||||||
(
|
(
|
||||||
funcNameArgs.substr(start, i - start)
|
funcNameArgs.substr(start, i - start)
|
||||||
)
|
)
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
start = i+1;
|
start = i+1;
|
||||||
@ -310,11 +313,11 @@ bool Foam::functionObjectList::readFunctionObject
|
|||||||
}
|
}
|
||||||
else if (funcDict.found("field"))
|
else if (funcDict.found("field"))
|
||||||
{
|
{
|
||||||
requiredFields.insert(word(funcDict.lookup("field")));
|
requiredFields.insert(wordRe(funcDict.lookup("field")));
|
||||||
}
|
}
|
||||||
else if (funcDict.found("fields"))
|
else if (funcDict.found("fields"))
|
||||||
{
|
{
|
||||||
requiredFields.insert(wordList(funcDict.lookup("fields")));
|
requiredFields.insert(wordReList(funcDict.lookup("fields")));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Insert named arguments
|
// Insert named arguments
|
||||||
@ -384,7 +387,7 @@ Foam::autoPtr<Foam::functionObjectList> Foam::functionObjectList::New
|
|||||||
const argList& args,
|
const argList& args,
|
||||||
const Time& runTime,
|
const Time& runTime,
|
||||||
dictionary& controlDict,
|
dictionary& controlDict,
|
||||||
HashSet<word>& requiredFields
|
HashSet<wordRe>& requiredFields
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
autoPtr<functionObjectList> functionsPtr;
|
autoPtr<functionObjectList> functionsPtr;
|
||||||
|
|||||||
@ -155,7 +155,7 @@ public:
|
|||||||
const argList& args,
|
const argList& args,
|
||||||
const Time& runTime,
|
const Time& runTime,
|
||||||
dictionary& controlDict,
|
dictionary& controlDict,
|
||||||
HashSet<word>& requiredFields
|
HashSet<wordRe>& requiredFields
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@ -236,7 +236,7 @@ public:
|
|||||||
(
|
(
|
||||||
const string& funcNameArgs0,
|
const string& funcNameArgs0,
|
||||||
dictionary& functionsDict,
|
dictionary& functionsDict,
|
||||||
HashSet<word>& requiredFields,
|
HashSet<wordRe>& requiredFields,
|
||||||
const word& region = word::null
|
const word& region = word::null
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -101,12 +101,6 @@ public:
|
|||||||
return selection_;
|
return selection_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Return the current field selection
|
|
||||||
wordHashSet& selection()
|
|
||||||
{
|
|
||||||
return selection_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Read the fieldSelection data from dictionary
|
//- Read the fieldSelection data from dictionary
|
||||||
virtual bool read(const dictionary& dict);
|
virtual bool read(const dictionary& dict);
|
||||||
|
|
||||||
|
|||||||
@ -29,6 +29,43 @@ License
|
|||||||
#include "fvPatchField.H"
|
#include "fvPatchField.H"
|
||||||
#include "surfaceMesh.H"
|
#include "surfaceMesh.H"
|
||||||
#include "fvsPatchField.H"
|
#include "fvsPatchField.H"
|
||||||
|
#include "pointMesh.H"
|
||||||
|
#include "pointPatchField.H"
|
||||||
|
#include "UniformDimensionedField.H"
|
||||||
|
|
||||||
|
void Foam::functionObjects::fileFieldSelection::addInternalFieldTypes
|
||||||
|
(
|
||||||
|
wordHashSet& set
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
const fvMesh& mesh = static_cast<const fvMesh&>(obr_);
|
||||||
|
|
||||||
|
const IOobjectList allObjects(mesh, mesh.time().timeName());
|
||||||
|
|
||||||
|
addFromFile<DimensionedField<scalar, volMesh>>(allObjects, set);
|
||||||
|
addFromFile<DimensionedField<vector, volMesh>>(allObjects, set);
|
||||||
|
addFromFile<DimensionedField<sphericalTensor, volMesh>>(allObjects, set);
|
||||||
|
addFromFile<DimensionedField<symmTensor, volMesh>>(allObjects, set);
|
||||||
|
addFromFile<DimensionedField<tensor, volMesh>>(allObjects, set);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::functionObjects::fileFieldSelection::addUniformFieldTypes
|
||||||
|
(
|
||||||
|
wordHashSet& set
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
const fvMesh& mesh = static_cast<const fvMesh&>(obr_);
|
||||||
|
|
||||||
|
const IOobjectList allObjects(mesh, mesh.time().timeName());
|
||||||
|
|
||||||
|
addFromFile<UniformDimensionedField<scalar>>(allObjects, set);
|
||||||
|
addFromFile<UniformDimensionedField<vector>>(allObjects, set);
|
||||||
|
addFromFile<UniformDimensionedField<sphericalTensor>>(allObjects, set);
|
||||||
|
addFromFile<UniformDimensionedField<symmTensor>>(allObjects, set);
|
||||||
|
addFromFile<UniformDimensionedField<tensor>>(allObjects, set);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -54,8 +91,16 @@ bool Foam::functionObjects::fileFieldSelection::updateSelection()
|
|||||||
wordHashSet oldSet;
|
wordHashSet oldSet;
|
||||||
oldSet.swap(selection_);
|
oldSet.swap(selection_);
|
||||||
|
|
||||||
addFileGeoFields<fvPatchField, volMesh>(selection_);
|
// Geometric fields
|
||||||
addFileGeoFields<fvsPatchField, surfaceMesh>(selection_);
|
addGeoFieldTypes<fvPatchField, volMesh>(selection_);
|
||||||
|
addGeoFieldTypes<fvsPatchField, surfaceMesh>(selection_);
|
||||||
|
addGeoFieldTypes<pointPatchField, pointMesh>(selection_);
|
||||||
|
|
||||||
|
// Internal fields
|
||||||
|
addInternalFieldTypes(selection_);
|
||||||
|
|
||||||
|
// Uniform fields
|
||||||
|
addUniformFieldTypes(selection_);
|
||||||
|
|
||||||
return selection_ != oldSet;
|
return selection_ != oldSet;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -69,7 +69,13 @@ protected:
|
|||||||
|
|
||||||
//- Add registered GeometricField types to selection
|
//- Add registered GeometricField types to selection
|
||||||
template<template<class> class PatchType, class MeshType>
|
template<template<class> class PatchType, class MeshType>
|
||||||
void addFileGeoFields(wordHashSet& set) const;
|
void addGeoFieldTypes(wordHashSet& set) const;
|
||||||
|
|
||||||
|
//- Add registered Internal types to selection
|
||||||
|
void addInternalFieldTypes(wordHashSet& set) const;
|
||||||
|
|
||||||
|
//- Add registered uniform types to selection
|
||||||
|
void addUniformFieldTypes(wordHashSet& set) const;
|
||||||
|
|
||||||
//- Add objects of a given type
|
//- Add objects of a given type
|
||||||
template<class Type>
|
template<class Type>
|
||||||
|
|||||||
@ -37,7 +37,7 @@ void Foam::functionObjects::fileFieldSelection::addFromFile
|
|||||||
wordHashSet& set
|
wordHashSet& set
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
DynamicList<word> names;
|
DynamicList<word> names(this->size());
|
||||||
|
|
||||||
for (const wordRe& fieldName : *this)
|
for (const wordRe& fieldName : *this)
|
||||||
{
|
{
|
||||||
@ -49,7 +49,7 @@ void Foam::functionObjects::fileFieldSelection::addFromFile
|
|||||||
|
|
||||||
|
|
||||||
template<template<class> class PatchType, class MeshType>
|
template<template<class> class PatchType, class MeshType>
|
||||||
void Foam::functionObjects::fileFieldSelection::addFileGeoFields
|
void Foam::functionObjects::fileFieldSelection::addGeoFieldTypes
|
||||||
(
|
(
|
||||||
wordHashSet& set
|
wordHashSet& set
|
||||||
) const
|
) const
|
||||||
|
|||||||
Reference in New Issue
Block a user