diff --git a/src/OpenFOAM/db/functionObjects/functionObject/functionObject.C b/src/OpenFOAM/db/functionObjects/functionObject/functionObject.C index 2229135ae3..1357a3348c 100644 --- a/src/OpenFOAM/db/functionObjects/functionObject/functionObject.C +++ b/src/OpenFOAM/db/functionObjects/functionObject/functionObject.C @@ -48,15 +48,25 @@ Foam::word Foam::functionObject::outputPrefix("postProcessing"); Foam::word Foam::functionObject::scopedName(const word& name) const { - return name_ + ":" + name; + if (scopedNames_) + { + return IOobject::scopedName(name_, name); + } + + return name_; } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::functionObject::functionObject(const word& name) +Foam::functionObject::functionObject +( + const word& name, + const bool scopedNames +) : name_(name), + scopedNames_(scopedNames), log(postProcess) {} @@ -128,16 +138,23 @@ Foam::autoPtr Foam::functionObject::New // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -const Foam::word& Foam::functionObject::name() const +const Foam::word& Foam::functionObject::name() const noexcept { return name_; } +bool Foam::functionObject::scopedNames() const noexcept +{ + return scopedNames_; +} + + bool Foam::functionObject::read(const dictionary& dict) { if (!postProcess) { + scopedNames_ = dict.getOrDefault("scopedNames", true); log = dict.getOrDefault("log", true); } diff --git a/src/OpenFOAM/db/functionObjects/functionObject/functionObject.H b/src/OpenFOAM/db/functionObjects/functionObject/functionObject.H index e22b4dfa09..acef941c7d 100644 --- a/src/OpenFOAM/db/functionObjects/functionObject/functionObject.H +++ b/src/OpenFOAM/db/functionObjects/functionObject/functionObject.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -221,6 +221,9 @@ class functionObject //- Name const word name_; + //- Flag to indicate that names should be scoped + bool scopedNames_; + protected: @@ -266,7 +269,11 @@ public: // Constructors //- Construct from components - functionObject(const word& name); + explicit functionObject + ( + const word& name, + const bool scopedNames = true + ); //- Return clone autoPtr clone() const @@ -294,7 +301,10 @@ public: // Member Functions //- Return the name of this functionObject - const word& name() const; + const word& name() const noexcept; + + //- Return the scoped names flag + bool scopedNames() const noexcept; //- Read and set the function object if its data have changed virtual bool read(const dictionary& dict); @@ -347,7 +357,7 @@ class functionObject::unavailableFunctionObject protected: //- Construct with name - unavailableFunctionObject(const word& name); + explicit unavailableFunctionObject(const word& name); //- Report it is unavailable, emitting a FatalError for try/catch //- in the caller diff --git a/src/functionObjects/field/DESModelRegions/DESModelRegions.C b/src/functionObjects/field/DESModelRegions/DESModelRegions.C index 965bc86970..07bc912eda 100644 --- a/src/functionObjects/field/DESModelRegions/DESModelRegions.C +++ b/src/functionObjects/field/DESModelRegions/DESModelRegions.C @@ -68,7 +68,7 @@ Foam::functionObjects::DESModelRegions::DESModelRegions : fvMeshFunctionObject(name, runTime, dict), writeFile(obr_, name, typeName, dict), - resultName_(name) + resultName_(scopedName("regions")) { read(dict); diff --git a/src/functionObjects/field/XiReactionRate/XiReactionRate.C b/src/functionObjects/field/XiReactionRate/XiReactionRate.C index 6ec82a9dc7..8f97fecff3 100644 --- a/src/functionObjects/field/XiReactionRate/XiReactionRate.C +++ b/src/functionObjects/field/XiReactionRate/XiReactionRate.C @@ -74,20 +74,17 @@ bool Foam::functionObjects::XiReactionRate::execute() bool Foam::functionObjects::XiReactionRate::write() { - const volScalarField& b = - mesh_.lookupObject("b"); + const volScalarField& b = mesh_.lookupObject("b"); - const volScalarField& Su = - mesh_.lookupObject("Su"); + const volScalarField& Su = mesh_.lookupObject("Su"); - const volScalarField& Xi = - mesh_.lookupObject("Xi"); + const volScalarField& Xi = mesh_.lookupObject("Xi"); const volScalarField St ( IOobject ( - "St", + scopedName("St"), time_.timeName(), mesh_ ), @@ -103,7 +100,7 @@ bool Foam::functionObjects::XiReactionRate::write() ( IOobject ( - "wdot", + scopedName("wdot"), time_.timeName(), mesh_ ), diff --git a/src/functionObjects/field/columnAverage/columnAverage.C b/src/functionObjects/field/columnAverage/columnAverage.C index 0ef1f074c9..599246d873 100644 --- a/src/functionObjects/field/columnAverage/columnAverage.C +++ b/src/functionObjects/field/columnAverage/columnAverage.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2018-2020 OpenCFD Ltd. + Copyright (C) 2018-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -113,7 +113,7 @@ const Foam::word Foam::functionObjects::columnAverage::averageName const word& fieldName ) const { - return name() + ":columnAverage(" + fieldName + ")"; + return scopedName("columnAverage(" + fieldName + ")"); } diff --git a/src/functionObjects/field/fieldAverage/fieldAverage.C b/src/functionObjects/field/fieldAverage/fieldAverage.C index b51e52559a..ab2cf923bc 100644 --- a/src/functionObjects/field/fieldAverage/fieldAverage.C +++ b/src/functionObjects/field/fieldAverage/fieldAverage.C @@ -310,6 +310,12 @@ bool Foam::functionObjects::fieldAverage::read(const dictionary& dict) dict.readIfPresent("periodicRestart", periodicRestart_); dict.readEntry("fields", faItems_); + for (auto& item : faItems_) + { + item.setMeanFieldName(scopedName(item.meanFieldName())); + item.setPrime2MeanFieldName(scopedName(item.prime2MeanFieldName())); + } + const scalar currentTime = obr().time().value(); if (periodicRestart_) diff --git a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H index 46cdf4b9c7..4ad0ea958e 100644 --- a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H +++ b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H @@ -236,6 +236,9 @@ public: //- Return const access to the mean field name inline const word& meanFieldName() const; + //- Set the mean field name + inline void setMeanFieldName(const word& name); + //- Return const access to the prime-squared mean flag inline bool prime2Mean() const; @@ -245,6 +248,9 @@ public: //- Return const access to the prime-squared mean field name inline const word& prime2MeanFieldName() const; + //- Set the prime-squared mean field name + inline void setPrime2MeanFieldName(const word& name); + //- Return averaging base type name inline const word& base() const; diff --git a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemI.H b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemI.H index 8f67815e13..68b862be2d 100644 --- a/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemI.H +++ b/src/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemI.H @@ -64,6 +64,15 @@ Foam::functionObjects::fieldAverageItem::meanFieldName() const } +void Foam::functionObjects::fieldAverageItem::setMeanFieldName +( + const word& name +) +{ + meanFieldName_ = name; +} + + bool Foam::functionObjects::fieldAverageItem::prime2Mean() const { return prime2Mean_; @@ -76,12 +85,22 @@ bool& Foam::functionObjects::fieldAverageItem::prime2Mean() } -const Foam::word& Foam::functionObjects::fieldAverageItem::prime2MeanFieldName() const +const Foam::word& +Foam::functionObjects::fieldAverageItem::prime2MeanFieldName() const { return prime2MeanFieldName_; } +void Foam::functionObjects::fieldAverageItem::setPrime2MeanFieldName +( + const word& name +) +{ + prime2MeanFieldName_ = name; +} + + const Foam::word& Foam::functionObjects::fieldAverageItem::base() const { return baseTypeNames_[base_]; diff --git a/src/functionObjects/field/fieldExpression/fieldExpression.C b/src/functionObjects/field/fieldExpression/fieldExpression.C index 53b22aba1e..870363d462 100644 --- a/src/functionObjects/field/fieldExpression/fieldExpression.C +++ b/src/functionObjects/field/fieldExpression/fieldExpression.C @@ -63,6 +63,8 @@ void Foam::functionObjects::fieldExpression::setResultName { resultName_ = typeName; } + + resultName_ = scopedName(resultName_); } } diff --git a/src/functionObjects/field/fieldExtents/fieldExtentsTemplates.C b/src/functionObjects/field/fieldExtents/fieldExtentsTemplates.C index 75b4689574..c568fc59be 100644 --- a/src/functionObjects/field/fieldExtents/fieldExtentsTemplates.C +++ b/src/functionObjects/field/fieldExtents/fieldExtentsTemplates.C @@ -55,8 +55,7 @@ void Foam::functionObjects::fieldExtents::calcFieldExtents { typedef GeometricField VolFieldType; - const VolFieldType* fieldPtr = - obr_.findObject(fieldName); + const VolFieldType* fieldPtr = obr_.findObject(fieldName); if (!fieldPtr) { diff --git a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C index d2ba2d10f7..16e0e78e85 100644 --- a/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C +++ b/src/functionObjects/field/heatTransferCoeff/heatTransferCoeff.C @@ -71,7 +71,7 @@ Foam::functionObjects::heatTransferCoeff::heatTransferCoeff { read(dict); - setResultName(typeName, name + ":htc:" + htcModelPtr_->type()); + setResultName(typeName, "htc:" + htcModelPtr_->type()); auto* heatTransferCoeffPtr = new volScalarField diff --git a/src/functionObjects/field/particleDistribution/particleDistribution.C b/src/functionObjects/field/particleDistribution/particleDistribution.C index 491c1f20a0..7d77828aa3 100644 --- a/src/functionObjects/field/particleDistribution/particleDistribution.C +++ b/src/functionObjects/field/particleDistribution/particleDistribution.C @@ -120,7 +120,7 @@ bool Foam::functionObjects::particleDistribution::write() ( IOobject ( - name() & "CloudRegistry", + scopedName("CloudRegistry"), mesh_.time().timeName(), cloud::prefix, mesh_.time(), diff --git a/src/functionObjects/field/pressure/pressure.C b/src/functionObjects/field/pressure/pressure.C index f4bd0ba3e9..f254c3815d 100644 --- a/src/functionObjects/field/pressure/pressure.C +++ b/src/functionObjects/field/pressure/pressure.C @@ -236,7 +236,7 @@ Foam::tmp Foam::functionObjects::pressure::calcPressure ( IOobject ( - name() + ":p", + scopedName("p"), mesh_.time().timeName(), mesh_, IOobject::NO_READ diff --git a/src/functionObjects/field/randomise/randomise.C b/src/functionObjects/field/randomise/randomise.C index acdc1aea87..a83eab7af6 100644 --- a/src/functionObjects/field/randomise/randomise.C +++ b/src/functionObjects/field/randomise/randomise.C @@ -56,7 +56,7 @@ bool Foam::functionObjects::randomise::calcTemplate() { const auto& field = *fieldPtr; - resultName_ = fieldName_ & "Random"; + resultName_ = scopedName(fieldName_ & "Random"); auto trfield = tmp::New(field); auto& rfield = trfield.ref(); diff --git a/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C b/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C index bb0f702dc5..c391923fc3 100644 --- a/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C +++ b/src/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C @@ -95,7 +95,7 @@ void Foam::functionObjects::regionSizeDistribution::writeAlphaFields ( IOobject ( - alphaName_ + "_liquidCore", + scopedName(alphaName_ + "_liquidCore"), obr_.time().timeName(), obr_, IOobject::NO_READ @@ -108,7 +108,7 @@ void Foam::functionObjects::regionSizeDistribution::writeAlphaFields ( IOobject ( - alphaName_ + "_background", + scopedName(alphaName_ + "_background"), obr_.time().timeName(), obr_, IOobject::NO_READ diff --git a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C index dc4b82ca70..c7dcf4a887 100644 --- a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C +++ b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C @@ -114,7 +114,7 @@ Foam::functionObjects::wallHeatFlux::wallHeatFlux ( IOobject ( - type(), + scopedName(typeName), mesh_.time().timeName(), mesh_, IOobject::NO_READ, @@ -194,7 +194,7 @@ bool Foam::functionObjects::wallHeatFlux::read(const dictionary& dict) bool Foam::functionObjects::wallHeatFlux::execute() { - volScalarField& wallHeatFlux = lookupObjectRef(type()); + auto& wallHeatFlux = lookupObjectRef(scopedName(typeName)); if ( @@ -284,7 +284,8 @@ bool Foam::functionObjects::wallHeatFlux::execute() bool Foam::functionObjects::wallHeatFlux::write() { - const volScalarField& wallHeatFlux = lookupObject(type()); + const auto& wallHeatFlux = + lookupObject(scopedName(typeName)); Log << type() << " " << name() << " write:" << nl << " writing field " << wallHeatFlux.name() << endl; diff --git a/src/functionObjects/field/wallShearStress/wallShearStress.C b/src/functionObjects/field/wallShearStress/wallShearStress.C index f88cd74945..8f9ee5b751 100644 --- a/src/functionObjects/field/wallShearStress/wallShearStress.C +++ b/src/functionObjects/field/wallShearStress/wallShearStress.C @@ -102,7 +102,7 @@ Foam::functionObjects::wallShearStress::wallShearStress ( IOobject ( - typeName, + scopedName(typeName), mesh_.time().timeName(), mesh_, IOobject::NO_READ, @@ -176,8 +176,8 @@ bool Foam::functionObjects::wallShearStress::read(const dictionary& dict) bool Foam::functionObjects::wallShearStress::execute() { - volVectorField& wallShearStress = - mesh_.lookupObjectRef(type()); + auto& wallShearStress = + mesh_.lookupObjectRef(scopedName(typeName)); // Compressible { @@ -217,8 +217,8 @@ bool Foam::functionObjects::wallShearStress::execute() bool Foam::functionObjects::wallShearStress::write() { - const volVectorField& wallShearStress = - obr_.lookupObject(type()); + const auto& wallShearStress = + obr_.lookupObject(scopedName(typeName)); Log << type() << " " << name() << " write:" << nl << " writing field " << wallShearStress.name() << endl; diff --git a/src/functionObjects/field/yPlus/yPlus.C b/src/functionObjects/field/yPlus/yPlus.C index 99895924eb..b17622fa7f 100644 --- a/src/functionObjects/field/yPlus/yPlus.C +++ b/src/functionObjects/field/yPlus/yPlus.C @@ -83,7 +83,7 @@ Foam::functionObjects::yPlus::yPlus ( IOobject ( - typeName, + scopedName(typeName), mesh_.time().timeName(), mesh_, IOobject::NO_READ, @@ -115,8 +115,7 @@ bool Foam::functionObjects::yPlus::read(const dictionary& dict) bool Foam::functionObjects::yPlus::execute() { - volScalarField& yPlus = - lookupObjectRef(typeName); + auto& yPlus = lookupObjectRef(scopedName(typeName)); if (foundObject(turbulenceModel::propertiesName)) { @@ -192,8 +191,7 @@ bool Foam::functionObjects::yPlus::execute() bool Foam::functionObjects::yPlus::write() { - const volScalarField& yPlus = - obr_.lookupObject(type()); + const auto& yPlus = obr_.lookupObject(scopedName(typeName)); Log << type() << " " << name() << " write:" << nl << " writing field " << yPlus.name() << endl; diff --git a/src/functionObjects/field/zeroGradient/zeroGradient.C b/src/functionObjects/field/zeroGradient/zeroGradient.C index 766f1283fe..cdcb08667f 100644 --- a/src/functionObjects/field/zeroGradient/zeroGradient.C +++ b/src/functionObjects/field/zeroGradient/zeroGradient.C @@ -113,7 +113,8 @@ bool Foam::functionObjects::zeroGradient::read(const dictionary& dict) Info<< type() << " fields: " << selectFields_ << nl; - resultName_ = dict.getOrDefault("result", type() + "(@@)"); + resultName_ = + dict.getOrDefault("result", scopedName(type() + "(@@)")); // Require '@@' token for result, unless a single (non-regex) source field return diff --git a/src/functionObjects/forces/forceCoeffs/forceCoeffs.C b/src/functionObjects/forces/forceCoeffs/forceCoeffs.C index 5b5e2b2d7c..b57bf9d2b8 100644 --- a/src/functionObjects/forces/forceCoeffs/forceCoeffs.C +++ b/src/functionObjects/forces/forceCoeffs/forceCoeffs.C @@ -287,7 +287,7 @@ bool Foam::functionObjects::forceCoeffs::read(const dictionary& dict) ( IOobject ( - fieldName("forceCoeff"), + scopedName("forceCoeff"), mesh_.time().timeName(), mesh_, IOobject::NO_READ, @@ -306,7 +306,7 @@ bool Foam::functionObjects::forceCoeffs::read(const dictionary& dict) ( IOobject ( - fieldName("momentCoeff"), + scopedName("momentCoeff"), mesh_.time().timeName(), mesh_, IOobject::NO_READ, @@ -467,16 +467,16 @@ bool Foam::functionObjects::forceCoeffs::execute() if (writeFields_) { const volVectorField& force = - lookupObject(fieldName("force")); + lookupObject(scopedName("force")); const volVectorField& moment = - lookupObject(fieldName("moment")); + lookupObject(scopedName("moment")); volVectorField& forceCoeff = - lookupObjectRef(fieldName("forceCoeff")); + lookupObjectRef(scopedName("forceCoeff")); volVectorField& momentCoeff = - lookupObjectRef(fieldName("momentCoeff")); + lookupObjectRef(scopedName("momentCoeff")); dimensionedScalar f0("f0", dimForce, Aref_*pDyn); dimensionedScalar m0("m0", dimForce*dimLength, Aref_*lRef_*pDyn); @@ -494,10 +494,10 @@ bool Foam::functionObjects::forceCoeffs::write() if (writeFields_) { const volVectorField& forceCoeff = - lookupObject(fieldName("forceCoeff")); + lookupObject(scopedName("forceCoeff")); const volVectorField& momentCoeff = - lookupObject(fieldName("momentCoeff")); + lookupObject(scopedName("momentCoeff")); forceCoeff.write(); momentCoeff.write(); diff --git a/src/functionObjects/forces/forces/forces.C b/src/functionObjects/forces/forces/forces.C index 70a34aba18..dbf2abe1e4 100644 --- a/src/functionObjects/forces/forces/forces.C +++ b/src/functionObjects/forces/forces/forces.C @@ -48,12 +48,6 @@ namespace functionObjects // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // -Foam::word Foam::functionObjects::forces::fieldName(const word& name) const -{ - return this->name() + ":" + name; -} - - void Foam::functionObjects::forces::createFiles() { // Note: Only possible to create bin files after bins have been initialised @@ -332,12 +326,12 @@ void Foam::functionObjects::forces::resetFields() if (writeFields_) { volVectorField& force = - lookupObjectRef(fieldName("force")); + lookupObjectRef(scopedName("force")); force == dimensionedVector(force.dimensions(), Zero); volVectorField& moment = - lookupObjectRef(fieldName("moment")); + lookupObjectRef(scopedName("moment")); moment == dimensionedVector(moment.dimensions(), Zero); } @@ -526,11 +520,11 @@ void Foam::functionObjects::forces::addToFields return; } - auto& force = lookupObjectRef(fieldName("force")); + auto& force = lookupObjectRef(scopedName("force")); vectorField& pf = force.boundaryFieldRef()[patchi]; pf += fN + fT + fP; - auto& moment = lookupObjectRef(fieldName("moment")); + auto& moment = lookupObjectRef(scopedName("moment")); vectorField& pm = moment.boundaryFieldRef()[patchi]; pm = Md^pf; } @@ -550,8 +544,8 @@ void Foam::functionObjects::forces::addToFields return; } - auto& force = lookupObjectRef(fieldName("force")); - auto& moment = lookupObjectRef(fieldName("moment")); + auto& force = lookupObjectRef(scopedName("force")); + auto& moment = lookupObjectRef(scopedName("moment")); forAll(cellIDs, i) { @@ -913,7 +907,7 @@ bool Foam::functionObjects::forces::read(const dictionary& dict) ( IOobject ( - fieldName("force"), + scopedName("force"), time_.timeName(), mesh_, IOobject::NO_READ, @@ -932,7 +926,7 @@ bool Foam::functionObjects::forces::read(const dictionary& dict) ( IOobject ( - fieldName("moment"), + scopedName("moment"), time_.timeName(), mesh_, IOobject::NO_READ, @@ -1120,8 +1114,8 @@ bool Foam::functionObjects::forces::write() { if (writeFields_) { - lookupObject(fieldName("force")).write(); - lookupObject(fieldName("moment")).write(); + lookupObject(scopedName("force")).write(); + lookupObject(scopedName("moment")).write(); } return true; diff --git a/src/functionObjects/forces/forces/forces.H b/src/functionObjects/forces/forces/forces.H index b92c9089a1..6abb8cec65 100644 --- a/src/functionObjects/forces/forces/forces.H +++ b/src/functionObjects/forces/forces/forces.H @@ -256,9 +256,6 @@ protected: // Protected Member Functions - //- Create a field name - word fieldName(const word& name) const; - //- Create the output files void createFiles(); diff --git a/src/phaseSystemModels/reactingEuler/functionObjects/reactingEulerHtcModel/reactingEulerHtcModel.C b/src/phaseSystemModels/reactingEuler/functionObjects/reactingEulerHtcModel/reactingEulerHtcModel.C index 85eb2500ba..be169e7fb2 100644 --- a/src/phaseSystemModels/reactingEuler/functionObjects/reactingEulerHtcModel/reactingEulerHtcModel.C +++ b/src/phaseSystemModels/reactingEuler/functionObjects/reactingEulerHtcModel/reactingEulerHtcModel.C @@ -137,7 +137,7 @@ Foam::functionObjects::reactingEulerHtcModel::reactingEulerHtcModel { read(dict); - setResultName(typeName, name + ":htc:" + htcModelPtr_->type()); + setResultName(typeName, "htc:" + htcModelPtr_->type()); volScalarField* htcPtr = new volScalarField