diff --git a/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C b/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C index 6059ebf5aa5f185b6777409bbce50d9e06f157e3..ecd4b4f1edef681987239a87f71b10c42e53f38d 100644 --- a/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C +++ b/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C @@ -138,7 +138,7 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh) return; } - dsmcFields dF + functionObjects::dsmcFields dF ( "dsmcFieldsUtility", mesh, diff --git a/etc/codeTemplates/dynamicCode/functionObjectTemplate.C b/etc/codeTemplates/dynamicCode/functionObjectTemplate.C index 91b31dda2b3aaead0b902dfaedc5e69413f06c2a..cb256b9b93ece0ac874a1b7d8868c19413f8c7ae 100644 --- a/etc/codeTemplates/dynamicCode/functionObjectTemplate.C +++ b/etc/codeTemplates/dynamicCode/functionObjectTemplate.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -76,6 +76,18 @@ ${typeName}FunctionObject::${typeName}FunctionObject } +bool ${typeName}FunctionObject::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool +) +{ + return true; +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // ${typeName}FunctionObject::~${typeName}FunctionObject() diff --git a/etc/codeTemplates/dynamicCode/functionObjectTemplate.H b/etc/codeTemplates/dynamicCode/functionObjectTemplate.H index a139f25a8b4bf7f7c03f300c93c0571b446ba72e..b1f7e7af8e78f2e08a61099480eb1828a11bb419 100644 --- a/etc/codeTemplates/dynamicCode/functionObjectTemplate.H +++ b/etc/codeTemplates/dynamicCode/functionObjectTemplate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -102,6 +102,16 @@ public: const bool loadFromFilesUnused = false ); + //- Construct for given objectRegistry and dictionary. + // Allow the possibility to load fields from files + static bool viable + ( + const word& name, + const objectRegistry& unused, + const dictionary&, + const bool loadFromFilesUnused = false + ); + //- Destructor virtual ~${typeName}FunctionObject(); diff --git a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C index 68189c6d43f17084575ff2f575ebb6b987098e86..5c480baee4bd7fdbef7d91dd2371dc47754d3403 100644 --- a/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C +++ b/etc/codeTemplates/functionObject/FUNCTIONOBJECT.C @@ -71,21 +71,15 @@ void Foam::FUNCTIONOBJECT::read(const dictionary& dict) void Foam::FUNCTIONOBJECT::execute() -{ - // Do nothing - only valid on write -} +{} void Foam::FUNCTIONOBJECT::end() -{ - // Do nothing - only valid on write -} +{} void Foam::FUNCTIONOBJECT::timeSet() -{ - // Do nothing - only valid on write -} +{} void Foam::FUNCTIONOBJECT::write() diff --git a/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.C b/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.C index 18b46f29af8e445d94ac97faf68c950e9f305792..e70e55a1bc88dd79e064d54e7c43b366e4fc5cb9 100644 --- a/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.C +++ b/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -66,6 +66,32 @@ Foam::IOOutputFilter<OutputFilter>::IOOutputFilter {} +template<class OutputFilter> +bool Foam::IOOutputFilter<OutputFilter>::viable +( + const word& outputFilterName, + const objectRegistry& obr, + const word& dictName, + const IOobject::readOption rOpt, + const bool readFromFiles +) +{ + IOdictionary dict + ( + IOobject + ( + dictName, + obr.time().system(), + obr, + rOpt, + IOobject::NO_WRITE + ) + ); + + return OutputFilter::viable(outputFilterName, obr, dict, readFromFiles); +} + + template<class OutputFilter> Foam::IOOutputFilter<OutputFilter>::IOOutputFilter ( @@ -99,6 +125,13 @@ Foam::IOOutputFilter<OutputFilter>::~IOOutputFilter() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template<class OutputFilter> +const Foam::word& Foam::IOOutputFilter<OutputFilter>::name() const +{ + return IOdictionary::name(); +} + + template<class OutputFilter> bool Foam::IOOutputFilter<OutputFilter>::read() { @@ -121,4 +154,20 @@ void Foam::IOOutputFilter<OutputFilter>::write() } +template<class OutputFilter> +void Foam::IOOutputFilter<OutputFilter>::updateMesh(const mapPolyMesh& mpm) +{ + read(); + OutputFilter::updateMesh(mpm); +} + + +template<class OutputFilter> +void Foam::IOOutputFilter<OutputFilter>::movePoints(const polyMesh& mesh) +{ + read(); + OutputFilter::movePoints(mesh); +} + + // ************************************************************************* // diff --git a/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.H b/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.H index 77b248f7e86f4aa4c8616ff8b78f718547f426b8..6950b523f8fd5bfb1d39214c6294ab2028d5533d 100644 --- a/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.H +++ b/src/OpenFOAM/db/functionObjects/IOOutputFilter/IOOutputFilter.H @@ -94,6 +94,16 @@ public: const bool loadFromFile = false ); + //- Return true if the construction of this functionObject is viable + static bool viable + ( + const word& outputFilterName, + const objectRegistry&, + const word& dictName = OutputFilter::typeName() + "Dict", + const IOobject::readOption rOpt = IOobject::MUST_READ_IF_MODIFIED, + const bool loadFromFiles = false + ); + //- Construct for given objectRegistry and dictionary // Dictionary read from full path. // Allow the possibility to load fields from files @@ -114,10 +124,7 @@ public: // Member Functions //- Return name - virtual const word& name() const - { - return IOdictionary::name(); - } + virtual const word& name() const; //- Inherit read from OutputFilter using OutputFilter::read; @@ -132,18 +139,10 @@ public: virtual void write(); //- Update for changes of mesh - virtual void updateMesh(const mapPolyMesh& mpm) - { - read(); - OutputFilter::updateMesh(mpm); - } + virtual void updateMesh(const mapPolyMesh& mpm); //- Update for changes of mesh - virtual void movePoints(const polyMesh& mesh) - { - read(); - OutputFilter::movePoints(mesh); - } + virtual void movePoints(const polyMesh& mesh); }; diff --git a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.C b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.C index 100e88f27f12a63ec67232fffc6dded4c3e5ba1f..7c81faefc1e1e6ac397a58a3f7187983ebfbc17f 100644 --- a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.C +++ b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -55,32 +55,64 @@ bool Foam::OutputFilterFunctionObject<OutputFilter>::active() const template<class OutputFilter> -void Foam::OutputFilterFunctionObject<OutputFilter>::allocateFilter() +bool Foam::OutputFilterFunctionObject<OutputFilter>::allocateFilter() { if (dictName_.size()) { - ptr_.reset + if ( - new IOOutputFilter<OutputFilter> + IOOutputFilter<OutputFilter>::viable ( name(), time_.lookupObject<objectRegistry>(regionName_), dictName_ ) - ); + ) + { + ptr_.reset + ( + new IOOutputFilter<OutputFilter> + ( + name(), + time_.lookupObject<objectRegistry>(regionName_), + dictName_ + ) + ); + } + else + { + enabled_ = false; + } } else { - ptr_.reset + if ( - new OutputFilter + OutputFilter::viable ( name(), time_.lookupObject<objectRegistry>(regionName_), dict_ ) - ); + ) + { + ptr_.reset + ( + new OutputFilter + ( + name(), + time_.lookupObject<objectRegistry>(regionName_), + dict_ + ) + ); + } + else + { + enabled_ = false; + } } + + return enabled_; } @@ -144,10 +176,12 @@ bool Foam::OutputFilterFunctionObject<OutputFilter>::start() if (enabled_ && storeFilter_) { - allocateFilter(); + return allocateFilter(); + } + else + { + return true; } - - return true; } @@ -159,9 +193,9 @@ bool Foam::OutputFilterFunctionObject<OutputFilter>::execute { if (active()) { - if (!storeFilter_) + if (!storeFilter_ && !allocateFilter()) { - allocateFilter(); + return false; } if (evaluateControl_.output()) @@ -189,9 +223,9 @@ bool Foam::OutputFilterFunctionObject<OutputFilter>::end() { if (enabled_) { - if (!storeFilter_) + if (!storeFilter_ && !allocateFilter()) { - allocateFilter(); + return false; } ptr_->end(); diff --git a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H index cf97dc562936d2750544f5a9b1b751b0326df7d6..5cd592ee83948c54b2733d2041d2556a725fa630 100644 --- a/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H +++ b/src/OpenFOAM/db/functionObjects/OutputFilterFunctionObject/OutputFilterFunctionObject.H @@ -111,7 +111,7 @@ class OutputFilterFunctionObject void readDict(); //- Creates most of the data associated with this object. - void allocateFilter(); + bool allocateFilter(); //- Destroys most of the data associated with this object. void destroyFilter(); diff --git a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C index 33757db4201ae0822b153fb38d420ee01c3c6f4d..821a6cc019193bd049c2d2b3a69e417cf570690c 100644 --- a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C +++ b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C @@ -96,7 +96,6 @@ void Foam::fv::rotorDiskSource::checkData() } case ifLocal: { - // Do nothing break; } default: diff --git a/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.C b/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.C index c04f6eca2d2afd91ac6d965d98552af0108ac443..3d5faaf9647775b5a1d503b32bad5aa7aa14243e 100644 --- a/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.C +++ b/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.C @@ -58,8 +58,7 @@ Foam::functionObjects::partialWrite::partialWrite } -Foam::autoPtr<Foam::functionObjects::partialWrite> -Foam::functionObjects::partialWrite::New +bool Foam::functionObjects::partialWrite::viable ( const word& name, const objectRegistry& obr, @@ -67,17 +66,8 @@ Foam::functionObjects::partialWrite::New const bool loadFromFiles ) { - if (isA<fvMesh>(obr)) - { - return autoPtr<partialWrite> - ( - new partialWrite(name, obr, dict, loadFromFiles) - ); - } - else - { - return autoPtr<partialWrite>(); - } + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } diff --git a/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H b/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H index a49aabc1293b01e45e535fe82a390d8f02932406..76a18f5fbced8218b2673e9c973ab3eca3441a02 100644 --- a/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H +++ b/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::partialWrite + Foam::functionObjects::partialWrite Group grpIOFunctionObjects @@ -171,9 +171,9 @@ public: const bool loadFromFiles = false ); - //- Construct on free-store and return pointer if successful - // otherwise return a null-pointer - static autoPtr<partialWrite> New + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable ( const word& name, const objectRegistry&, diff --git a/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.C b/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.C index ea296544c3f70511af24527d0292c5bafcfcd9c5..9bd09cd0b665633e07a46b21c47b7656841c615b 100644 --- a/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.C +++ b/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.C @@ -56,8 +56,7 @@ Foam::functionObjects::removeRegisteredObject::removeRegisteredObject } -Foam::autoPtr<Foam::functionObjects::removeRegisteredObject> -Foam::functionObjects::removeRegisteredObject::New +bool Foam::functionObjects::removeRegisteredObject::viable ( const word& name, const objectRegistry& obr, @@ -65,10 +64,7 @@ Foam::functionObjects::removeRegisteredObject::New const bool loadFromFiles ) { - return autoPtr<removeRegisteredObject> - ( - new removeRegisteredObject(name, obr, dict, loadFromFiles) - ); + return true; } diff --git a/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.H b/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.H index 860a2e98635b6790a28a9dbc5a0ec9c8efad9c85..5bbb16d923c38252989f09a917141bc5e4833ebb 100644 --- a/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.H +++ b/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::removeRegisteredObject + Foam::functionObjects::removeRegisteredObject Group grpIOFunctionObjects @@ -128,9 +128,9 @@ public: const bool loadFromFiles = false ); - //- Construct on free-store and return pointer if successful - // otherwise return a null-pointer - static autoPtr<removeRegisteredObject> New + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable ( const word& name, const objectRegistry&, diff --git a/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.C b/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.C index 7acd2abefbccaaea9dea27b031e021134bf52a27..afe37cf4a34ce07ac3baf3a3452a4ba044a913cd 100644 --- a/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.C +++ b/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.C @@ -107,8 +107,7 @@ Foam::functionObjects::writeDictionary::writeDictionary } -Foam::autoPtr<Foam::functionObjects::writeDictionary> -Foam::functionObjects::writeDictionary::New +bool Foam::functionObjects::writeDictionary::viable ( const word& name, const objectRegistry& obr, @@ -116,10 +115,7 @@ Foam::functionObjects::writeDictionary::New const bool loadFromFiles ) { - return autoPtr<writeDictionary> - ( - new writeDictionary(name, obr, dict, loadFromFiles) - ); + return true; } diff --git a/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.H b/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.H index 19d42766efc9f7dfb9277fc61895959e69d70f2d..3f822fa89ac381cc76ca6c7064379b3c12235987 100644 --- a/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.H +++ b/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::writeDictionary + Foam::functionObjects::writeDictionary Group grpUtilitiesFunctionObjects @@ -120,9 +120,9 @@ public: const bool loadFromFiles = false ); - //- Construct on free-store and return pointer if successful - // otherwise return a null-pointer - static autoPtr<writeDictionary> New + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable ( const word& name, const objectRegistry&, diff --git a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C index ad68d6b9aea3c771c8ae29c566fca649473c5152..6385ad89b1f410d52d6fe87c10caa5d0128ee7e0 100644 --- a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C +++ b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.C @@ -57,8 +57,7 @@ Foam::functionObjects::writeRegisteredObject::writeRegisteredObject } -Foam::autoPtr<Foam::functionObjects::writeRegisteredObject> -Foam::functionObjects::writeRegisteredObject::New +bool Foam::functionObjects::writeRegisteredObject::viable ( const word& name, const objectRegistry& obr, @@ -66,10 +65,7 @@ Foam::functionObjects::writeRegisteredObject::New const bool loadFromFiles ) { - return autoPtr<writeRegisteredObject> - ( - new writeRegisteredObject(name, obr, dict, loadFromFiles) - ); + return true; } diff --git a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H index 37bb625c4e8c491ec7bc41180803c16d7be8a082..8fb674a8831c01198256c28fa935cd346fa2cee6 100644 --- a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H +++ b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::writeRegisteredObject + Foam::functionObjects::writeRegisteredObject Group grpIOFunctionObjects @@ -143,9 +143,9 @@ public: const bool loadFromFiles = false ); - //- Construct on free-store and return pointer if successful - // otherwise return a null-pointer - static autoPtr<writeRegisteredObject> New + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable ( const word& name, const objectRegistry&, diff --git a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.C b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.C index f17f36684553d94a8090d63027a929e5ddd4a3b7..7641bf5c01a596b848ce26c8553ef6648ab3a68f 100644 --- a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.C +++ b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.C @@ -62,15 +62,13 @@ Foam::functionObjects::cloudInfo::cloudInfo : functionObjectFiles(obr, name), name_(name), - obr_(obr), - active_(true) + obr_(obr) { read(dict); } -Foam::autoPtr<Foam::functionObjects::cloudInfo> -Foam::functionObjects::cloudInfo::New +bool Foam::functionObjects::cloudInfo::viable ( const word& name, const objectRegistry& obr, @@ -78,10 +76,7 @@ Foam::functionObjects::cloudInfo::New const bool loadFromFiles ) { - return autoPtr<cloudInfo> - ( - new cloudInfo(name, obr, dict, loadFromFiles) - ); + return true; } @@ -95,24 +90,21 @@ Foam::functionObjects::cloudInfo::~cloudInfo() void Foam::functionObjects::cloudInfo::read(const dictionary& dict) { - if (active_) - { - functionObjectFiles::resetNames(dict.lookup("clouds")); + functionObjectFiles::resetNames(dict.lookup("clouds")); - Info<< type() << " " << name_ << ": "; - if (names().size()) - { - Info<< "applying to clouds:" << nl; - forAll(names(), i) - { - Info<< " " << names()[i] << nl; - } - Info<< endl; - } - else + Info<< type() << " " << name_ << ": "; + if (names().size()) + { + Info<< "applying to clouds:" << nl; + forAll(names(), i) { - Info<< "no clouds to be processed" << nl << endl; + Info<< " " << names()[i] << nl; } + Info<< endl; + } + else + { + Info<< "no clouds to be processed" << nl << endl; } } @@ -131,29 +123,26 @@ void Foam::functionObjects::cloudInfo::timeSet() void Foam::functionObjects::cloudInfo::write() { - if (active_) + functionObjectFiles::write(); + + forAll(names(), i) { - functionObjectFiles::write(); + const word& cloudName = names()[i]; - forAll(names(), i) + const kinematicCloud& cloud = + obr_.lookupObject<kinematicCloud>(cloudName); + + label nParcels = returnReduce(cloud.nParcels(), sumOp<label>()); + scalar massInSystem = + returnReduce(cloud.massInSystem(), sumOp<scalar>()); + + if (Pstream::master()) { - const word& cloudName = names()[i]; - - const kinematicCloud& cloud = - obr_.lookupObject<kinematicCloud>(cloudName); - - label nParcels = returnReduce(cloud.nParcels(), sumOp<label>()); - scalar massInSystem = - returnReduce(cloud.massInSystem(), sumOp<scalar>()); - - if (Pstream::master()) - { - writeTime(file(i)); - file(i) - << token::TAB - << nParcels << token::TAB - << massInSystem << endl; - } + writeTime(file(i)); + file(i) + << token::TAB + << nParcels << token::TAB + << massInSystem << endl; } } } diff --git a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H index 3af05b7d1043d5b326ae75a822a11661774a1c02..895dd4a2a8bcbd3aebab07d2d741b6253dd14ef1 100644 --- a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H +++ b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::cloudInfo + Foam::functionObjects::cloudInfo Group grpCloudFunctionObjects @@ -109,9 +109,6 @@ protected: //- Reference to the database const objectRegistry& obr_; - //- on/off switch - bool active_; - // Protected Member Functions @@ -148,9 +145,9 @@ public: const bool loadFromFiles = false ); - //- Construct on free-store and return pointer if successful - // otherwise return a null-pointer - static autoPtr<cloudInfo> New + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable ( const word& name, const objectRegistry&, diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/IOFieldAverage.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/IOFieldAverage.H index f4b9ddf996de0833700607de3433e5f1e223475f..2fd0ea6b97a13ab018c3af435dcfac8aab200032 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/IOFieldAverage.H +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/IOFieldAverage.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,7 @@ Description namespace Foam { - typedef IOOutputFilter<fieldAverage> IOFieldAverage; + typedef IOOutputFilter<functionObjects::fieldAverage> IOFieldAverage; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C index 9ec9ee60fa4da6f6ded50a7545a72264054aa875..0efc524823a73947820e02075524a1483c0e0f3e 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C @@ -26,20 +26,22 @@ License #include "fieldAverage.H" #include "volFields.H" #include "Time.H" - #include "fieldAverageItem.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(fieldAverage, 0); } +} // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -void Foam::fieldAverage::resetFields() +void Foam::functionObjects::fieldAverage::resetFields() { forAll(faItems_, i) { @@ -62,7 +64,7 @@ void Foam::fieldAverage::resetFields() } -void Foam::fieldAverage::initialize() +void Foam::functionObjects::fieldAverage::initialize() { resetFields(); @@ -85,16 +87,6 @@ void Foam::fieldAverage::initialize() addPrime2MeanField<vector, symmTensor>(fieldI); } - forAll(faItems_, fieldI) - { - if (!faItems_[fieldI].active()) - { - WarningInFunction - << "Field " << faItems_[fieldI].fieldName() - << " not found in database for averaging"; - } - } - // ensure first averaging works unconditionally prevTimeIndex_ = -1; @@ -104,7 +96,7 @@ void Foam::fieldAverage::initialize() } -void Foam::fieldAverage::restart() +void Foam::functionObjects::fieldAverage::restart() { Info<< " Restarting averaging at time " << obr_.time().timeName() << nl << endl; @@ -119,7 +111,7 @@ void Foam::fieldAverage::restart() } -void Foam::fieldAverage::calcAverages() +void Foam::functionObjects::fieldAverage::calcAverages() { if (!initialised_) { @@ -168,7 +160,7 @@ void Foam::fieldAverage::calcAverages() } -void Foam::fieldAverage::writeAverages() const +void Foam::functionObjects::fieldAverage::writeAverages() const { Info<< " Writing average fields" << endl; @@ -180,7 +172,7 @@ void Foam::fieldAverage::writeAverages() const } -void Foam::fieldAverage::writeAveragingProperties() const +void Foam::functionObjects::fieldAverage::writeAveragingProperties() const { IOdictionary propsDict ( @@ -208,7 +200,7 @@ void Foam::fieldAverage::writeAveragingProperties() const } -void Foam::fieldAverage::readAveragingProperties() +void Foam::functionObjects::fieldAverage::readAveragingProperties() { totalIter_.clear(); totalIter_.setSize(faItems_.size(), 1); @@ -264,7 +256,7 @@ void Foam::fieldAverage::readAveragingProperties() // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::fieldAverage::fieldAverage +Foam::functionObjects::fieldAverage::fieldAverage ( const word& name, const objectRegistry& obr, @@ -274,7 +266,6 @@ Foam::fieldAverage::fieldAverage : name_(name), obr_(obr), - active_(true), prevTimeIndex_(-1), restartOnRestart_(false), restartOnOutput_(false), @@ -286,105 +277,91 @@ Foam::fieldAverage::fieldAverage totalTime_(), periodIndex_(1) { - // Only active if a fvMesh is available - if (isA<fvMesh>(obr_)) - { - read(dict); - } - else - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } + read(dict); +} + + +bool Foam::functionObjects::fieldAverage::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::fieldAverage::~fieldAverage() +Foam::functionObjects::fieldAverage::~fieldAverage() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::fieldAverage::read(const dictionary& dict) +void Foam::functionObjects::fieldAverage::read(const dictionary& dict) { - if (active_) - { - initialised_ = false; + initialised_ = false; - Info<< type() << " " << name_ << ":" << nl; + Info<< type() << " " << name_ << ":" << nl; - dict.readIfPresent("restartOnRestart", restartOnRestart_); - dict.readIfPresent("restartOnOutput", restartOnOutput_); - dict.readIfPresent("periodicRestart", periodicRestart_); - dict.lookup("fields") >> faItems_; + dict.readIfPresent("restartOnRestart", restartOnRestart_); + dict.readIfPresent("restartOnOutput", restartOnOutput_); + dict.readIfPresent("periodicRestart", periodicRestart_); + dict.lookup("fields") >> faItems_; - if (periodicRestart_) - { - dict.lookup("restartPeriod") >> restartPeriod_; - } + if (periodicRestart_) + { + dict.lookup("restartPeriod") >> restartPeriod_; + } - readAveragingProperties(); + readAveragingProperties(); - Info<< endl; - } + Info<< endl; } -void Foam::fieldAverage::execute() +void Foam::functionObjects::fieldAverage::execute() { - if (active_) - { - calcAverages(); - Info<< endl; - } + calcAverages(); + Info<< endl; } -void Foam::fieldAverage::end() +void Foam::functionObjects::fieldAverage::end() { - if (active_) - { - calcAverages(); - Info<< endl; - } + calcAverages(); + Info<< endl; } -void Foam::fieldAverage::timeSet() +void Foam::functionObjects::fieldAverage::timeSet() {} -void Foam::fieldAverage::write() +void Foam::functionObjects::fieldAverage::write() { - if (active_) - { - writeAverages(); - writeAveragingProperties(); + writeAverages(); + writeAveragingProperties(); - if (restartOnOutput_) - { - restart(); - } - - Info<< endl; + if (restartOnOutput_) + { + restart(); } + + Info<< endl; } -void Foam::fieldAverage::updateMesh(const mapPolyMesh&) -{ - // Do nothing -} +void Foam::functionObjects::fieldAverage::updateMesh(const mapPolyMesh&) +{} -void Foam::fieldAverage::movePoints(const polyMesh&) -{ - // Do nothing -} +void Foam::functionObjects::fieldAverage::movePoints(const polyMesh&) +{} // ************************************************************************* // diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H index b78b10ad102bec20b439891fdd58a4ac009fd993..ec0403c53335d1197ddff0208ab4f3105443a0f2 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::fieldAverage + Foam::functionObjects::fieldAverage Group grpFieldFunctionObjects @@ -133,12 +133,17 @@ namespace Foam // Forward declaration of classes class objectRegistry; class dictionary; -class fieldAverageItem; template<class Type> class List; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + +// Forward declaration of classes +class fieldAverageItem; + /*---------------------------------------------------------------------------*\ Class fieldAverage Declaration \*---------------------------------------------------------------------------*/ @@ -155,9 +160,6 @@ protected: //- Database this class is registered to const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Time at last call, prevents repeated averaging label prevTimeIndex_; @@ -299,6 +301,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~fieldAverage(); @@ -337,6 +349,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C index 6078b95b72b848c49cd22617f4c5737d3df04c5a..3995e81e8342a3aa6ff6e57068087393bd88223c 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C @@ -31,10 +31,8 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // template<class Type> -void Foam::fieldAverage::addMeanFieldType(const label fieldI) +void Foam::functionObjects::fieldAverage::addMeanFieldType(const label fieldI) { - faItems_[fieldI].active() = true; - const word& fieldName = faItems_[fieldI].fieldName(); const word& meanFieldName = faItems_[fieldI].meanFieldName(); @@ -79,7 +77,7 @@ void Foam::fieldAverage::addMeanFieldType(const label fieldI) template<class Type> -void Foam::fieldAverage::addMeanField(const label fieldI) +void Foam::functionObjects::fieldAverage::addMeanField(const label fieldI) { if (faItems_[fieldI].mean()) { @@ -101,7 +99,10 @@ void Foam::fieldAverage::addMeanField(const label fieldI) template<class Type1, class Type2> -void Foam::fieldAverage::addPrime2MeanFieldType(const label fieldI) +void Foam::functionObjects::fieldAverage::addPrime2MeanFieldType +( + const label fieldI +) { const word& fieldName = faItems_[fieldI].fieldName(); const word& meanFieldName = faItems_[fieldI].meanFieldName(); @@ -149,7 +150,7 @@ void Foam::fieldAverage::addPrime2MeanFieldType(const label fieldI) template<class Type1, class Type2> -void Foam::fieldAverage::addPrime2MeanField(const label fieldI) +void Foam::functionObjects::fieldAverage::addPrime2MeanField(const label fieldI) { typedef GeometricField<Type1, fvPatchField, volMesh> volFieldType1; typedef GeometricField<Type1, fvsPatchField, surfaceMesh> surfFieldType1; @@ -182,7 +183,10 @@ void Foam::fieldAverage::addPrime2MeanField(const label fieldI) template<class Type> -void Foam::fieldAverage::calculateMeanFieldType(const label fieldI) const +void Foam::functionObjects::fieldAverage::calculateMeanFieldType +( + const label fieldI +) const { const word& fieldName = faItems_[fieldI].fieldName(); @@ -224,7 +228,7 @@ void Foam::fieldAverage::calculateMeanFieldType(const label fieldI) const template<class Type> -void Foam::fieldAverage::calculateMeanFields() const +void Foam::functionObjects::fieldAverage::calculateMeanFields() const { typedef GeometricField<Type, fvPatchField, volMesh> volFieldType; typedef GeometricField<Type, fvsPatchField, surfaceMesh> surfFieldType; @@ -241,7 +245,10 @@ void Foam::fieldAverage::calculateMeanFields() const template<class Type1, class Type2> -void Foam::fieldAverage::calculatePrime2MeanFieldType(const label fieldI) const +void Foam::functionObjects::fieldAverage::calculatePrime2MeanFieldType +( + const label fieldI +) const { const word& fieldName = faItems_[fieldI].fieldName(); @@ -288,7 +295,7 @@ void Foam::fieldAverage::calculatePrime2MeanFieldType(const label fieldI) const template<class Type1, class Type2> -void Foam::fieldAverage::calculatePrime2MeanFields() const +void Foam::functionObjects::fieldAverage::calculatePrime2MeanFields() const { typedef GeometricField<Type1, fvPatchField, volMesh> volFieldType1; typedef GeometricField<Type1, fvsPatchField, surfaceMesh> surfFieldType1; @@ -308,7 +315,10 @@ void Foam::fieldAverage::calculatePrime2MeanFields() const template<class Type1, class Type2> -void Foam::fieldAverage::addMeanSqrToPrime2MeanType(const label fieldI) const +void Foam::functionObjects::fieldAverage::addMeanSqrToPrime2MeanType +( + const label fieldI +) const { const word& fieldName = faItems_[fieldI].fieldName(); @@ -328,7 +338,7 @@ void Foam::fieldAverage::addMeanSqrToPrime2MeanType(const label fieldI) const template<class Type1, class Type2> -void Foam::fieldAverage::addMeanSqrToPrime2Mean() const +void Foam::functionObjects::fieldAverage::addMeanSqrToPrime2Mean() const { typedef GeometricField<Type1, fvPatchField, volMesh> volFieldType1; typedef GeometricField<Type1, fvsPatchField, surfaceMesh> surfFieldType1; @@ -348,7 +358,10 @@ void Foam::fieldAverage::addMeanSqrToPrime2Mean() const template<class Type> -void Foam::fieldAverage::writeFieldType(const word& fieldName) const +void Foam::functionObjects::fieldAverage::writeFieldType +( + const word& fieldName +) const { if (obr_.foundObject<Type>(fieldName)) { @@ -359,7 +372,7 @@ void Foam::fieldAverage::writeFieldType(const word& fieldName) const template<class Type> -void Foam::fieldAverage::writeFields() const +void Foam::functionObjects::fieldAverage::writeFields() const { typedef GeometricField<Type, fvPatchField, volMesh> volFieldType; typedef GeometricField<Type, fvsPatchField, surfaceMesh> surfFieldType; diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageFunctionObject/fieldAverageFunctionObject.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageFunctionObject/fieldAverageFunctionObject.H index 897537013cbf71f0013edd0d7f82b28f7ce0c66e..13e14917538d29381308e125f53d110169dd4ec6 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageFunctionObject/fieldAverageFunctionObject.H +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageFunctionObject/fieldAverageFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<fieldAverage> + typedef OutputFilterFunctionObject<functionObjects::fieldAverage> fieldAverageFunctionObject; } diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.C index da0d3f0021dbbfe7d864f93586111d0c6f8cc387..308bf1649ded14fc4820b5db216cb5dc89c11c54 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.C +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,33 +27,34 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // -namespace Foam -{ - const word fieldAverageItem::EXT_MEAN = "Mean"; - const word fieldAverageItem::EXT_PRIME2MEAN = "Prime2Mean"; - - template<> - const char* Foam::NamedEnum - < - Foam::fieldAverageItem::baseType, - 2 - >::names[] = - { - "iteration", - "time" - }; -} +const Foam::word Foam::functionObjects::fieldAverageItem::EXT_MEAN +( + "Mean" +); + +const Foam::word Foam::functionObjects::fieldAverageItem::EXT_PRIME2MEAN +( + "Prime2Mean" +); +template<> +const char* Foam::NamedEnum +< + Foam::functionObjects::fieldAverageItem::baseType, + 2 +>::names[] = { "iteration", "time"}; -const Foam::NamedEnum<Foam::fieldAverageItem::baseType, 2> - Foam::fieldAverageItem::baseTypeNames_; +const Foam::NamedEnum +< + Foam::functionObjects::fieldAverageItem::baseType, + 2 +> Foam::functionObjects::fieldAverageItem::baseTypeNames_; // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::fieldAverageItem::fieldAverageItem() +Foam::functionObjects::fieldAverageItem::fieldAverageItem() : - active_(false), fieldName_("unknown"), mean_(0), meanFieldName_("unknown"), @@ -65,9 +66,11 @@ Foam::fieldAverageItem::fieldAverageItem() {} -Foam::fieldAverageItem::fieldAverageItem(const fieldAverageItem& faItem) +Foam::functionObjects::fieldAverageItem::fieldAverageItem +( + const fieldAverageItem& faItem +) : - active_(faItem.active_), fieldName_(faItem.fieldName_), mean_(faItem.mean_), meanFieldName_(faItem.meanFieldName_), @@ -81,13 +84,16 @@ Foam::fieldAverageItem::fieldAverageItem(const fieldAverageItem& faItem) // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::fieldAverageItem::~fieldAverageItem() +Foam::functionObjects::fieldAverageItem::~fieldAverageItem() {} // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // -void Foam::fieldAverageItem::operator=(const fieldAverageItem& rhs) +void Foam::functionObjects::fieldAverageItem::operator= +( + const fieldAverageItem& rhs +) { // Check for assignment to self if (this == &rhs) @@ -98,7 +104,6 @@ void Foam::fieldAverageItem::operator=(const fieldAverageItem& rhs) } // Set updated values - active_ = rhs.active_; fieldName_ = rhs.fieldName_; mean_ = rhs.mean_; meanFieldName_ = rhs.meanFieldName_; diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H index 0c40bac95ad99febcac2d5e1a78fd79a279e13c3..63e2b02c1fabcab2161b4fe0de908d9148fdae93 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::fieldAverageItem + Foam::functionObjects::fieldAverageItem Description Helper class to describe what form of averaging to apply. A set will be @@ -62,12 +62,14 @@ namespace Foam class Istream; class Ostream; +namespace functionObjects +{ + // Forward declaration of friend functions and operators class fieldAverageItem; Istream& operator>>(Istream&, fieldAverageItem&); Ostream& operator<<(Ostream&, const fieldAverageItem&); - /*---------------------------------------------------------------------------*\ Class fieldAverageItem Declaration \*---------------------------------------------------------------------------*/ @@ -98,9 +100,6 @@ private: // Private data - //- Active flag - Switch active_; - //- Field name word fieldName_; @@ -151,18 +150,6 @@ public: // Access - //- Return const access to the active flag - const Switch& active() const - { - return active_; - } - - //- Return non-const access to the active flag - Switch& active() - { - return active_; - } - //- Return const access to the field name const word& fieldName() const { @@ -277,6 +264,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C index 7dfee8646d00b0a0f9517d9f59e1fc8b41152ede..f5fe50137bf8d39d0b416435cf041ed57176f295 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItemIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,9 +29,8 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::fieldAverageItem::fieldAverageItem(Istream& is) +Foam::functionObjects::fieldAverageItem::fieldAverageItem(Istream& is) : - active_(false), fieldName_("unknown"), mean_(0), meanFieldName_("unknown"), @@ -40,7 +39,11 @@ Foam::fieldAverageItem::fieldAverageItem(Istream& is) base_(ITER), window_(-1.0) { - is.check("Foam::fieldAverageItem::fieldAverageItem(Foam::Istream&)"); + is.check + ( + "Foam::functionObjects::fieldAverageItem::fieldAverageItem" + "(Foam::Istream&)" + ); const dictionaryEntry entry(dictionary::null, is); @@ -63,17 +66,20 @@ Foam::fieldAverageItem::fieldAverageItem(Istream& is) // * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // -Foam::Istream& Foam::operator>>(Istream& is, fieldAverageItem& faItem) +Foam::Istream& Foam::functionObjects::operator>> +( + Istream& is, + fieldAverageItem& faItem +) { is.check ( "Foam::Istream& Foam::operator>>" - "(Foam::Istream&, Foam::fieldAverageItem&)" + "(Foam::Istream&, Foam::functionObjects::fieldAverageItem&)" ); const dictionaryEntry entry(dictionary::null, is); - faItem.active_ = false; faItem.fieldName_ = entry.keyword(); entry.lookup("mean") >> faItem.mean_; entry.lookup("prime2Mean") >> faItem.prime2Mean_; @@ -97,12 +103,16 @@ Foam::Istream& Foam::operator>>(Istream& is, fieldAverageItem& faItem) } -Foam::Ostream& Foam::operator<<(Ostream& os, const fieldAverageItem& faItem) +Foam::Ostream& Foam::functionObjects::operator<< +( + Ostream& os, + const fieldAverageItem& faItem +) { os.check ( "Foam::Ostream& Foam::operator<<" - "(Foam::Ostream&, const Foam::fieldAverageItem&)" + "(Foam::Ostream&, const Foam::functionObjects::fieldAverageItem&)" ); os << faItem.fieldName_ << nl << token::BEGIN_BLOCK << nl; @@ -129,7 +139,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const fieldAverageItem& faItem) os.check ( "Foam::Ostream& Foam::operator<<" - "(Foam::Ostream&, const Foam::fieldAverageItem&)" + "(Foam::Ostream&, const Foam::functionObjects::fieldAverageItem&)" ); return os; diff --git a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C index 44788eada95dc737f0e62bdd4c915c826287d429..3198b91cc663672bd3aecad4b05e003facdaf395 100644 --- a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C +++ b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -30,13 +30,17 @@ License namespace Foam { -defineTypeNameAndDebug(fieldCoordinateSystemTransform, 0); +namespace functionObjects +{ + defineTypeNameAndDebug(fieldCoordinateSystemTransform, 0); +} } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::fieldCoordinateSystemTransform::fieldCoordinateSystemTransform +Foam::functionObjects::fieldCoordinateSystemTransform:: +fieldCoordinateSystemTransform ( const word& name, const objectRegistry& obr, @@ -46,100 +50,91 @@ Foam::fieldCoordinateSystemTransform::fieldCoordinateSystemTransform : name_(name), obr_(obr), - active_(true), fieldSet_(), coordSys_(obr, dict) { - // Check if the available mesh is an fvMesh otherise deactivate - if (isA<fvMesh>(obr_)) - { - read(dict); + read(dict); - Info<< type() << " " << name_ << ":" << nl - << " Applying transformation from global Cartesian to local " - << coordSys_ << nl << endl; - } - else - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ - << endl; - } + Info<< type() << " " << name_ << ":" << nl + << " Applying transformation from global Cartesian to local " + << coordSys_ << nl << endl; +} + + +bool Foam::functionObjects::fieldCoordinateSystemTransform::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::fieldCoordinateSystemTransform::~fieldCoordinateSystemTransform() +Foam::functionObjects::fieldCoordinateSystemTransform:: +~fieldCoordinateSystemTransform() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::fieldCoordinateSystemTransform::read(const dictionary& dict) +void Foam::functionObjects::fieldCoordinateSystemTransform::read +( + const dictionary& dict +) { - if (active_) - { - dict.lookup("fields") >> fieldSet_; - } + dict.lookup("fields") >> fieldSet_; } -void Foam::fieldCoordinateSystemTransform::execute() +void Foam::functionObjects::fieldCoordinateSystemTransform::execute() { - if (active_) + Info<< type() << " " << name_ << " output:" << nl; + + forAll(fieldSet_, fieldI) { - Info<< type() << " " << name_ << " output:" << nl; - - forAll(fieldSet_, fieldI) - { - // If necessary load field - transform<scalar>(fieldSet_[fieldI]); - transform<vector>(fieldSet_[fieldI]); - transform<sphericalTensor>(fieldSet_[fieldI]); - transform<symmTensor>(fieldSet_[fieldI]); - transform<tensor>(fieldSet_[fieldI]); - } + // If necessary load field + transform<scalar>(fieldSet_[fieldI]); + transform<vector>(fieldSet_[fieldI]); + transform<sphericalTensor>(fieldSet_[fieldI]); + transform<symmTensor>(fieldSet_[fieldI]); + transform<tensor>(fieldSet_[fieldI]); } } -void Foam::fieldCoordinateSystemTransform::end() +void Foam::functionObjects::fieldCoordinateSystemTransform::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::fieldCoordinateSystemTransform::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::fieldCoordinateSystemTransform::timeSet() +{} -void Foam::fieldCoordinateSystemTransform::write() +void Foam::functionObjects::fieldCoordinateSystemTransform::write() { - if (active_) - { - Info<< type() << " " << name_ << " output:" << nl; + Info<< type() << " " << name_ << " output:" << nl; - forAll(fieldSet_, fieldI) - { - const word fieldName = fieldSet_[fieldI] + ":Transformed"; - - const regIOobject& field = - obr_.lookupObject<regIOobject>(fieldName); + forAll(fieldSet_, fieldI) + { + const word fieldName = fieldSet_[fieldI] + ":Transformed"; - Info<< " writing field " << field.name() << nl; + const regIOobject& field = + obr_.lookupObject<regIOobject>(fieldName); - field.write(); - } + Info<< " writing field " << field.name() << nl; - Info<< endl; + field.write(); } + + Info<< endl; } diff --git a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H index c74aad72fb7d7939c6733ae3ce54b5c9701f6327..ceea83e7ee4a7bfb0f4f480867fc10901fe6667c 100644 --- a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H +++ b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::fieldCoordinateSystemTransform + Foam::functionObjects::fieldCoordinateSystemTransform Group grpFieldFunctionObjects @@ -93,6 +93,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class fieldCoordinateSystemTransform Declaration \*---------------------------------------------------------------------------*/ @@ -108,9 +111,6 @@ protected: const objectRegistry& obr_; - //- on/off switch - bool active_; - //- Fields to transform wordList fieldSet_; @@ -156,6 +156,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~fieldCoordinateSystemTransform(); @@ -196,6 +206,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformFunctionObject.H b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformFunctionObject.H index 20cf0fccbf9b73b590cfe41b5d61af920162c6ab..aaa018733337f16048b9db67db6e2b665a7fe1ea 100644 --- a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformFunctionObject.H +++ b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,8 +43,10 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<fieldCoordinateSystemTransform> - fieldCoordinateSystemTransformFunctionObject; + typedef OutputFilterFunctionObject + < + functionObjects::fieldCoordinateSystemTransform + > fieldCoordinateSystemTransformFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformTemplates.C b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformTemplates.C index 627414b9e4e29d61925f598373c7eeedf5608738..334d9d6289de90b7cf181cab250d6cdbc0fd64f5 100644 --- a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformTemplates.C +++ b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransformTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,7 +32,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template<class Type> -void Foam::fieldCoordinateSystemTransform::transformField +void Foam::functionObjects::fieldCoordinateSystemTransform::transformField ( const Type& field ) const @@ -74,7 +74,7 @@ void Foam::fieldCoordinateSystemTransform::transformField template<class Type> -void Foam::fieldCoordinateSystemTransform::transform +void Foam::functionObjects::fieldCoordinateSystemTransform::transform ( const word& fieldName ) const diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.C b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.C index 6b0c43ef7b527bb59c24a12cb838ee02c0e076ac..7b29a3cb20e22ef521e8e1da5322db494477cb5e 100644 --- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.C +++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.C @@ -29,29 +29,30 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(fieldMinMax, 0); - - template<> - const char* NamedEnum - < - fieldMinMax::modeType, - 2 - >::names[] = - { - "magnitude", - "component" - }; +} } +template<> +const char* Foam::NamedEnum +< + Foam::functionObjects::fieldMinMax::modeType, + 2 +>::names[] = {"magnitude", "component"}; -const Foam::NamedEnum<Foam::fieldMinMax::modeType, 2> -Foam::fieldMinMax::modeTypeNames_; +const Foam::NamedEnum +< + Foam::functionObjects::fieldMinMax::modeType, + 2 +> Foam::functionObjects::fieldMinMax::modeTypeNames_; // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::fieldMinMax::fieldMinMax +Foam::functionObjects::fieldMinMax::fieldMinMax ( const word& name, const objectRegistry& obr, @@ -62,47 +63,47 @@ Foam::fieldMinMax::fieldMinMax functionObjectFiles(obr, name, typeName), name_(name), obr_(obr), - active_(true), log_(true), location_(true), mode_(mdMag), fieldSet_() { - // Check if the available mesh is an fvMesh otherise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ - << endl; - } - read(dict); } +bool Foam::functionObjects::fieldMinMax::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::fieldMinMax::~fieldMinMax() +Foam::functionObjects::fieldMinMax::~fieldMinMax() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::fieldMinMax::read(const dictionary& dict) +void Foam::functionObjects::fieldMinMax::read(const dictionary& dict) { - if (active_) - { - log_ = dict.lookupOrDefault<Switch>("log", true); - location_ = dict.lookupOrDefault<Switch>("location", true); + log_ = dict.lookupOrDefault<Switch>("log", true); + location_ = dict.lookupOrDefault<Switch>("location", true); - mode_ = modeTypeNames_[dict.lookupOrDefault<word>("mode", "magnitude")]; - dict.lookup("fields") >> fieldSet_; - } + mode_ = modeTypeNames_[dict.lookupOrDefault<word>("mode", "magnitude")]; + dict.lookup("fields") >> fieldSet_; } -void Foam::fieldMinMax::writeFileHeader(const label i) +void Foam::functionObjects::fieldMinMax::writeFileHeader(const label i) { OFstream& file = this->file(); @@ -142,45 +143,36 @@ void Foam::fieldMinMax::writeFileHeader(const label i) } -void Foam::fieldMinMax::execute() -{ - // Do nothing - only valid on write -} +void Foam::functionObjects::fieldMinMax::execute() +{} -void Foam::fieldMinMax::end() -{ - // Do nothing - only valid on write -} +void Foam::functionObjects::fieldMinMax::end() +{} -void Foam::fieldMinMax::timeSet() -{ - // Do nothing - only valid on write -} +void Foam::functionObjects::fieldMinMax::timeSet() +{} -void Foam::fieldMinMax::write() +void Foam::functionObjects::fieldMinMax::write() { - if (active_) - { - functionObjectFiles::write(); + functionObjectFiles::write(); - if (!location_) writeTime(file()); - if (log_) Info<< type() << " " << name_ << " output:" << nl; - - forAll(fieldSet_, fieldI) - { - calcMinMaxFields<scalar>(fieldSet_[fieldI], mdCmpt); - calcMinMaxFields<vector>(fieldSet_[fieldI], mode_); - calcMinMaxFields<sphericalTensor>(fieldSet_[fieldI], mode_); - calcMinMaxFields<symmTensor>(fieldSet_[fieldI], mode_); - calcMinMaxFields<tensor>(fieldSet_[fieldI], mode_); - } + if (!location_) writeTime(file()); + if (log_) Info<< type() << " " << name_ << " output:" << nl; - if (!location_) file()<< endl; - if (log_) Info<< endl; + forAll(fieldSet_, fieldI) + { + calcMinMaxFields<scalar>(fieldSet_[fieldI], mdCmpt); + calcMinMaxFields<vector>(fieldSet_[fieldI], mode_); + calcMinMaxFields<sphericalTensor>(fieldSet_[fieldI], mode_); + calcMinMaxFields<symmTensor>(fieldSet_[fieldI], mode_); + calcMinMaxFields<tensor>(fieldSet_[fieldI], mode_); } + + if (!location_) file()<< endl; + if (log_) Info<< endl; } diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H index 22583932a5fc37e197a1a80ddd8b53e61f4de335..b28e9433d8c99cc73551ec700f1e64847c7ba82e 100644 --- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H +++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::fieldMinMax + Foam::functionObjects::fieldMinMax Group grpFieldFunctionObjects @@ -93,6 +93,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class fieldMinMax Declaration \*---------------------------------------------------------------------------*/ @@ -122,9 +125,6 @@ protected: const objectRegistry& obr_; - //- on/off switch - bool active_; - //- Switch to send output to Info as well Switch log_; @@ -182,6 +182,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~fieldMinMax(); @@ -230,6 +240,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.H b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.H index 73cb571e9f3cc769c276698a7aeb66cf261e8c3a..dceaac3bde74b6fcf5cd74640142ea729b0a5278 100644 --- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.H +++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<fieldMinMax> + typedef OutputFilterFunctionObject<functionObjects::fieldMinMax> fieldMinMaxFunctionObject; } diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C index fb3b6eebc61778c26edf6267e071e493b90c5e8a..744f2061eabf7473a4e6c395985623ec6d2dac19 100644 --- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C +++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMaxTemplates.C @@ -29,7 +29,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template<class Type> -void Foam::fieldMinMax::output +void Foam::functionObjects::fieldMinMax::output ( const word& fieldName, const word& outputName, @@ -99,7 +99,7 @@ void Foam::fieldMinMax::output template<class Type> -void Foam::fieldMinMax::calcMinMaxFields +void Foam::functionObjects::fieldMinMax::calcMinMaxFields ( const word& fieldName, const modeType& mode diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C index 3b1d86eaf6662f50fb1f943be9f483d1dd4346bf..8d9b291db2957aeeb329bc285c113e3aad3ebee3 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C +++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,48 +32,61 @@ License namespace Foam { - template<> - const char* NamedEnum<fieldValues::cellSource::sourceType, 2>::names[] = - { - "cellZone", - "all" - }; - - - template<> - const char* NamedEnum<fieldValues::cellSource::operationType, 11>::names[] = - { - "none", - "sum", - "sumMag", - "average", - "weightedAverage", - "volAverage", - "weightedVolAverage", - "volIntegrate", - "min", - "max", - "CoV" - }; - - namespace fieldValues - { - defineTypeNameAndDebug(cellSource, 0); - addToRunTimeSelectionTable(fieldValue, cellSource, dictionary); - } +namespace functionObjects +{ +namespace fieldValues +{ + defineTypeNameAndDebug(cellSource, 0); + addToRunTimeSelectionTable(fieldValue, cellSource, dictionary); +} +} } - -const Foam::NamedEnum<Foam::fieldValues::cellSource::sourceType, 2> - Foam::fieldValues::cellSource::sourceTypeNames_; - -const Foam::NamedEnum<Foam::fieldValues::cellSource::operationType, 11> - Foam::fieldValues::cellSource::operationTypeNames_; +template<> +const char* +Foam::NamedEnum +< + Foam::functionObjects::fieldValues::cellSource::sourceType, + 2 +>::names[] = {"cellZone", "all"}; + +template<> +const char* +Foam::NamedEnum +< + Foam::functionObjects::fieldValues::cellSource::operationType, + 11 +>::names[] = +{ + "none", + "sum", + "sumMag", + "average", + "weightedAverage", + "volAverage", + "weightedVolAverage", + "volIntegrate", + "min", + "max", + "CoV" +}; + +const Foam::NamedEnum +< + Foam::functionObjects::fieldValues::cellSource::sourceType, + 2 +> Foam::functionObjects::fieldValues::cellSource::sourceTypeNames_; + +const Foam::NamedEnum +< + Foam::functionObjects::fieldValues::cellSource::operationType, + 11 +> Foam::functionObjects::fieldValues::cellSource::operationTypeNames_; // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -void Foam::fieldValues::cellSource::setCellZoneCells() +void Foam::functionObjects::fieldValues::cellSource::setCellZoneCells() { switch (source_) { @@ -118,7 +131,7 @@ void Foam::fieldValues::cellSource::setCellZoneCells() } -Foam::scalar Foam::fieldValues::cellSource::volume() const +Foam::scalar Foam::functionObjects::fieldValues::cellSource::volume() const { return gSum(filterField(mesh().V())); } @@ -126,19 +139,19 @@ Foam::scalar Foam::fieldValues::cellSource::volume() const // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // -void Foam::fieldValues::cellSource::initialise(const dictionary& dict) +void Foam::functionObjects::fieldValues::cellSource::initialise +( + const dictionary& dict +) { setCellZoneCells(); if (nCells_ == 0) { - WarningInFunction + FatalErrorInFunction << type() << " " << name_ << ": " << sourceTypeNames_[source_] << "(" << sourceName_ << "):" << nl - << " Source has no cells - deactivating" << endl; - - active_ = false; - return; + << " Source has no cells" << exit(FatalError); } volume_ = volume(); @@ -158,7 +171,10 @@ void Foam::fieldValues::cellSource::initialise(const dictionary& dict) } -void Foam::fieldValues::cellSource::writeFileHeader(const label i) +void Foam::functionObjects::fieldValues::cellSource::writeFileHeader +( + const label i +) { writeCommented(file(), "Source : "); file() << sourceTypeNames_[source_] << " " << sourceName_ << endl; @@ -186,7 +202,7 @@ void Foam::fieldValues::cellSource::writeFileHeader(const label i) // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::fieldValues::cellSource::cellSource +Foam::functionObjects::fieldValues::cellSource::cellSource ( const word& name, const objectRegistry& obr, @@ -206,74 +222,84 @@ Foam::fieldValues::cellSource::cellSource } +bool Foam::functionObjects::fieldValues::cellSource::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::fieldValues::cellSource::~cellSource() +Foam::functionObjects::fieldValues::cellSource::~cellSource() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::fieldValues::cellSource::read(const dictionary& dict) +void Foam::functionObjects::fieldValues::cellSource::read +( + const dictionary& dict +) { fieldValue::read(dict); - if (active_) - { - // no additional info to read - initialise(dict); - } + // No additional info to read + initialise(dict); } -void Foam::fieldValues::cellSource::write() +void Foam::functionObjects::fieldValues::cellSource::write() { fieldValue::write(); - if (active_) + if (Pstream::master()) { - if (Pstream::master()) - { - writeTime(file()); - } + writeTime(file()); + } - if (writeVolume_) + if (writeVolume_) + { + volume_ = volume(); + if (Pstream::master()) { - volume_ = volume(); - if (Pstream::master()) - { - file() << tab << volume_; - } - if (log_) Info<< " total volume = " << volume_ << endl; + file() << tab << volume_; } + if (log_) Info<< " total volume = " << volume_ << endl; + } - forAll(fields_, i) - { - const word& fieldName = fields_[i]; - bool processed = false; + forAll(fields_, i) + { + const word& fieldName = fields_[i]; + bool processed = false; - processed = processed || writeValues<scalar>(fieldName); - processed = processed || writeValues<vector>(fieldName); - processed = processed || writeValues<sphericalTensor>(fieldName); - processed = processed || writeValues<symmTensor>(fieldName); - processed = processed || writeValues<tensor>(fieldName); + processed = processed || writeValues<scalar>(fieldName); + processed = processed || writeValues<vector>(fieldName); + processed = processed || writeValues<sphericalTensor>(fieldName); + processed = processed || writeValues<symmTensor>(fieldName); + processed = processed || writeValues<tensor>(fieldName); - if (!processed) - { - WarningInFunction - << "Requested field " << fieldName - << " not found in database and not processed" - << endl; - } - } - - if (Pstream::master()) + if (!processed) { - file()<< endl; + WarningInFunction + << "Requested field " << fieldName + << " not found in database and not processed" + << endl; } + } - if (log_) Info<< endl; + if (Pstream::master()) + { + file()<< endl; } + + if (log_) Info<< endl; } diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H index 169a816eee41adafa975303c65f34c058e10f216..7de7069c7d6326cc68a73f6a62b23fd19d33b97d 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H +++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::fieldValues::cellSource + Foam::functionObjects::fieldValues::cellSource Group grpFieldFunctionObjects @@ -114,6 +114,8 @@ SourceFiles namespace Foam { +namespace functionObjects +{ namespace fieldValues { @@ -237,14 +239,26 @@ public: TypeName("cellSource"); - //- Construct from components - cellSource - ( - const word& name, - const objectRegistry& obr, - const dictionary& dict, - const bool loadFromFiles = false - ); + // Constructors + + //- Construct from components + cellSource + ( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles = false + ); + + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); //- Destructor @@ -283,6 +297,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace fieldValues +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceFunctionObject.H b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceFunctionObject.H index f6e8045457a4461fffe60556716435ceffda083e..a136d782bc7cfb85829afff8e073f18b266ce570 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceFunctionObject.H +++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,8 +43,10 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<fieldValues::cellSource> - cellSourceFunctionObject; + typedef OutputFilterFunctionObject + < + functionObjects::fieldValues::cellSource + > cellSourceFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceI.H b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceI.H index 3256881d846e2bd28758909ee340b12c5e0fd931..c0a6bee40f9322fba4045f8101ae6666e62b33b1 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceI.H +++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,19 +27,18 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -inline const Foam::fieldValues::cellSource::sourceType& -Foam::fieldValues::cellSource::source() const +inline const Foam::functionObjects::fieldValues::cellSource::sourceType& +Foam::functionObjects::fieldValues::cellSource::source() const { return source_; } inline const Foam::labelList& -Foam::fieldValues::cellSource::cellId() const +Foam::functionObjects::fieldValues::cellSource::cellId() const { return cellId_; } // ************************************************************************* // - diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceTemplates.C b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceTemplates.C index d678ee53a82331415bcc4a3e84d8516af71f31d1..4bb2dad28cf2e10b6ff15ba754ba6bf62bc55213 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceTemplates.C +++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceTemplates.C @@ -29,7 +29,10 @@ License // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // template<class Type> -bool Foam::fieldValues::cellSource::validField(const word& fieldName) const +bool Foam::functionObjects::fieldValues::cellSource::validField +( + const word& fieldName +) const { typedef GeometricField<Type, fvPatchField, volMesh> vf; @@ -43,7 +46,8 @@ bool Foam::fieldValues::cellSource::validField(const word& fieldName) const template<class Type> -Foam::tmp<Foam::Field<Type>> Foam::fieldValues::cellSource::setFieldValues +Foam::tmp<Foam::Field<Type>> +Foam::functionObjects::fieldValues::cellSource::setFieldValues ( const word& fieldName, const bool mustGet @@ -68,7 +72,7 @@ Foam::tmp<Foam::Field<Type>> Foam::fieldValues::cellSource::setFieldValues template<class Type> -Type Foam::fieldValues::cellSource::processValues +Type Foam::functionObjects::fieldValues::cellSource::processValues ( const Field<Type>& values, const scalarField& V, @@ -140,10 +144,8 @@ Type Foam::fieldValues::cellSource::processValues break; } - default: - { - // Do nothing - } + case opNone: + {} } return result; @@ -153,7 +155,10 @@ Type Foam::fieldValues::cellSource::processValues // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class Type> -bool Foam::fieldValues::cellSource::writeValues(const word& fieldName) +bool Foam::functionObjects::fieldValues::cellSource::writeValues +( + const word& fieldName +) { const bool ok = validField<Type>(fieldName); @@ -211,7 +216,8 @@ bool Foam::fieldValues::cellSource::writeValues(const word& fieldName) template<class Type> -Foam::tmp<Foam::Field<Type>> Foam::fieldValues::cellSource::filterField +Foam::tmp<Foam::Field<Type>> +Foam::functionObjects::fieldValues::cellSource::filterField ( const Field<Type>& field ) const diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C index f37d0b484638bd566af94d602d821a74be89ad5b..6cf89971d0085c27629823e63d4fd00a80752f0f 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C +++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C @@ -38,53 +38,68 @@ License namespace Foam { - template<> - const char* NamedEnum<fieldValues::faceSource::sourceType, 3>::names[] = - { - "faceZone", - "patch", - "sampledSurface" - }; - - - template<> - const char* NamedEnum<fieldValues::faceSource::operationType, 15>::names[] = - { - "none", - "sum", - "sumMag", - "sumDirection", - "sumDirectionBalance", - "average", - "weightedAverage", - "areaAverage", - "weightedAreaAverage", - "areaIntegrate", - "min", - "max", - "CoV", - "areaNormalAverage", - "areaNormalIntegrate" - }; - - namespace fieldValues - { - defineTypeNameAndDebug(faceSource, 0); - addToRunTimeSelectionTable(fieldValue, faceSource, dictionary); - } +namespace functionObjects +{ +namespace fieldValues +{ + defineTypeNameAndDebug(faceSource, 0); + addToRunTimeSelectionTable(fieldValue, faceSource, dictionary); +} +} } +template<> +const char* Foam::NamedEnum +< + Foam::functionObjects::fieldValues::faceSource::sourceType, + 3 +>::names[] = +{ + "faceZone", + "patch", + "sampledSurface" +}; -const Foam::NamedEnum<Foam::fieldValues::faceSource::sourceType, 3> - Foam::fieldValues::faceSource::sourceTypeNames_; - -const Foam::NamedEnum<Foam::fieldValues::faceSource::operationType, 15> - Foam::fieldValues::faceSource::operationTypeNames_; +template<> +const char* Foam::NamedEnum +< + Foam::functionObjects::fieldValues::faceSource::operationType, + 15 +>::names[] = +{ + "none", + "sum", + "sumMag", + "sumDirection", + "sumDirectionBalance", + "average", + "weightedAverage", + "areaAverage", + "weightedAreaAverage", + "areaIntegrate", + "min", + "max", + "CoV", + "areaNormalAverage", + "areaNormalIntegrate" +}; + +const Foam::NamedEnum +< + Foam::functionObjects::fieldValues::faceSource::sourceType, + 3 +> Foam::functionObjects::fieldValues::faceSource::sourceTypeNames_; + +const Foam::NamedEnum +< + Foam::functionObjects::fieldValues::faceSource::operationType, + 15 +> Foam::functionObjects::fieldValues::faceSource::operationTypeNames_; // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -void Foam::fieldValues::faceSource::setFaceZoneFaces() +void Foam::functionObjects::fieldValues::faceSource::setFaceZoneFaces() { label zoneId = mesh().faceZones().findZoneID(sourceName_); @@ -169,7 +184,7 @@ void Foam::fieldValues::faceSource::setFaceZoneFaces() } -void Foam::fieldValues::faceSource::setPatchFaces() +void Foam::functionObjects::fieldValues::faceSource::setPatchFaces() { const label patchid = mesh().boundaryMesh().findPatchID(sourceName_); @@ -206,7 +221,10 @@ void Foam::fieldValues::faceSource::setPatchFaces() } -void Foam::fieldValues::faceSource::sampledSurfaceFaces(const dictionary& dict) +void Foam::functionObjects::fieldValues::faceSource::sampledSurfaceFaces +( + const dictionary& dict +) { surfacePtr_ = sampledSurface::New ( @@ -219,7 +237,7 @@ void Foam::fieldValues::faceSource::sampledSurfaceFaces(const dictionary& dict) } -void Foam::fieldValues::faceSource::combineMeshGeometry +void Foam::functionObjects::fieldValues::faceSource::combineMeshGeometry ( faceList& faces, pointField& points @@ -340,7 +358,7 @@ void Foam::fieldValues::faceSource::combineMeshGeometry } -void Foam::fieldValues::faceSource::combineSurfaceGeometry +void Foam::functionObjects::fieldValues::faceSource::combineSurfaceGeometry ( faceList& faces, pointField& points @@ -379,7 +397,7 @@ void Foam::fieldValues::faceSource::combineSurfaceGeometry } -Foam::scalar Foam::fieldValues::faceSource::totalArea() const +Foam::scalar Foam::functionObjects::fieldValues::faceSource::totalArea() const { scalar totalArea; @@ -398,7 +416,10 @@ Foam::scalar Foam::fieldValues::faceSource::totalArea() const // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // -void Foam::fieldValues::faceSource::initialise(const dictionary& dict) +void Foam::functionObjects::fieldValues::faceSource::initialise +( + const dictionary& dict +) { dict.lookup("sourceName") >> sourceName_; @@ -431,13 +452,10 @@ void Foam::fieldValues::faceSource::initialise(const dictionary& dict) if (nFaces_ == 0) { - WarningInFunction + FatalErrorInFunction << type() << " " << name_ << ": " << sourceTypeNames_[source_] << "(" << sourceName_ << "):" << nl - << " Source has no faces - deactivating" << endl; - - active_ = false; - return; + << " Source has no faces" << exit(FatalError); } if (surfacePtr_.valid()) @@ -513,7 +531,10 @@ void Foam::fieldValues::faceSource::initialise(const dictionary& dict) } -void Foam::fieldValues::faceSource::writeFileHeader(const label i) +void Foam::functionObjects::fieldValues::faceSource::writeFileHeader +( + const label i +) { writeCommented(file(), "Source : "); file() << sourceTypeNames_[source_] << " " << sourceName_ << endl; @@ -540,7 +561,7 @@ void Foam::fieldValues::faceSource::writeFileHeader(const label i) template<> -Foam::scalar Foam::fieldValues::faceSource::processValues +Foam::scalar Foam::functionObjects::fieldValues::faceSource::processValues ( const Field<scalar>& values, const vectorField& Sf, @@ -571,7 +592,7 @@ Foam::scalar Foam::fieldValues::faceSource::processValues template<> -Foam::vector Foam::fieldValues::faceSource::processValues +Foam::vector Foam::functionObjects::fieldValues::faceSource::processValues ( const Field<vector>& values, const vectorField& Sf, @@ -617,7 +638,7 @@ Foam::vector Foam::fieldValues::faceSource::processValues // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::fieldValues::faceSource::faceSource +Foam::functionObjects::fieldValues::faceSource::faceSource ( const word& name, const objectRegistry& obr, @@ -643,97 +664,106 @@ Foam::fieldValues::faceSource::faceSource } +bool Foam::functionObjects::fieldValues::faceSource::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::fieldValues::faceSource::~faceSource() +Foam::functionObjects::fieldValues::faceSource::~faceSource() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::fieldValues::faceSource::read(const dictionary& dict) +void Foam::functionObjects::fieldValues::faceSource::read +( + const dictionary& dict +) { fieldValue::read(dict); - - if (active_) - { - initialise(dict); - } + initialise(dict); } -void Foam::fieldValues::faceSource::write() +void Foam::functionObjects::fieldValues::faceSource::write() { fieldValue::write(); - if (active_) + if (surfacePtr_.valid()) { - if (surfacePtr_.valid()) - { - surfacePtr_().update(); - } + surfacePtr_().update(); + } + + if (Pstream::master()) + { + writeTime(file()); + } + if (writeArea_) + { + totalArea_ = totalArea(); if (Pstream::master()) { - writeTime(file()); + file() << tab << totalArea_; } + if (log_) Info<< " total area = " << totalArea_ << endl; + } - if (writeArea_) - { - totalArea_ = totalArea(); - if (Pstream::master()) - { - file() << tab << totalArea_; - } - if (log_) Info<< " total area = " << totalArea_ << endl; - } + // construct weight field. Note: zero size means weight = 1 + scalarField weightField; + if (weightFieldName_ != "none") + { + weightField = + getFieldValues<scalar> + ( + weightFieldName_, + true, + orientWeightField_ + ); + } - // construct weight field. Note: zero size means weight = 1 - scalarField weightField; - if (weightFieldName_ != "none") - { - weightField = - getFieldValues<scalar> - ( - weightFieldName_, - true, - orientWeightField_ - ); - } + // Combine onto master + combineFields(weightField); - // Combine onto master - combineFields(weightField); + // process the fields + forAll(fields_, i) + { + const word& fieldName = fields_[i]; + bool ok = false; - // process the fields - forAll(fields_, i) - { - const word& fieldName = fields_[i]; - bool ok = false; - - bool orient = i >= orientedFieldsStart_; - ok = ok || writeValues<scalar>(fieldName, weightField, orient); - ok = ok || writeValues<vector>(fieldName, weightField, orient); - ok = ok - || writeValues<sphericalTensor>(fieldName, weightField, orient); - ok = ok || writeValues<symmTensor>(fieldName, weightField, orient); - ok = ok || writeValues<tensor>(fieldName, weightField, orient); - - if (!ok) - { - WarningInFunction - << "Requested field " << fieldName - << " not found in database and not processed" - << endl; - } - } + bool orient = i >= orientedFieldsStart_; + ok = ok || writeValues<scalar>(fieldName, weightField, orient); + ok = ok || writeValues<vector>(fieldName, weightField, orient); + ok = ok + || writeValues<sphericalTensor>(fieldName, weightField, orient); + ok = ok || writeValues<symmTensor>(fieldName, weightField, orient); + ok = ok || writeValues<tensor>(fieldName, weightField, orient); - if (Pstream::master()) + if (!ok) { - file()<< endl; + WarningInFunction + << "Requested field " << fieldName + << " not found in database and not processed" + << endl; } + } - if (log_) Info<< endl; + if (Pstream::master()) + { + file()<< endl; } + + if (log_) Info<< endl; } diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H index 8389711a900d7fda7847b9a5a8bb322124a09470..ec72bd868ffd9409d7e3eab4912b707098dc4b81 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H +++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::fieldValues::faceSource + Foam::functionObjects::fieldValues::faceSource Group grpFieldFunctionObjects @@ -152,6 +152,8 @@ namespace Foam class sampledSurface; +namespace functionObjects +{ namespace fieldValues { @@ -337,14 +339,26 @@ public: TypeName("faceSource"); - //- Construct from components - faceSource - ( - const word& name, - const objectRegistry& obr, - const dictionary& dict, - const bool loadFromFiles = false - ); + // Constructors + + //- Construct from components + faceSource + ( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles = false + ); + + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); //- Destructor @@ -426,6 +440,7 @@ vector faceSource::processValues // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace fieldValues +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceFunctionObject.H b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceFunctionObject.H index b25c1042fd6c4319619685bfcbc08bcd2ddc0b6b..e368ea942f80160a9d4254b99b41f4cc183a6d81 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceFunctionObject.H +++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,8 +43,10 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<fieldValues::faceSource> - faceSourceFunctionObject; + typedef OutputFilterFunctionObject + < + functionObjects::fieldValues::faceSource + > faceSourceFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceI.H b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceI.H index 5f5a76d165ecb159d1ff49d60b81ef0d8a8d8e2a..8808c1a5b51eb84961adbb2b36fe0508016e8f4e 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceI.H +++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,33 +27,32 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -inline const Foam::fieldValues::faceSource::sourceType& -Foam::fieldValues::faceSource::source() const +inline const Foam::functionObjects::fieldValues::faceSource::sourceType& +Foam::functionObjects::fieldValues::faceSource::source() const { return source_; } inline const Foam::labelList& -Foam::fieldValues::faceSource::faceId() const +Foam::functionObjects::fieldValues::faceSource::faceId() const { return faceId_; } inline const Foam::labelList& -Foam::fieldValues::faceSource::facePatch() const +Foam::functionObjects::fieldValues::faceSource::facePatch() const { return facePatchId_; } inline const Foam::labelList& -Foam::fieldValues::faceSource::faceSign() const +Foam::functionObjects::fieldValues::faceSource::faceSign() const { return faceSign_; } // ************************************************************************* // - diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C index eb860ffc068da1935e2c8c709aac2d3e73d7d96b..e11317f57105309fa7a9f3e9292a6579a75c633e 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C +++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C @@ -32,7 +32,10 @@ License // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // template<class Type> -bool Foam::fieldValues::faceSource::validField(const word& fieldName) const +bool Foam::functionObjects::fieldValues::faceSource::validField +( + const word& fieldName +) const { typedef GeometricField<Type, fvsPatchField, surfaceMesh> sf; typedef GeometricField<Type, fvPatchField, volMesh> vf; @@ -51,7 +54,8 @@ bool Foam::fieldValues::faceSource::validField(const word& fieldName) const template<class Type> -Foam::tmp<Foam::Field<Type>> Foam::fieldValues::faceSource::getFieldValues +Foam::tmp<Foam::Field<Type>> +Foam::functionObjects::fieldValues::faceSource::getFieldValues ( const word& fieldName, const bool mustGet, @@ -120,7 +124,7 @@ Foam::tmp<Foam::Field<Type>> Foam::fieldValues::faceSource::getFieldValues template<class Type> -Type Foam::fieldValues::faceSource::processSameTypeValues +Type Foam::functionObjects::fieldValues::faceSource::processSameTypeValues ( const Field<Type>& values, const vectorField& Sf, @@ -236,10 +240,12 @@ Type Foam::fieldValues::faceSource::processSameTypeValues break; } - default: - { - // Do nothing - } + case opAreaNormalAverage: + {} + case opAreaNormalIntegrate: + {} + case opNone: + {} } return result; @@ -247,7 +253,7 @@ Type Foam::fieldValues::faceSource::processSameTypeValues template<class Type> -Type Foam::fieldValues::faceSource::processValues +Type Foam::functionObjects::fieldValues::faceSource::processValues ( const Field<Type>& values, const vectorField& Sf, @@ -262,7 +268,7 @@ Type Foam::fieldValues::faceSource::processValues // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class Type> -bool Foam::fieldValues::faceSource::writeValues +bool Foam::functionObjects::fieldValues::faceSource::writeValues ( const word& fieldName, const scalarField& weightField, @@ -348,7 +354,8 @@ bool Foam::fieldValues::faceSource::writeValues template<class Type> -Foam::tmp<Foam::Field<Type>> Foam::fieldValues::faceSource::filterField +Foam::tmp<Foam::Field<Type>> +Foam::functionObjects::fieldValues::faceSource::filterField ( const GeometricField<Type, fvPatchField, volMesh>& field, const bool applyOrientation @@ -389,7 +396,8 @@ Foam::tmp<Foam::Field<Type>> Foam::fieldValues::faceSource::filterField template<class Type> -Foam::tmp<Foam::Field<Type>> Foam::fieldValues::faceSource::filterField +Foam::tmp<Foam::Field<Type>> +Foam::functionObjects::fieldValues::faceSource::filterField ( const GeometricField<Type, fvsPatchField, surfaceMesh>& field, const bool applyOrientation diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.C b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.C index f726a201099a2d13cdee38e928acbe427a5e42f2..cc01217794abf50023e9b9a22018b14b99b826e3 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.C +++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.C @@ -41,25 +41,19 @@ namespace Foam void Foam::fieldValue::read(const dictionary& dict) { - if (active_) - { - dict_ = dict; - - log_ = dict.lookupOrDefault<Switch>("log", true); - dict.lookup("fields") >> fields_; - dict.lookup("valueOutput") >> valueOutput_; - } + dict_ = dict; + + log_ = dict.lookupOrDefault<Switch>("log", true); + dict.lookup("fields") >> fields_; + dict.lookup("valueOutput") >> valueOutput_; } void Foam::fieldValue::write() { - if (active_) - { - functionObjectFiles::write(); + functionObjectFiles::write(); - if (log_) Info<< type() << " " << name_ << " output:" << nl; - } + if (log_) Info<< type() << " " << name_ << " output:" << nl; } @@ -78,25 +72,13 @@ Foam::fieldValue::fieldValue name_(name), obr_(obr), dict_(dict), - active_(true), log_(true), sourceName_(word::null), fields_(dict.lookup("fields")), valueOutput_(dict.lookup("valueOutput")), resultDict_(fileName("name"), dictionary::null) { - // Only active if obr is an fvMesh - if (isA<fvMesh>(obr_)) - { - read(dict); - } - else - { - WarningInFunction - << "No fvMesh available, deactivating " << name << nl - << endl; - active_ = false; - } + read(dict); } @@ -109,33 +91,23 @@ Foam::fieldValue::~fieldValue() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void Foam::fieldValue::execute() -{ - // Do nothing -} +{} void Foam::fieldValue::end() -{ - // Do nothing -} +{} void Foam::fieldValue::timeSet() -{ - // Do nothing -} +{} void Foam::fieldValue::updateMesh(const mapPolyMesh&) -{ - // Do nothing -} +{} void Foam::fieldValue::movePoints(const polyMesh&) -{ - // Do nothing -} +{} // ************************************************************************* // diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.H b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.H index 3abda7336a15694cfcef407f427aa6636c7d6991..5446f003f72891db79f154e4dd1e2b93d5e89c39 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.H +++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.H @@ -78,9 +78,6 @@ protected: //- Construction dictionary dictionary dict_; - //- Active flag - bool active_; - //- Switch to send output to Info as well as to file Switch log_; @@ -155,9 +152,6 @@ public: //- Return the reference to the construction dictionary inline const dictionary& dict() const; - //- Return the active flag - inline bool active() const; - //- Return the switch to send output to Info as well as to file inline const Switch& log() const; diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValueI.H b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValueI.H index 55651a3539ed50705d18fe6a75cf10f4425e9d59..aac9ba419fbf3aef5ea5f35dc2d2115eaaeba4a8 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValueI.H +++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValueI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -46,12 +46,6 @@ inline const Foam::dictionary& Foam::fieldValue::dict() const } -inline bool Foam::fieldValue::active() const -{ - return active_; -} - - inline const Foam::Switch& Foam::fieldValue::log() const { return log_; diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C index 32fd6ff41dbc27f7203fdd9f7d5f92407d8dcf9e..c8c8186279102d649abc6e6712156fa67ecf6710 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C +++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C @@ -33,51 +33,42 @@ License namespace Foam { - namespace fieldValues - { - defineTypeNameAndDebug(fieldValueDelta, 0); - } - - template<> - const char* - NamedEnum<fieldValues::fieldValueDelta::operationType, 5>::names[] = - { - "add", - "subtract", - "min", - "max", - "average" - }; - - const NamedEnum<fieldValues::fieldValueDelta::operationType, 5> - fieldValues::fieldValueDelta::operationTypeNames_; +namespace functionObjects +{ +namespace fieldValues +{ + defineTypeNameAndDebug(fieldValueDelta, 0); +} +} } +template<> +const char* Foam::NamedEnum +< + Foam::functionObjects::fieldValues::fieldValueDelta::operationType, + 5 +>::names[] = +{ + "add", + "subtract", + "min", + "max", + "average" +}; -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // +const Foam::NamedEnum +< + Foam::functionObjects::fieldValues::fieldValueDelta::operationType, + 5 +> Foam::functionObjects::fieldValues::fieldValueDelta::operationTypeNames_; -Foam::fieldValues::fieldValueDelta::fieldValueDelta -( - const word& name, - const objectRegistry& obr, - const dictionary& dict, - const bool loadFromFiles -) -: - functionObjectFiles(obr, name, typeName), - name_(name), - obr_(obr), - loadFromFiles_(loadFromFiles), - log_(true), - operation_(opSubtract), - source1Ptr_(NULL), - source2Ptr_(NULL) -{ - read(dict); -} +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // -void Foam::fieldValues::fieldValueDelta::writeFileHeader(const label i) +void Foam::functionObjects::fieldValues::fieldValueDelta::writeFileHeader +( + const label i +) { const wordList& fields1 = source1Ptr_->fields(); const wordList& fields2 = source2Ptr_->fields(); @@ -108,15 +99,54 @@ void Foam::fieldValues::fieldValueDelta::writeFileHeader(const label i) } +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::functionObjects::fieldValues::fieldValueDelta::fieldValueDelta +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +: + functionObjectFiles(obr, name, typeName), + name_(name), + obr_(obr), + loadFromFiles_(loadFromFiles), + log_(true), + operation_(opSubtract), + source1Ptr_(NULL), + source2Ptr_(NULL) +{ + read(dict); +} + + +bool Foam::functionObjects::fieldValues::fieldValueDelta::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::fieldValues::fieldValueDelta::~fieldValueDelta() +Foam::functionObjects::fieldValues::fieldValueDelta::~fieldValueDelta() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::fieldValues::fieldValueDelta::read(const dictionary& dict) +void Foam::functionObjects::fieldValues::fieldValueDelta::read +( + const dictionary& dict +) { log_ = dict.lookupOrDefault<Switch>("log", true); source1Ptr_.reset @@ -146,7 +176,7 @@ void Foam::fieldValues::fieldValueDelta::read(const dictionary& dict) } -void Foam::fieldValues::fieldValueDelta::write() +void Foam::functionObjects::fieldValues::fieldValueDelta::write() { functionObjectFiles::write(); @@ -186,34 +216,30 @@ void Foam::fieldValues::fieldValueDelta::write() } -void Foam::fieldValues::fieldValueDelta::execute() -{ - // Do nothing -} +void Foam::functionObjects::fieldValues::fieldValueDelta::execute() +{} -void Foam::fieldValues::fieldValueDelta::end() -{ - // Do nothing -} +void Foam::functionObjects::fieldValues::fieldValueDelta::end() +{} -void Foam::fieldValues::fieldValueDelta::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::fieldValues::fieldValueDelta::timeSet() +{} -void Foam::fieldValues::fieldValueDelta::updateMesh(const mapPolyMesh&) -{ - // Do nothing -} +void Foam::functionObjects::fieldValues::fieldValueDelta::updateMesh +( + const mapPolyMesh& +) +{} -void Foam::fieldValues::fieldValueDelta::movePoints(const polyMesh&) -{ - // Do nothing -} +void Foam::functionObjects::fieldValues::fieldValueDelta::movePoints +( + const polyMesh& +) +{} // ************************************************************************* // diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H index 17c68eab75c3f209b823534028ea5f1c17bbfac8..cd68f47746603acb4f03877032d0c225d7438a2a 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H +++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::fieldValues::fieldValueDelta + Foam::functionObjects::fieldValues::fieldValueDelta Group grpFieldFunctionObjects @@ -84,7 +84,8 @@ SourceFiles namespace Foam { - +namespace functionObjects +{ namespace fieldValues { @@ -162,14 +163,26 @@ public: TypeName("fieldValueDelta"); - //- Construct from components - fieldValueDelta - ( - const word& name, - const objectRegistry& obr, - const dictionary& dict, - const bool loadFromFiles = false - ); + // Constructors + + //- Construct from components + fieldValueDelta + ( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles = false + ); + + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); //- Destructor @@ -206,6 +219,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace fieldValues +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaFunctionObject.H b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaFunctionObject.H index 120d5991bcb3845f8a13f2a66e9b107e9a614ac2..3a54e034adcdc11adb6db6ebe2f561ab1c0aeca6 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaFunctionObject.H +++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,8 +43,10 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<fieldValues::fieldValueDelta> - fieldValueDeltaFunctionObject; + typedef OutputFilterFunctionObject + < + functionObjects::fieldValues::fieldValueDelta + > fieldValueDeltaFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaTemplates.C b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaTemplates.C index 4cc4c9aea54b8503d4ce42326b4236aeed8eb88c..075e26f52ab1eb59e238d453f6b3e161b59f108c 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaTemplates.C +++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaTemplates.C @@ -30,7 +30,7 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class Type> -Type Foam::fieldValues::fieldValueDelta::applyOperation +Type Foam::functionObjects::fieldValues::fieldValueDelta::applyOperation ( const Type& value1, const Type& value2 @@ -79,7 +79,10 @@ Type Foam::fieldValues::fieldValueDelta::applyOperation template<class Type> -void Foam::fieldValues::fieldValueDelta::processFields(bool& found) +void Foam::functionObjects::fieldValues::fieldValueDelta::processFields +( + bool& found +) { typedef GeometricField<Type, fvPatchField, volMesh> vf; typedef GeometricField<Type, fvsPatchField, surfaceMesh> sf; diff --git a/src/postProcessing/functionObjects/field/histogram/histogram.C b/src/postProcessing/functionObjects/field/histogram/histogram.C index 38c0f59c151d4e90a298bce009a55e8c26dfb1cc..68fef256388872e667fd6122ea34c231eeafd469 100644 --- a/src/postProcessing/functionObjects/field/histogram/histogram.C +++ b/src/postProcessing/functionObjects/field/histogram/histogram.C @@ -75,26 +75,13 @@ Foam::functionObjects::histogram::histogram ) : functionObjectFile(obr, typeName), - name_(name), - active_(true) + name_(name) { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (isA<fvMesh>(obr_)) - { - read(dict); - } - else - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } + read(dict); } -Foam::autoPtr<Foam::functionObjects::histogram> -Foam::functionObjects::histogram::New +bool Foam::functionObjects::histogram::viable ( const word& name, const objectRegistry& obr, @@ -102,17 +89,8 @@ Foam::functionObjects::histogram::New const bool loadFromFiles ) { - if (isA<fvMesh>(obr)) - { - return autoPtr<histogram> - ( - new histogram(name, obr, dict, loadFromFiles) - ); - } - else - { - return autoPtr<histogram>(); - } + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } @@ -126,16 +104,13 @@ Foam::functionObjects::histogram::~histogram() void Foam::functionObjects::histogram::read(const dictionary& dict) { - if (active_) - { - dict.lookup("field") >> fieldName_; - dict.lookup("max") >> max_; - min_ = dict.lookupOrDefault<scalar>("min", 0); - dict.lookup("nBins") >> nBins_; + dict.lookup("field") >> fieldName_; + dict.lookup("max") >> max_; + min_ = dict.lookupOrDefault<scalar>("min", 0); + dict.lookup("nBins") >> nBins_; - word format(dict.lookup("setFormat")); - formatterPtr_ = writer<scalar>::New(format); - } + word format(dict.lookup("setFormat")); + formatterPtr_ = writer<scalar>::New(format); } @@ -153,87 +128,84 @@ void Foam::functionObjects::histogram::timeSet() void Foam::functionObjects::histogram::write() { - if (active_) - { - Info<< type() << " " << name_ << " output:" << nl; + Info<< type() << " " << name_ << " output:" << nl; - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - autoPtr<volScalarField> fieldPtr; - if (obr_.foundObject<volScalarField>(fieldName_)) - { - Info<< " Looking up field " << fieldName_ << endl; - } - else - { - Info<< " Reading field " << fieldName_ << endl; - fieldPtr.reset + autoPtr<volScalarField> fieldPtr; + if (obr_.foundObject<volScalarField>(fieldName_)) + { + Info<< " Looking up field " << fieldName_ << endl; + } + else + { + Info<< " Reading field " << fieldName_ << endl; + fieldPtr.reset + ( + new volScalarField ( - new volScalarField + IOobject ( - IOobject - ( - fieldName_, - mesh.time().timeName(), - mesh, - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - mesh - ) - ); - } - - const volScalarField& field = - ( - fieldPtr.valid() - ? fieldPtr() - : obr_.lookupObject<volScalarField>(fieldName_) + fieldName_, + mesh.time().timeName(), + mesh, + IOobject::MUST_READ, + IOobject::NO_WRITE + ), + mesh + ) ); + } - // Calculate the mid-points of bins for the graph axis - pointField xBin(nBins_); - const scalar delta = (max_- min_)/nBins_; + const volScalarField& field = + ( + fieldPtr.valid() + ? fieldPtr() + : obr_.lookupObject<volScalarField>(fieldName_) + ); - scalar x = min_ + 0.5*delta; - forAll(xBin, i) - { - xBin[i] = point(x, 0, 0); - x += delta; - } + // Calculate the mid-points of bins for the graph axis + pointField xBin(nBins_); + const scalar delta = (max_- min_)/nBins_; - scalarField volFrac(nBins_, 0); - const scalarField& V = mesh.V(); + scalar x = min_ + 0.5*delta; + forAll(xBin, i) + { + xBin[i] = point(x, 0, 0); + x += delta; + } + + scalarField volFrac(nBins_, 0); + const scalarField& V = mesh.V(); - forAll(field, celli) + forAll(field, celli) + { + const label bini = (field[celli] - min_)/delta; + if (bini >= 0 && bini < nBins_) { - const label bini = (field[celli] - min_)/delta; - if (bini >= 0 && bini < nBins_) - { - volFrac[bini] += V[celli]; - } + volFrac[bini] += V[celli]; } + } - Pstream::listCombineGather(volFrac, plusEqOp<scalar>()); + Pstream::listCombineGather(volFrac, plusEqOp<scalar>()); - if (Pstream::master()) + if (Pstream::master()) + { + const scalar sumVol = sum(volFrac); + + if (sumVol > SMALL) { - const scalar sumVol = sum(volFrac); + volFrac /= sumVol; - if (sumVol > SMALL) - { - volFrac /= sumVol; + const coordSet coords + ( + "Volume_Fraction", + "x", + xBin, + mag(xBin) + ); - const coordSet coords - ( - "Volume_Fraction", - "x", - xBin, - mag(xBin) - ); - - writeGraph(coords, field.name(), volFrac); - } + writeGraph(coords, field.name(), volFrac); } } } diff --git a/src/postProcessing/functionObjects/field/histogram/histogram.H b/src/postProcessing/functionObjects/field/histogram/histogram.H index c39552d8f66b28a9b0b8d892231683d1c60f867a..db23fc1bce988f31b5f4462be6cce04c17b66c4c 100644 --- a/src/postProcessing/functionObjects/field/histogram/histogram.H +++ b/src/postProcessing/functionObjects/field/histogram/histogram.H @@ -99,9 +99,6 @@ class histogram //- Name of this histogram word name_; - //- on/off switch - bool active_; - //- Name of field word fieldName_; @@ -152,9 +149,9 @@ public: const bool loadFromFiles = false ); - //- Construct on free-store and return pointer if successful - // otherwise return a null-pointer - static autoPtr<histogram> New + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable ( const word& name, const objectRegistry&, diff --git a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.C b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.C index d3cea4570933f01bc61a05743ac3c8e5392ab60d..e9d78673111b8918c4d8f96621a1ccccd410caff 100644 --- a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.C +++ b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.C @@ -32,14 +32,17 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(nearWallFields, 0); } +} // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -void Foam::nearWallFields::calcAddressing() +void Foam::functionObjects::nearWallFields::calcAddressing() { const fvMesh& mesh = refCast<const fvMesh>(obr_); @@ -218,7 +221,7 @@ void Foam::nearWallFields::calcAddressing() // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::nearWallFields::nearWallFields +Foam::functionObjects::nearWallFields::nearWallFields ( const word& name, const objectRegistry& obr, @@ -228,28 +231,28 @@ Foam::nearWallFields::nearWallFields : name_(name), obr_(obr), - active_(true), fieldSet_() { - // Check if the available mesh is an fvMesh otherise deactivate - if (isA<fvMesh>(obr_)) - { - read(dict); - } - else - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ - << endl; - } + read(dict); +} + +bool Foam::functionObjects::nearWallFields::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::nearWallFields::~nearWallFields() +Foam::functionObjects::nearWallFields::~nearWallFields() { if (debug) { @@ -260,157 +263,142 @@ Foam::nearWallFields::~nearWallFields() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::nearWallFields::read(const dictionary& dict) +void Foam::functionObjects::nearWallFields::read(const dictionary& dict) { if (debug) { InfoInFunction << endl; } - if (active_) - { - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - dict.lookup("fields") >> fieldSet_; - patchSet_ = - mesh.boundaryMesh().patchSet(wordReList(dict.lookup("patches"))); - distance_ = readScalar(dict.lookup("distance")); + dict.lookup("fields") >> fieldSet_; + patchSet_ = + mesh.boundaryMesh().patchSet(wordReList(dict.lookup("patches"))); + distance_ = readScalar(dict.lookup("distance")); - // Clear out any previously loaded fields - vsf_.clear(); - vvf_.clear(); - vSpheretf_.clear(); - vSymmtf_.clear(); - vtf_.clear(); - fieldMap_.clear(); - reverseFieldMap_.clear(); + // Clear out any previously loaded fields + vsf_.clear(); + vvf_.clear(); + vSpheretf_.clear(); + vSymmtf_.clear(); + vtf_.clear(); + fieldMap_.clear(); + reverseFieldMap_.clear(); - // Generate fields with mappedField boundary condition + // Generate fields with mappedField boundary condition - // Convert field to map - fieldMap_.resize(2*fieldSet_.size()); - reverseFieldMap_.resize(2*fieldSet_.size()); - forAll(fieldSet_, setI) - { - const word& fldName = fieldSet_[setI].first(); - const word& sampleFldName = fieldSet_[setI].second(); + // Convert field to map + fieldMap_.resize(2*fieldSet_.size()); + reverseFieldMap_.resize(2*fieldSet_.size()); + forAll(fieldSet_, setI) + { + const word& fldName = fieldSet_[setI].first(); + const word& sampleFldName = fieldSet_[setI].second(); - fieldMap_.insert(fldName, sampleFldName); - reverseFieldMap_.insert(sampleFldName, fldName); - } + fieldMap_.insert(fldName, sampleFldName); + reverseFieldMap_.insert(sampleFldName, fldName); + } - Info<< type() << " " << name_ << ": Sampling " << fieldMap_.size() - << " fields" << endl; + Info<< type() << " " << name_ << ": Sampling " << fieldMap_.size() + << " fields" << endl; - // Do analysis - calcAddressing(); - } + // Do analysis + calcAddressing(); } -void Foam::nearWallFields::execute() +void Foam::functionObjects::nearWallFields::execute() { if (debug) { InfoInFunction << endl; } - - if (active_) + if + ( + fieldMap_.size() + && vsf_.empty() + && vvf_.empty() + && vSpheretf_.empty() + && vSymmtf_.empty() + && vtf_.empty() + ) { - if - ( - fieldMap_.size() - && vsf_.empty() - && vvf_.empty() - && vSpheretf_.empty() - && vSymmtf_.empty() - && vtf_.empty() - ) - { - Info<< type() << " " << name_ << ": Creating " << fieldMap_.size() - << " fields" << endl; + Info<< type() << " " << name_ << ": Creating " << fieldMap_.size() + << " fields" << endl; - createFields(vsf_); - createFields(vvf_); - createFields(vSpheretf_); - createFields(vSymmtf_); - createFields(vtf_); + createFields(vsf_); + createFields(vvf_); + createFields(vSpheretf_); + createFields(vSymmtf_); + createFields(vtf_); - Info<< endl; - } + Info<< endl; + } - Info<< type() << " " << name_ << " output:" << nl; + Info<< type() << " " << name_ << " output:" << nl; - Info<< " Sampling fields to " << obr_.time().timeName() - << endl; + Info<< " Sampling fields to " << obr_.time().timeName() + << endl; - sampleFields(vsf_); - sampleFields(vvf_); - sampleFields(vSpheretf_); - sampleFields(vSymmtf_); - sampleFields(vtf_); - } + sampleFields(vsf_); + sampleFields(vvf_); + sampleFields(vSpheretf_); + sampleFields(vSymmtf_); + sampleFields(vtf_); } -void Foam::nearWallFields::end() +void Foam::functionObjects::nearWallFields::end() { if (debug) { InfoInFunction << endl; } - if (active_) - { - execute(); - } + execute(); } -void Foam::nearWallFields::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::nearWallFields::timeSet() +{} -void Foam::nearWallFields::write() +void Foam::functionObjects::nearWallFields::write() { if (debug) { InfoInFunction << endl; } - if (active_) - { - Info<< " Writing sampled fields to " << obr_.time().timeName() - << endl; - - forAll(vsf_, i) - { - vsf_[i].write(); - } - forAll(vvf_, i) - { - vvf_[i].write(); - } - forAll(vSpheretf_, i) - { - vSpheretf_[i].write(); - } - forAll(vSymmtf_, i) - { - vSymmtf_[i].write(); - } - forAll(vtf_, i) - { - vtf_[i].write(); - } + Info<< " Writing sampled fields to " << obr_.time().timeName() + << endl; - Info<< endl; + forAll(vsf_, i) + { + vsf_[i].write(); + } + forAll(vvf_, i) + { + vvf_[i].write(); } + forAll(vSpheretf_, i) + { + vSpheretf_[i].write(); + } + forAll(vSymmtf_, i) + { + vSymmtf_[i].write(); + } + forAll(vtf_, i) + { + vtf_[i].write(); + } + + Info<< endl; } diff --git a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.H b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.H index 3862c6426abb341308b94ca6df74dbe8eb0a0c33..a063ebf15b811d57c3f1cd3a135fc9c1187a057e 100644 --- a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.H +++ b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::nearWallFields + Foam::functionObjects::nearWallFields Group grpFieldFunctionObjects @@ -88,6 +88,9 @@ class objectRegistry; class dictionary; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class nearWallFields Declaration \*---------------------------------------------------------------------------*/ @@ -103,9 +106,6 @@ protected: const objectRegistry& obr_; - //- on/off switch - bool active_; - // Read from dictionary //- Fields to process @@ -197,6 +197,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~nearWallFields(); @@ -237,6 +247,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsFunctionObject.H b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsFunctionObject.H index b27540072744cc6a009982d086e5be23f1f981b2..16146c153cf5dae4d5233b32a47886569f028c50 100644 --- a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsFunctionObject.H +++ b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<nearWallFields> + typedef OutputFilterFunctionObject<functionObjects::nearWallFields> nearWallFieldsFunctionObject; } diff --git a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsTemplates.C b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsTemplates.C index 8045391e3f9cf2ee0ccf88e9f9a56b528344894a..dcb9b325eb92a5d9b2bf342bdc28afb27e4dfcca 100644 --- a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsTemplates.C +++ b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFieldsTemplates.C @@ -28,7 +28,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template<class Type> -void Foam::nearWallFields::createFields +void Foam::functionObjects::nearWallFields::createFields ( PtrList<GeometricField<Type, fvPatchField, volMesh>>& sflds ) const @@ -72,7 +72,7 @@ void Foam::nearWallFields::createFields template<class Type> -void Foam::nearWallFields::sampleBoundaryField +void Foam::functionObjects::nearWallFields::sampleBoundaryField ( const interpolationCellPoint<Type>& interpolator, GeometricField<Type, fvPatchField, volMesh>& fld @@ -122,7 +122,7 @@ void Foam::nearWallFields::sampleBoundaryField template<class Type> -void Foam::nearWallFields::sampleFields +void Foam::functionObjects::nearWallFields::sampleFields ( PtrList<GeometricField<Type, fvPatchField, volMesh>>& sflds ) const diff --git a/src/postProcessing/functionObjects/field/processorField/processorField.C b/src/postProcessing/functionObjects/field/processorField/processorField.C index f15f3b6a8fb75d8c04eca557fa21265dfc3cf582..aef6d4ba8e626ee75c64485cfe747c63410b6109 100644 --- a/src/postProcessing/functionObjects/field/processorField/processorField.C +++ b/src/postProcessing/functionObjects/field/processorField/processorField.C @@ -31,13 +31,16 @@ License namespace Foam { -defineTypeNameAndDebug(processorField, 0); +namespace functionObjects +{ + defineTypeNameAndDebug(processorField, 0); +} } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::processorField::processorField +Foam::functionObjects::processorField::processorField ( const word& name, const objectRegistry& obr, @@ -46,96 +49,85 @@ Foam::processorField::processorField ) : name_(name), - obr_(obr), - active_(true) + obr_(obr) { - // Check if the available mesh is an fvMesh otherise deactivate - if (isA<fvMesh>(obr_)) - { - read(dict); + read(dict); - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - volScalarField* procFieldPtr + volScalarField* procFieldPtr + ( + new volScalarField ( - new volScalarField + IOobject ( - IOobject - ( - "processorID", - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), + "processorID", + mesh.time().timeName(), mesh, - dimensionedScalar("0", dimless, 0.0) - ) - ); - - mesh.objectRegistry::store(procFieldPtr); - } - else - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ - << endl; - } + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar("0", dimless, 0.0) + ) + ); + + mesh.objectRegistry::store(procFieldPtr); +} + + +bool Foam::functionObjects::processorField::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::processorField::~processorField() +Foam::functionObjects::processorField::~processorField() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::processorField::read(const dictionary& dict) -{ - // do nothing -} +void Foam::functionObjects::processorField::read(const dictionary& dict) +{} -void Foam::processorField::execute() +void Foam::functionObjects::processorField::execute() { - if (active_) - { - const volScalarField& procField = - obr_.lookupObject<volScalarField>("processorID"); - - const_cast<volScalarField&>(procField) == - dimensionedScalar("proci", dimless, Pstream::myProcNo()); - } + const volScalarField& procField = + obr_.lookupObject<volScalarField>("processorID"); + + const_cast<volScalarField&>(procField) == + dimensionedScalar("proci", dimless, Pstream::myProcNo()); } -void Foam::processorField::end() +void Foam::functionObjects::processorField::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::processorField::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::processorField::timeSet() +{} -void Foam::processorField::write() +void Foam::functionObjects::processorField::write() { - if (active_) - { - const volScalarField& procField = - obr_.lookupObject<volScalarField>("processorID"); + const volScalarField& procField = + obr_.lookupObject<volScalarField>("processorID"); - procField.write(); - } + procField.write(); } diff --git a/src/postProcessing/functionObjects/field/processorField/processorField.H b/src/postProcessing/functionObjects/field/processorField/processorField.H index 88e7ff383d0837b822e18ead5f86b3299072b4c2..aeec8f8117266b03d5533a4e88652f906c6f068f 100644 --- a/src/postProcessing/functionObjects/field/processorField/processorField.H +++ b/src/postProcessing/functionObjects/field/processorField/processorField.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::processorField + Foam::functionObjects::processorField Group grpFieldFunctionObjects @@ -76,6 +76,9 @@ class objectRegistry; class dictionary; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class processorField Declaration \*---------------------------------------------------------------------------*/ @@ -92,9 +95,6 @@ protected: //- Reference to the database const objectRegistry& obr_; - //- on/off switch - bool active_; - private: @@ -125,6 +125,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~processorField(); @@ -165,6 +175,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/processorField/processorFieldFunctionObject.H b/src/postProcessing/functionObjects/field/processorField/processorFieldFunctionObject.H index 29b9b29c5b732a9daa4bce0774dbeacc0b81b5b8..98d6b5f090401caa9efba7ddf7cd4afe12ea7884 100644 --- a/src/postProcessing/functionObjects/field/processorField/processorFieldFunctionObject.H +++ b/src/postProcessing/functionObjects/field/processorField/processorFieldFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<processorField> + typedef OutputFilterFunctionObject<functionObjects::processorField> processorFieldFunctionObject; } diff --git a/src/postProcessing/functionObjects/field/readFields/readFields.C b/src/postProcessing/functionObjects/field/readFields/readFields.C index 8af1146dce7d4159124f3d1c4d8dd5329baf3a3e..0f792c7265460ba192dda382f2ae01aba6ed3439 100644 --- a/src/postProcessing/functionObjects/field/readFields/readFields.C +++ b/src/postProcessing/functionObjects/field/readFields/readFields.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -30,13 +30,16 @@ License namespace Foam { -defineTypeNameAndDebug(readFields, 0); +namespace functionObjects +{ + defineTypeNameAndDebug(readFields, 0); +} } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::readFields::readFields +Foam::functionObjects::readFields::readFields ( const word& name, const objectRegistry& obr, @@ -46,92 +49,80 @@ Foam::readFields::readFields : name_(name), obr_(obr), - active_(true), fieldSet_() { - // Check if the available mesh is an fvMesh otherise deactivate - if (isA<fvMesh>(obr_)) - { - read(dict); - } - else - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ - << endl; - } + read(dict); +} + + +bool Foam::functionObjects::readFields::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::readFields::~readFields() +Foam::functionObjects::readFields::~readFields() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::readFields::read(const dictionary& dict) +void Foam::functionObjects::readFields::read(const dictionary& dict) { - if (active_) - { - dict.lookup("fields") >> fieldSet_; - } + dict.lookup("fields") >> fieldSet_; } -void Foam::readFields::execute() +void Foam::functionObjects::readFields::execute() { - if (active_) + // Clear out any previously loaded fields + vsf_.clear(); + vvf_.clear(); + vSpheretf_.clear(); + vSymmtf_.clear(); + vtf_.clear(); + + ssf_.clear(); + svf_.clear(); + sSpheretf_.clear(); + sSymmtf_.clear(); + stf_.clear(); + + forAll(fieldSet_, fieldI) { - // Clear out any previously loaded fields - vsf_.clear(); - vvf_.clear(); - vSpheretf_.clear(); - vSymmtf_.clear(); - vtf_.clear(); - - ssf_.clear(); - svf_.clear(); - sSpheretf_.clear(); - sSymmtf_.clear(); - stf_.clear(); - - forAll(fieldSet_, fieldI) - { - const word& fieldName = fieldSet_[fieldI]; - - // If necessary load field - loadField<scalar>(fieldName, vsf_, ssf_); - loadField<vector>(fieldName, vvf_, svf_); - loadField<sphericalTensor>(fieldName, vSpheretf_, sSpheretf_); - loadField<symmTensor>(fieldName, vSymmtf_, sSymmtf_); - loadField<tensor>(fieldName, vtf_, stf_); - } + const word& fieldName = fieldSet_[fieldI]; + + // If necessary load field + loadField<scalar>(fieldName, vsf_, ssf_); + loadField<vector>(fieldName, vvf_, svf_); + loadField<sphericalTensor>(fieldName, vSpheretf_, sSpheretf_); + loadField<symmTensor>(fieldName, vSymmtf_, sSymmtf_); + loadField<tensor>(fieldName, vtf_, stf_); } } -void Foam::readFields::end() +void Foam::functionObjects::readFields::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::readFields::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::readFields::timeSet() +{} -void Foam::readFields::write() -{ - // Do nothing -} +void Foam::functionObjects::readFields::write() +{} // ************************************************************************* // diff --git a/src/postProcessing/functionObjects/field/readFields/readFields.H b/src/postProcessing/functionObjects/field/readFields/readFields.H index 7706d327bd0a560ad84a206bd15d5005218f6881..c4500f4f4ab4647d2f2fc934ddf6529a1aebaf47 100644 --- a/src/postProcessing/functionObjects/field/readFields/readFields.H +++ b/src/postProcessing/functionObjects/field/readFields/readFields.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::readFields + Foam::functionObjects::readFields Group grpFieldFunctionObjects @@ -81,6 +81,9 @@ class objectRegistry; class dictionary; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class readFields Declaration \*---------------------------------------------------------------------------*/ @@ -96,9 +99,6 @@ protected: const objectRegistry& obr_; - //- on/off switch - bool active_; - //- Fields to load wordList fieldSet_; @@ -156,6 +156,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~readFields(); @@ -196,6 +206,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/readFields/readFieldsFunctionObject.H b/src/postProcessing/functionObjects/field/readFields/readFieldsFunctionObject.H index 82f141fdfa35053ce4580ad84f8d9c65e863b02a..0256ca3d50b2a19f650b6041974e6f4f6964e479 100644 --- a/src/postProcessing/functionObjects/field/readFields/readFieldsFunctionObject.H +++ b/src/postProcessing/functionObjects/field/readFields/readFieldsFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<readFields> + typedef OutputFilterFunctionObject<functionObjects::readFields> readFieldsFunctionObject; } diff --git a/src/postProcessing/functionObjects/field/readFields/readFieldsTemplates.C b/src/postProcessing/functionObjects/field/readFields/readFieldsTemplates.C index be8ab7a6d2bc57447aa476fab904f994b9e4512d..37631001c9b012faec0d99d0493723c92d634bfa 100644 --- a/src/postProcessing/functionObjects/field/readFields/readFieldsTemplates.C +++ b/src/postProcessing/functionObjects/field/readFields/readFieldsTemplates.C @@ -31,7 +31,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template<class Type> -void Foam::readFields::loadField +void Foam::functionObjects::readFields::loadField ( const word& fieldName, PtrList<GeometricField<Type, fvPatchField, volMesh>>& vflds, diff --git a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C index 523135ee69160c0dcedca450a897319805bffcb2..418afc3ecf7e7ce46041a9a3a1d1fa63823da26f 100644 --- a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C +++ b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C @@ -34,7 +34,10 @@ License namespace Foam { - defineTypeNameAndDebug(regionSizeDistribution, 0); + namespace functionObjects + { + defineTypeNameAndDebug(regionSizeDistribution, 0); + } //- Plus op for FixedList<scalar> template<class T, unsigned Size> @@ -58,7 +61,7 @@ namespace Foam // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -void Foam::regionSizeDistribution::writeGraph +void Foam::functionObjects::regionSizeDistribution::writeGraph ( const coordSet& coords, const word& valueName, @@ -81,7 +84,7 @@ void Foam::regionSizeDistribution::writeGraph } -void Foam::regionSizeDistribution::writeAlphaFields +void Foam::functionObjects::regionSizeDistribution::writeAlphaFields ( const regionSplit& regions, const Map<label>& patchRegions, @@ -163,7 +166,8 @@ void Foam::regionSizeDistribution::writeAlphaFields } -Foam::Map<Foam::label> Foam::regionSizeDistribution::findPatchRegions +Foam::Map<Foam::label> +Foam::functionObjects::regionSizeDistribution::findPatchRegions ( const polyMesh& mesh, const regionSplit& regions @@ -209,7 +213,8 @@ Foam::Map<Foam::label> Foam::regionSizeDistribution::findPatchRegions } -Foam::tmp<Foam::scalarField> Foam::regionSizeDistribution::divide +Foam::tmp<Foam::scalarField> +Foam::functionObjects::regionSizeDistribution::divide ( const scalarField& num, const scalarField& denom @@ -233,7 +238,7 @@ Foam::tmp<Foam::scalarField> Foam::regionSizeDistribution::divide } -void Foam::regionSizeDistribution::writeGraphs +void Foam::functionObjects::regionSizeDistribution::writeGraphs ( const word& fieldName, // name of field const labelList& indices, // index of bin for each region @@ -274,7 +279,7 @@ void Foam::regionSizeDistribution::writeGraphs } -void Foam::regionSizeDistribution::writeGraphs +void Foam::functionObjects::regionSizeDistribution::writeGraphs ( const word& fieldName, // name of field const scalarField& cellField, // per cell field data @@ -314,7 +319,7 @@ void Foam::regionSizeDistribution::writeGraphs // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::regionSizeDistribution::regionSizeDistribution +Foam::functionObjects::regionSizeDistribution::regionSizeDistribution ( const word& name, const objectRegistry& obr, @@ -325,537 +330,526 @@ Foam::regionSizeDistribution::regionSizeDistribution functionObjectFiles(obr, name, typeName), name_(name), obr_(obr), - active_(true), alphaName_(dict.lookup("field")), patchNames_(dict.lookup("patches")) { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (isA<fvMesh>(obr_)) - { - read(dict); - } - else - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } + read(dict); +} + + +bool Foam::functionObjects::regionSizeDistribution::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::regionSizeDistribution::~regionSizeDistribution() +Foam::functionObjects::regionSizeDistribution::~regionSizeDistribution() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::regionSizeDistribution::read(const dictionary& dict) +void Foam::functionObjects::regionSizeDistribution::read(const dictionary& dict) { - if (active_) + dict.lookup("field") >> alphaName_; + dict.lookup("patches") >> patchNames_; + dict.lookup("threshold") >> threshold_; + dict.lookup("maxDiameter") >> maxDiam_; + minDiam_ = 0.0; + dict.readIfPresent("minDiameter", minDiam_); + dict.lookup("nBins") >> nBins_; + dict.lookup("fields") >> fields_; + + word format(dict.lookup("setFormat")); + formatterPtr_ = writer<scalar>::New(format); + + if (dict.found("coordinateSystem")) { - dict.lookup("field") >> alphaName_; - dict.lookup("patches") >> patchNames_; - dict.lookup("threshold") >> threshold_; - dict.lookup("maxDiameter") >> maxDiam_; - minDiam_ = 0.0; - dict.readIfPresent("minDiameter", minDiam_); - dict.lookup("nBins") >> nBins_; - dict.lookup("fields") >> fields_; - - word format(dict.lookup("setFormat")); - formatterPtr_ = writer<scalar>::New(format); - - if (dict.found("coordinateSystem")) - { - coordSysPtr_.reset(new coordinateSystem(obr_, dict)); + coordSysPtr_.reset(new coordinateSystem(obr_, dict)); - Info<< "Transforming all vectorFields with coordinate system " - << coordSysPtr_().name() << endl; - } + Info<< "Transforming all vectorFields with coordinate system " + << coordSysPtr_().name() << endl; } } -void Foam::regionSizeDistribution::execute() -{ - // Do nothing - only valid on write -} +void Foam::functionObjects::regionSizeDistribution::execute() +{} -void Foam::regionSizeDistribution::end() -{ - // Do nothing - only valid on write -} +void Foam::functionObjects::regionSizeDistribution::end() +{} -void Foam::regionSizeDistribution::timeSet() -{ - // Do nothing - only valid on write -} +void Foam::functionObjects::regionSizeDistribution::timeSet() +{} -void Foam::regionSizeDistribution::write() +void Foam::functionObjects::regionSizeDistribution::write() { - if (active_) - { - Info<< type() << " " << name_ << " output:" << nl; + Info<< type() << " " << name_ << " output:" << nl; - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - autoPtr<volScalarField> alphaPtr; - if (obr_.foundObject<volScalarField>(alphaName_)) - { - Info<< " Looking up field " << alphaName_ << endl; - } - else - { - Info<< " Reading field " << alphaName_ << endl; - alphaPtr.reset + autoPtr<volScalarField> alphaPtr; + if (obr_.foundObject<volScalarField>(alphaName_)) + { + Info<< " Looking up field " << alphaName_ << endl; + } + else + { + Info<< " Reading field " << alphaName_ << endl; + alphaPtr.reset + ( + new volScalarField ( - new volScalarField + IOobject ( - IOobject - ( - alphaName_, - mesh.time().timeName(), - mesh, - IOobject::MUST_READ, - IOobject::NO_WRITE - ), - mesh - ) - ); - } + alphaName_, + mesh.time().timeName(), + mesh, + IOobject::MUST_READ, + IOobject::NO_WRITE + ), + mesh + ) + ); + } - const volScalarField& alpha = - ( - alphaPtr.valid() - ? alphaPtr() - : obr_.lookupObject<volScalarField>(alphaName_) - ); + const volScalarField& alpha = + ( + alphaPtr.valid() + ? alphaPtr() + : obr_.lookupObject<volScalarField>(alphaName_) + ); - Info<< " Volume of alpha = " - << fvc::domainIntegrate(alpha).value() - << endl; + Info<< " Volume of alpha = " + << fvc::domainIntegrate(alpha).value() + << endl; - const scalar meshVol = gSum(mesh.V()); - const scalar maxDropletVol = 1.0/6.0*pow(maxDiam_, 3); - const scalar delta = (maxDiam_-minDiam_)/nBins_; + const scalar meshVol = gSum(mesh.V()); + const scalar maxDropletVol = 1.0/6.0*pow(maxDiam_, 3); + const scalar delta = (maxDiam_-minDiam_)/nBins_; - Info<< " Mesh volume = " << meshVol << endl; - Info<< " Maximum droplet diameter = " << maxDiam_ << endl; - Info<< " Maximum droplet volume = " << maxDropletVol << endl; + Info<< " Mesh volume = " << meshVol << endl; + Info<< " Maximum droplet diameter = " << maxDiam_ << endl; + Info<< " Maximum droplet volume = " << maxDropletVol << endl; - // Determine blocked faces - boolList blockedFace(mesh.nFaces(), false); - label nBlocked = 0; + // Determine blocked faces + boolList blockedFace(mesh.nFaces(), false); + label nBlocked = 0; + { + for (label facei = 0; facei < mesh.nInternalFaces(); facei++) { - for (label facei = 0; facei < mesh.nInternalFaces(); facei++) - { - scalar ownVal = alpha[mesh.faceOwner()[facei]]; - scalar neiVal = alpha[mesh.faceNeighbour()[facei]]; + scalar ownVal = alpha[mesh.faceOwner()[facei]]; + scalar neiVal = alpha[mesh.faceNeighbour()[facei]]; - if - ( - (ownVal < threshold_ && neiVal > threshold_) - || (ownVal > threshold_ && neiVal < threshold_) - ) - { - blockedFace[facei] = true; - nBlocked++; - } + if + ( + (ownVal < threshold_ && neiVal > threshold_) + || (ownVal > threshold_ && neiVal < threshold_) + ) + { + blockedFace[facei] = true; + nBlocked++; } + } - // Block coupled faces - forAll(alpha.boundaryField(), patchi) + // Block coupled faces + forAll(alpha.boundaryField(), patchi) + { + const fvPatchScalarField& fvp = alpha.boundaryField()[patchi]; + if (fvp.coupled()) { - const fvPatchScalarField& fvp = alpha.boundaryField()[patchi]; - if (fvp.coupled()) - { - tmp<scalarField> townFld(fvp.patchInternalField()); - const scalarField& ownFld = townFld(); - tmp<scalarField> tnbrFld(fvp.patchNeighbourField()); - const scalarField& nbrFld = tnbrFld(); + tmp<scalarField> townFld(fvp.patchInternalField()); + const scalarField& ownFld = townFld(); + tmp<scalarField> tnbrFld(fvp.patchNeighbourField()); + const scalarField& nbrFld = tnbrFld(); + + label start = fvp.patch().patch().start(); - label start = fvp.patch().patch().start(); + forAll(ownFld, i) + { + scalar ownVal = ownFld[i]; + scalar neiVal = nbrFld[i]; - forAll(ownFld, i) + if + ( + (ownVal < threshold_ && neiVal > threshold_) + || (ownVal > threshold_ && neiVal < threshold_) + ) { - scalar ownVal = ownFld[i]; - scalar neiVal = nbrFld[i]; - - if - ( - (ownVal < threshold_ && neiVal > threshold_) - || (ownVal > threshold_ && neiVal < threshold_) - ) - { - blockedFace[start+i] = true; - nBlocked++; - } + blockedFace[start+i] = true; + nBlocked++; } } } } + } - regionSplit regions(mesh, blockedFace); + regionSplit regions(mesh, blockedFace); - Info<< " Determined " << regions.nRegions() - << " disconnected regions" << endl; + Info<< " Determined " << regions.nRegions() + << " disconnected regions" << endl; - if (debug) - { - volScalarField region + if (debug) + { + volScalarField region + ( + IOobject ( - IOobject - ( - "region", - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), + "region", + mesh.time().timeName(), mesh, - dimensionedScalar("zero", dimless, 0) - ); - Info<< " Dumping region as volScalarField to " << region.name() - << endl; + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar("zero", dimless, 0) + ); + Info<< " Dumping region as volScalarField to " << region.name() + << endl; - forAll(regions, celli) - { - region[celli] = regions[celli]; - } - region.correctBoundaryConditions(); - region.write(); + forAll(regions, celli) + { + region[celli] = regions[celli]; } + region.correctBoundaryConditions(); + region.write(); + } - // Determine regions connected to supplied patches - Map<label> patchRegions(findPatchRegions(mesh, regions)); + // Determine regions connected to supplied patches + Map<label> patchRegions(findPatchRegions(mesh, regions)); - // Sum all regions - const scalarField alphaVol(alpha.primitiveField()*mesh.V()); - Map<scalar> allRegionVolume(regionSum(regions, mesh.V())); - Map<scalar> allRegionAlphaVolume(regionSum(regions, alphaVol)); - Map<label> allRegionNumCells + // Sum all regions + const scalarField alphaVol(alpha.primitiveField()*mesh.V()); + Map<scalar> allRegionVolume(regionSum(regions, mesh.V())); + Map<scalar> allRegionAlphaVolume(regionSum(regions, alphaVol)); + Map<label> allRegionNumCells + ( + regionSum ( - regionSum - ( - regions, - labelField(mesh.nCells(), 1.0) - ) - ); + regions, + labelField(mesh.nCells(), 1.0) + ) + ); - if (debug) + if (debug) + { + Info<< " " << token::TAB << "Region" + << token::TAB << "Volume(mesh)" + << token::TAB << "Volume(" << alpha.name() << "):" + << token::TAB << "nCells" + << endl; + scalar meshSumVol = 0.0; + scalar alphaSumVol = 0.0; + label nCells = 0; + + Map<scalar>::const_iterator vIter = allRegionVolume.begin(); + Map<scalar>::const_iterator aIter = allRegionAlphaVolume.begin(); + Map<label>::const_iterator numIter = allRegionNumCells.begin(); + for + ( + ; + vIter != allRegionVolume.end() + && aIter != allRegionAlphaVolume.end(); + ++vIter, ++aIter, ++numIter + ) { - Info<< " " << token::TAB << "Region" - << token::TAB << "Volume(mesh)" - << token::TAB << "Volume(" << alpha.name() << "):" - << token::TAB << "nCells" + Info<< " " << token::TAB << vIter.key() + << token::TAB << vIter() + << token::TAB << aIter() + << token::TAB << numIter() << endl; - scalar meshSumVol = 0.0; - scalar alphaSumVol = 0.0; - label nCells = 0; - - Map<scalar>::const_iterator vIter = allRegionVolume.begin(); - Map<scalar>::const_iterator aIter = allRegionAlphaVolume.begin(); - Map<label>::const_iterator numIter = allRegionNumCells.begin(); - for - ( - ; - vIter != allRegionVolume.end() - && aIter != allRegionAlphaVolume.end(); - ++vIter, ++aIter, ++numIter - ) - { - Info<< " " << token::TAB << vIter.key() - << token::TAB << vIter() - << token::TAB << aIter() - << token::TAB << numIter() - << endl; - meshSumVol += vIter(); - alphaSumVol += aIter(); - nCells += numIter(); - } - Info<< " " << token::TAB << "Total:" - << token::TAB << meshSumVol - << token::TAB << alphaSumVol - << token::TAB << nCells - << endl; - Info<< endl; + meshSumVol += vIter(); + alphaSumVol += aIter(); + nCells += numIter(); } + Info<< " " << token::TAB << "Total:" + << token::TAB << meshSumVol + << token::TAB << alphaSumVol + << token::TAB << nCells + << endl; + Info<< endl; + } + { + Info<< " Patch connected regions (liquid core):" << endl; + Info<< token::TAB << " Region" + << token::TAB << "Volume(mesh)" + << token::TAB << "Volume(" << alpha.name() << "):" + << endl; + forAllConstIter(Map<label>, patchRegions, iter) { - Info<< " Patch connected regions (liquid core):" << endl; - Info<< token::TAB << " Region" - << token::TAB << "Volume(mesh)" - << token::TAB << "Volume(" << alpha.name() << "):" - << endl; - forAllConstIter(Map<label>, patchRegions, iter) - { - label regionI = iter.key(); - Info<< " " << token::TAB << iter.key() - << token::TAB << allRegionVolume[regionI] - << token::TAB << allRegionAlphaVolume[regionI] << endl; + label regionI = iter.key(); + Info<< " " << token::TAB << iter.key() + << token::TAB << allRegionVolume[regionI] + << token::TAB << allRegionAlphaVolume[regionI] << endl; - } - Info<< endl; } + Info<< endl; + } - { - Info<< " Background regions:" << endl; - Info<< " " << token::TAB << "Region" - << token::TAB << "Volume(mesh)" - << token::TAB << "Volume(" << alpha.name() << "):" - << endl; - Map<scalar>::const_iterator vIter = allRegionVolume.begin(); - Map<scalar>::const_iterator aIter = allRegionAlphaVolume.begin(); + { + Info<< " Background regions:" << endl; + Info<< " " << token::TAB << "Region" + << token::TAB << "Volume(mesh)" + << token::TAB << "Volume(" << alpha.name() << "):" + << endl; + Map<scalar>::const_iterator vIter = allRegionVolume.begin(); + Map<scalar>::const_iterator aIter = allRegionAlphaVolume.begin(); - for + for + ( + ; + vIter != allRegionVolume.end() + && aIter != allRegionAlphaVolume.end(); + ++vIter, ++aIter + ) + { + if ( - ; - vIter != allRegionVolume.end() - && aIter != allRegionAlphaVolume.end(); - ++vIter, ++aIter + !patchRegions.found(vIter.key()) + && vIter() >= maxDropletVol ) { - if - ( - !patchRegions.found(vIter.key()) - && vIter() >= maxDropletVol - ) - { - Info<< " " << token::TAB << vIter.key() - << token::TAB << vIter() - << token::TAB << aIter() << endl; - } + Info<< " " << token::TAB << vIter.key() + << token::TAB << vIter() + << token::TAB << aIter() << endl; } - Info<< endl; } + Info<< endl; + } - // Split alpha field - // ~~~~~~~~~~~~~~~~~ - // Split into - // - liquidCore : region connected to inlet patches - // - per region a volume : for all other regions - // - backgroundAlpha : remaining alpha - writeAlphaFields(regions, patchRegions, allRegionVolume, alpha); + // Split alpha field + // ~~~~~~~~~~~~~~~~~ + // Split into + // - liquidCore : region connected to inlet patches + // - per region a volume : for all other regions + // - backgroundAlpha : remaining alpha + writeAlphaFields(regions, patchRegions, allRegionVolume, alpha); - // Extract droplet-only allRegionVolume, i.e. delete liquid core - // (patchRegions) and background regions from maps. - // Note that we have to use mesh volume (allRegionVolume) and not - // allRegionAlphaVolume since background might not have alpha in it. - forAllIter(Map<scalar>, allRegionVolume, vIter) + // Extract droplet-only allRegionVolume, i.e. delete liquid core + // (patchRegions) and background regions from maps. + // Note that we have to use mesh volume (allRegionVolume) and not + // allRegionAlphaVolume since background might not have alpha in it. + forAllIter(Map<scalar>, allRegionVolume, vIter) + { + label regionI = vIter.key(); + if + ( + patchRegions.found(regionI) + || vIter() >= maxDropletVol + ) { - label regionI = vIter.key(); - if - ( - patchRegions.found(regionI) - || vIter() >= maxDropletVol - ) - { - allRegionVolume.erase(vIter); - allRegionAlphaVolume.erase(regionI); - allRegionNumCells.erase(regionI); - } + allRegionVolume.erase(vIter); + allRegionAlphaVolume.erase(regionI); + allRegionNumCells.erase(regionI); } + } - if (allRegionVolume.size()) + if (allRegionVolume.size()) + { + // Construct mids of bins for plotting + pointField xBin(nBins_); + + scalar x = 0.5*delta; + forAll(xBin, i) { - // Construct mids of bins for plotting - pointField xBin(nBins_); + xBin[i] = point(x, 0, 0); + x += delta; + } - scalar x = 0.5*delta; - forAll(xBin, i) - { - xBin[i] = point(x, 0, 0); - x += delta; - } + const coordSet coords("diameter", "x", xBin, mag(xBin)); - const coordSet coords("diameter", "x", xBin, mag(xBin)); + // Get in region order the alpha*volume and diameter + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // Get in region order the alpha*volume and diameter - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + const labelList sortedRegions = allRegionAlphaVolume.sortedToc(); - const labelList sortedRegions = allRegionAlphaVolume.sortedToc(); + scalarField sortedVols + ( + extractData + ( + sortedRegions, + allRegionAlphaVolume + ) + ); - scalarField sortedVols + // Calculate the diameters + scalarField sortedDiameters(sortedVols.size()); + forAll(sortedDiameters, i) + { + sortedDiameters[i] = Foam::cbrt ( - extractData - ( - sortedRegions, - allRegionAlphaVolume - ) + sortedVols[i] + *6/constant::mathematical::pi ); + } - // Calculate the diameters - scalarField sortedDiameters(sortedVols.size()); - forAll(sortedDiameters, i) - { - sortedDiameters[i] = Foam::cbrt - ( - sortedVols[i] - *6/constant::mathematical::pi - ); - } + // Determine the bin index for all the diameters + labelList indices(sortedDiameters.size()); + forAll(sortedDiameters, i) + { + indices[i] = (sortedDiameters[i]-minDiam_)/delta; + } - // Determine the bin index for all the diameters - labelList indices(sortedDiameters.size()); - forAll(sortedDiameters, i) - { - indices[i] = (sortedDiameters[i]-minDiam_)/delta; - } + // Calculate the counts per diameter bin + scalarField binCount(nBins_, 0.0); + forAll(sortedDiameters, i) + { + binCount[indices[i]] += 1.0; + } - // Calculate the counts per diameter bin - scalarField binCount(nBins_, 0.0); - forAll(sortedDiameters, i) - { - binCount[indices[i]] += 1.0; - } + // Write counts + if (Pstream::master()) + { + writeGraph(coords, "count", binCount); + } - // Write counts - if (Pstream::master()) - { - writeGraph(coords, "count", binCount); - } + // Write to screen + { + Info<< " Bins:" << endl; + Info<< " " << token::TAB << "Bin" + << token::TAB << "Min diameter" + << token::TAB << "Count:" + << endl; - // Write to screen + scalar diam = 0.0; + forAll(binCount, binI) { - Info<< " Bins:" << endl; - Info<< " " << token::TAB << "Bin" - << token::TAB << "Min diameter" - << token::TAB << "Count:" - << endl; - - scalar diam = 0.0; - forAll(binCount, binI) - { - Info<< " " << token::TAB << binI - << token::TAB << diam - << token::TAB << binCount[binI] << endl; - diam += delta; - } - Info<< endl; + Info<< " " << token::TAB << binI + << token::TAB << diam + << token::TAB << binCount[binI] << endl; + diam += delta; } + Info<< endl; + } - // Write average and deviation of droplet volume. - writeGraphs - ( - "volume", // name of field - indices, // per region the bin index - sortedVols, // per region field data - binCount, // per bin number of regions - coords // graph data for bins - ); + // Write average and deviation of droplet volume. + writeGraphs + ( + "volume", // name of field + indices, // per region the bin index + sortedVols, // per region field data + binCount, // per bin number of regions + coords // graph data for bins + ); - // Collect some more field - { - wordList scalarNames(obr_.names(volScalarField::typeName)); - labelList selected = findStrings(fields_, scalarNames); + // Collect some more field + { + wordList scalarNames(obr_.names(volScalarField::typeName)); + labelList selected = findStrings(fields_, scalarNames); - forAll(selected, i) - { - const word& fldName = scalarNames[selected[i]]; - Info<< " Scalar field " << fldName << endl; + forAll(selected, i) + { + const word& fldName = scalarNames[selected[i]]; + Info<< " Scalar field " << fldName << endl; - const scalarField& fld = obr_.lookupObject - < - volScalarField - >(fldName).primitiveField(); + const scalarField& fld = obr_.lookupObject + < + volScalarField + >(fldName).primitiveField(); - writeGraphs - ( - fldName, // name of field - alphaVol*fld, // per cell field data + writeGraphs + ( + fldName, // name of field + alphaVol*fld, // per cell field data - regions, // per cell the region(=droplet) - sortedRegions, // valid regions in sorted order - 1.0/sortedVols, // per region normalisation + regions, // per cell the region(=droplet) + sortedRegions, // valid regions in sorted order + 1.0/sortedVols, // per region normalisation - indices, // index of bin for each region - binCount, // per bin number of regions - coords // graph data for bins - ); - } + indices, // index of bin for each region + binCount, // per bin number of regions + coords // graph data for bins + ); } - { - wordList vectorNames(obr_.names(volVectorField::typeName)); - labelList selected = findStrings(fields_, vectorNames); - - forAll(selected, i) - { - const word& fldName = vectorNames[selected[i]]; - Info<< " Vector field " << fldName << endl; + } + { + wordList vectorNames(obr_.names(volVectorField::typeName)); + labelList selected = findStrings(fields_, vectorNames); - vectorField fld = obr_.lookupObject - < - volVectorField - >(fldName).primitiveField(); + forAll(selected, i) + { + const word& fldName = vectorNames[selected[i]]; + Info<< " Vector field " << fldName << endl; - if (coordSysPtr_.valid()) - { - Info<< "Transforming vector field " << fldName - << " with coordinate system " - << coordSysPtr_().name() - << endl; + vectorField fld = obr_.lookupObject + < + volVectorField + >(fldName).primitiveField(); - fld = coordSysPtr_().localVector(fld); - } + if (coordSysPtr_.valid()) + { + Info<< "Transforming vector field " << fldName + << " with coordinate system " + << coordSysPtr_().name() + << endl; + fld = coordSysPtr_().localVector(fld); + } - // Components - for (direction cmp = 0; cmp < vector::nComponents; cmp++) - { - writeGraphs - ( - fldName + vector::componentNames[cmp], - alphaVol*fld.component(cmp),// per cell field data - - regions, // per cell the region(=droplet) - sortedRegions, // valid regions in sorted order - 1.0/sortedVols, // per region normalisation - - indices, // index of bin for each region - binCount, // per bin number of regions - coords // graph data for bins - ); - } + // Components - // Magnitude + for (direction cmp = 0; cmp < vector::nComponents; cmp++) + { writeGraphs ( - fldName + "mag", // name of field - alphaVol*mag(fld), // per cell field data + fldName + vector::componentNames[cmp], + alphaVol*fld.component(cmp),// per cell field data - regions, // per cell the region(=droplet) - sortedRegions, // valid regions in sorted order - 1.0/sortedVols, // per region normalisation + regions, // per cell the region(=droplet) + sortedRegions, // valid regions in sorted order + 1.0/sortedVols, // per region normalisation - indices, // index of bin for each region - binCount, // per bin number of regions - coords // graph data for bins + indices, // index of bin for each region + binCount, // per bin number of regions + coords // graph data for bins ); } + + // Magnitude + writeGraphs + ( + fldName + "mag", // name of field + alphaVol*mag(fld), // per cell field data + + regions, // per cell the region(=droplet) + sortedRegions, // valid regions in sorted order + 1.0/sortedVols, // per region normalisation + + indices, // index of bin for each region + binCount, // per bin number of regions + coords // graph data for bins + ); } } } diff --git a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H index e994e5667aaba9fd1d3deb078b0b5d8075f20297..108c17ad8bb09d38a63d8629168db9cb9efec511 100644 --- a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H +++ b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::regionSizeDistribution + Foam::functionObjects::regionSizeDistribution Group grpFieldFunctionObjects @@ -126,6 +126,9 @@ class mapPolyMesh; class regionSplit; class polyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class regionSizeDistribution Declaration \*---------------------------------------------------------------------------*/ @@ -141,9 +144,6 @@ class regionSizeDistribution const objectRegistry& obr_; - //- on/off switch - bool active_; - //- Name of field word alphaName_; @@ -255,6 +255,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + // Destructor @@ -296,6 +306,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionFunctionObject.H b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionFunctionObject.H index 97526d0c3ab3e71dd69941faa27786ffbc4b3b8b..adb23034ab9511aacc975904debdc6b9eefcc8f8 100644 --- a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionFunctionObject.H +++ b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<regionSizeDistribution> + typedef OutputFilterFunctionObject<functionObjects::regionSizeDistribution> regionSizeDistributionFunctionObject; } diff --git a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionTemplates.C b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionTemplates.C index 8f707f4e0554a09ae491c2c017d77bfe75c17ecb..a74e76afd0eb0e24a724bb71899e63e7057cb076 100644 --- a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionTemplates.C +++ b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistributionTemplates.C @@ -30,7 +30,7 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class Type> -Foam::Map<Type> Foam::regionSizeDistribution::regionSum +Foam::Map<Type> Foam::functionObjects::regionSizeDistribution::regionSum ( const regionSplit& regions, const Field<Type>& fld @@ -60,9 +60,8 @@ Foam::Map<Type> Foam::regionSizeDistribution::regionSum } -// Get data in sortedToc order template<class Type> -Foam::List<Type> Foam::regionSizeDistribution::extractData +Foam::List<Type> Foam::functionObjects::regionSizeDistribution::extractData ( const UList<label>& keys, const Map<Type>& regionData diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLine.C b/src/postProcessing/functionObjects/field/streamLine/streamLine.C index 94e490630e46588e87a024c51200a152c1e48811..a5015e795002fdef832ac98070cf7e9b1ccb1c4a 100644 --- a/src/postProcessing/functionObjects/field/streamLine/streamLine.C +++ b/src/postProcessing/functionObjects/field/streamLine/streamLine.C @@ -40,14 +40,17 @@ License namespace Foam { -defineTypeNameAndDebug(streamLine, 0); +namespace functionObjects +{ + defineTypeNameAndDebug(streamLine, 0); +} } // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // Foam::autoPtr<Foam::indirectPrimitivePatch> -Foam::streamLine::wallPatch() const +Foam::functionObjects::streamLine::wallPatch() const { const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_); @@ -57,7 +60,6 @@ Foam::streamLine::wallPatch() const forAll(patches, patchi) { - //if (!polyPatch::constraintType(patches[patchi].type())) if (isA<wallPolyPatch>(patches[patchi])) { nFaces += patches[patchi].size(); @@ -70,7 +72,6 @@ Foam::streamLine::wallPatch() const forAll(patches, patchi) { - //if (!polyPatch::constraintType(patches[patchi].type())) if (isA<wallPolyPatch>(patches[patchi])) { const polyPatch& pp = patches[patchi]; @@ -97,7 +98,7 @@ Foam::streamLine::wallPatch() const } -void Foam::streamLine::track() +void Foam::functionObjects::streamLine::track() { const Time& runTime = obr_.time(); const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_); @@ -121,7 +122,7 @@ void Foam::streamLine::track() mesh, seedPoints[i], seedPoints.cells()[i], - lifeTime_ // lifetime + lifeTime_ ) ); } @@ -294,7 +295,7 @@ void Foam::streamLine::track() } - // additional particle info + // Additional particle info streamLineParticle::trackingData td ( particles, @@ -322,7 +323,7 @@ void Foam::streamLine::track() // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::streamLine::streamLine +Foam::functionObjects::streamLine::streamLine ( const word& name, const objectRegistry& obr, @@ -334,244 +335,217 @@ Foam::streamLine::streamLine name_(name), obr_(obr), loadFromFiles_(loadFromFiles), - active_(true), nSubCycle_(0) { - // Only active if a fvMesh is available - if (isA<fvMesh>(obr_)) - { - read(dict_); - } - else - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating." - << nl << endl; - } + read(dict_); +} + + +bool Foam::functionObjects::streamLine::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::streamLine::~streamLine() +Foam::functionObjects::streamLine::~streamLine() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::streamLine::read(const dictionary& dict) +void Foam::functionObjects::streamLine::read(const dictionary& dict) { - if (active_) - { - Info<< type() << " " << name_ << ":" << nl; + Info<< type() << " " << name_ << ":" << nl; - //dict_ = dict; - dict.lookup("fields") >> fields_; - if (dict.found("UName")) - { - dict.lookup("UName") >> UName_; - } - else + dict.lookup("fields") >> fields_; + if (dict.found("UName")) + { + dict.lookup("UName") >> UName_; + } + else + { + UName_ = "U"; + if (dict.found("U")) { - UName_ = "U"; - if (dict.found("U")) - { - IOWarningInFunction(dict) - << "Using deprecated entry \"U\"." - << " Please use \"UName\" instead." - << endl; - dict.lookup("U") >> UName_; - } + IOWarningInFunction(dict) + << "Using deprecated entry \"U\"." + << " Please use \"UName\" instead." + << endl; + dict.lookup("U") >> UName_; } + } - if (findIndex(fields_, UName_) == -1) - { - FatalIOErrorInFunction(dict) - << "Velocity field for tracking " << UName_ - << " should be present in the list of fields " << fields_ - << exit(FatalIOError); - } + if (findIndex(fields_, UName_) == -1) + { + FatalIOErrorInFunction(dict) + << "Velocity field for tracking " << UName_ + << " should be present in the list of fields " << fields_ + << exit(FatalIOError); + } - dict.lookup("trackForward") >> trackForward_; - dict.lookup("lifeTime") >> lifeTime_; - if (lifeTime_ < 1) - { - FatalErrorInFunction - << "Illegal value " << lifeTime_ << " for lifeTime" - << exit(FatalError); - } + dict.lookup("trackForward") >> trackForward_; + dict.lookup("lifeTime") >> lifeTime_; + if (lifeTime_ < 1) + { + FatalErrorInFunction + << "Illegal value " << lifeTime_ << " for lifeTime" + << exit(FatalError); + } - bool subCycling = dict.found("nSubCycle"); - bool fixedLength = dict.found("trackLength"); + bool subCycling = dict.found("nSubCycle"); + bool fixedLength = dict.found("trackLength"); - if (subCycling && fixedLength) - { - FatalIOErrorInFunction(dict) - << "Cannot both specify automatic time stepping (through '" - << "nSubCycle' specification) and fixed track length (through '" - << "trackLength')" - << exit(FatalIOError); - } + if (subCycling && fixedLength) + { + FatalIOErrorInFunction(dict) + << "Cannot both specify automatic time stepping (through '" + << "nSubCycle' specification) and fixed track length (through '" + << "trackLength')" + << exit(FatalIOError); + } - nSubCycle_ = 1; - if (dict.readIfPresent("nSubCycle", nSubCycle_)) - { - trackLength_ = VGREAT; - if (nSubCycle_ < 1) - { - nSubCycle_ = 1; - } - Info<< " automatic track length specified through" - << " number of sub cycles : " << nSubCycle_ << nl << endl; - } - else + nSubCycle_ = 1; + if (dict.readIfPresent("nSubCycle", nSubCycle_)) + { + trackLength_ = VGREAT; + if (nSubCycle_ < 1) { - dict.lookup("trackLength") >> trackLength_; - - Info<< " fixed track length specified : " - << trackLength_ << nl << endl; + nSubCycle_ = 1; } + Info<< " automatic track length specified through" + << " number of sub cycles : " << nSubCycle_ << nl << endl; + } + else + { + dict.lookup("trackLength") >> trackLength_; + Info<< " fixed track length specified : " + << trackLength_ << nl << endl; + } - interpolationScheme_ = dict.lookupOrDefault - ( - "interpolationScheme", - interpolationCellPoint<scalar>::typeName - ); - //Info<< " using interpolation " << interpolationScheme_ - // << endl; + interpolationScheme_ = dict.lookupOrDefault + ( + "interpolationScheme", + interpolationCellPoint<scalar>::typeName + ); - cloudName_ = dict.lookupOrDefault<word>("cloudName", "streamLine"); - dict.lookup("seedSampleSet") >> seedSet_; + cloudName_ = dict.lookupOrDefault<word>("cloudName", "streamLine"); + dict.lookup("seedSampleSet") >> seedSet_; - const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_); + const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_); - meshSearchPtr_.reset(new meshSearch(mesh)); + meshSearchPtr_.reset(new meshSearch(mesh)); - const dictionary& coeffsDict = dict.subDict(seedSet_ + "Coeffs"); - sampledSetPtr_ = sampledSet::New - ( - seedSet_, - mesh, - meshSearchPtr_(), - coeffsDict - ); - coeffsDict.lookup("axis") >> sampledSetAxis_; + const dictionary& coeffsDict = dict.subDict(seedSet_ + "Coeffs"); + sampledSetPtr_ = sampledSet::New + ( + seedSet_, + mesh, + meshSearchPtr_(), + coeffsDict + ); + coeffsDict.lookup("axis") >> sampledSetAxis_; - scalarFormatterPtr_ = writer<scalar>::New(dict.lookup("setFormat")); - vectorFormatterPtr_ = writer<vector>::New(dict.lookup("setFormat")); - } + scalarFormatterPtr_ = writer<scalar>::New(dict.lookup("setFormat")); + vectorFormatterPtr_ = writer<vector>::New(dict.lookup("setFormat")); } -void Foam::streamLine::execute() -{ -// const Time& runTime = obr_.time(); -// Pout<< "**streamLine::execute : time:" << runTime.timeName() << endl; -// -// bool isOutputTime = false; -// -// const functionObjectList& fobs = runTime.functionObjects(); -// -// forAll(fobs, i) -// { -// if (isA<streamLineFunctionObject>(fobs[i])) -// { -// const streamLineFunctionObject& fo = -// dynamic_cast<const streamLineFunctionObject&>(fobs[i]); -// -// if (fo.name() == name_) -// { -// Pout<< "found me:" << i << endl; -// if (fo.outputControl().output()) -// { -// isOutputTime = true; -// break; -// } -// } -// } -// } -// -// -// if (active_ && isOutputTime) -// { -// track(); -// } -} +void Foam::functionObjects::streamLine::execute() +{} -void Foam::streamLine::end() +void Foam::functionObjects::streamLine::end() {} -void Foam::streamLine::timeSet() +void Foam::functionObjects::streamLine::timeSet() {} -void Foam::streamLine::write() +void Foam::functionObjects::streamLine::write() { - if (active_) - { - Info<< type() << " " << name_ << " output:" << nl; + Info<< type() << " " << name_ << " output:" << nl; - const Time& runTime = obr_.time(); - const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_); + const Time& runTime = obr_.time(); + const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_); - // Do all injection and tracking - track(); + // Do all injection and tracking + track(); - if (Pstream::parRun()) - { - // Append slave tracks to master ones - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + if (Pstream::parRun()) + { + // Append slave tracks to master ones + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - globalIndex globalTrackIDs(allTracks_.size()); + globalIndex globalTrackIDs(allTracks_.size()); - // Construct a distribution map to pull all to the master. - labelListList sendMap(Pstream::nProcs()); - labelListList recvMap(Pstream::nProcs()); + // Construct a distribution map to pull all to the master. + labelListList sendMap(Pstream::nProcs()); + labelListList recvMap(Pstream::nProcs()); - if (Pstream::master()) - { - // Master: receive all. My own first, then consecutive - // processors. - label trackI = 0; + if (Pstream::master()) + { + // Master: receive all. My own first, then consecutive + // processors. + label trackI = 0; - forAll(recvMap, proci) + forAll(recvMap, proci) + { + labelList& fromProc = recvMap[proci]; + fromProc.setSize(globalTrackIDs.localSize(proci)); + forAll(fromProc, i) { - labelList& fromProc = recvMap[proci]; - fromProc.setSize(globalTrackIDs.localSize(proci)); - forAll(fromProc, i) - { - fromProc[i] = trackI++; - } + fromProc[i] = trackI++; } } + } - labelList& toMaster = sendMap[0]; - toMaster.setSize(globalTrackIDs.localSize()); - forAll(toMaster, i) - { - toMaster[i] = i; - } + labelList& toMaster = sendMap[0]; + toMaster.setSize(globalTrackIDs.localSize()); + forAll(toMaster, i) + { + toMaster[i] = i; + } - const mapDistribute distMap - ( - globalTrackIDs.size(), - sendMap.xfer(), - recvMap.xfer() - ); + const mapDistribute distMap + ( + globalTrackIDs.size(), + sendMap.xfer(), + recvMap.xfer() + ); - // Distribute the track positions. Note: use scheduled comms - // to prevent buffering. + // Distribute the track positions. Note: use scheduled comms + // to prevent buffering. + mapDistribute::distribute + ( + Pstream::scheduled, + distMap.schedule(), + distMap.constructSize(), + distMap.subMap(), + distMap.constructMap(), + allTracks_ + ); + + // Distribute the scalars + forAll(allScalars_, scalarI) + { mapDistribute::distribute ( Pstream::scheduled, @@ -579,193 +553,168 @@ void Foam::streamLine::write() distMap.constructSize(), distMap.subMap(), distMap.constructMap(), - allTracks_ + allScalars_[scalarI] ); - - // Distribute the scalars - forAll(allScalars_, scalarI) - { - mapDistribute::distribute - ( - Pstream::scheduled, - distMap.schedule(), - distMap.constructSize(), - distMap.subMap(), - distMap.constructMap(), - allScalars_[scalarI] - ); - } - // Distribute the vectors - forAll(allVectors_, vectorI) - { - mapDistribute::distribute - ( - Pstream::scheduled, - distMap.schedule(), - distMap.constructSize(), - distMap.subMap(), - distMap.constructMap(), - allVectors_[vectorI] - ); - } } - - - label n = 0; - forAll(allTracks_, trackI) + // Distribute the vectors + forAll(allVectors_, vectorI) { - n += allTracks_[trackI].size(); + mapDistribute::distribute + ( + Pstream::scheduled, + distMap.schedule(), + distMap.constructSize(), + distMap.subMap(), + distMap.constructMap(), + allVectors_[vectorI] + ); } + } - Info<< " Tracks:" << allTracks_.size() << nl - << " Total samples:" << n - << endl; + label n = 0; + forAll(allTracks_, trackI) + { + n += allTracks_[trackI].size(); + } - // Massage into form suitable for writers - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Info<< " Tracks:" << allTracks_.size() << nl + << " Total samples:" << n + << endl; - if (Pstream::master() && allTracks_.size()) - { - // Make output directory - fileName vtkPath - ( - Pstream::parRun() - ? runTime.path()/".."/"postProcessing"/"sets"/name() - : runTime.path()/"postProcessing"/"sets"/name() - ); - if (mesh.name() != fvMesh::defaultRegion) - { - vtkPath = vtkPath/mesh.name(); - } - vtkPath = vtkPath/mesh.time().timeName(); + // Massage into form suitable for writers + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - mkDir(vtkPath); + if (Pstream::master() && allTracks_.size()) + { + // Make output directory + + fileName vtkPath + ( + Pstream::parRun() + ? runTime.path()/".."/"postProcessing"/"sets"/name() + : runTime.path()/"postProcessing"/"sets"/name() + ); + if (mesh.name() != fvMesh::defaultRegion) + { + vtkPath = vtkPath/mesh.name(); + } + vtkPath = vtkPath/mesh.time().timeName(); - // Convert track positions + mkDir(vtkPath); - PtrList<coordSet> tracks(allTracks_.size()); - forAll(allTracks_, trackI) - { - tracks.set + // Convert track positions + + PtrList<coordSet> tracks(allTracks_.size()); + forAll(allTracks_, trackI) + { + tracks.set + ( + trackI, + new coordSet ( - trackI, - new coordSet - ( - "track" + Foam::name(trackI), - sampledSetAxis_ //"xyz" - ) - ); - tracks[trackI].transfer(allTracks_[trackI]); - } + "track" + Foam::name(trackI), + sampledSetAxis_ //"xyz" + ) + ); + tracks[trackI].transfer(allTracks_[trackI]); + } - // Convert scalar values + // Convert scalar values - if (allScalars_.size() > 0) + if (allScalars_.size() > 0) + { + List<List<scalarField>> scalarValues(allScalars_.size()); + + forAll(allScalars_, scalarI) { - List<List<scalarField>> scalarValues(allScalars_.size()); + DynamicList<scalarList>& allTrackVals = + allScalars_[scalarI]; + scalarValues[scalarI].setSize(allTrackVals.size()); - forAll(allScalars_, scalarI) + forAll(allTrackVals, trackI) { - DynamicList<scalarList>& allTrackVals = - allScalars_[scalarI]; - scalarValues[scalarI].setSize(allTrackVals.size()); - - forAll(allTrackVals, trackI) - { - scalarList& trackVals = allTrackVals[trackI]; - scalarValues[scalarI][trackI].transfer(trackVals); - } + scalarList& trackVals = allTrackVals[trackI]; + scalarValues[scalarI][trackI].transfer(trackVals); } + } - fileName vtkFile + fileName vtkFile + ( + vtkPath + / scalarFormatterPtr_().getFileName ( - vtkPath - / scalarFormatterPtr_().getFileName - ( - tracks[0], - scalarNames_ - ) - ); + tracks[0], + scalarNames_ + ) + ); - Info<< " Writing data to " << vtkFile.path() << endl; + Info<< " Writing data to " << vtkFile.path() << endl; - scalarFormatterPtr_().write - ( - true, // writeTracks - tracks, - scalarNames_, - scalarValues, - OFstream(vtkFile)() - ); - } + scalarFormatterPtr_().write + ( + true, // writeTracks + tracks, + scalarNames_, + scalarValues, + OFstream(vtkFile)() + ); + } - // Convert vector values + // Convert vector values - if (allVectors_.size() > 0) + if (allVectors_.size() > 0) + { + List<List<vectorField>> vectorValues(allVectors_.size()); + + forAll(allVectors_, vectorI) { - List<List<vectorField>> vectorValues(allVectors_.size()); + DynamicList<vectorList>& allTrackVals = + allVectors_[vectorI]; + vectorValues[vectorI].setSize(allTrackVals.size()); - forAll(allVectors_, vectorI) + forAll(allTrackVals, trackI) { - DynamicList<vectorList>& allTrackVals = - allVectors_[vectorI]; - vectorValues[vectorI].setSize(allTrackVals.size()); - - forAll(allTrackVals, trackI) - { - vectorList& trackVals = allTrackVals[trackI]; - vectorValues[vectorI][trackI].transfer(trackVals); - } + vectorList& trackVals = allTrackVals[trackI]; + vectorValues[vectorI][trackI].transfer(trackVals); } + } - fileName vtkFile + fileName vtkFile + ( + vtkPath + / vectorFormatterPtr_().getFileName ( - vtkPath - / vectorFormatterPtr_().getFileName - ( - tracks[0], - vectorNames_ - ) - ); - - //Info<< " Writing vector data to " << vtkFile << endl; + tracks[0], + vectorNames_ + ) + ); - vectorFormatterPtr_().write - ( - true, // writeTracks - tracks, - vectorNames_, - vectorValues, - OFstream(vtkFile)() - ); - } + vectorFormatterPtr_().write + ( + true, // writeTracks + tracks, + vectorNames_, + vectorValues, + OFstream(vtkFile)() + ); } } } -void Foam::streamLine::updateMesh(const mapPolyMesh&) +void Foam::functionObjects::streamLine::updateMesh(const mapPolyMesh&) { read(dict_); } -void Foam::streamLine::movePoints(const polyMesh&) +void Foam::functionObjects::streamLine::movePoints(const polyMesh&) { // Moving mesh affects the search tree read(dict_); } -//void Foam::streamLine::readUpdate(const polyMesh::readUpdateState state) -//{ -// if (state != UNCHANGED) -// { -// read(dict_); -// } -//} - - // ************************************************************************* // diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLine.H b/src/postProcessing/functionObjects/field/streamLine/streamLine.H index 16ae0ca96b0f53c05bd8bb54bbc8a5f6e6e7332a..c0f280544d358bbf8a0ffdb05042c6be4d59b7d7 100644 --- a/src/postProcessing/functionObjects/field/streamLine/streamLine.H +++ b/src/postProcessing/functionObjects/field/streamLine/streamLine.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::streamLine + Foam::functionObjects::streamLine Group grpFieldFunctionObjects @@ -125,6 +125,9 @@ class mapPolyMesh; class meshSearch; class sampledSet; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class streamLine Declaration \*---------------------------------------------------------------------------*/ @@ -145,9 +148,6 @@ class streamLine //- Load fields from files (not from objectRegistry) bool loadFromFiles_; - //- On/off switch - bool active_; - //- List of fields to sample wordList fields_; @@ -182,7 +182,6 @@ class streamLine wordList vectorNames_; - // Demand driven //- Mesh searching enigne @@ -244,6 +243,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~streamLine(); @@ -277,14 +286,12 @@ public: //- Update for mesh point-motion virtual void movePoints(const polyMesh&); - - ////- Update for changes of mesh due to readUpdate - //virtual void readUpdate(const polyMesh::readUpdateState state); }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLineFunctionObject.H b/src/postProcessing/functionObjects/field/streamLine/streamLineFunctionObject.H index 8bfe856ee063b4325917e7d0730d7ffb5ea33686..b40fe13c3f9c35561f17ceaa6c2bf3ae3d89d1af 100644 --- a/src/postProcessing/functionObjects/field/streamLine/streamLineFunctionObject.H +++ b/src/postProcessing/functionObjects/field/streamLine/streamLineFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<streamLine> + typedef OutputFilterFunctionObject<functionObjects::streamLine> streamLineFunctionObject; } diff --git a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C index ad1c7d81b862be6431453a7eb57b49a0b71e5086..d5ba38787942b5c98d6aaed789789011bdb9a81f 100644 --- a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C +++ b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,14 +28,17 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(surfaceInterpolateFields, 0); } +} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::surfaceInterpolateFields::surfaceInterpolateFields +Foam::functionObjects::surfaceInterpolateFields::surfaceInterpolateFields ( const word& name, const objectRegistry& obr, @@ -45,109 +48,99 @@ Foam::surfaceInterpolateFields::surfaceInterpolateFields : name_(name), obr_(obr), - active_(true), fieldSet_() { - // Check if the available mesh is an fvMesh otherise deactivate - if (isA<fvMesh>(obr_)) - { - read(dict); - } - else - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ - << endl; - } + read(dict); +} + + +bool Foam::functionObjects::surfaceInterpolateFields::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::surfaceInterpolateFields::~surfaceInterpolateFields() +Foam::functionObjects::surfaceInterpolateFields::~surfaceInterpolateFields() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::surfaceInterpolateFields::read(const dictionary& dict) +void Foam::functionObjects::surfaceInterpolateFields::read +( + const dictionary& dict +) { - if (active_) - { - dict.lookup("fields") >> fieldSet_; - } + dict.lookup("fields") >> fieldSet_; } -void Foam::surfaceInterpolateFields::execute() +void Foam::functionObjects::surfaceInterpolateFields::execute() { - if (active_) - { - Info<< type() << " " << name_ << " output:" << nl; - - // Clear out any previously loaded fields - ssf_.clear(); - svf_.clear(); - sSpheretf_.clear(); - sSymmtf_.clear(); - stf_.clear(); - - interpolateFields<scalar>(ssf_); - interpolateFields<vector>(svf_); - interpolateFields<sphericalTensor>(sSpheretf_); - interpolateFields<symmTensor>(sSymmtf_); - interpolateFields<tensor>(stf_); - - Info<< endl; - } + Info<< type() << " " << name_ << " output:" << nl; + + // Clear out any previously loaded fields + ssf_.clear(); + svf_.clear(); + sSpheretf_.clear(); + sSymmtf_.clear(); + stf_.clear(); + + interpolateFields<scalar>(ssf_); + interpolateFields<vector>(svf_); + interpolateFields<sphericalTensor>(sSpheretf_); + interpolateFields<symmTensor>(sSymmtf_); + interpolateFields<tensor>(stf_); + + Info<< endl; } -void Foam::surfaceInterpolateFields::end() +void Foam::functionObjects::surfaceInterpolateFields::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::surfaceInterpolateFields::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::surfaceInterpolateFields::timeSet() +{} -void Foam::surfaceInterpolateFields::write() +void Foam::functionObjects::surfaceInterpolateFields::write() { - if (active_) + Info<< type() << " " << name_ << " output:" << nl; + + Info<< " Writing interpolated surface fields to " + << obr_.time().timeName() << endl; + + forAll(ssf_, i) + { + ssf_[i].write(); + } + forAll(svf_, i) + { + svf_[i].write(); + } + forAll(sSpheretf_, i) + { + sSpheretf_[i].write(); + } + forAll(sSymmtf_, i) + { + sSymmtf_[i].write(); + } + forAll(stf_, i) { - Info<< type() << " " << name_ << " output:" << nl; - - Info<< " Writing interpolated surface fields to " - << obr_.time().timeName() << endl; - - forAll(ssf_, i) - { - ssf_[i].write(); - } - forAll(svf_, i) - { - svf_[i].write(); - } - forAll(sSpheretf_, i) - { - sSpheretf_[i].write(); - } - forAll(sSymmtf_, i) - { - sSymmtf_[i].write(); - } - forAll(stf_, i) - { - stf_[i].write(); - } + stf_[i].write(); } } diff --git a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H index f95995fe5111be53ae96e07ff9ee153f590d0e71..aed3e2aaa00686ddd603ebfd811ed0bd45a382f6 100644 --- a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H +++ b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H @@ -84,6 +84,9 @@ class objectRegistry; class dictionary; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class surfaceInterpolateFields Declaration \*---------------------------------------------------------------------------*/ @@ -99,9 +102,6 @@ protected: const objectRegistry& obr_; - //- on/off switch - bool active_; - //- Fields to process //wordList fieldSet_; List<Tuple2<word, word>> fieldSet_; @@ -152,6 +152,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~surfaceInterpolateFields(); @@ -192,6 +202,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsFunctionObject.H b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsFunctionObject.H index 210eccdb229f27c629d69290a4460ad4d26db55b..fa10e067811f53de79a6dfac204f0921ffad7ee2 100644 --- a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsFunctionObject.H +++ b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,8 +43,10 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<surfaceInterpolateFields> - surfaceInterpolateFieldsFunctionObject; + typedef OutputFilterFunctionObject + < + functionObjects::surfaceInterpolateFields + > surfaceInterpolateFieldsFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsTemplates.C b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsTemplates.C index 9285ef28e90258b4d9b1db9cfaacabeb317751de..689daea858e50c9356b3178ce8df445a4551ca24 100644 --- a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsTemplates.C +++ b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFieldsTemplates.C @@ -30,7 +30,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template<class Type> -void Foam::surfaceInterpolateFields::interpolateFields +void Foam::functionObjects::surfaceInterpolateFields::interpolateFields ( PtrList<GeometricField<Type, fvsPatchField, surfaceMesh>>& sflds ) const diff --git a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.C b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.C index 823c52b6a0e7cc4657889625294793d37465a57a..f110a8845514a5691cc773a5f75a9cb44995a83d 100644 --- a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.C +++ b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.C @@ -42,14 +42,17 @@ License namespace Foam { -defineTypeNameAndDebug(wallBoundedStreamLine, 0); +namespace functionObjects +{ + defineTypeNameAndDebug(wallBoundedStreamLine, 0); +} } // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // Foam::autoPtr<Foam::indirectPrimitivePatch> -Foam::wallBoundedStreamLine::wallPatch() const +Foam::functionObjects::wallBoundedStreamLine::wallPatch() const { const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_); @@ -99,7 +102,7 @@ Foam::wallBoundedStreamLine::wallPatch() const } -Foam::tetIndices Foam::wallBoundedStreamLine::findNearestTet +Foam::tetIndices Foam::functionObjects::wallBoundedStreamLine::findNearestTet ( const PackedBoolList& isWallPatch, const point& seedPt, @@ -156,7 +159,7 @@ Foam::tetIndices Foam::wallBoundedStreamLine::findNearestTet } -void Foam::wallBoundedStreamLine::track() +void Foam::functionObjects::wallBoundedStreamLine::track() { const Time& runTime = obr_.time(); const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_); @@ -432,7 +435,7 @@ void Foam::wallBoundedStreamLine::track() // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::wallBoundedStreamLine::wallBoundedStreamLine +Foam::functionObjects::wallBoundedStreamLine::wallBoundedStreamLine ( const word& name, const objectRegistry& obr, @@ -443,180 +446,175 @@ Foam::wallBoundedStreamLine::wallBoundedStreamLine dict_(dict), name_(name), obr_(obr), - loadFromFiles_(loadFromFiles), - active_(true) + loadFromFiles_(loadFromFiles) { - // Only active if a fvMesh is available - if (isA<fvMesh>(obr_)) - { - read(dict_); - } - else - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ - << nl << endl; - } + read(dict_); +} + + +bool Foam::functionObjects::wallBoundedStreamLine::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::wallBoundedStreamLine::~wallBoundedStreamLine() +Foam::functionObjects::wallBoundedStreamLine::~wallBoundedStreamLine() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::wallBoundedStreamLine::read(const dictionary& dict) +void Foam::functionObjects::wallBoundedStreamLine::read(const dictionary& dict) { - if (active_) + //dict_ = dict; + dict.lookup("fields") >> fields_; + if (dict.found("UName")) { - //dict_ = dict; - dict.lookup("fields") >> fields_; - if (dict.found("UName")) - { - dict.lookup("UName") >> UName_; - } - else - { - UName_ = "U"; - if (dict.found("U")) - { - IOWarningInFunction - ( - dict - ) << "Using deprecated entry \"U\"." - << " Please use \"UName\" instead." - << endl; - dict.lookup("U") >> UName_; - } - } - - if (findIndex(fields_, UName_) == -1) + dict.lookup("UName") >> UName_; + } + else + { + UName_ = "U"; + if (dict.found("U")) { - FatalIOErrorInFunction + IOWarningInFunction ( dict - ) << "Velocity field for tracking " << UName_ - << " should be present in the list of fields " << fields_ - << exit(FatalIOError); + ) << "Using deprecated entry \"U\"." + << " Please use \"UName\" instead." + << endl; + dict.lookup("U") >> UName_; } + } + if (findIndex(fields_, UName_) == -1) + { + FatalIOErrorInFunction + ( + dict + ) << "Velocity field for tracking " << UName_ + << " should be present in the list of fields " << fields_ + << exit(FatalIOError); + } - dict.lookup("trackForward") >> trackForward_; - dict.lookup("lifeTime") >> lifeTime_; - if (lifeTime_ < 1) - { - FatalErrorInFunction - << "Illegal value " << lifeTime_ << " for lifeTime" - << exit(FatalError); - } - trackLength_ = VGREAT; - if (dict.found("trackLength")) - { - dict.lookup("trackLength") >> trackLength_; - Info<< type() << " : fixed track length specified : " - << trackLength_ << nl << endl; - } + dict.lookup("trackForward") >> trackForward_; + dict.lookup("lifeTime") >> lifeTime_; + if (lifeTime_ < 1) + { + FatalErrorInFunction + << "Illegal value " << lifeTime_ << " for lifeTime" + << exit(FatalError); + } + trackLength_ = VGREAT; + if (dict.found("trackLength")) + { + dict.lookup("trackLength") >> trackLength_; + Info<< type() << " : fixed track length specified : " + << trackLength_ << nl << endl; + } - interpolationScheme_ = dict.lookupOrDefault - ( - "interpolationScheme", - interpolationCellPoint<scalar>::typeName - ); - //Info<< typeName << " using interpolation " << interpolationScheme_ - // << endl; + interpolationScheme_ = dict.lookupOrDefault + ( + "interpolationScheme", + interpolationCellPoint<scalar>::typeName + ); - cloudName_ = dict.lookupOrDefault<word> - ( - "cloudName", - "wallBoundedStreamLine" - ); - dict.lookup("seedSampleSet") >> seedSet_; + cloudName_ = dict.lookupOrDefault<word> + ( + "cloudName", + "wallBoundedStreamLine" + ); + dict.lookup("seedSampleSet") >> seedSet_; - const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_); + const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_); - const dictionary& coeffsDict = dict.subDict(seedSet_ + "Coeffs"); + const dictionary& coeffsDict = dict.subDict(seedSet_ + "Coeffs"); - sampledSetPtr_ = sampledSet::New - ( - seedSet_, - mesh, - meshSearchMeshObject::New(mesh), - coeffsDict - ); - coeffsDict.lookup("axis") >> sampledSetAxis_; + sampledSetPtr_ = sampledSet::New + ( + seedSet_, + mesh, + meshSearchMeshObject::New(mesh), + coeffsDict + ); + coeffsDict.lookup("axis") >> sampledSetAxis_; - scalarFormatterPtr_ = writer<scalar>::New(dict.lookup("setFormat")); - vectorFormatterPtr_ = writer<vector>::New(dict.lookup("setFormat")); + scalarFormatterPtr_ = writer<scalar>::New(dict.lookup("setFormat")); + vectorFormatterPtr_ = writer<vector>::New(dict.lookup("setFormat")); - // Make sure that the mesh is trackable - if (debug) - { - // 1. positive volume decomposition tets - faceSet faces(mesh, "lowQualityTetFaces", mesh.nFaces()/100+1); - if + // Make sure that the mesh is trackable + if (debug) + { + // 1. positive volume decomposition tets + faceSet faces(mesh, "lowQualityTetFaces", mesh.nFaces()/100+1); + if + ( + polyMeshTetDecomposition::checkFaceTets ( - polyMeshTetDecomposition::checkFaceTets - ( - mesh, - polyMeshTetDecomposition::minTetQuality, - true, - &faces - ) + mesh, + polyMeshTetDecomposition::minTetQuality, + true, + &faces ) - { - label nFaces = returnReduce(faces.size(), sumOp<label>()); + ) + { + label nFaces = returnReduce(faces.size(), sumOp<label>()); - WarningInFunction - << "Found " << nFaces - <<" faces with low quality or negative volume " - << "decomposition tets. Writing to faceSet " << faces.name() - << endl; - } + WarningInFunction + << "Found " << nFaces + <<" faces with low quality or negative volume " + << "decomposition tets. Writing to faceSet " << faces.name() + << endl; + } - // 2. all edges on a cell having two faces - EdgeMap<label> numFacesPerEdge; - forAll(mesh.cells(), celli) - { - const cell& cFaces = mesh.cells()[celli]; + // 2. all edges on a cell having two faces + EdgeMap<label> numFacesPerEdge; + forAll(mesh.cells(), celli) + { + const cell& cFaces = mesh.cells()[celli]; - numFacesPerEdge.clear(); + numFacesPerEdge.clear(); - forAll(cFaces, cFacei) + forAll(cFaces, cFacei) + { + label facei = cFaces[cFacei]; + const face& f = mesh.faces()[facei]; + forAll(f, fp) { - label facei = cFaces[cFacei]; - const face& f = mesh.faces()[facei]; - forAll(f, fp) + const edge e(f[fp], f.nextLabel(fp)); + EdgeMap<label>::iterator eFnd = + numFacesPerEdge.find(e); + if (eFnd != numFacesPerEdge.end()) + { + eFnd()++; + } + else { - const edge e(f[fp], f.nextLabel(fp)); - EdgeMap<label>::iterator eFnd = - numFacesPerEdge.find(e); - if (eFnd != numFacesPerEdge.end()) - { - eFnd()++; - } - else - { - numFacesPerEdge.insert(e, 1); - } + numFacesPerEdge.insert(e, 1); } } + } - forAllConstIter(EdgeMap<label>, numFacesPerEdge, iter) + forAllConstIter(EdgeMap<label>, numFacesPerEdge, iter) + { + if (iter() != 2) { - if (iter() != 2) - { - FatalErrorInFunction - << "problem cell:" << celli - << abort(FatalError); - } + FatalErrorInFunction + << "problem cell:" << celli + << abort(FatalError); } } } @@ -624,75 +622,86 @@ void Foam::wallBoundedStreamLine::read(const dictionary& dict) } -void Foam::wallBoundedStreamLine::execute() +void Foam::functionObjects::wallBoundedStreamLine::execute() {} -void Foam::wallBoundedStreamLine::end() +void Foam::functionObjects::wallBoundedStreamLine::end() {} -void Foam::wallBoundedStreamLine::timeSet() +void Foam::functionObjects::wallBoundedStreamLine::timeSet() {} -void Foam::wallBoundedStreamLine::write() +void Foam::functionObjects::wallBoundedStreamLine::write() { - if (active_) - { - const Time& runTime = obr_.time(); - const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_); + const Time& runTime = obr_.time(); + const fvMesh& mesh = dynamic_cast<const fvMesh&>(obr_); - // Do all injection and tracking - track(); + // Do all injection and tracking + track(); - if (Pstream::parRun()) - { - // Append slave tracks to master ones - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + if (Pstream::parRun()) + { + // Append slave tracks to master ones + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - globalIndex globalTrackIDs(allTracks_.size()); + globalIndex globalTrackIDs(allTracks_.size()); - // Construct a distribution map to pull all to the master. - labelListList sendMap(Pstream::nProcs()); - labelListList recvMap(Pstream::nProcs()); + // Construct a distribution map to pull all to the master. + labelListList sendMap(Pstream::nProcs()); + labelListList recvMap(Pstream::nProcs()); - if (Pstream::master()) - { - // Master: receive all. My own first, then consecutive - // processors. - label trackI = 0; + if (Pstream::master()) + { + // Master: receive all. My own first, then consecutive + // processors. + label trackI = 0; - forAll(recvMap, proci) + forAll(recvMap, proci) + { + labelList& fromProc = recvMap[proci]; + fromProc.setSize(globalTrackIDs.localSize(proci)); + forAll(fromProc, i) { - labelList& fromProc = recvMap[proci]; - fromProc.setSize(globalTrackIDs.localSize(proci)); - forAll(fromProc, i) - { - fromProc[i] = trackI++; - } + fromProc[i] = trackI++; } } + } - labelList& toMaster = sendMap[0]; - toMaster.setSize(globalTrackIDs.localSize()); - forAll(toMaster, i) - { - toMaster[i] = i; - } + labelList& toMaster = sendMap[0]; + toMaster.setSize(globalTrackIDs.localSize()); + forAll(toMaster, i) + { + toMaster[i] = i; + } - const mapDistribute distMap - ( - globalTrackIDs.size(), - sendMap.xfer(), - recvMap.xfer() - ); + const mapDistribute distMap + ( + globalTrackIDs.size(), + sendMap.xfer(), + recvMap.xfer() + ); - // Distribute the track positions. Note: use scheduled comms - // to prevent buffering. + // Distribute the track positions. Note: use scheduled comms + // to prevent buffering. + mapDistribute::distribute + ( + Pstream::scheduled, + distMap.schedule(), + distMap.constructSize(), + distMap.subMap(), + distMap.constructMap(), + allTracks_ + ); + + // Distribute the scalars + forAll(allScalars_, scalarI) + { mapDistribute::distribute ( Pstream::scheduled, @@ -700,193 +709,170 @@ void Foam::wallBoundedStreamLine::write() distMap.constructSize(), distMap.subMap(), distMap.constructMap(), - allTracks_ + allScalars_[scalarI] ); - - // Distribute the scalars - forAll(allScalars_, scalarI) - { - mapDistribute::distribute - ( - Pstream::scheduled, - distMap.schedule(), - distMap.constructSize(), - distMap.subMap(), - distMap.constructMap(), - allScalars_[scalarI] - ); - } - // Distribute the vectors - forAll(allVectors_, vectorI) - { - mapDistribute::distribute - ( - Pstream::scheduled, - distMap.schedule(), - distMap.constructSize(), - distMap.subMap(), - distMap.constructMap(), - allVectors_[vectorI] - ); - } } - - - label n = 0; - forAll(allTracks_, trackI) + // Distribute the vectors + forAll(allVectors_, vectorI) { - n += allTracks_[trackI].size(); + mapDistribute::distribute + ( + Pstream::scheduled, + distMap.schedule(), + distMap.constructSize(), + distMap.subMap(), + distMap.constructMap(), + allVectors_[vectorI] + ); } + } - Info<< " Tracks:" << allTracks_.size() << nl - << " Total samples:" << n << endl; + label n = 0; + forAll(allTracks_, trackI) + { + n += allTracks_[trackI].size(); + } - // Massage into form suitable for writers - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Info<< " Tracks:" << allTracks_.size() << nl + << " Total samples:" << n << endl; - if (Pstream::master() && allTracks_.size()) - { - // Make output directory - fileName vtkPath - ( - Pstream::parRun() - ? runTime.path()/".."/"postProcessing"/"sets"/name() - : runTime.path()/"postProcessing"/"sets"/name() - ); - if (mesh.name() != fvMesh::defaultRegion) - { - vtkPath = vtkPath/mesh.name(); - } - vtkPath = vtkPath/mesh.time().timeName(); + // Massage into form suitable for writers + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - mkDir(vtkPath); + if (Pstream::master() && allTracks_.size()) + { + // Make output directory - // Convert track positions + fileName vtkPath + ( + Pstream::parRun() + ? runTime.path()/".."/"postProcessing"/"sets"/name() + : runTime.path()/"postProcessing"/"sets"/name() + ); + if (mesh.name() != fvMesh::defaultRegion) + { + vtkPath = vtkPath/mesh.name(); + } + vtkPath = vtkPath/mesh.time().timeName(); - PtrList<coordSet> tracks(allTracks_.size()); - forAll(allTracks_, trackI) - { - tracks.set + mkDir(vtkPath); + + // Convert track positions + + PtrList<coordSet> tracks(allTracks_.size()); + forAll(allTracks_, trackI) + { + tracks.set + ( + trackI, + new coordSet ( - trackI, - new coordSet - ( - "track" + Foam::name(trackI), - sampledSetAxis_ //"xyz" - ) - ); - tracks[trackI].transfer(allTracks_[trackI]); - } + "track" + Foam::name(trackI), + sampledSetAxis_ //"xyz" + ) + ); + tracks[trackI].transfer(allTracks_[trackI]); + } + + // Convert scalar values - // Convert scalar values + if (allScalars_.size() > 0) + { + List<List<scalarField>> scalarValues(allScalars_.size()); - if (allScalars_.size() > 0) + forAll(allScalars_, scalarI) { - List<List<scalarField>> scalarValues(allScalars_.size()); + DynamicList<scalarList>& allTrackVals = + allScalars_[scalarI]; + scalarValues[scalarI].setSize(allTrackVals.size()); - forAll(allScalars_, scalarI) + forAll(allTrackVals, trackI) { - DynamicList<scalarList>& allTrackVals = - allScalars_[scalarI]; - scalarValues[scalarI].setSize(allTrackVals.size()); - - forAll(allTrackVals, trackI) - { - scalarList& trackVals = allTrackVals[trackI]; - scalarValues[scalarI][trackI].transfer(trackVals); - } + scalarList& trackVals = allTrackVals[trackI]; + scalarValues[scalarI][trackI].transfer(trackVals); } + } - fileName vtkFile + fileName vtkFile + ( + vtkPath + / scalarFormatterPtr_().getFileName ( - vtkPath - / scalarFormatterPtr_().getFileName - ( - tracks[0], - scalarNames_ - ) - ); + tracks[0], + scalarNames_ + ) + ); - Info<< "Writing data to " << vtkFile.path() << endl; + Info<< "Writing data to " << vtkFile.path() << endl; - scalarFormatterPtr_().write - ( - true, // writeTracks - tracks, - scalarNames_, - scalarValues, - OFstream(vtkFile)() - ); - } + scalarFormatterPtr_().write + ( + true, // writeTracks + tracks, + scalarNames_, + scalarValues, + OFstream(vtkFile)() + ); + } - // Convert vector values + // Convert vector values - if (allVectors_.size() > 0) + if (allVectors_.size() > 0) + { + List<List<vectorField>> vectorValues(allVectors_.size()); + + forAll(allVectors_, vectorI) { - List<List<vectorField>> vectorValues(allVectors_.size()); + DynamicList<vectorList>& allTrackVals = + allVectors_[vectorI]; + vectorValues[vectorI].setSize(allTrackVals.size()); - forAll(allVectors_, vectorI) + forAll(allTrackVals, trackI) { - DynamicList<vectorList>& allTrackVals = - allVectors_[vectorI]; - vectorValues[vectorI].setSize(allTrackVals.size()); - - forAll(allTrackVals, trackI) - { - vectorList& trackVals = allTrackVals[trackI]; - vectorValues[vectorI][trackI].transfer(trackVals); - } + vectorList& trackVals = allTrackVals[trackI]; + vectorValues[vectorI][trackI].transfer(trackVals); } + } - fileName vtkFile + fileName vtkFile + ( + vtkPath + / vectorFormatterPtr_().getFileName ( - vtkPath - / vectorFormatterPtr_().getFileName - ( - tracks[0], - vectorNames_ - ) - ); - - //Info<< "Writing vector data to " << vtkFile << endl; + tracks[0], + vectorNames_ + ) + ); - vectorFormatterPtr_().write - ( - true, // writeTracks - tracks, - vectorNames_, - vectorValues, - OFstream(vtkFile)() - ); - } + vectorFormatterPtr_().write + ( + true, // writeTracks + tracks, + vectorNames_, + vectorValues, + OFstream(vtkFile)() + ); } } } -void Foam::wallBoundedStreamLine::updateMesh(const mapPolyMesh&) +void Foam::functionObjects::wallBoundedStreamLine::updateMesh +( + const mapPolyMesh& +) { read(dict_); } -void Foam::wallBoundedStreamLine::movePoints(const polyMesh&) +void Foam::functionObjects::wallBoundedStreamLine::movePoints(const polyMesh&) { // Moving mesh affects the search tree read(dict_); } -//void Foam::wallBoundedStreamLine::readUpdate -//(const polyMesh::readUpdateState state) -//{ -// if (state != UNCHANGED) -// { -// read(dict_); -// } -//} - - // ************************************************************************* // diff --git a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H index dc920ef39565843c0680b3409f16cc298fd0a690..84c566be8350097628398f9b5b2f5f65377ef1ae 100644 --- a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H +++ b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::wallBoundedStreamLine + Foam::functionObjects::wallBoundedStreamLine Group grpFieldFunctionObjects @@ -127,6 +127,9 @@ class mapPolyMesh; class meshSearch; class sampledSet; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class wallBoundedStreamLine Declaration \*---------------------------------------------------------------------------*/ @@ -147,10 +150,6 @@ class wallBoundedStreamLine //- Load fields from files (not from objectRegistry) bool loadFromFiles_; - //- On/off switch - bool active_; - - //- List of fields to sample wordList fields_; @@ -250,6 +249,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~wallBoundedStreamLine(); @@ -283,14 +292,12 @@ public: //- Update for mesh point-motion virtual void movePoints(const polyMesh&); - - ////- Update for changes of mesh due to readUpdate - //virtual void readUpdate(const polyMesh::readUpdateState state); }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineFunctionObject.H b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineFunctionObject.H index 0ce95cc592a86b962edffd38271c508ab6795ed0..5461d29e6999f3258330b87afc402add9fe2e551 100644 --- a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineFunctionObject.H +++ b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLineFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -44,7 +44,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<wallBoundedStreamLine> + typedef OutputFilterFunctionObject<functionObjects::wallBoundedStreamLine> wallBoundedStreamLineFunctionObject; } diff --git a/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.C b/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.C index f54bc9bf2b1dbbdec64aa5dbbd18507cd98b0109..ea0efdd451385fc450bcc9661c1e9ba61bfd1356 100644 --- a/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.C +++ b/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.C @@ -140,13 +140,11 @@ Foam::functionObjects::forceCoeffs::forceCoeffs Aref_(0.0) { read(dict); - Info<< endl; } -Foam::autoPtr<Foam::functionObjects::forceCoeffs> -Foam::functionObjects::forceCoeffs::New +bool Foam::functionObjects::forceCoeffs::viable ( const word& name, const objectRegistry& obr, @@ -154,17 +152,8 @@ Foam::functionObjects::forceCoeffs::New const bool loadFromFiles ) { - if (isA<fvMesh>(obr)) - { - return autoPtr<forceCoeffs> - ( - new forceCoeffs(name, obr, dict, loadFromFiles) - ); - } - else - { - return autoPtr<forceCoeffs>(); - } + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } @@ -178,22 +167,19 @@ Foam::functionObjects::forceCoeffs::~forceCoeffs() void Foam::functionObjects::forceCoeffs::read(const dictionary& dict) { - if (active_) - { - forces::read(dict); + forces::read(dict); - // Directions for lift and drag forces, and pitch moment - dict.lookup("liftDir") >> liftDir_; - dict.lookup("dragDir") >> dragDir_; - dict.lookup("pitchAxis") >> pitchAxis_; + // Directions for lift and drag forces, and pitch moment + dict.lookup("liftDir") >> liftDir_; + dict.lookup("dragDir") >> dragDir_; + dict.lookup("pitchAxis") >> pitchAxis_; - // Free stream velocity magnitude - dict.lookup("magUInf") >> magUInf_; + // Free stream velocity magnitude + dict.lookup("magUInf") >> magUInf_; - // Reference length and area scales - dict.lookup("lRef") >> lRef_; - dict.lookup("Aref") >> Aref_; - } + // Reference length and area scales + dict.lookup("lRef") >> lRef_; + dict.lookup("Aref") >> Aref_; } @@ -213,11 +199,6 @@ void Foam::functionObjects::forceCoeffs::write() { forces::calcForcesMoment(); - if (!active_) - { - return; - } - if (Pstream::master()) { functionObjectFiles::write(); diff --git a/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.H b/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.H index c061831135903373e56ab1c28a031f3cd4d42db8..cca8e312e1e66f4e3c216da3703f335b6ee6cc6f 100644 --- a/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.H +++ b/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::forceCoeffs + Foam::functionObjects::forceCoeffs Group grpForcesFunctionObjects @@ -172,9 +172,9 @@ public: const bool loadFromFiles = false ); - //- Construct on free-store and return pointer if successful - // otherwise return a null-pointer - static autoPtr<forceCoeffs> New + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable ( const word& name, const objectRegistry&, diff --git a/src/postProcessing/functionObjects/forces/forces/forces.C b/src/postProcessing/functionObjects/forces/forces/forces.C index 4775d1caa0c02ed0453b0c202296acd631a36f05..c8e63db2d633be74d2f995ce4d7de380278d2531 100644 --- a/src/postProcessing/functionObjects/forces/forces/forces.C +++ b/src/postProcessing/functionObjects/forces/forces/forces.C @@ -161,7 +161,7 @@ void Foam::functionObjects::forces::writeFileHeader(const label i) void Foam::functionObjects::forces::initialise() { - if (initialised_ || !active_) + if (initialised_) { return; } @@ -170,11 +170,9 @@ void Foam::functionObjects::forces::initialise() { if (!obr_.foundObject<volVectorField>(fDName_)) { - active_ = false; - WarningInFunction - << "Could not find " << fDName_ << " in database." << nl - << " De-activating forces." - << endl; + FatalErrorInFunction + << "Could not find " << fDName_ << " in database." + << exit(FatalError); } } else @@ -189,10 +187,9 @@ void Foam::functionObjects::forces::initialise() ) ) { - active_ = false; - - WarningInFunction - << "Could not find " << UName_ << ", " << pName_; + FatalErrorInFunction + << "Could not find " << UName_ << ", " << pName_ + << exit(FatalError); if (rhoName_ != "rhoInf") { @@ -534,7 +531,6 @@ Foam::functionObjects::forces::forces functionObjectFiles(obr, name, createFileNames(dict)), name_(name), obr_(obr), - active_(true), log_(true), force_(3), moment_(3), @@ -557,28 +553,15 @@ Foam::functionObjects::forces::forces binCumulative_(true), initialised_(false) { - // Check if the available mesh is an fvMesh otherise deactivate - if (isA<fvMesh>(obr_)) - { - if (readFields) - { - read(dict); - Info<< endl; - } - } - else + if (readFields) { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ - << endl; + read(dict); + Info<< endl; } - } -Foam::autoPtr<Foam::functionObjects::forces> -Foam::functionObjects::forces::New +bool Foam::functionObjects::forces::viable ( const word& name, const objectRegistry& obr, @@ -586,17 +569,8 @@ Foam::functionObjects::forces::New const bool loadFromFiles ) { - if (isA<fvMesh>(obr)) - { - return autoPtr<forces> - ( - new forces(name, obr, dict, loadFromFiles) - ); - } - else - { - return autoPtr<forces>(); - } + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } @@ -616,7 +590,6 @@ Foam::functionObjects::forces::forces functionObjectFiles(obr, name, typeName), name_(name), obr_(obr), - active_(true), log_(true), force_(3), moment_(3), @@ -657,133 +630,130 @@ Foam::functionObjects::forces::~forces() void Foam::functionObjects::forces::read(const dictionary& dict) { - if (active_) - { - initialised_ = false; + initialised_ = false; - log_ = dict.lookupOrDefault<Switch>("log", false); + log_ = dict.lookupOrDefault<Switch>("log", false); - if (log_) Info<< type() << " " << name_ << ":" << nl; + if (log_) Info<< type() << " " << name_ << ":" << nl; - directForceDensity_ = dict.lookupOrDefault("directForceDensity", false); + directForceDensity_ = dict.lookupOrDefault("directForceDensity", false); - const fvMesh& mesh = refCast<const fvMesh>(obr_); - const polyBoundaryMesh& pbm = mesh.boundaryMesh(); + const fvMesh& mesh = refCast<const fvMesh>(obr_); + const polyBoundaryMesh& pbm = mesh.boundaryMesh(); - patchSet_ = pbm.patchSet(wordReList(dict.lookup("patches"))); + patchSet_ = pbm.patchSet(wordReList(dict.lookup("patches"))); - if (directForceDensity_) - { - // Optional entry for fDName - fDName_ = dict.lookupOrDefault<word>("fDName", "fD"); - } - else - { - // Optional entries U and p - pName_ = dict.lookupOrDefault<word>("pName", "p"); - UName_ = dict.lookupOrDefault<word>("UName", "U"); - rhoName_ = dict.lookupOrDefault<word>("rhoName", "rho"); + if (directForceDensity_) + { + // Optional entry for fDName + fDName_ = dict.lookupOrDefault<word>("fDName", "fD"); + } + else + { + // Optional entries U and p + pName_ = dict.lookupOrDefault<word>("pName", "p"); + UName_ = dict.lookupOrDefault<word>("UName", "U"); + rhoName_ = dict.lookupOrDefault<word>("rhoName", "rho"); - // Reference density needed for incompressible calculations - rhoRef_ = readScalar(dict.lookup("rhoInf")); + // Reference density needed for incompressible calculations + rhoRef_ = readScalar(dict.lookup("rhoInf")); - // Reference pressure, 0 by default - pRef_ = dict.lookupOrDefault<scalar>("pRef", 0.0); - } + // Reference pressure, 0 by default + pRef_ = dict.lookupOrDefault<scalar>("pRef", 0.0); + } - coordSys_.clear(); + coordSys_.clear(); - // Centre of rotation for moment calculations - // specified directly, from coordinate system, or implicitly (0 0 0) - if (!dict.readIfPresent<point>("CofR", coordSys_.origin())) - { - coordSys_ = coordinateSystem(obr_, dict); - localSystem_ = true; - } + // Centre of rotation for moment calculations + // specified directly, from coordinate system, or implicitly (0 0 0) + if (!dict.readIfPresent<point>("CofR", coordSys_.origin())) + { + coordSys_ = coordinateSystem(obr_, dict); + localSystem_ = true; + } + + dict.readIfPresent("porosity", porosity_); + if (porosity_) + { + if (log_) Info<< " Including porosity effects" << endl; + } + else + { + if (log_) Info<< " Not including porosity effects" << endl; + } + + if (dict.found("binData")) + { + const dictionary& binDict(dict.subDict("binData")); + binDict.lookup("nBin") >> nBin_; - dict.readIfPresent("porosity", porosity_); - if (porosity_) + if (nBin_ < 0) { - if (log_) Info<< " Including porosity effects" << endl; + FatalIOErrorInFunction(dict) + << "Number of bins (nBin) must be zero or greater" + << exit(FatalIOError); } - else + else if ((nBin_ == 0) || (nBin_ == 1)) { - if (log_) Info<< " Not including porosity effects" << endl; + nBin_ = 1; + forAll(force_, i) + { + force_[i].setSize(1); + moment_[i].setSize(1); + } } - if (dict.found("binData")) + if (nBin_ > 1) { - const dictionary& binDict(dict.subDict("binData")); - binDict.lookup("nBin") >> nBin_; + binDict.lookup("direction") >> binDir_; + binDir_ /= mag(binDir_); - if (nBin_ < 0) + binMin_ = GREAT; + scalar binMax = -GREAT; + forAllConstIter(labelHashSet, patchSet_, iter) { - FatalIOErrorInFunction(dict) - << "Number of bins (nBin) must be zero or greater" - << exit(FatalIOError); + label patchi = iter.key(); + const polyPatch& pp = pbm[patchi]; + scalarField d(pp.faceCentres() & binDir_); + binMin_ = min(min(d), binMin_); + binMax = max(max(d), binMax); } - else if ((nBin_ == 0) || (nBin_ == 1)) + reduce(binMin_, minOp<scalar>()); + reduce(binMax, maxOp<scalar>()); + + // slightly boost binMax so that region of interest is fully + // within bounds + binMax = 1.0001*(binMax - binMin_) + binMin_; + + binDx_ = (binMax - binMin_)/scalar(nBin_); + + // create the bin points used for writing + binPoints_.setSize(nBin_); + forAll(binPoints_, i) { - nBin_ = 1; - forAll(force_, i) - { - force_[i].setSize(1); - moment_[i].setSize(1); - } + binPoints_[i] = (i + 0.5)*binDir_*binDx_; } - if (nBin_ > 1) + binDict.lookup("cumulative") >> binCumulative_; + + // allocate storage for forces and moments + forAll(force_, i) { - binDict.lookup("direction") >> binDir_; - binDir_ /= mag(binDir_); - - binMin_ = GREAT; - scalar binMax = -GREAT; - forAllConstIter(labelHashSet, patchSet_, iter) - { - label patchi = iter.key(); - const polyPatch& pp = pbm[patchi]; - scalarField d(pp.faceCentres() & binDir_); - binMin_ = min(min(d), binMin_); - binMax = max(max(d), binMax); - } - reduce(binMin_, minOp<scalar>()); - reduce(binMax, maxOp<scalar>()); - - // slightly boost binMax so that region of interest is fully - // within bounds - binMax = 1.0001*(binMax - binMin_) + binMin_; - - binDx_ = (binMax - binMin_)/scalar(nBin_); - - // create the bin points used for writing - binPoints_.setSize(nBin_); - forAll(binPoints_, i) - { - binPoints_[i] = (i + 0.5)*binDir_*binDx_; - } - - binDict.lookup("cumulative") >> binCumulative_; - - // allocate storage for forces and moments - forAll(force_, i) - { - force_[i].setSize(nBin_); - moment_[i].setSize(nBin_); - } + force_[i].setSize(nBin_); + moment_[i].setSize(nBin_); } } + } - if (nBin_ == 1) - { - // allocate storage for forces and moments - force_[0].setSize(1); - force_[1].setSize(1); - force_[2].setSize(1); - moment_[0].setSize(1); - moment_[1].setSize(1); - moment_[2].setSize(1); - } + if (nBin_ == 1) + { + // allocate storage for forces and moments + force_[0].setSize(1); + force_[1].setSize(1); + force_[2].setSize(1); + moment_[0].setSize(1); + moment_[1].setSize(1); + moment_[2].setSize(1); } } @@ -804,11 +774,6 @@ void Foam::functionObjects::forces::write() { calcForcesMoment(); - if (!active_) - { - return; - } - if (Pstream::master()) { functionObjectFiles::write(); @@ -826,11 +791,6 @@ void Foam::functionObjects::forces::calcForcesMoment() { initialise(); - if (!active_) - { - return; - } - force_[0] = Zero; force_[1] = Zero; force_[2] = Zero; diff --git a/src/postProcessing/functionObjects/forces/forces/forces.H b/src/postProcessing/functionObjects/forces/forces/forces.H index 1c5c2befbbe94bc018db2076c94941b2f9c9c9c5..e6a85853c771931e9be6c12683db88afebd93d49 100644 --- a/src/postProcessing/functionObjects/forces/forces/forces.H +++ b/src/postProcessing/functionObjects/forces/forces/forces.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::forces + Foam::functionObjects::forces Group grpForcesFunctionObjects @@ -156,9 +156,6 @@ protected: const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Switch to send output to Info as well as to file Switch log_; @@ -296,9 +293,9 @@ public: const bool readFields = true ); - //- Construct on free-store and return pointer if successful - // otherwise return a null-pointer - static autoPtr<forces> New + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable ( const word& name, const objectRegistry&, diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.C b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.C index 63b657a3e9f8017b515b8e052ea02b3401c1cedf..9cb0229d4dd231af3756f91785b3b43108297cf3 100644 --- a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.C +++ b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,13 +32,16 @@ License namespace Foam { -defineTypeNameAndDebug(calcFvcDiv, 0); +namespace functionObjects +{ + defineTypeNameAndDebug(calcFvcDiv, 0); +} } // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -Foam::volScalarField& Foam::calcFvcDiv::divField +Foam::volScalarField& Foam::functionObjects::calcFvcDiv::divField ( const word& divName, const dimensionSet& dims @@ -76,7 +79,7 @@ Foam::volScalarField& Foam::calcFvcDiv::divField // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::calcFvcDiv::calcFvcDiv +Foam::functionObjects::calcFvcDiv::calcFvcDiv ( const word& name, const objectRegistry& obr, @@ -86,93 +89,82 @@ Foam::calcFvcDiv::calcFvcDiv : name_(name), obr_(obr), - active_(true), fieldName_("undefined-fieldName"), resultName_("undefined-resultName") { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating." << nl - << endl; - } - read(dict); } +bool Foam::functionObjects::calcFvcDiv::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::calcFvcDiv::~calcFvcDiv() +Foam::functionObjects::calcFvcDiv::~calcFvcDiv() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::calcFvcDiv::read(const dictionary& dict) +void Foam::functionObjects::calcFvcDiv::read(const dictionary& dict) { - if (active_) - { - dict.lookup("fieldName") >> fieldName_; - dict.lookup("resultName") >> resultName_; + dict.lookup("fieldName") >> fieldName_; + dict.lookup("resultName") >> resultName_; - if (resultName_ == "none") - { - resultName_ = "fvc::div(" + fieldName_ + ")"; - } + if (resultName_ == "none") + { + resultName_ = "fvc::div(" + fieldName_ + ")"; } } -void Foam::calcFvcDiv::execute() +void Foam::functionObjects::calcFvcDiv::execute() { - if (active_) - { - bool processed = false; + bool processed = false; - calcDiv<surfaceScalarField>(fieldName_, resultName_, processed); - calcDiv<volVectorField>(fieldName_, resultName_, processed); + calcDiv<surfaceScalarField>(fieldName_, resultName_, processed); + calcDiv<volVectorField>(fieldName_, resultName_, processed); - if (!processed) - { - WarningInFunction - << "Unprocessed field " << fieldName_ << endl; - } + if (!processed) + { + WarningInFunction + << "Unprocessed field " << fieldName_ << endl; } } -void Foam::calcFvcDiv::end() +void Foam::functionObjects::calcFvcDiv::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::calcFvcDiv::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::calcFvcDiv::timeSet() +{} -void Foam::calcFvcDiv::write() +void Foam::functionObjects::calcFvcDiv::write() { - if (active_) + if (obr_.foundObject<regIOobject>(resultName_)) { - if (obr_.foundObject<regIOobject>(resultName_)) - { - const regIOobject& field = - obr_.lookupObject<regIOobject>(resultName_); + const regIOobject& field = + obr_.lookupObject<regIOobject>(resultName_); - Info<< type() << " " << name_ << " output:" << nl - << " writing field " << field.name() << nl << endl; + Info<< type() << " " << name_ << " output:" << nl + << " writing field " << field.name() << nl << endl; - field.write(); - } + field.write(); } } diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.H b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.H index 447b00c92c8b36168ed5d42061964247700de7a5..bc96f8ffb094697886f4281f7e4679c202f96c39 100644 --- a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.H +++ b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDiv.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::calcFvcDiv + Foam::functionObjects::calcFvcDiv Group grpFVFunctionObjects @@ -59,6 +59,9 @@ class polyMesh; class mapPolyMesh; class dimensionSet; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class calcFvcDiv Declaration \*---------------------------------------------------------------------------*/ @@ -73,9 +76,6 @@ class calcFvcDiv //- Reference to the database const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Name of field to process word fieldName_; @@ -126,6 +126,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~calcFvcDiv(); @@ -166,6 +176,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivFunctionObject.H b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivFunctionObject.H index 5cc8af7332b65cdb8fdd4b6fa2ec6c2d8d6179d1..5446371ec0131b1813cc530d3df92a4339c4f544 100644 --- a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivFunctionObject.H +++ b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,8 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<calcFvcDiv> calcFvcDivFunctionObject; + typedef OutputFilterFunctionObject<functionObjects::calcFvcDiv> + calcFvcDivFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivTemplates.C b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivTemplates.C index d7561744dc939851b266249b87fa18c53d22596e..6659dccbfb79d516f3026aa915c4464db6795667 100644 --- a/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivTemplates.C +++ b/src/postProcessing/functionObjects/fvTools/calcFvcDiv/calcFvcDivTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,7 +29,7 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class FieldType> -void Foam::calcFvcDiv::calcDiv +void Foam::functionObjects::calcFvcDiv::calcDiv ( const word& fieldName, const word& resultName, diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.C b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.C index 96a62f3df86b709c2d20e557f4b0ac8b5967ece9..31b17b9e0a87321b384a0f584cb89b94376455ee 100644 --- a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.C +++ b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,13 +32,16 @@ License namespace Foam { -defineTypeNameAndDebug(calcFvcGrad, 0); +namespace functionObjects +{ + defineTypeNameAndDebug(calcFvcGrad, 0); +} } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::calcFvcGrad::calcFvcGrad +Foam::functionObjects::calcFvcGrad::calcFvcGrad ( const word& name, const objectRegistry& obr, @@ -48,93 +51,82 @@ Foam::calcFvcGrad::calcFvcGrad : name_(name), obr_(obr), - active_(true), fieldName_("undefined-fieldName"), resultName_("undefined-resultName") { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating." << nl - << endl; - } - read(dict); } +bool Foam::functionObjects::calcFvcGrad::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::calcFvcGrad::~calcFvcGrad() +Foam::functionObjects::calcFvcGrad::~calcFvcGrad() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::calcFvcGrad::read(const dictionary& dict) +void Foam::functionObjects::calcFvcGrad::read(const dictionary& dict) { - if (active_) - { - dict.lookup("fieldName") >> fieldName_; - dict.lookup("resultName") >> resultName_; + dict.lookup("fieldName") >> fieldName_; + dict.lookup("resultName") >> resultName_; - if (resultName_ == "none") - { - resultName_ = "fvc::grad(" + fieldName_ + ")"; - } + if (resultName_ == "none") + { + resultName_ = "fvc::grad(" + fieldName_ + ")"; } } -void Foam::calcFvcGrad::execute() +void Foam::functionObjects::calcFvcGrad::execute() { - if (active_) - { - bool processed = false; + bool processed = false; - calcGrad<scalar>(fieldName_, resultName_, processed); - calcGrad<vector>(fieldName_, resultName_, processed); + calcGrad<scalar>(fieldName_, resultName_, processed); + calcGrad<vector>(fieldName_, resultName_, processed); - if (!processed) - { - WarningInFunction - << "Unprocessed field " << fieldName_ << endl; - } + if (!processed) + { + WarningInFunction + << "Unprocessed field " << fieldName_ << endl; } } -void Foam::calcFvcGrad::end() +void Foam::functionObjects::calcFvcGrad::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::calcFvcGrad::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::calcFvcGrad::timeSet() +{} -void Foam::calcFvcGrad::write() +void Foam::functionObjects::calcFvcGrad::write() { - if (active_) + if (obr_.foundObject<regIOobject>(resultName_)) { - if (obr_.foundObject<regIOobject>(resultName_)) - { - const regIOobject& field = - obr_.lookupObject<regIOobject>(resultName_); + const regIOobject& field = + obr_.lookupObject<regIOobject>(resultName_); - Info<< type() << " " << name_ << " output:" << nl - << " writing field " << field.name() << nl << endl; + Info<< type() << " " << name_ << " output:" << nl + << " writing field " << field.name() << nl << endl; - field.write(); - } + field.write(); } } diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.H b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.H index bdaf5383ed5b7aa90f1e51063e5d7587dea5b1d9..f1b67ae08b5812583c57bca9f159f9593a8af65c 100644 --- a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.H +++ b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGrad.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::calcFvcGrad + Foam::functionObjects::calcFvcGrad Group grpFVFunctionObjects @@ -59,6 +59,9 @@ class polyMesh; class mapPolyMesh; class dimensionSet; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class calcFvcGrad Declaration \*---------------------------------------------------------------------------*/ @@ -73,9 +76,6 @@ class calcFvcGrad //- Reference to the database const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Name of field to process word fieldName_; @@ -129,6 +129,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~calcFvcGrad(); @@ -169,6 +179,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradFunctionObject.H b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradFunctionObject.H index 0c3f5806976dd07ed117f016a94d6cbe70ec94b3..a36516740d21e5d67d437bcb9ed5b2a4b950c344 100644 --- a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradFunctionObject.H +++ b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,8 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<calcFvcGrad> calcFvcGradFunctionObject; + typedef OutputFilterFunctionObject<functionObjects::calcFvcGrad> + calcFvcGradFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradTemplates.C b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradTemplates.C index 0a570b9872cb1b3ba845912ab44ef73abf61f4dc..3f20974adffc9afdafbc77efecdef0cca6bb38da 100644 --- a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradTemplates.C +++ b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradTemplates.C @@ -35,7 +35,11 @@ Foam::GeometricField Foam::fvPatchField, Foam::volMesh >& -Foam::calcFvcGrad::gradField(const word& gradName, const dimensionSet& dims) +Foam::functionObjects::calcFvcGrad::gradField +( + const word& gradName, + const dimensionSet& dims +) { Info<< "gradField" << endl; @@ -78,7 +82,7 @@ Foam::calcFvcGrad::gradField(const word& gradName, const dimensionSet& dims) template<class Type> -void Foam::calcFvcGrad::calcGrad +void Foam::functionObjects::calcFvcGrad::calcGrad ( const word& fieldName, const word& resultName, diff --git a/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.C b/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.C index f867746c3c8097f3193103ce641871aa389388ce..73e0b8b28687719ef31afa178f6cdc45affbce69 100644 --- a/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.C +++ b/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,13 +32,16 @@ License namespace Foam { -defineTypeNameAndDebug(calcMag, 0); +namespace functionObjects +{ + defineTypeNameAndDebug(calcMag, 0); +} } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::calcMag::calcMag +Foam::functionObjects::calcMag::calcMag ( const word& name, const objectRegistry& obr, @@ -48,96 +51,85 @@ Foam::calcMag::calcMag : name_(name), obr_(obr), - active_(true), fieldName_("undefined-fieldName"), resultName_("undefined-resultName") { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating." << nl - << endl; - } - read(dict); } +bool Foam::functionObjects::calcMag::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::calcMag::~calcMag() +Foam::functionObjects::calcMag::~calcMag() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::calcMag::read(const dictionary& dict) +void Foam::functionObjects::calcMag::read(const dictionary& dict) { - if (active_) - { - dict.lookup("fieldName") >> fieldName_; - dict.lookup("resultName") >> resultName_; + dict.lookup("fieldName") >> fieldName_; + dict.lookup("resultName") >> resultName_; - if (resultName_ == "none") - { - resultName_ = "mag(" + fieldName_ + ")"; - } + if (resultName_ == "none") + { + resultName_ = "mag(" + fieldName_ + ")"; } } -void Foam::calcMag::execute() +void Foam::functionObjects::calcMag::execute() { - if (active_) - { - bool processed = false; - - calc<scalar>(fieldName_, resultName_, processed); - calc<vector>(fieldName_, resultName_, processed); - calc<sphericalTensor>(fieldName_, resultName_, processed); - calc<symmTensor>(fieldName_, resultName_, processed); - calc<tensor>(fieldName_, resultName_, processed); - - if (!processed) - { - WarningInFunction - << "Unprocessed field " << fieldName_ << endl; - } - } -} + bool processed = false; + calc<scalar>(fieldName_, resultName_, processed); + calc<vector>(fieldName_, resultName_, processed); + calc<sphericalTensor>(fieldName_, resultName_, processed); + calc<symmTensor>(fieldName_, resultName_, processed); + calc<tensor>(fieldName_, resultName_, processed); -void Foam::calcMag::end() -{ - if (active_) + if (!processed) { - execute(); + WarningInFunction + << "Unprocessed field " << fieldName_ << endl; } } -void Foam::calcMag::timeSet() +void Foam::functionObjects::calcMag::end() { - // Do nothing + execute(); } -void Foam::calcMag::write() +void Foam::functionObjects::calcMag::timeSet() +{} + + +void Foam::functionObjects::calcMag::write() { - if (active_) + if (obr_.foundObject<regIOobject>(resultName_)) { - if (obr_.foundObject<regIOobject>(resultName_)) - { - const regIOobject& field = - obr_.lookupObject<regIOobject>(resultName_); + const regIOobject& field = + obr_.lookupObject<regIOobject>(resultName_); - Info<< type() << " " << name_ << " output:" << nl - << " writing field " << field.name() << nl << endl; + Info<< type() << " " << name_ << " output:" << nl + << " writing field " << field.name() << nl << endl; - field.write(); - } + field.write(); } } diff --git a/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.H b/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.H index 76f10721117618a00c503b554b219c8e91c69fc7..d8cb5ca3d50ce001768d27fa125982c1587f9d6c 100644 --- a/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.H +++ b/src/postProcessing/functionObjects/fvTools/calcMag/calcMag.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::calcMag + Foam::functionObjects::calcMag Group grpFVFunctionObjects @@ -59,6 +59,9 @@ class polyMesh; class mapPolyMesh; class dimensionSet; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class calcMag Declaration \*---------------------------------------------------------------------------*/ @@ -73,9 +76,6 @@ class calcMag //- Reference to the database const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Name of field to process word fieldName_; @@ -123,6 +123,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~calcMag(); @@ -163,6 +173,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/fvTools/calcMag/calcMagFunctionObject.H b/src/postProcessing/functionObjects/fvTools/calcMag/calcMagFunctionObject.H index ea143666e13716be46d6aa79ad5812a940d52f3f..b83e6817a519e185cd04c4b32d99245fb77e40ac 100644 --- a/src/postProcessing/functionObjects/fvTools/calcMag/calcMagFunctionObject.H +++ b/src/postProcessing/functionObjects/fvTools/calcMag/calcMagFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,8 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<calcMag> calcMagFunctionObject; + typedef OutputFilterFunctionObject<functionObjects::calcMag> + calcMagFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/fvTools/calcMag/calcMagTemplates.C b/src/postProcessing/functionObjects/fvTools/calcMag/calcMagTemplates.C index f9db9368f7d4ae78084845a2a0fcf1d03b3d8ad7..8b942e95a6fb3840fb76d1eaec7138d5d60636c3 100644 --- a/src/postProcessing/functionObjects/fvTools/calcMag/calcMagTemplates.C +++ b/src/postProcessing/functionObjects/fvTools/calcMag/calcMagTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,7 +29,7 @@ License #include "surfaceFields.H" template<class FieldType> -FieldType& Foam::calcMag::magField +FieldType& Foam::functionObjects::calcMag::magField ( const word& magName, const dimensionSet& dims @@ -68,7 +68,7 @@ FieldType& Foam::calcMag::magField // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class Type> -void Foam::calcMag::calc +void Foam::functionObjects::calcMag::calc ( const word& fieldName, const word& resultName, diff --git a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.C b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.C index 34ba7d032fa24300278ee8a7bf05a04d7199072f..8706db08595ab0d5009ac9cd1b141ff44a22ead9 100644 --- a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.C +++ b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,35 +34,34 @@ License namespace Foam { -defineTypeNameAndDebug(abortCalculation, 0); -} - - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam +namespace functionObjects { - template<> - const char* Foam::NamedEnum - < - Foam::abortCalculation::actionType, - 3 - >::names[] = - { - "noWriteNow", - "writeNow", - "nextWrite" - }; + defineTypeNameAndDebug(abortCalculation, 0); +} } +template<> +const char* Foam::NamedEnum +< + Foam::functionObjects::abortCalculation::actionType, + 3 +>::names[] = +{ + "noWriteNow", + "writeNow", + "nextWrite" +}; -const Foam::NamedEnum<Foam::abortCalculation::actionType, 3> - Foam::abortCalculation::actionTypeNames_; +const Foam::NamedEnum +< + Foam::functionObjects::abortCalculation::actionType, + 3 +> Foam::functionObjects::abortCalculation::actionTypeNames_; // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -void Foam::abortCalculation::removeFile() const +void Foam::functionObjects::abortCalculation::removeFile() const { bool hasAbort = isFile(abortFile_); reduce(hasAbort, orOp<bool>()); @@ -77,7 +76,7 @@ void Foam::abortCalculation::removeFile() const // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::abortCalculation::abortCalculation +Foam::functionObjects::abortCalculation::abortCalculation ( const word& name, const objectRegistry& obr, @@ -98,15 +97,28 @@ Foam::abortCalculation::abortCalculation } +bool Foam::functionObjects::abortCalculation::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + return true; +} + + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::abortCalculation::~abortCalculation() +Foam::functionObjects::abortCalculation::~abortCalculation() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::abortCalculation::read(const dictionary& dict) +void Foam::functionObjects::abortCalculation::read(const dictionary& dict) { if (dict.found("action")) { @@ -124,7 +136,7 @@ void Foam::abortCalculation::read(const dictionary& dict) } -void Foam::abortCalculation::execute() +void Foam::functionObjects::abortCalculation::execute() { bool hasAbort = isFile(abortFile_); reduce(hasAbort, orOp<bool>()); @@ -173,22 +185,18 @@ void Foam::abortCalculation::execute() } -void Foam::abortCalculation::end() +void Foam::functionObjects::abortCalculation::end() { removeFile(); } -void Foam::abortCalculation::timeSet() -{ - // Do nothing - only valid on execute -} +void Foam::functionObjects::abortCalculation::timeSet() +{} -void Foam::abortCalculation::write() -{ - // Do nothing - only valid on execute -} +void Foam::functionObjects::abortCalculation::write() +{} // ************************************************************************* // diff --git a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.H b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.H index 95e1994fd47d6ce9022bc08362b2baafd211310e..21c0650080ded7fb162bcb09590380e1f84a0ec0 100644 --- a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.H +++ b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::abortCalculation + Foam::functionObjects::abortCalculation Group grpJobControlFunctionObjects @@ -58,6 +58,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class abortCalculation Declaration \*---------------------------------------------------------------------------*/ @@ -124,6 +127,16 @@ public: const bool loadFromFilesUnused = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~abortCalculation(); @@ -164,6 +177,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculationFunctionObject.H b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculationFunctionObject.H index 920677f16a268c129a9bd9e64b578f67d5b9e1e4..97150ced98d50470e4cb13172eab38654533cc49 100644 --- a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculationFunctionObject.H +++ b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculationFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<abortCalculation> + typedef OutputFilterFunctionObject<functionObjects::abortCalculation> abortCalculationFunctionObject; } diff --git a/src/postProcessing/functionObjects/systemCall/systemCall.C b/src/postProcessing/functionObjects/systemCall/systemCall.C index 1ad82b58d359d98648e76eed4e56cc4e88fd8d67..2462b526fedbfbd0967236210990ae33b5c937ea 100644 --- a/src/postProcessing/functionObjects/systemCall/systemCall.C +++ b/src/postProcessing/functionObjects/systemCall/systemCall.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,13 +31,16 @@ License namespace Foam { -defineTypeNameAndDebug(systemCall, 0); +namespace functionObjects +{ + defineTypeNameAndDebug(systemCall, 0); +} } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::systemCall::systemCall +Foam::functionObjects::systemCall::systemCall ( const word& name, const objectRegistry&, @@ -54,15 +57,27 @@ Foam::systemCall::systemCall } +bool Foam::functionObjects::systemCall::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + return true; +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::systemCall::~systemCall() +Foam::functionObjects::systemCall::~systemCall() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::systemCall::read(const dictionary& dict) +void Foam::functionObjects::systemCall::read(const dictionary& dict) { dict.readIfPresent("executeCalls", executeCalls_); dict.readIfPresent("endCalls", endCalls_); @@ -93,7 +108,7 @@ void Foam::systemCall::read(const dictionary& dict) } -void Foam::systemCall::execute() +void Foam::functionObjects::systemCall::execute() { forAll(executeCalls_, callI) { @@ -102,7 +117,7 @@ void Foam::systemCall::execute() } -void Foam::systemCall::end() +void Foam::functionObjects::systemCall::end() { forAll(endCalls_, callI) { @@ -111,13 +126,11 @@ void Foam::systemCall::end() } -void Foam::systemCall::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::systemCall::timeSet() +{} -void Foam::systemCall::write() +void Foam::functionObjects::systemCall::write() { forAll(writeCalls_, callI) { diff --git a/src/postProcessing/functionObjects/systemCall/systemCall.H b/src/postProcessing/functionObjects/systemCall/systemCall.H index eb9202c01b3e10d1f3e570ada671e45645912f26..38ec3deff43a60d950d7603c5175fd033aa62297 100644 --- a/src/postProcessing/functionObjects/systemCall/systemCall.H +++ b/src/postProcessing/functionObjects/systemCall/systemCall.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::systemCall + Foam::functionObjects::systemCall Group grpFunctionObjects @@ -100,6 +100,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class systemCall Declaration \*---------------------------------------------------------------------------*/ @@ -152,6 +155,16 @@ public: const bool loadFromFilesUnused = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~systemCall(); @@ -192,6 +205,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.H b/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.H index 574b7598597c2faba4ca5c61bcb5ce872d9b66a4..b0fdf35ea61f685747fb6134550e22a0b1f5002b 100644 --- a/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.H +++ b/src/postProcessing/functionObjects/systemCall/systemCallFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<systemCall> + typedef OutputFilterFunctionObject<functionObjects::systemCall> systemCallFunctionObject; } diff --git a/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.C b/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.C index a98e6f2c0071f6104c48a319a191053586f05662..13a4e61c936747e17c76d169dd6470e1e2f45834 100644 --- a/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.C +++ b/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.C @@ -31,15 +31,18 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(CourantNo, 0); } +} // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // Foam::tmp<Foam::volScalarField::Internal> -Foam::CourantNo::byRho +Foam::functionObjects::CourantNo::byRho ( const tmp<volScalarField::Internal>& Co ) const @@ -57,7 +60,7 @@ Foam::CourantNo::byRho // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::CourantNo::CourantNo +Foam::functionObjects::CourantNo::CourantNo ( const word& name, const objectRegistry& obr, @@ -67,118 +70,105 @@ Foam::CourantNo::CourantNo : name_(name), obr_(obr), - active_(true), phiName_("phi"), rhoName_("rho") { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } - read(dict); - if (active_) - { - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - volScalarField* CourantNoPtr + volScalarField* CourantNoPtr + ( + new volScalarField ( - new volScalarField + IOobject ( - IOobject - ( - type(), - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), + type(), + mesh.time().timeName(), mesh, - dimensionedScalar("0", dimless, 0.0), - zeroGradientFvPatchScalarField::typeName - ) - ); + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar("0", dimless, 0.0), + zeroGradientFvPatchScalarField::typeName + ) + ); + + mesh.objectRegistry::store(CourantNoPtr); +} - mesh.objectRegistry::store(CourantNoPtr); - } + +bool Foam::functionObjects::CourantNo::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::CourantNo::~CourantNo() +Foam::functionObjects::CourantNo::~CourantNo() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::CourantNo::read(const dictionary& dict) +void Foam::functionObjects::CourantNo::read(const dictionary& dict) { - if (active_) - { - phiName_ = dict.lookupOrDefault<word>("phiName", "phi"); - rhoName_ = dict.lookupOrDefault<word>("rhoName", "rho"); - } + phiName_ = dict.lookupOrDefault<word>("phiName", "phi"); + rhoName_ = dict.lookupOrDefault<word>("rhoName", "rho"); } -void Foam::CourantNo::execute() +void Foam::functionObjects::CourantNo::execute() { - if (active_) - { - const fvMesh& mesh = refCast<const fvMesh>(obr_); - - const surfaceScalarField& phi = - mesh.lookupObject<surfaceScalarField>(phiName_); - - volScalarField& Co = - const_cast<volScalarField&> - ( - mesh.lookupObject<volScalarField>(type()) - ); - - Co.ref() = byRho - ( - (0.5*mesh.time().deltaT()) - *fvc::surfaceSum(mag(phi))()() - /mesh.V() - ); - Co.correctBoundaryConditions(); - } + const fvMesh& mesh = refCast<const fvMesh>(obr_); + + const surfaceScalarField& phi = + mesh.lookupObject<surfaceScalarField>(phiName_); + + volScalarField& Co = const_cast<volScalarField&> + ( + mesh.lookupObject<volScalarField>(type()) + ); + + Co.ref() = byRho + ( + (0.5*mesh.time().deltaT()) + *fvc::surfaceSum(mag(phi))()() + /mesh.V() + ); + Co.correctBoundaryConditions(); } -void Foam::CourantNo::end() +void Foam::functionObjects::CourantNo::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::CourantNo::timeSet() +void Foam::functionObjects::CourantNo::timeSet() {} -void Foam::CourantNo::write() +void Foam::functionObjects::CourantNo::write() { - if (active_) - { - const volScalarField& CourantNo = - obr_.lookupObject<volScalarField>(type()); + const volScalarField& CourantNo = + obr_.lookupObject<volScalarField>(type()); - Info<< type() << " " << name_ << " output:" << nl - << " writing field " << CourantNo.name() << nl - << endl; + Info<< type() << " " << name_ << " output:" << nl + << " writing field " << CourantNo.name() << nl + << endl; - CourantNo.write(); - } + CourantNo.write(); } diff --git a/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.H b/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.H index eff16de0cb289eeef526d97884dc8dbf52b8a675..a0796ea7a07712e0007befd3bb7255d3e6815c5e 100644 --- a/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.H +++ b/src/postProcessing/functionObjects/utilities/CourantNo/CourantNo.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::CourantNo + Foam::functionObjects::CourantNo Group grpUtilitiesFunctionObjects @@ -54,6 +54,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class CourantNo Declaration \*---------------------------------------------------------------------------*/ @@ -68,9 +71,6 @@ class CourantNo //- Reference to the database const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Name of flux field, default is "phi" word phiName_; @@ -111,6 +111,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~CourantNo(); @@ -151,6 +161,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/CourantNo/CourantNoFunctionObject.H b/src/postProcessing/functionObjects/utilities/CourantNo/CourantNoFunctionObject.H index 1586e771abdd78d3e69e461223ec65942054cb2e..6bab35fc09206c5a4af99f89799db175d5a1b4fb 100644 --- a/src/postProcessing/functionObjects/utilities/CourantNo/CourantNoFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/CourantNo/CourantNoFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,8 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<CourantNo> CourantNoFunctionObject; + typedef OutputFilterFunctionObject<functionObjects::CourantNo> + CourantNoFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/CourantNo/IOCourantNo.H b/src/postProcessing/functionObjects/utilities/CourantNo/IOCourantNo.H index 5be7eb4eb9f764bfb846ebfcb90a5539d8eeddbe..33006b3e504beda0d29e9f4b8a4eb5478fc6ffc2 100644 --- a/src/postProcessing/functionObjects/utilities/CourantNo/IOCourantNo.H +++ b/src/postProcessing/functionObjects/utilities/CourantNo/IOCourantNo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,7 @@ Description namespace Foam { - typedef IOOutputFilter<CourantNo> IOCourantNo; + typedef IOOutputFilter<functionObjects::CourantNo> IOCourantNo; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/Lambda2/IOLambda2.H b/src/postProcessing/functionObjects/utilities/Lambda2/IOLambda2.H index 0aacf47e94ca018fc96f4895622e9b14b5890985..d8fd9a81adb4086caeb250ee2b65dff6530f951b 100644 --- a/src/postProcessing/functionObjects/utilities/Lambda2/IOLambda2.H +++ b/src/postProcessing/functionObjects/utilities/Lambda2/IOLambda2.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,7 @@ Description namespace Foam { - typedef IOOutputFilter<Lambda2> IOLambda2; + typedef IOOutputFilter<functionObjects::Lambda2> IOLambda2; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.C b/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.C index 1fc38cd5bf1a353a8facf2f8a25d70527ceffc5a..23345a25ae4e9ef2b7164c12846f70d68eb67fd4 100644 --- a/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.C +++ b/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,14 +32,17 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(Lambda2, 0); } +} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::Lambda2::Lambda2 +Foam::functionObjects::Lambda2::Lambda2 ( const word& name, const objectRegistry& obr, @@ -49,119 +52,105 @@ Foam::Lambda2::Lambda2 : name_(name), obr_(obr), - active_(true), UName_("U") { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } - read(dict); - if (active_) - { - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - volScalarField* Lambda2Ptr + volScalarField* Lambda2Ptr + ( + new volScalarField ( - new volScalarField + IOobject ( - IOobject - ( - type(), - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), + type(), + mesh.time().timeName(), mesh, - dimensionedScalar("0", dimless/sqr(dimTime), 0.0) - ) - ); + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar("0", dimless/sqr(dimTime), 0.0) + ) + ); + + mesh.objectRegistry::store(Lambda2Ptr); +} - mesh.objectRegistry::store(Lambda2Ptr); - } + +bool Foam::functionObjects::Lambda2::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::Lambda2::~Lambda2() +Foam::functionObjects::Lambda2::~Lambda2() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::Lambda2::read(const dictionary& dict) +void Foam::functionObjects::Lambda2::read(const dictionary& dict) { - if (active_) - { - UName_ = dict.lookupOrDefault<word>("UName", "U"); - } + UName_ = dict.lookupOrDefault<word>("UName", "U"); } -void Foam::Lambda2::execute() +void Foam::functionObjects::Lambda2::execute() { - if (active_) - { - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - const volVectorField& U = - mesh.lookupObject<volVectorField>(UName_); + const volVectorField& U = + mesh.lookupObject<volVectorField>(UName_); - const volTensorField gradU(fvc::grad(U)); + const volTensorField gradU(fvc::grad(U)); - const volTensorField SSplusWW + const volTensorField SSplusWW + ( + (symm(gradU) & symm(gradU)) + + (skew(gradU) & skew(gradU)) + ); + + volScalarField& Lambda2 = + const_cast<volScalarField&> ( - (symm(gradU) & symm(gradU)) - + (skew(gradU) & skew(gradU)) + mesh.lookupObject<volScalarField>(type()) ); - volScalarField& Lambda2 = - const_cast<volScalarField&> - ( - mesh.lookupObject<volScalarField>(type()) - ); - - Lambda2 = -eigenValues(SSplusWW)().component(vector::Y); - } + Lambda2 = -eigenValues(SSplusWW)().component(vector::Y); } -void Foam::Lambda2::end() +void Foam::functionObjects::Lambda2::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::Lambda2::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::Lambda2::timeSet() +{} -void Foam::Lambda2::write() +void Foam::functionObjects::Lambda2::write() { - if (active_) - { - const volScalarField& Lambda2 = - obr_.lookupObject<volScalarField>(type()); + const volScalarField& Lambda2 = + obr_.lookupObject<volScalarField>(type()); - Info<< type() << " " << name_ << " output:" << nl - << " writing field " << Lambda2.name() << nl - << endl; + Info<< type() << " " << name_ << " output:" << nl + << " writing field " << Lambda2.name() << nl + << endl; - Lambda2.write(); - } + Lambda2.write(); } diff --git a/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.H b/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.H index f4360f46404b714b6043422eb95bbc71042a307d..a394b9b5a815205294425594df0c1999aa61710e 100644 --- a/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.H +++ b/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::Lambda2 + Foam::functionObjects::Lambda2 Group grpUtilitiesFunctionObjects @@ -57,6 +57,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class Lambda2 Declaration \*---------------------------------------------------------------------------*/ @@ -71,9 +74,6 @@ class Lambda2 //- Reference to the database const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Name of velocity field, default is "U" word UName_; @@ -105,6 +105,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~Lambda2(); @@ -145,6 +155,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2FunctionObject.H b/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2FunctionObject.H index e63d04a721dc2992e270aa4bf5d9d17d708495a4..63031374cbb46c4096c50853456d43cd4ff5fd37 100644 --- a/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2FunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/Lambda2/Lambda2FunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,8 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<Lambda2> Lambda2FunctionObject; + typedef OutputFilterFunctionObject<functionObjects::Lambda2> + Lambda2FunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/Peclet/IOPeclet.H b/src/postProcessing/functionObjects/utilities/Peclet/IOPeclet.H index ea49009d559ed41bcc7902208851ef0b1e1b345f..16449b1cb3e6f68e9d5946e4050bc93769e23eb6 100644 --- a/src/postProcessing/functionObjects/utilities/Peclet/IOPeclet.H +++ b/src/postProcessing/functionObjects/utilities/Peclet/IOPeclet.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,7 @@ Description namespace Foam { - typedef IOOutputFilter<Peclet> IOPeclet; + typedef IOOutputFilter<functionObjects::Peclet> IOPeclet; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/Peclet/Peclet.C b/src/postProcessing/functionObjects/utilities/Peclet/Peclet.C index 076d3b47ed4ff79c6a20fc7362055c655243c92b..ced9ace56d73be6749568af046b6f861b1b6dafa 100644 --- a/src/postProcessing/functionObjects/utilities/Peclet/Peclet.C +++ b/src/postProcessing/functionObjects/utilities/Peclet/Peclet.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,14 +34,17 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(Peclet, 0); } +} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::Peclet::Peclet +Foam::functionObjects::Peclet::Peclet ( const word& name, const objectRegistry& obr, @@ -51,178 +54,164 @@ Foam::Peclet::Peclet : name_(name), obr_(obr), - active_(true), phiName_("phi"), rhoName_("rho") { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } - read(dict); - if (active_) - { - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - surfaceScalarField* PecletPtr + surfaceScalarField* PecletPtr + ( + new surfaceScalarField ( - new surfaceScalarField + IOobject ( - IOobject - ( - type(), - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), + type(), + mesh.time().timeName(), mesh, - dimensionedScalar("0", dimless, 0.0) - ) - ); + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar("0", dimless, 0.0) + ) + ); - mesh.objectRegistry::store(PecletPtr); - } + mesh.objectRegistry::store(PecletPtr); +} + + +bool Foam::functionObjects::Peclet::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::Peclet::~Peclet() +Foam::functionObjects::Peclet::~Peclet() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::Peclet::read(const dictionary& dict) +void Foam::functionObjects::Peclet::read(const dictionary& dict) { - if (active_) - { - phiName_ = dict.lookupOrDefault<word>("phiName", "phi"); - rhoName_ = dict.lookupOrDefault<word>("rhoName", "rho"); - } + phiName_ = dict.lookupOrDefault<word>("phiName", "phi"); + rhoName_ = dict.lookupOrDefault<word>("rhoName", "rho"); } -void Foam::Peclet::execute() +void Foam::functionObjects::Peclet::execute() { typedef compressible::turbulenceModel cmpTurbModel; typedef incompressible::turbulenceModel icoTurbModel; - if (active_) + const fvMesh& mesh = refCast<const fvMesh>(obr_); + + tmp<volScalarField> nuEff; + if (mesh.foundObject<cmpTurbModel>(turbulenceModel::propertiesName)) { - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const cmpTurbModel& model = + mesh.lookupObject<cmpTurbModel> + ( + turbulenceModel::propertiesName + ); - tmp<volScalarField> nuEff; - if (mesh.foundObject<cmpTurbModel>(turbulenceModel::propertiesName)) - { - const cmpTurbModel& model = - mesh.lookupObject<cmpTurbModel> - ( - turbulenceModel::propertiesName - ); + const volScalarField& rho = + mesh.lookupObject<volScalarField>(rhoName_); - const volScalarField& rho = - mesh.lookupObject<volScalarField>(rhoName_); + nuEff = model.muEff()/rho; + } + else if + ( + mesh.foundObject<icoTurbModel>(turbulenceModel::propertiesName) + ) + { + const icoTurbModel& model = + mesh.lookupObject<icoTurbModel> + ( + turbulenceModel::propertiesName + ); - nuEff = model.muEff()/rho; - } - else if - ( - mesh.foundObject<icoTurbModel>(turbulenceModel::propertiesName) - ) - { - const icoTurbModel& model = - mesh.lookupObject<icoTurbModel> - ( - turbulenceModel::propertiesName - ); - - nuEff = model.nuEff(); - } - else if (mesh.foundObject<dictionary>("transportProperties")) - { - const dictionary& model = - mesh.lookupObject<dictionary>("transportProperties"); - - nuEff = - tmp<volScalarField> + nuEff = model.nuEff(); + } + else if (mesh.foundObject<dictionary>("transportProperties")) + { + const dictionary& model = + mesh.lookupObject<dictionary>("transportProperties"); + + nuEff = + tmp<volScalarField> + ( + new volScalarField ( - new volScalarField + IOobject ( - IOobject - ( - "nuEff", - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), + "nuEff", + mesh.time().timeName(), mesh, - dimensionedScalar(model.lookup("nu")) - ) - ); - } - else - { - FatalErrorInFunction - << "Unable to determine the viscosity" - << exit(FatalError); - } - - const surfaceScalarField& phi = - mesh.lookupObject<surfaceScalarField>(phiName_); - - surfaceScalarField& Peclet = - const_cast<surfaceScalarField&> - ( - mesh.lookupObject<surfaceScalarField>(type()) - ); - - Peclet = - mag(phi) - /( - mesh.magSf() - *mesh.surfaceInterpolation::deltaCoeffs() - *fvc::interpolate(nuEff) + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar(model.lookup("nu")) + ) ); } -} - - -void Foam::Peclet::end() -{ - if (active_) + else { - execute(); + FatalErrorInFunction + << "Unable to determine the viscosity" + << exit(FatalError); } + + const surfaceScalarField& phi = + mesh.lookupObject<surfaceScalarField>(phiName_); + + surfaceScalarField& Peclet = + const_cast<surfaceScalarField&> + ( + mesh.lookupObject<surfaceScalarField>(type()) + ); + + Peclet = + mag(phi) + /( + mesh.magSf() + *mesh.surfaceInterpolation::deltaCoeffs() + *fvc::interpolate(nuEff) + ); } -void Foam::Peclet::timeSet() + +void Foam::functionObjects::Peclet::end() { - // Do nothing + execute(); } +void Foam::functionObjects::Peclet::timeSet() +{} -void Foam::Peclet::write() + +void Foam::functionObjects::Peclet::write() { - if (active_) - { - const surfaceScalarField& Peclet = - obr_.lookupObject<surfaceScalarField>(type()); + const surfaceScalarField& Peclet = + obr_.lookupObject<surfaceScalarField>(type()); - Info<< type() << " " << name_ << " output:" << nl - << " writing field " << Peclet.name() << nl - << endl; + Info<< type() << " " << name_ << " output:" << nl + << " writing field " << Peclet.name() << nl + << endl; - Peclet.write(); - } + Peclet.write(); } diff --git a/src/postProcessing/functionObjects/utilities/Peclet/Peclet.H b/src/postProcessing/functionObjects/utilities/Peclet/Peclet.H index 5becbe93e951172d1697de0d4f5c7bdb3017896d..dba87188aba491df33b948a75105e6b3cef46965 100644 --- a/src/postProcessing/functionObjects/utilities/Peclet/Peclet.H +++ b/src/postProcessing/functionObjects/utilities/Peclet/Peclet.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::Peclet + Foam::functionObjects::Peclet Group grpUtilitiesFunctionObjects @@ -56,6 +56,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class Peclet Declaration \*---------------------------------------------------------------------------*/ @@ -70,9 +73,6 @@ class Peclet //- Reference to the database const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Name of flux field, default is "phi" word phiName_; @@ -107,6 +107,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~Peclet(); @@ -147,6 +157,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/Peclet/PecletFunctionObject.H b/src/postProcessing/functionObjects/utilities/Peclet/PecletFunctionObject.H index fdeca7e571739bc36c4e34751a3452add4bb186b..a740de23d67acbf1477175dd209989647e410fef 100644 --- a/src/postProcessing/functionObjects/utilities/Peclet/PecletFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/Peclet/PecletFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,8 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<Peclet> PecletFunctionObject; + typedef OutputFilterFunctionObject<functionObjects::Peclet> + PecletFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/Q/Q.C b/src/postProcessing/functionObjects/utilities/Q/Q.C index 1e13c375a93f967517dc1f487928d0f9df597cb4..7e4fb2ff31275971f0846d11f8998eaef8d920fa 100644 --- a/src/postProcessing/functionObjects/utilities/Q/Q.C +++ b/src/postProcessing/functionObjects/utilities/Q/Q.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,13 +32,16 @@ License namespace Foam { -defineTypeNameAndDebug(Q, 0); +namespace functionObjects +{ + defineTypeNameAndDebug(Q, 0); +} } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::Q::Q +Foam::functionObjects::Q::Q ( const word& name, const objectRegistry& obr, @@ -48,113 +51,99 @@ Foam::Q::Q : name_(name), obr_(obr), - active_(true), UName_("U") { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } - read(dict); - if (active_) - { - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - volScalarField* QPtr + volScalarField* QPtr + ( + new volScalarField ( - new volScalarField + IOobject ( - IOobject - ( - type(), - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), + type(), + mesh.time().timeName(), mesh, - dimensionedScalar("0", dimless/sqr(dimTime), 0.0) - ) - ); + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar("0", dimless/sqr(dimTime), 0.0) + ) + ); + + mesh.objectRegistry::store(QPtr); +} - mesh.objectRegistry::store(QPtr); - } + +bool Foam::functionObjects::Q::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::Q::~Q() +Foam::functionObjects::Q::~Q() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::Q::read(const dictionary& dict) +void Foam::functionObjects::Q::read(const dictionary& dict) { - if (active_) - { - UName_ = dict.lookupOrDefault<word>("UName", "U"); - } + UName_ = dict.lookupOrDefault<word>("UName", "U"); } -void Foam::Q::execute() +void Foam::functionObjects::Q::execute() { - if (active_) - { - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - const volVectorField& U = - mesh.lookupObject<volVectorField>(UName_); + const volVectorField& U = + mesh.lookupObject<volVectorField>(UName_); - const volTensorField gradU(fvc::grad(U)); + const volTensorField gradU(fvc::grad(U)); - volScalarField& Q = - const_cast<volScalarField&> - ( - mesh.lookupObject<volScalarField>(type()) - ); + volScalarField& Q = + const_cast<volScalarField&> + ( + mesh.lookupObject<volScalarField>(type()) + ); - Q = 0.5*(sqr(tr(gradU)) - tr(((gradU) & (gradU)))); - } + Q = 0.5*(sqr(tr(gradU)) - tr(((gradU) & (gradU)))); } -void Foam::Q::end() +void Foam::functionObjects::Q::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::Q::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::Q::timeSet() +{} -void Foam::Q::write() +void Foam::functionObjects::Q::write() { - if (active_) - { - const volScalarField& Q = - obr_.lookupObject<volScalarField>(type()); + const volScalarField& Q = + obr_.lookupObject<volScalarField>(type()); - Info<< type() << " " << name_ << " output:" << nl - << " writing field " << Q.name() << nl - << endl; + Info<< type() << " " << name_ << " output:" << nl + << " writing field " << Q.name() << nl + << endl; - Q.write(); - } + Q.write(); } diff --git a/src/postProcessing/functionObjects/utilities/Q/Q.H b/src/postProcessing/functionObjects/utilities/Q/Q.H index aed626228c8c61d627fa166907da83af6b0b8506..56e00833c3642f5f64fe254eeec38196e26ec0e7 100644 --- a/src/postProcessing/functionObjects/utilities/Q/Q.H +++ b/src/postProcessing/functionObjects/utilities/Q/Q.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::Q + Foam::functionObjects::Q Group grpUtilitiesFunctionObjects @@ -60,6 +60,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class Q Declaration \*---------------------------------------------------------------------------*/ @@ -74,9 +77,6 @@ class Q //- Reference to the database const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Name of velocity field, default is "U" word UName_; @@ -108,6 +108,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~Q(); @@ -148,6 +158,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/Q/QFunctionObject.H b/src/postProcessing/functionObjects/utilities/Q/QFunctionObject.H index 4c96aac505475107ae423e482e2ebcadcd300dd6..27d72f6aa110b7e09120fdf2ce36ac9148fec2b4 100644 --- a/src/postProcessing/functionObjects/utilities/Q/QFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/Q/QFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,8 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<Q> QFunctionObject; + typedef OutputFilterFunctionObject<functionObjects::Q> + QFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/IOblendingFactor.H b/src/postProcessing/functionObjects/utilities/blendingFactor/IOblendingFactor.H index 2d1ae3dc1e4885eeed8272ef93d3331f45a1a17c..ceef2c02fb50d292d78cacd52761de7f0a91e940 100644 --- a/src/postProcessing/functionObjects/utilities/blendingFactor/IOblendingFactor.H +++ b/src/postProcessing/functionObjects/utilities/blendingFactor/IOblendingFactor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,7 @@ Description namespace Foam { - typedef IOOutputFilter<blendingFactor> IOblendingFactor; + typedef IOOutputFilter<functionObjects::blendingFactor> IOblendingFactor; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.C b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.C index 05da696bae85810fe864d0c07f744dc577ebb1b3..64863bcfc657597086bd24aa0a5ada2473539aed 100644 --- a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.C +++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,14 +29,17 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(blendingFactor, 0); } +} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::blendingFactor::blendingFactor +Foam::functionObjects::blendingFactor::blendingFactor ( const word& name, const objectRegistry& obr, @@ -46,80 +49,69 @@ Foam::blendingFactor::blendingFactor : name_(name), obr_(obr), - active_(true), phiName_("unknown-phiName"), fieldName_("unknown-fieldName") { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } - read(dict); } +bool Foam::functionObjects::blendingFactor::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::blendingFactor::~blendingFactor() +Foam::functionObjects::blendingFactor::~blendingFactor() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::blendingFactor::read(const dictionary& dict) +void Foam::functionObjects::blendingFactor::read(const dictionary& dict) { - if (active_) - { - phiName_ = dict.lookupOrDefault<word>("phiName", "phi"); - dict.lookup("fieldName") >> fieldName_; - } + phiName_ = dict.lookupOrDefault<word>("phiName", "phi"); + dict.lookup("fieldName") >> fieldName_; } -void Foam::blendingFactor::execute() +void Foam::functionObjects::blendingFactor::execute() { - if (active_) - { - calc<scalar>(); - calc<vector>(); - } + calc<scalar>(); + calc<vector>(); } -void Foam::blendingFactor::end() +void Foam::functionObjects::blendingFactor::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::blendingFactor::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::blendingFactor::timeSet() +{} -void Foam::blendingFactor::write() +void Foam::functionObjects::blendingFactor::write() { - if (active_) - { - const word fieldName = "blendingFactor:" + fieldName_; + const word fieldName = "blendingFactor:" + fieldName_; - const volScalarField& blendingFactor = - obr_.lookupObject<volScalarField>(fieldName); + const volScalarField& blendingFactor = + obr_.lookupObject<volScalarField>(fieldName); - Info<< type() << " " << name_ << " output:" << nl - << " writing field " << blendingFactor.name() << nl - << endl; + Info<< type() << " " << name_ << " output:" << nl + << " writing field " << blendingFactor.name() << nl + << endl; - blendingFactor.write(); - } + blendingFactor.write(); } diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.H b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.H index 8b86a25cea60707f2cd5dc7208c6af2344f064b3..8e739442ccc4ca52ce0f93dcbec02d07d6661a78 100644 --- a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.H +++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::blendingFactor + Foam::functionObjects::blendingFactor Group grpUtilitiesFunctionObjects @@ -58,6 +58,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class blendingFactor Declaration \*---------------------------------------------------------------------------*/ @@ -72,9 +75,6 @@ class blendingFactor //- Reference to the database const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Name of flux field, default is "phi" word phiName_; @@ -120,6 +120,17 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + + //- Destructor virtual ~blendingFactor(); @@ -160,6 +171,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.H b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.H index b2e2369ebe191138b2ee919473590a3e917b2096..301d365d1315de7c2d07eff2c90ec48a2ca31034 100644 --- a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<blendingFactor> + typedef OutputFilterFunctionObject<functionObjects::blendingFactor> blendingFactorFunctionObject; } diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorTemplates.C b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorTemplates.C index a2275cf5f030015934136d8cf89cc8c043818d31..d2df84d3cbed5e14142e120dcbdc4511429e2a3d 100644 --- a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorTemplates.C +++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorTemplates.C @@ -31,7 +31,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template<class Type> -Foam::volScalarField& Foam::blendingFactor::factor +Foam::volScalarField& Foam::functionObjects::blendingFactor::factor ( const GeometricField<Type, fvPatchField, volMesh>& field ) @@ -70,7 +70,7 @@ Foam::volScalarField& Foam::blendingFactor::factor template<class Type> -void Foam::blendingFactor::calc() +void Foam::functionObjects::blendingFactor::calc() { typedef GeometricField<Type, fvPatchField, volMesh> fieldType; diff --git a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.C b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.C index 095a801c2e850314a475bd2566dfda43cf497e53..33722637d657c14c9b11f75a74c266c01ee5d947 100644 --- a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.C +++ b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.C @@ -36,13 +36,16 @@ using namespace Foam::constant; namespace Foam { -defineTypeNameAndDebug(dsmcFields, 0); +namespace functionObjects +{ + defineTypeNameAndDebug(dsmcFields, 0); +} } // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::dsmcFields::dsmcFields +Foam::functionObjects::dsmcFields::dsmcFields ( const word& name, const objectRegistry& obr, @@ -51,231 +54,220 @@ Foam::dsmcFields::dsmcFields ) : name_(name), - obr_(obr), - active_(true) + obr_(obr) { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } - read(dict); } +bool Foam::functionObjects::dsmcFields::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::dsmcFields::~dsmcFields() +Foam::functionObjects::dsmcFields::~dsmcFields() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::dsmcFields::read(const dictionary& dict) -{ - if (active_) - { - - } -} +void Foam::functionObjects::dsmcFields::read(const dictionary& dict) +{} -void Foam::dsmcFields::execute() -{ - // Do nothing - only valid on write -} +void Foam::functionObjects::dsmcFields::execute() +{} -void Foam::dsmcFields::end() -{ - // Do nothing - only valid on write -} +void Foam::functionObjects::dsmcFields::end() +{} -void Foam::dsmcFields::timeSet() -{ - // Do nothing - only valid on write -} +void Foam::functionObjects::dsmcFields::timeSet() +{} -void Foam::dsmcFields::write() +void Foam::functionObjects::dsmcFields::write() { - if (active_) + word rhoNMeanName = "rhoNMean"; + word rhoMMeanName = "rhoMMean"; + word momentumMeanName = "momentumMean"; + word linearKEMeanName = "linearKEMean"; + word internalEMeanName = "internalEMean"; + word iDofMeanName = "iDofMean"; + word fDMeanName = "fDMean"; + + const volScalarField& rhoNMean = obr_.lookupObject<volScalarField> + ( + rhoNMeanName + ); + + const volScalarField& rhoMMean = obr_.lookupObject<volScalarField> + ( + rhoMMeanName + ); + + const volVectorField& momentumMean = obr_.lookupObject<volVectorField> + ( + momentumMeanName + ); + + const volScalarField& linearKEMean = obr_.lookupObject<volScalarField> + ( + linearKEMeanName + ); + + const volScalarField& internalEMean = obr_.lookupObject<volScalarField> + ( + internalEMeanName + ); + + const volScalarField& iDofMean = obr_.lookupObject<volScalarField> + ( + iDofMeanName + ); + + const volVectorField& fDMean = obr_.lookupObject<volVectorField> + ( + fDMeanName + ); + + if (min(mag(rhoNMean)).value() > VSMALL) { - word rhoNMeanName = "rhoNMean"; - word rhoMMeanName = "rhoMMean"; - word momentumMeanName = "momentumMean"; - word linearKEMeanName = "linearKEMean"; - word internalEMeanName = "internalEMean"; - word iDofMeanName = "iDofMean"; - word fDMeanName = "fDMean"; - - const volScalarField& rhoNMean = obr_.lookupObject<volScalarField> - ( - rhoNMeanName - ); - - const volScalarField& rhoMMean = obr_.lookupObject<volScalarField> - ( - rhoMMeanName - ); + Info<< "Calculating dsmcFields." << endl; - const volVectorField& momentumMean = obr_.lookupObject<volVectorField> + Info<< " Calculating UMean field." << endl; + volVectorField UMean ( - momentumMeanName + IOobject + ( + "UMean", + obr_.time().timeName(), + obr_, + IOobject::NO_READ + ), + momentumMean/rhoMMean ); - const volScalarField& linearKEMean = obr_.lookupObject<volScalarField> + Info<< " Calculating translationalT field." << endl; + volScalarField translationalT ( - linearKEMeanName + IOobject + ( + "translationalT", + obr_.time().timeName(), + obr_, + IOobject::NO_READ + ), + + 2.0/(3.0*physicoChemical::k.value()*rhoNMean) + *(linearKEMean - 0.5*rhoMMean*(UMean & UMean)) ); - const volScalarField& internalEMean = obr_.lookupObject<volScalarField> + Info<< " Calculating internalT field." << endl; + volScalarField internalT ( - internalEMeanName + IOobject + ( + "internalT", + obr_.time().timeName(), + obr_, + IOobject::NO_READ + ), + (2.0/physicoChemical::k.value())*(internalEMean/iDofMean) ); - const volScalarField& iDofMean = obr_.lookupObject<volScalarField> + Info<< " Calculating overallT field." << endl; + volScalarField overallT ( - iDofMeanName + IOobject + ( + "overallT", + obr_.time().timeName(), + obr_, + IOobject::NO_READ + ), + 2.0/(physicoChemical::k.value()*(3.0*rhoNMean + iDofMean)) + *(linearKEMean - 0.5*rhoMMean*(UMean & UMean) + internalEMean) ); - const volVectorField& fDMean = obr_.lookupObject<volVectorField> + Info<< " Calculating pressure field." << endl; + volScalarField p ( - fDMeanName + IOobject + ( + "p", + obr_.time().timeName(), + obr_, + IOobject::NO_READ + ), + physicoChemical::k.value()*rhoNMean*translationalT ); - if (min(mag(rhoNMean)).value() > VSMALL) - { - Info<< "Calculating dsmcFields." << endl; - - Info<< " Calculating UMean field." << endl; - volVectorField UMean - ( - IOobject - ( - "UMean", - obr_.time().timeName(), - obr_, - IOobject::NO_READ - ), - momentumMean/rhoMMean - ); - - Info<< " Calculating translationalT field." << endl; - volScalarField translationalT - ( - IOobject - ( - "translationalT", - obr_.time().timeName(), - obr_, - IOobject::NO_READ - ), - - 2.0/(3.0*physicoChemical::k.value()*rhoNMean) - *(linearKEMean - 0.5*rhoMMean*(UMean & UMean)) - ); - - Info<< " Calculating internalT field." << endl; - volScalarField internalT - ( - IOobject - ( - "internalT", - obr_.time().timeName(), - obr_, - IOobject::NO_READ - ), - (2.0/physicoChemical::k.value())*(internalEMean/iDofMean) - ); - - Info<< " Calculating overallT field." << endl; - volScalarField overallT - ( - IOobject - ( - "overallT", - obr_.time().timeName(), - obr_, - IOobject::NO_READ - ), - 2.0/(physicoChemical::k.value()*(3.0*rhoNMean + iDofMean)) - *(linearKEMean - 0.5*rhoMMean*(UMean & UMean) + internalEMean) - ); - - Info<< " Calculating pressure field." << endl; - volScalarField p - ( - IOobject - ( - "p", - obr_.time().timeName(), - obr_, - IOobject::NO_READ - ), - physicoChemical::k.value()*rhoNMean*translationalT - ); + const fvMesh& mesh = fDMean.mesh(); - const fvMesh& mesh = fDMean.mesh(); + volScalarField::Boundary& pBf = p.boundaryFieldRef(); - volScalarField::Boundary& pBf = p.boundaryFieldRef(); + forAll(mesh.boundaryMesh(), i) + { + const polyPatch& patch = mesh.boundaryMesh()[i]; - forAll(mesh.boundaryMesh(), i) + if (isA<wallPolyPatch>(patch)) { - const polyPatch& patch = mesh.boundaryMesh()[i]; - - if (isA<wallPolyPatch>(patch)) - { - pBf[i] = - fDMean.boundaryField()[i] - & (patch.faceAreas()/mag(patch.faceAreas())); - } + pBf[i] = + fDMean.boundaryField()[i] + & (patch.faceAreas()/mag(patch.faceAreas())); } + } - Info<< " mag(UMean) max/min : " - << max(mag(UMean)).value() << " " - << min(mag(UMean)).value() << endl; + Info<< " mag(UMean) max/min : " + << max(mag(UMean)).value() << " " + << min(mag(UMean)).value() << endl; - Info<< " translationalT max/min : " - << max(translationalT).value() << " " - << min(translationalT).value() << endl; + Info<< " translationalT max/min : " + << max(translationalT).value() << " " + << min(translationalT).value() << endl; - Info<< " internalT max/min : " - << max(internalT).value() << " " - << min(internalT).value() << endl; + Info<< " internalT max/min : " + << max(internalT).value() << " " + << min(internalT).value() << endl; - Info<< " overallT max/min : " - << max(overallT).value() << " " - << min(overallT).value() << endl; + Info<< " overallT max/min : " + << max(overallT).value() << " " + << min(overallT).value() << endl; - Info<< " p max/min : " - << max(p).value() << " " - << min(p).value() << endl; + Info<< " p max/min : " + << max(p).value() << " " + << min(p).value() << endl; - UMean.write(); + UMean.write(); - translationalT.write(); + translationalT.write(); - internalT.write(); + internalT.write(); - overallT.write(); + overallT.write(); - p.write(); + p.write(); - Info<< "dsmcFields written." << nl << endl; - } - else - { - Info<< "Small value (" << min(mag(rhoNMean)) - << ") found in rhoNMean field. " - << "Not calculating dsmcFields to avoid division by zero." - << endl; - } + Info<< "dsmcFields written." << nl << endl; + } + else + { + Info<< "Small value (" << min(mag(rhoNMean)) + << ") found in rhoNMean field. " + << "Not calculating dsmcFields to avoid division by zero." + << endl; } } diff --git a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H index b6f7ae68d61dc0bd968fbfc4b8eef43cf3bd02fb..e702a01abde5d5a30801dd62f18cb45737de5b8d 100644 --- a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H +++ b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::dsmcFields + Foam::functionObjects::dsmcFields Group grpUtilitiesFunctionObjects @@ -45,6 +45,7 @@ SourceFiles #define dsmcFields_H #include "typeInfo.H" +#include "autoPtr.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -57,6 +58,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class dsmcFields Declaration \*---------------------------------------------------------------------------*/ @@ -70,9 +74,6 @@ class dsmcFields const objectRegistry& obr_; - //- on/off switch - bool active_; - // Private Member Functions @@ -101,6 +102,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~dsmcFields(); @@ -141,6 +152,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.H b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.H index 95501a1446f3489160e0cc563e11f3e3339429ca..7a220c4bbab91647cb9d942a0c6e11c70152bf80 100644 --- a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFieldsFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<dsmcFields> + typedef OutputFilterFunctionObject<functionObjects::dsmcFields> dsmcFieldsFunctionObject; } diff --git a/src/postProcessing/functionObjects/utilities/pressureTools/IOpressureTools.H b/src/postProcessing/functionObjects/utilities/pressureTools/IOpressureTools.H index 4d10f447209725030c82cbb79d85aa4e423e274c..7119cff70d0e4dc48a7aa57d83fcfbbbe4ba3a7b 100644 --- a/src/postProcessing/functionObjects/utilities/pressureTools/IOpressureTools.H +++ b/src/postProcessing/functionObjects/utilities/pressureTools/IOpressureTools.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,7 @@ Description namespace Foam { - typedef IOOutputFilter<pressureTools> IOpressureTools; + typedef IOOutputFilter<functionObjects::pressureTools> IOpressureTools; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.C b/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.C index 84a50de5f8093aa8088775f23aa3d7722e412ae7..c4315511235ede30b331986fa80080e6ca3a65f0 100644 --- a/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.C +++ b/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.C @@ -30,14 +30,17 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(pressureTools, 0); } +} // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -Foam::word Foam::pressureTools::pName() const +Foam::word Foam::functionObjects::pressureTools::pName() const { word fieldName = pName_; @@ -59,7 +62,7 @@ Foam::word Foam::pressureTools::pName() const } -Foam::dimensionedScalar Foam::pressureTools::rhoScale +Foam::dimensionedScalar Foam::functionObjects::pressureTools::rhoScale ( const volScalarField& p ) const @@ -75,7 +78,7 @@ Foam::dimensionedScalar Foam::pressureTools::rhoScale } -Foam::tmp<Foam::volScalarField> Foam::pressureTools::rho +Foam::tmp<Foam::volScalarField> Foam::functionObjects::pressureTools::rho ( const volScalarField& p ) const @@ -107,7 +110,7 @@ Foam::tmp<Foam::volScalarField> Foam::pressureTools::rho } -Foam::dimensionedScalar Foam::pressureTools::pRef() const +Foam::dimensionedScalar Foam::functionObjects::pressureTools::pRef() const { dimensionedScalar value("pRef", dimPressure, 0.0); @@ -120,7 +123,7 @@ Foam::dimensionedScalar Foam::pressureTools::pRef() const } -Foam::tmp<Foam::volScalarField> Foam::pressureTools::pDyn +Foam::tmp<Foam::volScalarField> Foam::functionObjects::pressureTools::pDyn ( const volScalarField& p ) const @@ -155,7 +158,8 @@ Foam::tmp<Foam::volScalarField> Foam::pressureTools::pDyn } -Foam::tmp<Foam::volScalarField> Foam::pressureTools::convertToCoeff +Foam::tmp<Foam::volScalarField> +Foam::functionObjects::pressureTools::convertToCoeff ( const volScalarField& p ) const @@ -179,7 +183,7 @@ Foam::tmp<Foam::volScalarField> Foam::pressureTools::convertToCoeff // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::pressureTools::pressureTools +Foam::functionObjects::pressureTools::pressureTools ( const word& name, const objectRegistry& obr, @@ -189,7 +193,6 @@ Foam::pressureTools::pressureTools : name_(name), obr_(obr), - active_(true), pName_("p"), UName_("U"), rhoName_("rho"), @@ -200,144 +203,130 @@ Foam::pressureTools::pressureTools UInf_(Zero), rhoInf_(0.0) { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } - read(dict); - if (active_) - { - dimensionSet pDims(dimPressure); + dimensionSet pDims(dimPressure); - if (calcCoeff_) - { - pDims /= dimPressure; - } + if (calcCoeff_) + { + pDims /= dimPressure; + } - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - volScalarField* pPtr + volScalarField* pPtr + ( + new volScalarField ( - new volScalarField + IOobject ( - IOobject - ( - pName(), - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), + pName(), + mesh.time().timeName(), mesh, - dimensionedScalar("0", pDims, 0.0) - ) - ); + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar("0", pDims, 0.0) + ) + ); - mesh.objectRegistry::store(pPtr); - } + mesh.objectRegistry::store(pPtr); +} + + +bool Foam::functionObjects::pressureTools::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::pressureTools::~pressureTools() +Foam::functionObjects::pressureTools::~pressureTools() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::pressureTools::read(const dictionary& dict) +void Foam::functionObjects::pressureTools::read(const dictionary& dict) { - if (active_) + dict.readIfPresent("pName", pName_); + dict.readIfPresent("UName", UName_); + dict.readIfPresent("rhoName", rhoName_); + + if (rhoName_ == "rhoInf") { - dict.readIfPresent("pName", pName_); - dict.readIfPresent("UName", UName_); - dict.readIfPresent("rhoName", rhoName_); + dict.lookup("rhoInf") >> rhoInf_; + } - if (rhoName_ == "rhoInf") - { - dict.lookup("rhoInf") >> rhoInf_; - } + dict.lookup("calcTotal") >> calcTotal_; + if (calcTotal_) + { + dict.lookup("pRef") >> pRef_; + } - dict.lookup("calcTotal") >> calcTotal_; - if (calcTotal_) - { - dict.lookup("pRef") >> pRef_; - } + dict.lookup("calcCoeff") >> calcCoeff_; + if (calcCoeff_) + { + dict.lookup("pInf") >> pInf_; + dict.lookup("UInf") >> UInf_; + dict.lookup("rhoInf") >> rhoInf_; - dict.lookup("calcCoeff") >> calcCoeff_; - if (calcCoeff_) + scalar zeroCheck = 0.5*rhoInf_*magSqr(UInf_) + pInf_; + + if (mag(zeroCheck) < ROOTVSMALL) { - dict.lookup("pInf") >> pInf_; - dict.lookup("UInf") >> UInf_; - dict.lookup("rhoInf") >> rhoInf_; - - scalar zeroCheck = 0.5*rhoInf_*magSqr(UInf_) + pInf_; - - if (mag(zeroCheck) < ROOTVSMALL) - { - WarningInFunction - << type() << " " << name_ << ": " - << "Coefficient calculation requested, but reference " - << "pressure level is zero. Please check the supplied " - << "values of pInf, UInf and rhoInf" << endl; - } + WarningInFunction + << type() << " " << name_ << ": " + << "Coefficient calculation requested, but reference " + << "pressure level is zero. Please check the supplied " + << "values of pInf, UInf and rhoInf" << endl; } } } -void Foam::pressureTools::execute() +void Foam::functionObjects::pressureTools::execute() { - if (active_) - { - const volScalarField& p = obr_.lookupObject<volScalarField>(pName_); + const volScalarField& p = obr_.lookupObject<volScalarField>(pName_); - volScalarField& pResult = - const_cast<volScalarField&> - ( - obr_.lookupObject<volScalarField>(pName()) - ); + volScalarField& pResult = const_cast<volScalarField&> + ( + obr_.lookupObject<volScalarField>(pName()) + ); - pResult == convertToCoeff(rhoScale(p)*p + pDyn(p) + pRef()); - } + pResult == convertToCoeff(rhoScale(p)*p + pDyn(p) + pRef()); } -void Foam::pressureTools::end() +void Foam::functionObjects::pressureTools::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::pressureTools::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::pressureTools::timeSet() +{} -void Foam::pressureTools::write() +void Foam::functionObjects::pressureTools::write() { - if (active_) - { - const volScalarField& pResult = - obr_.lookupObject<volScalarField>(pName()); + const volScalarField& pResult = + obr_.lookupObject<volScalarField>(pName()); - Info<< type() << " " << name_ << " output:" << nl - << " writing field " << pResult.name() << nl - << endl; + Info<< type() << " " << name_ << " output:" << nl + << " writing field " << pResult.name() << nl + << endl; - pResult.write(); - } + pResult.write(); } diff --git a/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.H b/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.H index 6d80b388d107eb205d8de7cb08f8b438a993a8b0..d06fb776ab34aaeb6a363877378b9c61e1888152 100644 --- a/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.H +++ b/src/postProcessing/functionObjects/utilities/pressureTools/pressureTools.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::pressureTools + Foam::functionObjects::pressureTools Group grpUtilitiesFunctionObjects @@ -123,6 +123,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class pressureTools Declaration \*---------------------------------------------------------------------------*/ @@ -137,9 +140,6 @@ class pressureTools //- Reference to the database const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Name of pressure field, default is "p" word pName_; @@ -219,6 +219,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~pressureTools(); @@ -259,6 +269,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/pressureTools/pressureToolsFunctionObject.H b/src/postProcessing/functionObjects/utilities/pressureTools/pressureToolsFunctionObject.H index 0b83c7d148ddb5a02c7b0d92690b274d504b933b..39141da9f92aa2ac298dad676a1dd84dba0283b5 100644 --- a/src/postProcessing/functionObjects/utilities/pressureTools/pressureToolsFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/pressureTools/pressureToolsFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<pressureTools> + typedef OutputFilterFunctionObject<functionObjects::pressureTools> pressureToolsFunctionObject; } diff --git a/src/postProcessing/functionObjects/utilities/residuals/IOresiduals.H b/src/postProcessing/functionObjects/utilities/residuals/IOresiduals.H index 1f74ab27a3a4189ee7c8858c03baf749893f75e0..249e4ec5d8e67628981f221680146cb7e0a1e12d 100644 --- a/src/postProcessing/functionObjects/utilities/residuals/IOresiduals.H +++ b/src/postProcessing/functionObjects/utilities/residuals/IOresiduals.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,7 @@ Description namespace Foam { - typedef IOOutputFilter<residuals> IOresiduals; + typedef IOOutputFilter<functionObjects::residuals> IOresiduals; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/residuals/residuals.C b/src/postProcessing/functionObjects/utilities/residuals/residuals.C index 9c7eca1be09f36fc3fc20af431030635fa9cc49d..ee63506ac32dcd20540c72a445c65392fd8770f6 100644 --- a/src/postProcessing/functionObjects/utilities/residuals/residuals.C +++ b/src/postProcessing/functionObjects/utilities/residuals/residuals.C @@ -31,14 +31,17 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(residuals, 0); } +} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::residuals::residuals +Foam::functionObjects::residuals::residuals ( const word& name, const objectRegistry& obr, @@ -49,40 +52,40 @@ Foam::residuals::residuals functionObjectFiles(obr, name, typeName), name_(name), obr_(obr), - active_(true), fieldSet_() { - // Check if the available mesh is an fvMesh otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ - << endl; - } - read(dict); } +bool Foam::functionObjects::residuals::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::residuals::~residuals() +Foam::functionObjects::residuals::~residuals() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::residuals::read(const dictionary& dict) +void Foam::functionObjects::residuals::read(const dictionary& dict) { - if (active_) - { - dict.lookup("fields") >> fieldSet_; - } + dict.lookup("fields") >> fieldSet_; } -void Foam::residuals::writeFileHeader(const label i) +void Foam::functionObjects::residuals::writeFileHeader(const label i) { if (Pstream::master()) { @@ -105,41 +108,38 @@ void Foam::residuals::writeFileHeader(const label i) } -void Foam::residuals::execute() +void Foam::functionObjects::residuals::execute() {} -void Foam::residuals::end() +void Foam::functionObjects::residuals::end() {} -void Foam::residuals::timeSet() +void Foam::functionObjects::residuals::timeSet() {} -void Foam::residuals::write() +void Foam::functionObjects::residuals::write() { - if (active_) + functionObjectFiles::write(); + + if (Pstream::master()) { - functionObjectFiles::write(); + writeTime(file()); - if (Pstream::master()) + forAll(fieldSet_, fieldI) { - writeTime(file()); - - forAll(fieldSet_, fieldI) - { - const word& fieldName = fieldSet_[fieldI]; - - writeResidual<scalar>(fieldName); - writeResidual<vector>(fieldName); - writeResidual<sphericalTensor>(fieldName); - writeResidual<symmTensor>(fieldName); - writeResidual<tensor>(fieldName); - } + const word& fieldName = fieldSet_[fieldI]; - file() << endl; + writeResidual<scalar>(fieldName); + writeResidual<vector>(fieldName); + writeResidual<sphericalTensor>(fieldName); + writeResidual<symmTensor>(fieldName); + writeResidual<tensor>(fieldName); } + + file() << endl; } } diff --git a/src/postProcessing/functionObjects/utilities/residuals/residuals.H b/src/postProcessing/functionObjects/utilities/residuals/residuals.H index 06192df6b5e1dfef126d3810d17e294387eb21a2..01a44e0c3e0ec0712e12ca1d44e5cc401413623d 100644 --- a/src/postProcessing/functionObjects/utilities/residuals/residuals.H +++ b/src/postProcessing/functionObjects/utilities/residuals/residuals.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::residuals + Foam::functionObjects::residuals Group grpUtilitiesFunctionObjects @@ -82,6 +82,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class residuals Declaration \*---------------------------------------------------------------------------*/ @@ -100,9 +103,6 @@ protected: const objectRegistry& obr_; - //- on/off switch - bool active_; - //- Fields to write residuals wordList fieldSet_; @@ -146,6 +146,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~residuals(); @@ -190,6 +200,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/residuals/residualsFunctionObject.H b/src/postProcessing/functionObjects/utilities/residuals/residualsFunctionObject.H index 9bc49f984e13278316838e933782bf15bc12042c..3d28368f6ef40b50c0e729e47a4b05ebf92957d3 100644 --- a/src/postProcessing/functionObjects/utilities/residuals/residualsFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/residuals/residualsFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<residuals> + typedef OutputFilterFunctionObject<functionObjects::residuals> residualsFunctionObject; } diff --git a/src/postProcessing/functionObjects/utilities/residuals/residualsTemplates.C b/src/postProcessing/functionObjects/utilities/residuals/residualsTemplates.C index 6709a0827ffac2922319d7588fca7dd3998c05ab..b7647242bca6e1ee31faef35e29d62c0d7ca7f6b 100644 --- a/src/postProcessing/functionObjects/utilities/residuals/residualsTemplates.C +++ b/src/postProcessing/functionObjects/utilities/residuals/residualsTemplates.C @@ -32,7 +32,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template<class Type> -void Foam::residuals::writeFileHeader(const word& fieldName) +void Foam::functionObjects::residuals::writeFileHeader(const word& fieldName) { typedef GeometricField<Type, fvPatchField, volMesh> fieldType; @@ -62,7 +62,7 @@ void Foam::residuals::writeFileHeader(const word& fieldName) template<class Type> -void Foam::residuals::writeResidual(const word& fieldName) +void Foam::functionObjects::residuals::writeResidual(const word& fieldName) { typedef GeometricField<Type, fvPatchField, volMesh> fieldType; diff --git a/src/postProcessing/functionObjects/utilities/scalarTransport/IOscalarTransport.H b/src/postProcessing/functionObjects/utilities/scalarTransport/IOscalarTransport.H index 37d3ef0f3d61b31b74e254ba84838a06c007bdd6..e6c9c1dc4c7f26633dd6870e584b5573aa96f2e5 100644 --- a/src/postProcessing/functionObjects/utilities/scalarTransport/IOscalarTransport.H +++ b/src/postProcessing/functionObjects/utilities/scalarTransport/IOscalarTransport.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,8 @@ Description namespace Foam { - typedef IOOutputFilter<scalarTransport> IOscalarTransport; + typedef IOOutputFilter<functionObjects::scalarTransport> + IOscalarTransport; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.C b/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.C index 3281ea4ffd4c9c933738232416a46ea380980161..a4bfb5bbbc02634c8c28456c74bd6a6721b347ea 100644 --- a/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.C +++ b/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.C @@ -40,14 +40,17 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(scalarTransport, 0); } +} // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -Foam::wordList Foam::scalarTransport::boundaryTypes() const +Foam::wordList Foam::functionObjects::scalarTransport::boundaryTypes() const { const volVectorField& U = mesh_.lookupObject<volVectorField>(UName_); @@ -70,7 +73,7 @@ Foam::wordList Foam::scalarTransport::boundaryTypes() const } -Foam::tmp<Foam::volScalarField> Foam::scalarTransport::DT +Foam::tmp<Foam::volScalarField> Foam::functionObjects::scalarTransport::DT ( const surfaceScalarField& phi ) const @@ -139,7 +142,7 @@ Foam::tmp<Foam::volScalarField> Foam::scalarTransport::DT // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::scalarTransport::scalarTransport +Foam::functionObjects::scalarTransport::scalarTransport ( const word& name, const objectRegistry& obr, @@ -182,15 +185,28 @@ Foam::scalarTransport::scalarTransport } +bool Foam::functionObjects::scalarTransport::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::scalarTransport::~scalarTransport() +Foam::functionObjects::scalarTransport::~scalarTransport() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::scalarTransport::read(const dictionary& dict) +void Foam::functionObjects::scalarTransport::read(const dictionary& dict) { Info<< type() << ":" << nl; @@ -214,7 +230,7 @@ void Foam::scalarTransport::read(const dictionary& dict) } -void Foam::scalarTransport::execute() +void Foam::functionObjects::scalarTransport::execute() { Info<< type() << " output:" << endl; @@ -298,17 +314,17 @@ void Foam::scalarTransport::execute() } -void Foam::scalarTransport::end() +void Foam::functionObjects::scalarTransport::end() { execute(); } -void Foam::scalarTransport::timeSet() +void Foam::functionObjects::scalarTransport::timeSet() {} -void Foam::scalarTransport::write() +void Foam::functionObjects::scalarTransport::write() {} diff --git a/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.H b/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.H index 8ba8c9ce2c13f748752237ea5c0907307d27452f..21724bfb3d6fdb2c298e5df261f35c1492bbd3b3 100644 --- a/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.H +++ b/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransport.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::scalarTransport + Foam::functionObjects::scalarTransport Group grpUtilitiesFunctionObjects @@ -64,6 +64,9 @@ class objectRegistry; class dictionary; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class scalarTransport Declaration \*---------------------------------------------------------------------------*/ @@ -142,6 +145,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~scalarTransport(); @@ -182,6 +195,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransportFunctionObject.H b/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransportFunctionObject.H index f5a417f4fdec04a7d24bf11989c1ba513ab478e7..cea384054cb89d6e07b2a0c66e2d8c61e2aba3f0 100644 --- a/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransportFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/scalarTransport/scalarTransportFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<scalarTransport> + typedef OutputFilterFunctionObject<functionObjects::scalarTransport> scalarTransportFunctionObject; } diff --git a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/IOtimeActivatedFileUpdate.H b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/IOtimeActivatedFileUpdate.H index 5aac253afbf7d09954ac2e87f1683f3013529789..4d4d3ac408af8ba263fb5ec3e054abf8077c97cb 100644 --- a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/IOtimeActivatedFileUpdate.H +++ b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/IOtimeActivatedFileUpdate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,8 @@ Description namespace Foam { - typedef IOOutputFilter<timeActivatedFileUpdate> IOtimeActivatedFileUpdate; + typedef IOOutputFilter<functionObjects::timeActivatedFileUpdate> + IOtimeActivatedFileUpdate; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.C b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.C index caef71319ff6730afc1e150438c599cf48b1edd0..acee1ecfb5a83bec56203b1384ccd76bd7ea2c89 100644 --- a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.C +++ b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,14 +31,17 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(timeActivatedFileUpdate, 0); } +} // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -void Foam::timeActivatedFileUpdate::updateFile() +void Foam::functionObjects::timeActivatedFileUpdate::updateFile() { label i = lastIndex_; while @@ -63,7 +66,7 @@ void Foam::timeActivatedFileUpdate::updateFile() // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::timeActivatedFileUpdate::timeActivatedFileUpdate +Foam::functionObjects::timeActivatedFileUpdate::timeActivatedFileUpdate ( const word& name, const objectRegistry& obr, @@ -73,7 +76,6 @@ Foam::timeActivatedFileUpdate::timeActivatedFileUpdate : name_(name), obr_(obr), - active_(true), fileToUpdate_(dict.lookup("fileToUpdate")), timeVsFile_(), lastIndex_(-1) @@ -82,73 +84,75 @@ Foam::timeActivatedFileUpdate::timeActivatedFileUpdate } +bool Foam::functionObjects::timeActivatedFileUpdate::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + return true; +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::timeActivatedFileUpdate::~timeActivatedFileUpdate() +Foam::functionObjects::timeActivatedFileUpdate::~timeActivatedFileUpdate() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::timeActivatedFileUpdate::read(const dictionary& dict) +void Foam::functionObjects::timeActivatedFileUpdate::read +( + const dictionary& dict +) { - if (active_) - { - dict.lookup("fileToUpdate") >> fileToUpdate_; - dict.lookup("timeVsFile") >> timeVsFile_; + dict.lookup("fileToUpdate") >> fileToUpdate_; + dict.lookup("timeVsFile") >> timeVsFile_; - lastIndex_ = -1; - fileToUpdate_.expand(); + lastIndex_ = -1; + fileToUpdate_.expand(); - Info<< type() << ": time vs file list:" << nl; - forAll(timeVsFile_, i) + Info<< type() << ": time vs file list:" << nl; + forAll(timeVsFile_, i) + { + timeVsFile_[i].second() = timeVsFile_[i].second().expand(); + if (!isFile(timeVsFile_[i].second())) { - timeVsFile_[i].second() = timeVsFile_[i].second().expand(); - if (!isFile(timeVsFile_[i].second())) - { - FatalErrorInFunction - << "File: " << timeVsFile_[i].second() << " not found" - << nl << exit(FatalError); - } - - Info<< " " << timeVsFile_[i].first() << tab - << timeVsFile_[i].second() << endl; + FatalErrorInFunction + << "File: " << timeVsFile_[i].second() << " not found" + << nl << exit(FatalError); } - Info<< endl; - updateFile(); + Info<< " " << timeVsFile_[i].first() << tab + << timeVsFile_[i].second() << endl; } + Info<< endl; + + updateFile(); } -void Foam::timeActivatedFileUpdate::execute() +void Foam::functionObjects::timeActivatedFileUpdate::execute() { - if (active_) - { - updateFile(); - } + updateFile(); } -void Foam::timeActivatedFileUpdate::end() +void Foam::functionObjects::timeActivatedFileUpdate::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::timeActivatedFileUpdate::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::timeActivatedFileUpdate::timeSet() +{} -void Foam::timeActivatedFileUpdate::write() -{ - // Do nothing -} +void Foam::functionObjects::timeActivatedFileUpdate::write() +{} // ************************************************************************* // diff --git a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.H b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.H index 42e5144a87dd3c590f56b479747e368f4d2b32c1..40d6ae37b413637946ec4d23e7eeec5ac6c01141 100644 --- a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.H +++ b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::timeActivatedFileUpdate + Foam::functionObjects::timeActivatedFileUpdate Group grpUtilitiesFunctionObjects @@ -73,6 +73,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class timeActivatedFileUpdate Declaration \*---------------------------------------------------------------------------*/ @@ -87,9 +90,6 @@ class timeActivatedFileUpdate //- Owner database const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Name of file to update fileName fileToUpdate_; @@ -130,6 +130,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~timeActivatedFileUpdate(); @@ -170,6 +180,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdateFunctionObject.H b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdateFunctionObject.H index d661d81901d7f72edd4a6eb1cb254635e17325c7..af8d9e4cc9888a6e093cab15762c7c8224db2d62 100644 --- a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdateFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdateFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<timeActivatedFileUpdate> + typedef OutputFilterFunctionObject<functionObjects::timeActivatedFileUpdate> timeActivatedFileUpdateFunctionObject; } diff --git a/src/postProcessing/functionObjects/utilities/turbulenceFields/IOturbulenceFields.H b/src/postProcessing/functionObjects/utilities/turbulenceFields/IOturbulenceFields.H index c6005f8e37bc114edfcf4bb0224872a4dd3d065b..da664cdb78757bf427a808aa9a29fcdc1d98b021 100644 --- a/src/postProcessing/functionObjects/utilities/turbulenceFields/IOturbulenceFields.H +++ b/src/postProcessing/functionObjects/utilities/turbulenceFields/IOturbulenceFields.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,8 @@ Description namespace Foam { - typedef IOOutputFilter<turbulenceFields> IOturbulenceFields; + typedef IOOutputFilter<functionObjects::turbulenceFields> + IOturbulenceFields; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.C b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.C index 85c33035e5d0645eb0a5d24c78febb93831abe11..158622444958f3b8d5aa8956d3ecc3ce53f5b6e6 100644 --- a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.C +++ b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,44 +31,66 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(turbulenceFields, 0); - - template<> - const char* NamedEnum<turbulenceFields::compressibleField, 8>::names[] = - { - "k", - "epsilon", - "mut", - "muEff", - "alphat", - "alphaEff", - "R", - "devRhoReff" - }; - const NamedEnum<turbulenceFields::compressibleField, 8> - turbulenceFields::compressibleFieldNames_; - - template<> - const char* NamedEnum<turbulenceFields::incompressibleField, 6>::names[] = - { - "k", - "epsilon", - "nut", - "nuEff", - "R", - "devReff" - }; - const NamedEnum<turbulenceFields::incompressibleField, 6> - turbulenceFields::incompressibleFieldNames_; - - const word turbulenceFields::modelName = turbulenceModel::propertiesName; +} } +template<> +const char* Foam::NamedEnum +< + Foam::functionObjects::turbulenceFields::compressibleField, + 8 +>::names[] = +{ + "k", + "epsilon", + "mut", + "muEff", + "alphat", + "alphaEff", + "R", + "devRhoReff" +}; + +const Foam::NamedEnum +< + Foam::functionObjects::turbulenceFields::compressibleField, + 8 +> Foam::functionObjects::turbulenceFields::compressibleFieldNames_; + +template<> +const char* Foam::NamedEnum +< + Foam::functionObjects::turbulenceFields::incompressibleField, + 6 +>::names[] = +{ + "k", + "epsilon", + "nut", + "nuEff", + "R", + "devReff" +}; + +const Foam::NamedEnum +< + Foam::functionObjects::turbulenceFields::incompressibleField, + 6 +> Foam::functionObjects::turbulenceFields::incompressibleFieldNames_; + +const Foam::word Foam::functionObjects::turbulenceFields::modelName +( + Foam::turbulenceModel::propertiesName +); + // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // -bool Foam::turbulenceFields::compressible() +bool Foam::functionObjects::turbulenceFields::compressible() { if (obr_.foundObject<compressible::turbulenceModel>(modelName)) { @@ -80,9 +102,9 @@ bool Foam::turbulenceFields::compressible() } else { - WarningInFunction - << "Turbulence model not found in database, deactivating"; - active_ = false; + FatalErrorInFunction + << "Turbulence model not found in database, deactivating" + << exit(FatalError); } return false; @@ -91,7 +113,7 @@ bool Foam::turbulenceFields::compressible() // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::turbulenceFields::turbulenceFields +Foam::functionObjects::turbulenceFields::turbulenceFields ( const word& name, const objectRegistry& obr, @@ -101,65 +123,74 @@ Foam::turbulenceFields::turbulenceFields : name_(name), obr_(obr), - active_(true), fieldSet_() { - // Check if the available mesh is an fvMesh otherise deactivate - if (isA<fvMesh>(obr_)) + read(dict); +} + + +bool Foam::functionObjects::turbulenceFields::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + if (!isA<fvMesh>(obr)) + { + return false; + } + + if + ( + obr.foundObject<compressible::turbulenceModel>(modelName) + || obr.foundObject<incompressible::turbulenceModel>(modelName) + ) { - read(dict); + return true; } else { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ - << endl; + return false; } } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::turbulenceFields::~turbulenceFields() +Foam::functionObjects::turbulenceFields::~turbulenceFields() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::turbulenceFields::read(const dictionary& dict) +void Foam::functionObjects::turbulenceFields::read(const dictionary& dict) { - if (active_) - { - fieldSet_.insert(wordList(dict.lookup("fields"))); + fieldSet_.insert(wordList(dict.lookup("fields"))); - Info<< type() << " " << name_ << ": "; - if (fieldSet_.size()) - { - Info<< "storing fields:" << nl; - forAllConstIter(wordHashSet, fieldSet_, iter) - { - Info<< " " << modelName << ':' << iter.key() << nl; - } - Info<< endl; - } - else + Info<< type() << " " << name_ << ": "; + if (fieldSet_.size()) + { + Info<< "storing fields:" << nl; + forAllConstIter(wordHashSet, fieldSet_, iter) { - Info<< "no fields requested to be stored" << nl << endl; + Info<< " " << modelName << ':' << iter.key() << nl; } + Info<< endl; + } + else + { + Info<< "no fields requested to be stored" << nl << endl; } } -void Foam::turbulenceFields::execute() +void Foam::functionObjects::turbulenceFields::execute() { bool comp = compressible(); - if (!active_) - { - return; - } - if (comp) { const compressible::turbulenceModel& model = @@ -269,20 +300,17 @@ void Foam::turbulenceFields::execute() } -void Foam::turbulenceFields::end() +void Foam::functionObjects::turbulenceFields::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::turbulenceFields::timeSet() +void Foam::functionObjects::turbulenceFields::timeSet() {} -void Foam::turbulenceFields::write() +void Foam::functionObjects::turbulenceFields::write() {} diff --git a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.H b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.H index af37dc1cbcb9e4498ce1b2e32ca8a3ea1eaedd70..c31eaceca40f156f7afec5bd5441ed90eb1022cf 100644 --- a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.H +++ b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFields.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::turbulenceFields + Foam::functionObjects::turbulenceFields Group grpFieldFunctionObjects @@ -103,6 +103,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class turbulenceFields Declaration \*---------------------------------------------------------------------------*/ @@ -147,9 +150,6 @@ protected: const objectRegistry& obr_; - //- on/off switch - bool active_; - //- Fields to load wordHashSet fieldSet_; @@ -197,6 +197,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~turbulenceFields(); @@ -237,6 +247,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsFunctionObject.H b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsFunctionObject.H index e9e393d170dc17a59365d7b3e0fdffe81add1a28..6d600f7ce72aff37e897a0b58338e379113a2733 100644 --- a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<turbulenceFields> + typedef OutputFilterFunctionObject<functionObjects::turbulenceFields> turbulenceFieldsFunctionObject; } diff --git a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsTemplates.C b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsTemplates.C index 727917928acd49e6637a6930b542a8b2ff86df21..b8c2b6440f314ffcf88b9555bbefd80a998d64f3 100644 --- a/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsTemplates.C +++ b/src/postProcessing/functionObjects/utilities/turbulenceFields/turbulenceFieldsTemplates.C @@ -28,7 +28,7 @@ License // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // template<class Type> -void Foam::turbulenceFields::processField +void Foam::functionObjects::turbulenceFields::processField ( const word& fieldName, const tmp<GeometricField<Type, fvPatchField, volMesh>>& tvalue diff --git a/src/postProcessing/functionObjects/utilities/vorticity/IOvorticity.H b/src/postProcessing/functionObjects/utilities/vorticity/IOvorticity.H index c2ac753b1fbe5d82186792db82ca3921b8e78871..1d04fae2f8f6fd793af2d26b12f9405729d84b10 100644 --- a/src/postProcessing/functionObjects/utilities/vorticity/IOvorticity.H +++ b/src/postProcessing/functionObjects/utilities/vorticity/IOvorticity.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,7 @@ Description namespace Foam { - typedef IOOutputFilter<vorticity> IOvorticity; + typedef IOOutputFilter<functionObjects::vorticity> IOvorticity; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/vorticity/vorticity.C b/src/postProcessing/functionObjects/utilities/vorticity/vorticity.C index 6d22f5a97729912007b4bc62e7e5464306c87c6d..fd45701ecf2bcacb13f3fb3edc02e9b25365db48 100644 --- a/src/postProcessing/functionObjects/utilities/vorticity/vorticity.C +++ b/src/postProcessing/functionObjects/utilities/vorticity/vorticity.C @@ -31,14 +31,17 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(vorticity, 0); } +} // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::vorticity::vorticity +Foam::functionObjects::vorticity::vorticity ( const word& name, const objectRegistry& obr, @@ -48,113 +51,98 @@ Foam::vorticity::vorticity : name_(name), obr_(obr), - active_(true), UName_("U"), outputName_(typeName) { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } - read(dict); - if (active_) - { - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - volVectorField* vorticityPtr + volVectorField* vorticityPtr + ( + new volVectorField ( - new volVectorField + IOobject ( - IOobject - ( - outputName_, - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), + outputName_, + mesh.time().timeName(), mesh, - dimensionedVector("0", dimless/dimTime, Zero) - ) - ); + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedVector("0", dimless/dimTime, Zero) + ) + ); + + mesh.objectRegistry::store(vorticityPtr); +} - mesh.objectRegistry::store(vorticityPtr); - } + +bool Foam::functionObjects::vorticity::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::vorticity::~vorticity() +Foam::functionObjects::vorticity::~vorticity() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::vorticity::read(const dictionary& dict) +void Foam::functionObjects::vorticity::read(const dictionary& dict) { - if (active_) + UName_ = dict.lookupOrDefault<word>("UName", "U"); + if (UName_ != "U") { - UName_ = dict.lookupOrDefault<word>("UName", "U"); - if (UName_ != "U") - { - outputName_ = typeName + "(" + UName_ + ")"; - } + outputName_ = typeName + "(" + UName_ + ")"; } } -void Foam::vorticity::execute() +void Foam::functionObjects::vorticity::execute() { - if (active_) - { - const volVectorField& U = obr_.lookupObject<volVectorField>(UName_); + const volVectorField& U = obr_.lookupObject<volVectorField>(UName_); - volVectorField& vorticity = - const_cast<volVectorField&> - ( - obr_.lookupObject<volVectorField>(outputName_) - ); + volVectorField& vorticity = const_cast<volVectorField&> + ( + obr_.lookupObject<volVectorField>(outputName_) + ); - vorticity = fvc::curl(U); - } + vorticity = fvc::curl(U); } -void Foam::vorticity::end() +void Foam::functionObjects::vorticity::end() { - if (active_) - { - execute(); - } + execute(); } -void Foam::vorticity::timeSet() -{ - // Do nothing -} +void Foam::functionObjects::vorticity::timeSet() +{} -void Foam::vorticity::write() +void Foam::functionObjects::vorticity::write() { - if (active_) - { - const volVectorField& vorticity = - obr_.lookupObject<volVectorField>(outputName_); + const volVectorField& vorticity = + obr_.lookupObject<volVectorField>(outputName_); - Info<< type() << " " << name_ << " output:" << nl - << " writing field " << vorticity.name() << nl - << endl; + Info<< type() << " " << name_ << " output:" << nl + << " writing field " << vorticity.name() << nl + << endl; - vorticity.write(); - } + vorticity.write(); } diff --git a/src/postProcessing/functionObjects/utilities/vorticity/vorticity.H b/src/postProcessing/functionObjects/utilities/vorticity/vorticity.H index bce5d943ebc1a1390cda05422b706c5565f80419..dd6a7dff0744240f91bb3ffa2ffcc28e0683d1f6 100644 --- a/src/postProcessing/functionObjects/utilities/vorticity/vorticity.H +++ b/src/postProcessing/functionObjects/utilities/vorticity/vorticity.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::vorticity + Foam::functionObjects::vorticity Group grpUtilitiesFunctionObjects @@ -52,6 +52,9 @@ class dictionary; class polyMesh; class mapPolyMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class vorticity Declaration \*---------------------------------------------------------------------------*/ @@ -66,9 +69,6 @@ class vorticity //- Reference to the database const objectRegistry& obr_; - //- On/off switch - bool active_; - //- Name of velocity field, default is "U" word UName_; @@ -103,6 +103,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~vorticity(); @@ -143,6 +153,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/vorticity/vorticityFunctionObject.H b/src/postProcessing/functionObjects/utilities/vorticity/vorticityFunctionObject.H index 765ec1e6f9b73876eed8d76549037068c9e344aa..aee3f04f8e1bd5dc78e6e7407eeac628f91cb474 100644 --- a/src/postProcessing/functionObjects/utilities/vorticity/vorticityFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/vorticity/vorticityFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,8 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<vorticity> vorticityFunctionObject; + typedef OutputFilterFunctionObject<functionObjects::vorticity> + vorticityFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/wallShearStress/IOwallShearStress.H b/src/postProcessing/functionObjects/utilities/wallShearStress/IOwallShearStress.H index c7e453b1d8626d0154171d08119464efa973cef6..3a38e7fc0c8ce781180169cbe1ed4db37386d021 100644 --- a/src/postProcessing/functionObjects/utilities/wallShearStress/IOwallShearStress.H +++ b/src/postProcessing/functionObjects/utilities/wallShearStress/IOwallShearStress.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,7 @@ Description namespace Foam { - typedef IOOutputFilter<wallShearStress> IOwallShearStress; + typedef IOOutputFilter<functionObjects::wallShearStress> IOwallShearStress; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.C b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.C index d64abbf03ca3e3fb54b8bdfb98a298c560d55459..e2160e34311dcb6adc6f2bca9ea2586955c0f4bd 100644 --- a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.C +++ b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.C @@ -33,14 +33,17 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(wallShearStress, 0); } +} // * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // -void Foam::wallShearStress::writeFileHeader(const label i) +void Foam::functionObjects::wallShearStress::writeFileHeader(const label i) { // Add headers to output data writeHeader(file(), "Wall shear stress"); @@ -52,7 +55,7 @@ void Foam::wallShearStress::writeFileHeader(const label i) } -void Foam::wallShearStress::calcShearStress +void Foam::functionObjects::wallShearStress::calcShearStress ( const fvMesh& mesh, const volSymmTensorField& Reff, @@ -91,7 +94,7 @@ void Foam::wallShearStress::calcShearStress // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::wallShearStress::wallShearStress +Foam::functionObjects::wallShearStress::wallShearStress ( const word& name, const objectRegistry& obr, @@ -102,194 +105,180 @@ Foam::wallShearStress::wallShearStress functionObjectFiles(obr, name, typeName), name_(name), obr_(obr), - active_(true), log_(true), patchSet_() { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } + const fvMesh& mesh = refCast<const fvMesh>(obr_); - if (active_) - { - const fvMesh& mesh = refCast<const fvMesh>(obr_); - - volVectorField* wallShearStressPtr + volVectorField* wallShearStressPtr + ( + new volVectorField ( - new volVectorField + IOobject ( - IOobject - ( - type(), - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), + type(), + mesh.time().timeName(), mesh, - dimensionedVector - ( - "0", - sqr(dimLength)/sqr(dimTime), - Zero - ) + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedVector + ( + "0", + sqr(dimLength)/sqr(dimTime), + Zero ) - ); + ) + ); - mesh.objectRegistry::store(wallShearStressPtr); - } + mesh.objectRegistry::store(wallShearStressPtr); read(dict); } +bool Foam::functionObjects::wallShearStress::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::wallShearStress::~wallShearStress() +Foam::functionObjects::wallShearStress::~wallShearStress() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::wallShearStress::read(const dictionary& dict) +void Foam::functionObjects::wallShearStress::read(const dictionary& dict) { - if (active_) - { - log_ = dict.lookupOrDefault<Switch>("log", true); + log_ = dict.lookupOrDefault<Switch>("log", true); - const fvMesh& mesh = refCast<const fvMesh>(obr_); - const polyBoundaryMesh& pbm = mesh.boundaryMesh(); + const fvMesh& mesh = refCast<const fvMesh>(obr_); + const polyBoundaryMesh& pbm = mesh.boundaryMesh(); - patchSet_ = - mesh.boundaryMesh().patchSet - ( - wordReList(dict.lookupOrDefault("patches", wordReList())) - ); + patchSet_ = + mesh.boundaryMesh().patchSet + ( + wordReList(dict.lookupOrDefault("patches", wordReList())) + ); - Info<< type() << " " << name_ << ":" << nl; + Info<< type() << " " << name_ << ":" << nl; - if (patchSet_.empty()) + if (patchSet_.empty()) + { + forAll(pbm, patchi) { - forAll(pbm, patchi) + if (isA<wallPolyPatch>(pbm[patchi])) { - if (isA<wallPolyPatch>(pbm[patchi])) - { - patchSet_.insert(patchi); - } + patchSet_.insert(patchi); } - - Info<< " processing all wall patches" << nl << endl; } - else + + Info<< " processing all wall patches" << nl << endl; + } + else + { + Info<< " processing wall patches: " << nl; + labelHashSet filteredPatchSet; + forAllConstIter(labelHashSet, patchSet_, iter) { - Info<< " processing wall patches: " << nl; - labelHashSet filteredPatchSet; - forAllConstIter(labelHashSet, patchSet_, iter) + label patchi = iter.key(); + if (isA<wallPolyPatch>(pbm[patchi])) { - label patchi = iter.key(); - if (isA<wallPolyPatch>(pbm[patchi])) - { - filteredPatchSet.insert(patchi); - Info<< " " << pbm[patchi].name() << endl; - } - else - { - WarningInFunction - << "Requested wall shear stress on non-wall boundary " - << "type patch: " << pbm[patchi].name() << endl; - } + filteredPatchSet.insert(patchi); + Info<< " " << pbm[patchi].name() << endl; } + else + { + WarningInFunction + << "Requested wall shear stress on non-wall boundary " + << "type patch: " << pbm[patchi].name() << endl; + } + } - Info<< endl; + Info<< endl; - patchSet_ = filteredPatchSet; - } + patchSet_ = filteredPatchSet; } } -void Foam::wallShearStress::execute() +void Foam::functionObjects::wallShearStress::execute() { typedef compressible::turbulenceModel cmpModel; typedef incompressible::turbulenceModel icoModel; - if (active_) - { - functionObjectFiles::write(); - - const fvMesh& mesh = refCast<const fvMesh>(obr_); - - volVectorField& wallShearStress = - const_cast<volVectorField&> - ( - mesh.lookupObject<volVectorField>(type()) - ); + functionObjectFiles::write(); - if (log_) Info<< type() << " " << name_ << " output:" << nl; + const fvMesh& mesh = refCast<const fvMesh>(obr_); + volVectorField& wallShearStress = + const_cast<volVectorField&> + ( + mesh.lookupObject<volVectorField>(type()) + ); - tmp<volSymmTensorField> Reff; - if (mesh.foundObject<cmpModel>(turbulenceModel::propertiesName)) - { - const cmpModel& model = - mesh.lookupObject<cmpModel>(turbulenceModel::propertiesName); + if (log_) Info<< type() << " " << name_ << " output:" << nl; - Reff = model.devRhoReff(); - } - else if (mesh.foundObject<icoModel>(turbulenceModel::propertiesName)) - { - const icoModel& model = - mesh.lookupObject<icoModel>(turbulenceModel::propertiesName); - Reff = model.devReff(); - } - else - { - FatalErrorInFunction - << "Unable to find turbulence model in the " - << "database" << exit(FatalError); - } + tmp<volSymmTensorField> Reff; + if (mesh.foundObject<cmpModel>(turbulenceModel::propertiesName)) + { + const cmpModel& model = + mesh.lookupObject<cmpModel>(turbulenceModel::propertiesName); - calcShearStress(mesh, Reff(), wallShearStress); + Reff = model.devRhoReff(); } -} - + else if (mesh.foundObject<icoModel>(turbulenceModel::propertiesName)) + { + const icoModel& model = + mesh.lookupObject<icoModel>(turbulenceModel::propertiesName); -void Foam::wallShearStress::end() -{ - if (active_) + Reff = model.devReff(); + } + else { - execute(); + FatalErrorInFunction + << "Unable to find turbulence model in the " + << "database" << exit(FatalError); } + + calcShearStress(mesh, Reff(), wallShearStress); } -void Foam::wallShearStress::timeSet() +void Foam::functionObjects::wallShearStress::end() { - // Do nothing + execute(); } -void Foam::wallShearStress::write() +void Foam::functionObjects::wallShearStress::timeSet() +{} + + +void Foam::functionObjects::wallShearStress::write() { - if (active_) - { - functionObjectFiles::write(); + functionObjectFiles::write(); - const volVectorField& wallShearStress = - obr_.lookupObject<volVectorField>(type()); + const volVectorField& wallShearStress = + obr_.lookupObject<volVectorField>(type()); - if (log_) Info<< type() << " " << name_ << " output:" << nl - << " writing field " << wallShearStress.name() << nl - << endl; + if (log_) Info<< type() << " " << name_ << " output:" << nl + << " writing field " << wallShearStress.name() << nl + << endl; - wallShearStress.write(); - } + wallShearStress.write(); } diff --git a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.H b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.H index b99c08ad6f6299d690a93cfabb0b9658f2991e69..519851b4a4a0a13e1a1156da36dca492372775b0 100644 --- a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.H +++ b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::wallShearStress + Foam::functionObjects::wallShearStress Group grpUtilitiesFunctionObjects @@ -90,6 +90,9 @@ class polyMesh; class mapPolyMesh; class fvMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class wallShearStress Declaration \*---------------------------------------------------------------------------*/ @@ -107,9 +110,6 @@ protected: const objectRegistry& obr_; - //- on/off switch - bool active_; - //- Switch to send output to Info as well as to file Switch log_; @@ -160,6 +160,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~wallShearStress(); @@ -200,6 +210,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStressFunctionObject.H b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStressFunctionObject.H index 6b0dfc47f4894e04f98fed53a86af7c757290a0d..5e15293c548da2ff003335b5049fe25b4e9a7b99 100644 --- a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStressFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStressFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<wallShearStress> + typedef OutputFilterFunctionObject<functionObjects::wallShearStress> wallShearStressFunctionObject; } diff --git a/src/postProcessing/functionObjects/utilities/yPlus/IOyPlus.H b/src/postProcessing/functionObjects/utilities/yPlus/IOyPlus.H index dc2eaef11e7a628a6c51e93b2365ce912964b190..9276c243ee8929be4d853cffc6ba0e01b8d72041 100644 --- a/src/postProcessing/functionObjects/utilities/yPlus/IOyPlus.H +++ b/src/postProcessing/functionObjects/utilities/yPlus/IOyPlus.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,7 +39,7 @@ Description namespace Foam { - typedef IOOutputFilter<yPlus> IOyPlus; + typedef IOOutputFilter<functionObjects::yPlus> IOyPlus; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/yPlus/yPlus.C b/src/postProcessing/functionObjects/utilities/yPlus/yPlus.C index d5242319e27bbda40561d8aa45dd9daa84b697f8..9b6289a814f814fbd2ffa47dc9ca3a87fe3facb3 100644 --- a/src/postProcessing/functionObjects/utilities/yPlus/yPlus.C +++ b/src/postProcessing/functionObjects/utilities/yPlus/yPlus.C @@ -31,14 +31,17 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam +{ +namespace functionObjects { defineTypeNameAndDebug(yPlus, 0); } +} // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -void Foam::yPlus::writeFileHeader(const label i) +void Foam::functionObjects::yPlus::writeFileHeader(const label i) { writeHeader(file(), "y+ ()"); @@ -53,7 +56,7 @@ void Foam::yPlus::writeFileHeader(const label i) // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::yPlus::yPlus +Foam::functionObjects::yPlus::yPlus ( const word& name, const objectRegistry& obr, @@ -64,135 +67,121 @@ Foam::yPlus::yPlus functionObjectFiles(obr, name, typeName), name_(name), obr_(obr), - active_(true), log_(true), phiName_("phi") { - // Check if the available mesh is an fvMesh, otherwise deactivate - if (!isA<fvMesh>(obr_)) - { - active_ = false; - WarningInFunction - << "No fvMesh available, deactivating " << name_ << nl - << endl; - } - - if (active_) - { - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - volScalarField* yPlusPtr + volScalarField* yPlusPtr + ( + new volScalarField ( - new volScalarField + IOobject ( - IOobject - ( - type(), - mesh.time().timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), + type(), + mesh.time().timeName(), mesh, - dimensionedScalar("0", dimless, 0.0) - ) - ); + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar("0", dimless, 0.0) + ) + ); + + mesh.objectRegistry::store(yPlusPtr); +} - mesh.objectRegistry::store(yPlusPtr); - } + +bool Foam::functionObjects::yPlus::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); } // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::yPlus::~yPlus() +Foam::functionObjects::yPlus::~yPlus() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::yPlus::read(const dictionary& dict) +void Foam::functionObjects::yPlus::read(const dictionary& dict) { - if (active_) - { - log_ = dict.lookupOrDefault<Switch>("log", true); - phiName_ = dict.lookupOrDefault<word>("phiName", "phi"); - } + log_ = dict.lookupOrDefault<Switch>("log", true); + phiName_ = dict.lookupOrDefault<word>("phiName", "phi"); } -void Foam::yPlus::execute() +void Foam::functionObjects::yPlus::execute() { typedef compressible::turbulenceModel cmpModel; typedef incompressible::turbulenceModel icoModel; - if (active_) - { - functionObjectFiles::write(); + functionObjectFiles::write(); - const fvMesh& mesh = refCast<const fvMesh>(obr_); + const fvMesh& mesh = refCast<const fvMesh>(obr_); - volScalarField& yPlus = - const_cast<volScalarField&> - ( - mesh.lookupObject<volScalarField>(type()) - ); - - if (log_) Info<< type() << " " << name_ << " output:" << nl; - - tmp<volSymmTensorField> Reff; - if (mesh.foundObject<cmpModel>(turbulenceModel::propertiesName)) - { - const cmpModel& model = - mesh.lookupObject<cmpModel>(turbulenceModel::propertiesName); - - calcYPlus(model, mesh, yPlus); - } - else if (mesh.foundObject<icoModel>(turbulenceModel::propertiesName)) - { - const icoModel& model = - mesh.lookupObject<icoModel>(turbulenceModel::propertiesName); - - calcYPlus(model, mesh, yPlus); - } - else - { - FatalErrorInFunction - << "Unable to find turbulence model in the " - << "database" << exit(FatalError); - } - } -} + volScalarField& yPlus = + const_cast<volScalarField&> + ( + mesh.lookupObject<volScalarField>(type()) + ); + if (log_) Info<< type() << " " << name_ << " output:" << nl; -void Foam::yPlus::end() -{ - if (active_) + tmp<volSymmTensorField> Reff; + if (mesh.foundObject<cmpModel>(turbulenceModel::propertiesName)) + { + const cmpModel& model = + mesh.lookupObject<cmpModel>(turbulenceModel::propertiesName); + + calcYPlus(model, mesh, yPlus); + } + else if (mesh.foundObject<icoModel>(turbulenceModel::propertiesName)) { - execute(); + const icoModel& model = + mesh.lookupObject<icoModel>(turbulenceModel::propertiesName); + + calcYPlus(model, mesh, yPlus); + } + else + { + FatalErrorInFunction + << "Unable to find turbulence model in the " + << "database" << exit(FatalError); } } -void Foam::yPlus::timeSet() +void Foam::functionObjects::yPlus::end() { - // Do nothing + execute(); } -void Foam::yPlus::write() +void Foam::functionObjects::yPlus::timeSet() +{} + + +void Foam::functionObjects::yPlus::write() { - if (active_) - { - functionObjectFiles::write(); + functionObjectFiles::write(); - const volScalarField& yPlus = - obr_.lookupObject<volScalarField>(type()); + const volScalarField& yPlus = + obr_.lookupObject<volScalarField>(type()); - if (log_) Info<< " writing field " << yPlus.name() << nl << endl; + if (log_) Info<< " writing field " << yPlus.name() << nl << endl; - yPlus.write(); - } + yPlus.write(); } diff --git a/src/postProcessing/functionObjects/utilities/yPlus/yPlus.H b/src/postProcessing/functionObjects/utilities/yPlus/yPlus.H index e1653107cd73a7a2dcc27cadb059ba19ada6ac25..7b026d977135387bf0f5caea98173d4c5ad61ee7 100644 --- a/src/postProcessing/functionObjects/utilities/yPlus/yPlus.H +++ b/src/postProcessing/functionObjects/utilities/yPlus/yPlus.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::yPlus + Foam::functionObjects::yPlus Group grpUtilitiesFunctionObjects @@ -57,6 +57,9 @@ class polyMesh; class mapPolyMesh; class fvMesh; +namespace functionObjects +{ + /*---------------------------------------------------------------------------*\ Class yPlus Declaration \*---------------------------------------------------------------------------*/ @@ -72,9 +75,6 @@ class yPlus const objectRegistry& obr_; - //- on/off switch - bool active_; - //- Switch to send output to Info as well as to file Switch log_; @@ -121,6 +121,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~yPlus(); @@ -161,6 +171,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +} // End namespace functionObjects } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/yPlus/yPlusFunctionObject.H b/src/postProcessing/functionObjects/utilities/yPlus/yPlusFunctionObject.H index dd54426043a5f337ad3ff4710880ccd1b7544e99..7075ea2729dfca5f923e30eb4b7ce243fc5384b9 100644 --- a/src/postProcessing/functionObjects/utilities/yPlus/yPlusFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/yPlus/yPlusFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,8 @@ SourceFiles namespace Foam { - typedef OutputFilterFunctionObject<yPlus> yPlusFunctionObject; + typedef OutputFilterFunctionObject<functionObjects::yPlus> + yPlusFunctionObject; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/yPlus/yPlusTemplates.C b/src/postProcessing/functionObjects/utilities/yPlus/yPlusTemplates.C index 189a6b3d9f9433e8296f2ed005d82ede2771f66b..6577f516819a8b043e09eda9539e430f5ee6aba4 100644 --- a/src/postProcessing/functionObjects/utilities/yPlus/yPlusTemplates.C +++ b/src/postProcessing/functionObjects/utilities/yPlus/yPlusTemplates.C @@ -31,7 +31,7 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // template<class TurbulenceModel> -void Foam::yPlus::calcYPlus +void Foam::functionObjects::yPlus::calcYPlus ( const TurbulenceModel& turbulenceModel, const fvMesh& mesh, diff --git a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C index 5534767806434bb1a6cb752eb49630f37318cbc3..8e01df73ef6d50a24765884490642c85f8d87e17 100644 --- a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C +++ b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -135,15 +135,11 @@ noPyrolysis::~noPyrolysis() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // void noPyrolysis::preEvolveRegion() -{ - //Do nothing -} +{} void noPyrolysis::evolveRegion() -{ - //Do nothing -} +{} const volScalarField& noPyrolysis::rho() const diff --git a/src/sampling/meshToMesh0/meshToMesh0Templates.C b/src/sampling/meshToMesh0/meshToMesh0Templates.C index e4d4f49ab56a561dd8de7f5f35f71bd8cadc5da0..2eae59e4fc4fbaafba9882a72a0e11c96d213591 100644 --- a/src/sampling/meshToMesh0/meshToMesh0Templates.C +++ b/src/sampling/meshToMesh0/meshToMesh0Templates.C @@ -303,7 +303,6 @@ void Foam::meshToMesh0::interpolate } case CELL_VOLUME_WEIGHT: { - // Do nothing break; } diff --git a/src/sampling/probes/patchProbes.C b/src/sampling/probes/patchProbes.C index 0d4acb2de6d6e189618858dc5d4003666d4e839c..0541cd5c7e3ed7c112fac59fb280ea41c938b7a8 100644 --- a/src/sampling/probes/patchProbes.C +++ b/src/sampling/probes/patchProbes.C @@ -202,6 +202,18 @@ Foam::patchProbes::patchProbes } +bool Foam::patchProbes::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + return true; +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::patchProbes::~patchProbes() diff --git a/src/sampling/probes/patchProbes.H b/src/sampling/probes/patchProbes.H index 7ee2e796d0bf48446fe6bbd80d4950402543b93f..447463ebe97f4e443306848e55a87918719e98fc 100644 --- a/src/sampling/probes/patchProbes.H +++ b/src/sampling/probes/patchProbes.H @@ -138,6 +138,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~patchProbes(); diff --git a/src/sampling/probes/probes.C b/src/sampling/probes/probes.C index 8d4b50f97f612632e4b0f34236084a5b74345585..661bba6a4dd7ff391ed0d93ecf0b8268d840a113 100644 --- a/src/sampling/probes/probes.C +++ b/src/sampling/probes/probes.C @@ -287,6 +287,18 @@ Foam::probes::probes } +bool Foam::probes::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + return true; +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::probes::~probes() @@ -296,21 +308,15 @@ Foam::probes::~probes() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void Foam::probes::execute() -{ - // Do nothing - only valid on write -} +{} void Foam::probes::end() -{ - // Do nothing - only valid on write -} +{} void Foam::probes::timeSet() -{ - // Do nothing - only valid on write -} +{} void Foam::probes::write() diff --git a/src/sampling/probes/probes.H b/src/sampling/probes/probes.H index 2d7e8c1d767bc5c20f2836d452138030aa98e219..18de7b51510f1a5a008656459101948180f80afc 100644 --- a/src/sampling/probes/probes.H +++ b/src/sampling/probes/probes.H @@ -210,6 +210,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~probes(); diff --git a/src/sampling/sampledSet/sampledSets/sampledSets.C b/src/sampling/sampledSet/sampledSets/sampledSets.C index 538249d1afc7c64f3294ccba2427d08e3a839afd..1a0723762fd21b79db96fd9138b112f94fe7e122 100644 --- a/src/sampling/sampledSet/sampledSets/sampledSets.C +++ b/src/sampling/sampledSet/sampledSets/sampledSets.C @@ -162,6 +162,18 @@ Foam::sampledSets::sampledSets } +bool Foam::sampledSets::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + return true; +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::sampledSets::~sampledSets() @@ -177,21 +189,15 @@ void Foam::sampledSets::verbose(const bool verbosity) void Foam::sampledSets::execute() -{ - // Do nothing - only valid on write -} +{} void Foam::sampledSets::end() -{ - // Do nothing - only valid on write -} +{} void Foam::sampledSets::timeSet() -{ - // Do nothing - only valid on write -} +{} void Foam::sampledSets::write() diff --git a/src/sampling/sampledSet/sampledSets/sampledSets.H b/src/sampling/sampledSet/sampledSets/sampledSets.H index 26e494c28d3b8da0f703c53be3337fc693a7e01e..332efc2e533a33275dfb9a5895580c3b5e979440 100644 --- a/src/sampling/sampledSet/sampledSets/sampledSets.H +++ b/src/sampling/sampledSet/sampledSets/sampledSets.H @@ -266,6 +266,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~sampledSets(); diff --git a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C index 220a61baee674efb9babf13b088fe7719637d49e..41ac7b56e1411202df6bc6f363dd32ac4bf97f05 100644 --- a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C +++ b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -115,6 +115,19 @@ Foam::sampledSurfaces::sampledSurfaces } +bool Foam::sampledSurfaces::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + return true; +} + + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::sampledSurfaces::~sampledSurfaces() @@ -130,21 +143,15 @@ void Foam::sampledSurfaces::verbose(const bool verbosity) void Foam::sampledSurfaces::execute() -{ - // Do nothing - only valid on write -} +{} void Foam::sampledSurfaces::end() -{ - // Do nothing - only valid on write -} +{} void Foam::sampledSurfaces::timeSet() -{ - // Do nothing - only valid on write -} +{} void Foam::sampledSurfaces::write() diff --git a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.H b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.H index f2c2430e5a693bb363e699b47637e5a98c3c0f1d..50b6f2710a8bbb4a73f91a20ecd138d16ccfb20b 100644 --- a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.H +++ b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.H @@ -186,6 +186,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~sampledSurfaces(); diff --git a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C index 282c77a8a26156b7f607d64145628aecaca54bdb..866fbe8d2be9daea7968f9988182c942e9622764 100644 --- a/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C +++ b/src/thermophysicalModels/radiation/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.C @@ -136,8 +136,6 @@ updateCoeffs() return; } - // Do nothing - if (debug) { scalar Q = gSum((*this)*patch().magSf()); diff --git a/src/thermophysicalModels/radiation/radiationModels/noRadiation/noRadiation.C b/src/thermophysicalModels/radiation/radiationModels/noRadiation/noRadiation.C index e89127328ad83f30dc10977a07a1979cce5c9abf..c3233d5ebde0c2849e8ec58e9247dd1dca2c46f2 100644 --- a/src/thermophysicalModels/radiation/radiationModels/noRadiation/noRadiation.C +++ b/src/thermophysicalModels/radiation/radiationModels/noRadiation/noRadiation.C @@ -75,9 +75,7 @@ bool Foam::radiation::noRadiation::read() void Foam::radiation::noRadiation::calculate() -{ - // Do nothing -} +{} Foam::tmp<Foam::volScalarField> Foam::radiation::noRadiation::Rp() const diff --git a/src/thermophysicalModels/radiation/radiationModels/opaqueSolid/opaqueSolid.C b/src/thermophysicalModels/radiation/radiationModels/opaqueSolid/opaqueSolid.C index dd5b0268db018bca575cc9ba0cf5aa3a74431c80..740b9a94bbee499e4b76dc75ee129252cf5b3acb 100644 --- a/src/thermophysicalModels/radiation/radiationModels/opaqueSolid/opaqueSolid.C +++ b/src/thermophysicalModels/radiation/radiationModels/opaqueSolid/opaqueSolid.C @@ -76,9 +76,7 @@ bool Foam::radiation::opaqueSolid::read() void Foam::radiation::opaqueSolid::calculate() -{ - // Do nothing -} +{} Foam::tmp<Foam::volScalarField> Foam::radiation::opaqueSolid::Rp() const diff --git a/src/thermophysicalModels/radiation/submodels/sootModel/noSoot/noSoot.C b/src/thermophysicalModels/radiation/submodels/sootModel/noSoot/noSoot.C index 7b621ac7e3b415d90215d92a9edbed03a89511f3..42429fc5c727c0b4cf0afde945491dc80db00711 100644 --- a/src/thermophysicalModels/radiation/submodels/sootModel/noSoot/noSoot.C +++ b/src/thermophysicalModels/radiation/submodels/sootModel/noSoot/noSoot.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -61,9 +61,7 @@ Foam::radiation::noSoot::~noSoot() void Foam::radiation::noSoot::correct() -{ - //Do nothing -} +{} const Foam::volScalarField& Foam::radiation::noSoot::soot() const { diff --git a/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.C b/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.C index 39e5e308da3ee4c7e9b86b5638193fae0861714f..f7d8bb51ab74f8ad314230a00ed8895610f9d4ad 100644 --- a/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.C +++ b/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.C @@ -102,6 +102,20 @@ Foam::moleFractions<ThermoType>::moleFractions } +template<class ThermoType> +bool Foam::moleFractions<ThermoType>::viable +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +{ + // Construction is viable if the available mesh is an fvMesh + return isA<fvMesh>(obr); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // template<class ThermoType> diff --git a/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.H b/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.H index 05c7fa416a59a9f06cb72b1517f726bea36c15f4..7e6beb8c19f2e127ebfff92b213decd7ad427662 100644 --- a/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.H +++ b/src/thermophysicalModels/reactionThermo/functionObjects/moleFractions/moleFractions.H @@ -119,6 +119,16 @@ public: const bool loadFromFiles = false ); + //- Return true if the construction of this functionObject is viable + // i.e. the prerequisites for construction are available + static bool viable + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + //- Destructor virtual ~moleFractions();