From 0477a6edddfa96c19e2e3539a26d497d5dd81135 Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 21 Jan 2010 13:47:48 +0000 Subject: [PATCH] Moved writing of cloud unifrom data from IOPosition to Cloud --- src/lagrangian/basic/Cloud/Cloud.H | 12 ++++ src/lagrangian/basic/Cloud/CloudIO.C | 76 ++++++++++++++++++++ src/lagrangian/basic/IOPosition/IOPosition.C | 70 ------------------ src/lagrangian/basic/IOPosition/IOPosition.H | 12 ---- 4 files changed, 88 insertions(+), 82 deletions(-) diff --git a/src/lagrangian/basic/Cloud/Cloud.H b/src/lagrangian/basic/Cloud/Cloud.H index 626042e68a..b1c1e7abdd 100644 --- a/src/lagrangian/basic/Cloud/Cloud.H +++ b/src/lagrangian/basic/Cloud/Cloud.H @@ -87,6 +87,12 @@ class Cloud //- Initialise cloud on IO constructor void initCloud(const bool checkClass); + //- Read cloud properties dictionary + void readCloudUniformProperties(); + + //- Write cloud properties dictionary + void writeCloudUniformProperties() const; + public: @@ -104,6 +110,12 @@ public: TypeName("Cloud"); + // Static data + + //- Name of cloud properties dictionary + static word cloudPropertiesName; + + // Constructors //- Construct from mesh and a list of particles diff --git a/src/lagrangian/basic/Cloud/CloudIO.C b/src/lagrangian/basic/Cloud/CloudIO.C index ac23db92e4..c4129ba6cd 100644 --- a/src/lagrangian/basic/Cloud/CloudIO.C +++ b/src/lagrangian/basic/Cloud/CloudIO.C @@ -29,11 +29,85 @@ License #include "Time.H" #include "IOPosition.H" +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +template +Foam::word Foam::Cloud::cloudPropertiesName("cloudProperties"); + + // * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // +template +void Foam::Cloud::readCloudUniformProperties() +{ + IOobject uniformPropsDictHeader + ( + cloudPropertiesName, + time().timeName(), + "uniform"/cloud::prefix/name(), + db(), + IOobject::MUST_READ, + IOobject::NO_WRITE, + false + ); + + if (uniformPropsDictHeader.headerOk()) + { + const IOdictionary uniformPropsDict(uniformPropsDictHeader); + + word procName("processor" + Foam::name(Pstream::myProcNo())); + if (uniformPropsDict.found(procName)) + { + uniformPropsDict.subDict(procName).lookup("particleCount") + >> particleCount_; + } + } + else + { + particleCount_ = 0; + } +} + + +template +void Foam::Cloud::writeCloudUniformProperties() const +{ + IOdictionary uniformPropsDict + ( + IOobject + ( + cloudPropertiesName, + time().timeName(), + "uniform"/cloud::prefix/name(), + db(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ) + ); + + labelList np(Pstream::nProcs(), 0); + np[Pstream::myProcNo()] = particleCount_; + + Pstream::listCombineGather(np, maxEqOp