diff --git a/applications/utilities/postProcessing/postProcess/postProcess.C b/applications/utilities/postProcessing/postProcess/postProcess.C index 884fe1d39839dfa8035e8c07e5859de7d7ec46df..d95e3c49a769e2a352488489ee5472fc900a51e5 100644 --- a/applications/utilities/postProcessing/postProcess/postProcess.C +++ b/applications/utilities/postProcessing/postProcess/postProcess.C @@ -176,7 +176,7 @@ int main(int argc, char *argv[]) args, runTime, functionsDict, - fields.selection() + fields ) ); @@ -196,7 +196,7 @@ int main(int argc, char *argv[]) args, runTime, functionsDict, - fields.selection() + fields ); } diff --git a/src/OpenFOAM/db/dictionary/functionEntries/includeFuncEntry/includeFuncEntry.C b/src/OpenFOAM/db/dictionary/functionEntries/includeFuncEntry/includeFuncEntry.C index 288c1889044eaf3c10d7240f2eb51117c7767e80..381c1d244f31a14fe07358475bc61db6ce8e707c 100644 --- a/src/OpenFOAM/db/dictionary/functionEntries/includeFuncEntry/includeFuncEntry.C +++ b/src/OpenFOAM/db/dictionary/functionEntries/includeFuncEntry/includeFuncEntry.C @@ -54,7 +54,7 @@ bool Foam::functionEntries::includeFuncEntry::execute ) { const word fNameArgs(is); - HashSet<word> selectedFields; + HashSet<wordRe> selectedFields; return functionObjectList::readFunctionObject ( diff --git a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C index 98174a669e72bb39c6272e7e6f9537062074f3b4..bb1d7c7e9bfc3df6a2e672e599f595a2e27dbfbd 100644 --- a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C +++ b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.C @@ -176,7 +176,7 @@ bool Foam::functionObjectList::readFunctionObject ( const string& funcNameArgs, dictionary& functionsDict, - HashSet<word>& requiredFields, + HashSet<wordRe>& requiredFields, const word& region ) { @@ -190,7 +190,7 @@ bool Foam::functionObjectList::readFunctionObject word funcName(funcNameArgs); int argLevel = 0; - wordList args; + wordReList args; List<Tuple2<word, string>> namedArgs; bool namedArg = false; @@ -237,9 +237,12 @@ bool Foam::functionObjectList::readFunctionObject { args.append ( - word::validate + wordRe ( - funcNameArgs.substr(start, i - start) + word::validate + ( + funcNameArgs.substr(start, i - start) + ) ) ); } @@ -310,11 +313,11 @@ bool Foam::functionObjectList::readFunctionObject } else if (funcDict.found("field")) { - requiredFields.insert(word(funcDict.lookup("field"))); + requiredFields.insert(wordRe(funcDict.lookup("field"))); } else if (funcDict.found("fields")) { - requiredFields.insert(wordList(funcDict.lookup("fields"))); + requiredFields.insert(wordReList(funcDict.lookup("fields"))); } // Insert named arguments @@ -384,7 +387,7 @@ Foam::autoPtr<Foam::functionObjectList> Foam::functionObjectList::New const argList& args, const Time& runTime, dictionary& controlDict, - HashSet<word>& requiredFields + HashSet<wordRe>& requiredFields ) { autoPtr<functionObjectList> functionsPtr; diff --git a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.H b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.H index e32b01e25b0adfd46addf6d0dcd1fcf87ea9787f..ad81a3cf60cd7b866aac9f34b16947c1bd229dde 100644 --- a/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.H +++ b/src/OpenFOAM/db/functionObjects/functionObjectList/functionObjectList.H @@ -155,7 +155,7 @@ public: const argList& args, const Time& runTime, dictionary& controlDict, - HashSet<word>& requiredFields + HashSet<wordRe>& requiredFields ); @@ -236,7 +236,7 @@ public: ( const string& funcNameArgs0, dictionary& functionsDict, - HashSet<word>& requiredFields, + HashSet<wordRe>& requiredFields, const word& region = word::null ); diff --git a/src/finiteVolume/functionObjects/fieldSelection/fieldSelection.H b/src/finiteVolume/functionObjects/fieldSelection/fieldSelection.H index 9d874f8322ffa467d42cec5a16b4e0b224c50e48..1ff154ec3b92d1115cc3ec7c88d77bded99e2551 100644 --- a/src/finiteVolume/functionObjects/fieldSelection/fieldSelection.H +++ b/src/finiteVolume/functionObjects/fieldSelection/fieldSelection.H @@ -101,12 +101,6 @@ public: return selection_; } - //- Return the current field selection - wordHashSet& selection() - { - return selection_; - } - //- Read the fieldSelection data from dictionary virtual bool read(const dictionary& dict); diff --git a/src/finiteVolume/functionObjects/fieldSelection/fileFieldSelection.C b/src/finiteVolume/functionObjects/fieldSelection/fileFieldSelection.C index 9d55a55393916ba8f7cbd7dd5fee2b3d3555dbe3..0456be0dc1e34a6a23b3c766704da0f513d632c8 100644 --- a/src/finiteVolume/functionObjects/fieldSelection/fileFieldSelection.C +++ b/src/finiteVolume/functionObjects/fieldSelection/fileFieldSelection.C @@ -29,6 +29,43 @@ License #include "fvPatchField.H" #include "surfaceMesh.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 * * * * * * * * * * * * * * // @@ -54,8 +91,16 @@ bool Foam::functionObjects::fileFieldSelection::updateSelection() wordHashSet oldSet; oldSet.swap(selection_); - addFileGeoFields<fvPatchField, volMesh>(selection_); - addFileGeoFields<fvsPatchField, surfaceMesh>(selection_); + // Geometric fields + addGeoFieldTypes<fvPatchField, volMesh>(selection_); + addGeoFieldTypes<fvsPatchField, surfaceMesh>(selection_); + addGeoFieldTypes<pointPatchField, pointMesh>(selection_); + + // Internal fields + addInternalFieldTypes(selection_); + + // Uniform fields + addUniformFieldTypes(selection_); return selection_ != oldSet; } diff --git a/src/finiteVolume/functionObjects/fieldSelection/fileFieldSelection.H b/src/finiteVolume/functionObjects/fieldSelection/fileFieldSelection.H index d1d3a986c70718c3eeec4c877f9001b59bf96590..8a3f1160a12f378a3bcab85bee1d1ae14592e7d8 100644 --- a/src/finiteVolume/functionObjects/fieldSelection/fileFieldSelection.H +++ b/src/finiteVolume/functionObjects/fieldSelection/fileFieldSelection.H @@ -69,7 +69,13 @@ protected: //- Add registered GeometricField types to selection 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 template<class Type> diff --git a/src/finiteVolume/functionObjects/fieldSelection/fileFieldSelectionTemplates.C b/src/finiteVolume/functionObjects/fieldSelection/fileFieldSelectionTemplates.C index f915d0499714358b4a5d835022dd53c2080e6100..ecfa95bdb4a2e4f6b2e52ec3c2541be779e37750 100644 --- a/src/finiteVolume/functionObjects/fieldSelection/fileFieldSelectionTemplates.C +++ b/src/finiteVolume/functionObjects/fieldSelection/fileFieldSelectionTemplates.C @@ -37,7 +37,7 @@ void Foam::functionObjects::fileFieldSelection::addFromFile wordHashSet& set ) const { - DynamicList<word> names; + DynamicList<word> names(this->size()); for (const wordRe& fieldName : *this) { @@ -49,7 +49,7 @@ void Foam::functionObjects::fileFieldSelection::addFromFile template<template<class> class PatchType, class MeshType> -void Foam::functionObjects::fileFieldSelection::addFileGeoFields +void Foam::functionObjects::fileFieldSelection::addGeoFieldTypes ( wordHashSet& set ) const