From 1f524ef51b4ed9f1e4c1fb9de318cb3f4014b372 Mon Sep 17 00:00:00 2001 From: andy Date: Mon, 9 Dec 2013 09:37:34 +0000 Subject: [PATCH] ENH: Updated cloud function objects --- .../CloudFunctionObject/CloudFunctionObject.C | 35 ++++++++++++++++--- .../CloudFunctionObject/CloudFunctionObject.H | 29 +++++++++++---- .../CloudFunctionObjectNew.C | 26 ++++++++++---- .../CloudFunctionObjectList.C | 8 ++++- .../FacePostProcessing/FacePostProcessing.C | 35 ++++++------------- .../FacePostProcessing/FacePostProcessing.H | 12 ++++--- .../ParticleCollector/ParticleCollector.C | 30 ++++------------ .../ParticleCollector/ParticleCollector.H | 10 +++--- .../ParticleErosion/ParticleErosion.C | 7 ++-- .../ParticleErosion/ParticleErosion.H | 9 +++-- .../ParticleTracks/ParticleTracks.C | 7 ++-- .../ParticleTracks/ParticleTracks.H | 9 +++-- .../ParticleTrap/ParticleTrap.C | 7 ++-- .../ParticleTrap/ParticleTrap.H | 12 +++++-- .../PatchPostProcessing/PatchPostProcessing.C | 24 +++---------- .../PatchPostProcessing/PatchPostProcessing.H | 9 +++-- .../VoidFraction/VoidFraction.C | 7 ++-- .../VoidFraction/VoidFraction.H | 9 +++-- 18 files changed, 167 insertions(+), 118 deletions(-) diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C index 4935aa7b3d..199023cfc5 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C @@ -39,7 +39,8 @@ void Foam::CloudFunctionObject::write() template Foam::CloudFunctionObject::CloudFunctionObject(CloudType& owner) : - SubModelBase(owner) + CloudSubModelBase(owner), + outputDir_() {} @@ -48,11 +49,28 @@ Foam::CloudFunctionObject::CloudFunctionObject ( const dictionary& dict, CloudType& owner, - const word& type + const word& modelName, + const word& objectType ) : - SubModelBase(owner, dict, typeName, type, "") -{} + CloudSubModelBase(modelName, owner, dict, typeName, objectType), + outputDir_(owner.mesh().time().path()) +{ + const fileName relPath = + "postProcessing"/cloud::prefix/owner.name()/this->modelName(); + + + if (Pstream::parRun()) + { + // Put in undecomposed case (Note: gives problems for + // distributed data running) + outputDir_ = outputDir_/".."/relPath; + } + else + { + outputDir_ = outputDir_/relPath; + } +} template @@ -61,7 +79,7 @@ Foam::CloudFunctionObject::CloudFunctionObject const CloudFunctionObject& ppm ) : - SubModelBase(ppm) + CloudSubModelBase(ppm) {} @@ -131,6 +149,13 @@ void Foam::CloudFunctionObject::postFace } +template +const Foam::fileName& Foam::CloudFunctionObject::outputDir() const +{ + return outputDir_; +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #include "CloudFunctionObjectNew.C" diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H index a9b2be3522..90996706fb 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H @@ -39,7 +39,7 @@ SourceFiles #include "IOdictionary.H" #include "autoPtr.H" #include "runTimeSelectionTables.H" -#include "SubModelBase.H" +#include "CloudSubModelBase.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -56,9 +56,15 @@ class tetIndices; template class CloudFunctionObject : - public SubModelBase + public CloudSubModelBase { - // Protected Member Functions + // Private data + + //- Output path + fileName outputDir_; + + + // Private Member Functions //- Write post-processing info virtual void write(); @@ -77,9 +83,10 @@ public: dictionary, ( const dictionary& dict, - CloudType& owner + CloudType& owner, + const word& modelName ), - (dict, owner) + (dict, owner, modelName) ); @@ -93,7 +100,8 @@ public: ( const dictionary& dict, CloudType& owner, - const word& modelType + const word& objectType, + const word& modelName ); //- Construct copy @@ -118,7 +126,8 @@ public: ( const dictionary& dict, CloudType& owner, - const word& modelType + const word& objectType, + const word& modelName ); @@ -159,6 +168,12 @@ public: const label faceI, bool& keepParticle ); + + + // Input/output + + //- Return the output path + const fileName& outputDir() const; }; diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObjectNew.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObjectNew.C index a67faf4d20..f105d6b3cb 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObjectNew.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObjectNew.C @@ -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-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -33,13 +33,15 @@ Foam::CloudFunctionObject::New ( const dictionary& dict, CloudType& owner, - const word& modelType + const word& objectType, + const word& modelName ) { - Info<< " Selecting cloud function " << modelType << endl; + Info<< " Selecting cloud function " << modelName << " of type " + << objectType << endl; typename dictionaryConstructorTable::iterator cstrIter = - dictionaryConstructorTablePtr_->find(modelType); + dictionaryConstructorTablePtr_->find(objectType); if (cstrIter == dictionaryConstructorTablePtr_->end()) { @@ -48,16 +50,26 @@ Foam::CloudFunctionObject::New "CloudFunctionObject::New" "(" "const dictionary&, " - "CloudType&" + "CloudType&, " + "const word&, " + "const word&" ")" ) << "Unknown cloud function type " - << modelType << nl << nl + << objectType << nl << nl << "Valid cloud function types are:" << nl << dictionaryConstructorTablePtr_->sortedToc() << exit(FatalError); } - return autoPtr >(cstrIter()(dict, owner)); + return autoPtr > + ( + cstrIter() + ( + dict, + owner, + modelName + ) + ); } diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C index 3308cf6228..ed3d5534d0 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C @@ -66,13 +66,19 @@ Foam::CloudFunctionObjectList::CloudFunctionObjectList { const word& modelName = modelNames[i]; + const dictionary& modelDict(dict.subDict(modelName)); + + // read the type of the function object + const word objectType(modelDict.lookup("type")); + this->set ( i, CloudFunctionObject::New ( - dict, + modelDict, owner, + objectType, modelName ) ); diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C index 8c64e1b62f..b123e38291 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.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-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,16 +50,17 @@ void Foam::FacePostProcessing::makeLogFile if (Pstream::master()) { - const fileName logDir = outputDir_/this->owner().time().timeName(); - // Create directory if does not exist - mkDir(logDir); + mkDir(this->outputDir()); // Open new file at start up outputFilePtr_.set ( zoneI, - new OFstream(logDir/(type() + '_' + zoneName + ".dat")) + new OFstream + ( + this->outputDir()/(type() + '_' + zoneName + ".dat") + ) ); outputFilePtr_[zoneI] @@ -201,7 +202,7 @@ void Foam::FacePostProcessing::write() writer->write ( - outputDir_/time.timeName(), + this->outputDir()/time.timeName(), fZone.name(), allPoints, allFaces, @@ -212,7 +213,7 @@ void Foam::FacePostProcessing::write() writer->write ( - outputDir_/time.timeName(), + this->outputDir()/time.timeName(), fZone.name(), allPoints, allFaces, @@ -250,10 +251,11 @@ template Foam::FacePostProcessing::FacePostProcessing ( const dictionary& dict, - CloudType& owner + CloudType& owner, + const word& modelName ) : - CloudFunctionObject(dict, owner, typeName), + CloudFunctionObject(dict, owner, modelName, typeName), faceZoneIDs_(), surfaceFormat_(this->coeffDict().lookup("surfaceFormat")), resetOnWrite_(this->coeffDict().lookup("resetOnWrite")), @@ -263,7 +265,6 @@ Foam::FacePostProcessing::FacePostProcessing massFlowRate_(), log_(this->coeffDict().lookup("log")), outputFilePtr_(), - outputDir_(owner.mesh().time().path()), timeOld_(owner.mesh().time().value()) { wordList faceZoneNames(this->coeffDict().lookup("faceZones")); @@ -273,19 +274,6 @@ Foam::FacePostProcessing::FacePostProcessing outputFilePtr_.setSize(faceZoneNames.size()); - if (Pstream::parRun()) - { - // Put in undecomposed case (Note: gives problems for - // distributed data running) - outputDir_ = - outputDir_/".."/"postProcessing"/cloud::prefix/owner.name(); - } - else - { - outputDir_ = - outputDir_/"postProcessing"/cloud::prefix/owner.name(); - } - DynamicList