diff --git a/src/finiteVolume/fvMesh/fvMeshFunctionObject/fvMeshFunctionObject.C b/src/finiteVolume/fvMesh/fvMeshFunctionObject/fvMeshFunctionObject.C index f5e0b45852..4e3c2e712d 100644 --- a/src/finiteVolume/fvMesh/fvMeshFunctionObject/fvMeshFunctionObject.C +++ b/src/finiteVolume/fvMesh/fvMeshFunctionObject/fvMeshFunctionObject.C @@ -52,6 +52,18 @@ Foam::functionObjects::fvMeshFunctionObject::fvMeshFunctionObject {} +Foam::functionObjects::fvMeshFunctionObject::fvMeshFunctionObject +( + const word& name, + const objectRegistry& obr, + const dictionary& dict +) +: + regionFunctionObject(name, obr, dict), + mesh_(refCast(obr_)) +{} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::functionObjects::fvMeshFunctionObject::~fvMeshFunctionObject() diff --git a/src/finiteVolume/fvMesh/fvMeshFunctionObject/fvMeshFunctionObject.H b/src/finiteVolume/fvMesh/fvMeshFunctionObject/fvMeshFunctionObject.H index 1d10616e63..fb4fda93f3 100644 --- a/src/finiteVolume/fvMesh/fvMeshFunctionObject/fvMeshFunctionObject.H +++ b/src/finiteVolume/fvMesh/fvMeshFunctionObject/fvMeshFunctionObject.H @@ -100,6 +100,14 @@ public: const dictionary& dict ); + //- Construct from the region objectRegistry and dictionary + fvMeshFunctionObject + ( + const word& name, + const objectRegistry& obr, + const dictionary& dict + ); + //- Destructor virtual ~fvMeshFunctionObject(); diff --git a/src/functionObjects/field/fieldMinMax/fieldMinMax.C b/src/functionObjects/field/fieldMinMax/fieldMinMax.C index 94c4655345..738228b7de 100644 --- a/src/functionObjects/field/fieldMinMax/fieldMinMax.C +++ b/src/functionObjects/field/fieldMinMax/fieldMinMax.C @@ -103,18 +103,12 @@ Foam::functionObjects::fieldMinMax::fieldMinMax const dictionary& dict ) : - regionFunctionObject(name, runTime, dict), + fvMeshFunctionObject(name, runTime, dict), logFiles(obr_, name), location_(true), mode_(mdMag), fieldSet_() { - if (!isA(obr_)) - { - FatalErrorInFunction - << "objectRegistry is not an fvMesh" << exit(FatalError); - } - read(dict); resetName(typeName); } @@ -130,7 +124,7 @@ Foam::functionObjects::fieldMinMax::~fieldMinMax() bool Foam::functionObjects::fieldMinMax::read(const dictionary& dict) { - regionFunctionObject::read(dict); + fvMeshFunctionObject::read(dict); location_ = dict.lookupOrDefault("location", true); diff --git a/src/functionObjects/field/fieldMinMax/fieldMinMax.H b/src/functionObjects/field/fieldMinMax/fieldMinMax.H index 24a218e424..158656c435 100644 --- a/src/functionObjects/field/fieldMinMax/fieldMinMax.H +++ b/src/functionObjects/field/fieldMinMax/fieldMinMax.H @@ -67,7 +67,7 @@ Usage Output data is written to the file \/fieldMinMax.dat See also - Foam::functionObjects::regionFunctionObject + Foam::functionObjects::fvMeshFunctionObject Foam::functionObjects::logFiles SourceFiles @@ -78,7 +78,7 @@ SourceFiles #ifndef functionObjects_fieldMinMax_H #define functionObjects_fieldMinMax_H -#include "regionFunctionObject.H" +#include "fvMeshFunctionObject.H" #include "logFiles.H" #include "vector.H" @@ -95,7 +95,7 @@ namespace functionObjects class fieldMinMax : - public regionFunctionObject, + public fvMeshFunctionObject, public logFiles { public: diff --git a/src/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C b/src/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C index 397b4fad4d..dd7e86de56 100644 --- a/src/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C +++ b/src/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C @@ -109,10 +109,9 @@ void Foam::functionObjects::fieldMinMax::calcMinMaxFields const label proci = Pstream::myProcNo(); const fieldType& field = obr_.lookupObject(fieldName); - const fvMesh& mesh = field.mesh(); const volVectorField::Boundary& CfBoundary = - mesh.C().boundaryField(); + mesh_.C().boundaryField(); switch (mode) { @@ -126,7 +125,7 @@ void Foam::functionObjects::fieldMinMax::calcMinMaxFields List minCs(Pstream::nProcs()); label minProci = findMin(magField); minVs[proci] = magField[minProci]; - minCs[proci] = field.mesh().C()[minProci]; + minCs[proci] = mesh_.C()[minProci]; labelList maxIs(Pstream::nProcs()); @@ -134,7 +133,7 @@ void Foam::functionObjects::fieldMinMax::calcMinMaxFields List maxCs(Pstream::nProcs()); label maxProci = findMax(magField); maxVs[proci] = magField[maxProci]; - maxCs[proci] = field.mesh().C()[maxProci]; + maxCs[proci] = mesh_.C()[maxProci]; forAll(magFieldBoundary, patchi) { @@ -198,7 +197,7 @@ void Foam::functionObjects::fieldMinMax::calcMinMaxFields List minCs(Pstream::nProcs()); label minProci = findMin(field); minVs[proci] = field[minProci]; - minCs[proci] = field.mesh().C()[minProci]; + minCs[proci] = mesh_.C()[minProci]; Pstream::gatherList(minVs); Pstream::gatherList(minCs); @@ -207,7 +206,7 @@ void Foam::functionObjects::fieldMinMax::calcMinMaxFields List maxCs(Pstream::nProcs()); label maxProci = findMax(field); maxVs[proci] = field[maxProci]; - maxCs[proci] = field.mesh().C()[maxProci]; + maxCs[proci] = mesh_.C()[maxProci]; forAll(fieldBoundary, patchi) { diff --git a/src/functionObjects/field/fieldValues/fieldValue/fieldValue.C b/src/functionObjects/field/fieldValues/fieldValue/fieldValue.C index fac60d2f9c..5d759a619e 100644 --- a/src/functionObjects/field/fieldValues/fieldValue/fieldValue.C +++ b/src/functionObjects/field/fieldValues/fieldValue/fieldValue.C @@ -49,7 +49,7 @@ Foam::functionObjects::fieldValue::fieldValue const word& valueType ) : - regionFunctionObject(name, runTime, dict), + fvMeshFunctionObject(name, runTime, dict), logFiles(obr_, name), dict_(dict), regionName_(word::null), @@ -68,7 +68,7 @@ Foam::functionObjects::fieldValue::fieldValue const word& valueType ) : - regionFunctionObject(name, obr, dict), + fvMeshFunctionObject(name, obr, dict), logFiles(obr_, name), dict_(dict), regionName_(word::null), @@ -89,8 +89,12 @@ Foam::functionObjects::fieldValue::~fieldValue() bool Foam::functionObjects::fieldValue::read(const dictionary& dict) { - dict_ = dict; - regionFunctionObject::read(dict); + if (dict != dict_) + { + dict_ = dict; + } + + fvMeshFunctionObject::read(dict); dict.lookup("fields") >> fields_; dict.lookup("writeFields") >> writeFields_; diff --git a/src/functionObjects/field/fieldValues/fieldValue/fieldValue.H b/src/functionObjects/field/fieldValues/fieldValue/fieldValue.H index c6331b5abb..bd944ad68d 100644 --- a/src/functionObjects/field/fieldValues/fieldValue/fieldValue.H +++ b/src/functionObjects/field/fieldValues/fieldValue/fieldValue.H @@ -32,7 +32,7 @@ Description See also Foam::functionObject - Foam::functionObjects::regionFunctionObject + Foam::functionObjects::fvMeshFunctionObject Foam::functionObjects::logFiles SourceFiles @@ -43,7 +43,7 @@ SourceFiles #ifndef functionObjects_fieldValue_H #define functionObjects_fieldValue_H -#include "regionFunctionObject.H" +#include "fvMeshFunctionObject.H" #include "logFiles.H" #include "Switch.H" #include "Field.H" @@ -65,7 +65,7 @@ namespace functionObjects class fieldValue : - public regionFunctionObject, + public fvMeshFunctionObject, public logFiles { @@ -169,9 +169,6 @@ public: //- Return the output field values flag inline const Switch& writeFields() const; - //- Helper function to return the reference to the mesh - inline const fvMesh& mesh() const; - //- Return access to the latest set of results inline const dictionary& resultDict() const; diff --git a/src/functionObjects/field/fieldValues/fieldValue/fieldValueI.H b/src/functionObjects/field/fieldValues/fieldValue/fieldValueI.H index fba3d4d8d5..93b02e8f47 100644 --- a/src/functionObjects/field/fieldValues/fieldValue/fieldValueI.H +++ b/src/functionObjects/field/fieldValues/fieldValue/fieldValueI.H @@ -53,12 +53,6 @@ Foam::functionObjects::fieldValue::writeFields() const } -inline const Foam::fvMesh& Foam::functionObjects::fieldValue::mesh() const -{ - return refCast(obr_); -} - - inline const Foam::dictionary& Foam::functionObjects::fieldValue::resultDict() const { diff --git a/src/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C b/src/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C index 3b243f87b5..4937334f53 100644 --- a/src/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C +++ b/src/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C @@ -112,12 +112,6 @@ Foam::functionObjects::fieldValues::fieldValueDelta::fieldValueDelta region1Ptr_(nullptr), region2Ptr_(nullptr) { - if (!isA(obr_)) - { - FatalErrorInFunction - << "objectRegistry is not an fvMesh" << exit(FatalError); - } - read(dict); resetName(typeName); } diff --git a/src/functionObjects/field/fieldValues/surfaceRegion/surfaceRegion.C b/src/functionObjects/field/fieldValues/surfaceRegion/surfaceRegion.C index 4d0abc685a..6ca71c2022 100644 --- a/src/functionObjects/field/fieldValues/surfaceRegion/surfaceRegion.C +++ b/src/functionObjects/field/fieldValues/surfaceRegion/surfaceRegion.C @@ -102,7 +102,7 @@ const Foam::NamedEnum void Foam::functionObjects::fieldValues::surfaceRegion::setFaceZoneFaces() { - label zoneId = mesh().faceZones().findZoneID(regionName_); + label zoneId = mesh_.faceZones().findZoneID(regionName_); if (zoneId < 0) { @@ -110,11 +110,11 @@ void Foam::functionObjects::fieldValues::surfaceRegion::setFaceZoneFaces() << type() << " " << name() << ": " << regionTypeNames_[regionType_] << "(" << regionName_ << "):" << nl << " Unknown face zone name: " << regionName_ - << ". Valid face zones are: " << mesh().faceZones().names() + << ". Valid face zones are: " << mesh_.faceZones().names() << nl << exit(FatalError); } - const faceZone& fZone = mesh().faceZones()[zoneId]; + const faceZone& fZone = mesh_.faceZones()[zoneId]; DynamicList