diff --git a/src/combustionModels/psiCombustionModel/psiCombustionModels.C b/src/combustionModels/psiCombustionModel/psiCombustionModels.C
index 925dd612cd2b665a2beb69e491db0feee86afd8a..e8d96e9b63f7b54495820a30c3cceb50d4d50869 100644
--- a/src/combustionModels/psiCombustionModel/psiCombustionModels.C
+++ b/src/combustionModels/psiCombustionModel/psiCombustionModels.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-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -24,9 +24,7 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "makeCombustionTypes.H"
-
 #include "psiCombustionModel.H"
-#include "PaSR.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C
index 5a81174d840967daba454a4979d2102d01f53d94..5764676b2a896686cbf4a85d6faf8605b1807608 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C
@@ -45,7 +45,7 @@ Foam::advectiveFvPatchField<Type>::advectiveFvPatchField
     phiName_("phi"),
     rhoName_("rho"),
     fieldInf_(pTraits<Type>::zero),
-    lInf_(0.0)
+    lInf_(-GREAT)
 {
     this->refValue() = pTraits<Type>::zero;
     this->refGrad() = pTraits<Type>::zero;
@@ -82,7 +82,7 @@ Foam::advectiveFvPatchField<Type>::advectiveFvPatchField
     phiName_(dict.lookupOrDefault<word>("phi", "phi")),
     rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
     fieldInf_(pTraits<Type>::zero),
-    lInf_(0.0)
+    lInf_(-GREAT)
 {
     if (dict.found("value"))
     {
@@ -110,9 +110,13 @@ Foam::advectiveFvPatchField<Type>::advectiveFvPatchField
             (
                 "advectiveFvPatchField<Type>::"
                 "advectiveFvPatchField"
-                "(const fvPatch&, const Field<Type>&, const dictionary&)",
+                "("
+                    "const fvPatch&, "
+                    "const DimensionedField<Type, volMesh>&, "
+                    "const dictionary&"
+                ")",
                 dict
-            )   << "unphysical lInf specified (lInf < 0)\n"
+            )   << "unphysical lInf specified (lInf < 0)" << nl
                 << "    on patch " << this->patch().name()
                 << " of field " << this->dimensionedInternalField().name()
                 << " in file " << this->dimensionedInternalField().objectPath()
@@ -217,7 +221,7 @@ void Foam::advectiveFvPatchField<Type>::updateCoeffs()
 
     // Non-reflecting outflow boundary
     // If lInf_ defined setup relaxation to the value fieldInf_.
-    if (lInf_ > SMALL)
+    if (lInf_ > 0)
     {
         // Calculate the field relaxation coefficient k (See notes)
         const scalarField k(w*deltaT/lInf_);
@@ -248,12 +252,10 @@ void Foam::advectiveFvPatchField<Type>::updateCoeffs()
         }
         else
         {
-            FatalErrorIn
-            (
-                "advectiveFvPatchField<Type>::updateCoeffs()"
-            )   << "    Unsupported temporal differencing scheme : "
-                << ddtScheme
-                << "\n    on patch " << this->patch().name()
+            FatalErrorIn("advectiveFvPatchField<Type>::updateCoeffs()")
+                << "    Unsupported temporal differencing scheme : "
+                << ddtScheme << nl
+                << "    on patch " << this->patch().name()
                 << " of field " << this->dimensionedInternalField().name()
                 << " in file " << this->dimensionedInternalField().objectPath()
                 << exit(FatalError);
@@ -304,21 +306,13 @@ void Foam::advectiveFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
 
-    if (phiName_ != "phi")
-    {
-        os.writeKeyword("phi") << phiName_ << token::END_STATEMENT << nl;
-    }
-    if (rhoName_ != "rho")
-    {
-        os.writeKeyword("rho") << rhoName_ << token::END_STATEMENT << nl;
-    }
+    this->template writeEntryIfDifferent<word>(os, "phi", "phi", phiName_);
+    this->template writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
 
-    if (lInf_ > SMALL)
+    if (lInf_ > 0)
     {
-        os.writeKeyword("fieldInf") << fieldInf_
-            << token::END_STATEMENT << nl;
-        os.writeKeyword("lInf") << lInf_
-            << token::END_STATEMENT << nl;
+        os.writeKeyword("fieldInf") << fieldInf_ << token::END_STATEMENT << nl;
+        os.writeKeyword("lInf") << lInf_ << token::END_STATEMENT << nl;
     }
 
     this->writeEntry("value", os);
diff --git a/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.H b/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.H
index 7526271e4510b8fb07c9bc1ce028f6788d52def7..423bd87160e544e2cb9cc86ed4f49eaf28e18ea7 100644
--- a/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.H
+++ b/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.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-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -424,9 +424,6 @@ public:
 
         // Check
 
-            //- Total mass injected
-            inline scalar massInjected() const;
-
             //- Total mass in system
             inline scalar massInSystem() const;
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
index fd32ff790c1588264fdfec315a2f1d0edc1d0465..7225347e605f989d4ebd5448cf2affeb587edd08 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.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-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -456,8 +456,8 @@ public:
 
         // Check
 
-            //- Total mass injected
-            inline scalar massInjected() const;
+            //- Total number of parcels
+            inline label nParcels() const;
 
             //- Total mass in system
             inline scalar massInSystem() const;
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H
index 94b95168a50643e0420476fefca2efae8651fe52..ab0e7ed940587014b345ede6e14d34103450bf01 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.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-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -227,6 +227,13 @@ Foam::KinematicCloud<CloudType>::UIntegrator() const
 }
 
 
+template<class CloudType>
+inline Foam::label Foam::KinematicCloud<CloudType>::nParcels() const
+{
+    return this->size();
+}
+
+
 template<class CloudType>
 inline Foam::scalar Foam::KinematicCloud<CloudType>::massInSystem() const
 {
diff --git a/src/lagrangian/intermediate/clouds/baseClasses/kinematicCloud/kinematicCloud.H b/src/lagrangian/intermediate/clouds/baseClasses/kinematicCloud/kinematicCloud.H
index 3f5bd469d1ee7f08c592e5330feab8c1803d6152..01c80c16e21ee5a1bc8c8a518b8a7addeb37e6a0 100644
--- a/src/lagrangian/intermediate/clouds/baseClasses/kinematicCloud/kinematicCloud.H
+++ b/src/lagrangian/intermediate/clouds/baseClasses/kinematicCloud/kinematicCloud.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-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,6 +36,7 @@ SourceFiles
 #define kinematicCloud_H
 
 #include "typeInfo.H"
+#include "volFieldsFwd.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -68,6 +69,50 @@ public:
         kinematicCloud();
 
 
+    // Member functions
+
+        // Check
+
+            //-  Number of parcels
+            virtual label nParcels() const = 0;
+
+            //- Total mass in system
+            virtual scalar massInSystem() const = 0;
+
+            //- Total linear momentum of the system
+            virtual vector linearMomentumOfSystem() const = 0;
+
+            //- Total linear kinetic energy in the system
+            virtual scalar linearKineticEnergyOfSystem() const = 0;
+
+            //- Total rotational kinetic energy in the system
+            virtual scalar rotationalKineticEnergyOfSystem() const = 0;
+
+            //- Penetration for percentage of the current total mass
+//            virtual scalar penetration(const scalar& prc) const = 0;
+
+            //- Mean diameter Dij
+            virtual scalar Dij(const label i, const label j) const = 0;
+
+            //- Max diameter
+            virtual scalar Dmax() const = 0;
+
+
+            // Fields
+
+                //- Return the particle volume fraction field
+                //  Note: for particles belonging to this cloud only
+                virtual const tmp<volScalarField> theta() const = 0;
+
+                //- Return the particle mass fraction field
+                //  Note: for particles belonging to this cloud only
+                virtual const tmp<volScalarField> alpha() const = 0;
+
+                //- Return the particle effective density field
+                //  Note: for particles belonging to this cloud only
+                virtual const tmp<volScalarField> rhoEff() const = 0;
+
+
     //- Destructor
     virtual ~kinematicCloud();
 };
diff --git a/src/parallel/decompose/decompositionMethods/decompositionMethod/decompositionMethod.C b/src/parallel/decompose/decompositionMethods/decompositionMethod/decompositionMethod.C
index ab18fad6e27e28ef6957442b03edccb32f306200..27f1c4fbc09415cac199bcc3320b1aa2a2e0945f 100644
--- a/src/parallel/decompose/decompositionMethods/decompositionMethod/decompositionMethod.C
+++ b/src/parallel/decompose/decompositionMethods/decompositionMethod/decompositionMethod.C
@@ -46,7 +46,13 @@ Foam::autoPtr<Foam::decompositionMethod> Foam::decompositionMethod::New
     const dictionary& decompositionDict
 )
 {
-    const word methodType(decompositionDict.lookup("method"));
+    word methodType(decompositionDict.lookup("method"));
+
+    if (methodType == "scotch" && Pstream::parRun())
+    {
+        methodType = "ptscotch";
+    }
+
 
     Info<< "Selecting decompositionMethod " << methodType << endl;
 
diff --git a/src/postProcessing/functionObjects/Allwmake b/src/postProcessing/functionObjects/Allwmake
index e62cdf86c7e8c936c4097a85752f4a9f139cd762..343d2bafc4e5c46fceab300981f7b2635b0c1d5b 100755
--- a/src/postProcessing/functionObjects/Allwmake
+++ b/src/postProcessing/functionObjects/Allwmake
@@ -3,11 +3,12 @@ cd ${0%/*} || exit 1    # run from this directory
 makeType=${1:-libso}
 set -x
 
+wmake $makeType cloud
 wmake $makeType field
 wmake $makeType forces
 wmake $makeType IO
-wmake $makeType utilities
 wmake $makeType jobControl
 wmake $makeType systemCall
+wmake $makeType utilities
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/src/postProcessing/functionObjects/cloud/Make/files b/src/postProcessing/functionObjects/cloud/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..e8515a0937acb1256b26696bbae4fd16aee6eef5
--- /dev/null
+++ b/src/postProcessing/functionObjects/cloud/Make/files
@@ -0,0 +1,4 @@
+cloudInfo/cloudInfo.C
+cloudInfo/cloudInfoFunctionObject.C
+
+LIB = $(FOAM_LIBBIN)/libcloudFunctionObjects
diff --git a/src/postProcessing/functionObjects/cloud/Make/options b/src/postProcessing/functionObjects/cloud/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..7699961acc4188d6fdd0df6f9798f19d339fcef9
--- /dev/null
+++ b/src/postProcessing/functionObjects/cloud/Make/options
@@ -0,0 +1,9 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/lagrangian/basic/lnInclude \
+    -I$(LIB_SRC)/lagrangian/intermediate/lnInclude
+
+LIB_LIBS = \
+    -lfiniteVolume \
+    -llagrangian \
+    -llagrangianIntermediate
diff --git a/src/postProcessing/functionObjects/cloud/cloudInfo/IOcloudInfo.H b/src/postProcessing/functionObjects/cloud/cloudInfo/IOcloudInfo.H
new file mode 100644
index 0000000000000000000000000000000000000000..6e0eda072a8b3f03951f5dd7f09591c561646c1c
--- /dev/null
+++ b/src/postProcessing/functionObjects/cloud/cloudInfo/IOcloudInfo.H
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Typedef
+    Foam::IOcloudInfo
+
+Description
+    Instance of the generic IOOutputFilter for cloudInfo.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IOcloudInfo_H
+#define IOcloudInfo_H
+
+#include "cloudInfo.H"
+#include "IOOutputFilter.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef IOOutputFilter<cloudInfo> IOcloudInfo;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.C b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.C
new file mode 100644
index 0000000000000000000000000000000000000000..6c5c6c5af436c9be599ef792403b8179de8bdd73
--- /dev/null
+++ b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.C
@@ -0,0 +1,183 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "cloudInfo.H"
+#include "dictionary.H"
+#include "kinematicCloud.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(Foam::cloudInfo, 0);
+
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+void Foam::cloudInfo::makeFiles()
+{
+    if (debug)
+    {
+        Info<< "Creating cloudInfo output files." << endl;
+    }
+
+    outputFilePtr_.clear();
+    outputFilePtr_.setSize(cloudSet_.size());
+
+    if (Pstream::master())
+    {
+        label i = 0;
+        forAllConstIter(wordHashSet, cloudSet_, iter)
+        {
+            const word& cloudName = iter.key();
+            fileName cloudInfoDir(obr_.time().path());
+            word timeName = Foam::name(obr_.time().startTime().value());
+
+            if (Pstream::parRun())
+            {
+                // Put in undecomposed case (Note: gives problems for
+                // distributed data running)
+                cloudInfoDir = cloudInfoDir/".."/name_/timeName;
+            }
+            else
+            {
+                cloudInfoDir = cloudInfoDir/name_/timeName;
+            }
+
+            // Create directory if does not exist
+            mkDir(cloudInfoDir);
+
+            // Open new files at start up
+            outputFilePtr_.set
+            (
+                i,
+                new OFstream(cloudInfoDir/(cloudName + ".dat"))
+            );
+
+            // Add headers
+            outputFilePtr_[i]
+                << "# Time" << tab << "nParcels" << tab << "mass" << endl;
+
+            i++;
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::cloudInfo::cloudInfo
+(
+    const word& name,
+    const objectRegistry& obr,
+    const dictionary& dict,
+    const bool loadFromFiles
+)
+:
+    name_(name),
+    obr_(obr),
+    active_(true),
+    cloudSet_(),
+    outputFilePtr_()
+{
+    read(dict);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::cloudInfo::~cloudInfo()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::cloudInfo::read(const dictionary& dict)
+{
+    if (active_)
+    {
+        cloudSet_.insert(wordList(dict.lookup("clouds")));
+
+        Info<< type() << ": ";
+        if (cloudSet_.size())
+        {
+            Info<< "applying to clouds:" << nl;
+            forAllConstIter(wordHashSet, cloudSet_, iter)
+            {
+                Info<< "    " << iter.key() << nl;
+            }
+            Info<< endl;
+
+            makeFiles();
+        }
+        else
+        {
+            Info<< "no clouds to be processed" << nl << endl;
+        }
+    }
+}
+
+
+void Foam::cloudInfo::execute()
+{
+    // Do nothing
+}
+
+
+void Foam::cloudInfo::end()
+{
+    // Do nothing
+}
+
+
+void Foam::cloudInfo::write()
+{
+    if (active_)
+    {
+        label i = 0;
+        forAllConstIter(wordHashSet, cloudSet_, iter)
+        {
+            const word& cloudName = iter.key();
+
+            const kinematicCloud& cloud =
+                obr_.lookupObject<kinematicCloud>(cloudName);
+
+            label nParcels = returnReduce(cloud.nParcels(), sumOp<label>());
+            scalar massInSystem =
+                returnReduce(cloud.massInSystem(), sumOp<scalar>());
+
+            if (Pstream::master())
+            {
+                outputFilePtr_[i]
+                    << obr_.time().value() << token::TAB
+                    << nParcels << token::TAB
+                    << massInSystem << endl;
+            }
+
+            i++;
+        }
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H
new file mode 100644
index 0000000000000000000000000000000000000000..04e6468d689e85af78d75e53c48b0e5531a6c010
--- /dev/null
+++ b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H
@@ -0,0 +1,157 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::cloudInfo
+
+Description
+    Outputs cloud information to file
+
+    Currently outputs:
+        - total current number of parcels
+        - total current mass of parcels
+
+SourceFiles
+    cloudInfo.C
+    IOcloudInfo.H
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef cloudInfo_H
+#define cloudInfo_H
+
+#include "OFstream.H"
+#include "PtrList.H"
+#include "pointFieldFwd.H"
+#include "volFields.H"
+#include "surfaceFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class objectRegistry;
+class dictionary;
+class mapPolyMesh;
+
+/*---------------------------------------------------------------------------*\
+                         Class cloudInfo Declaration
+\*---------------------------------------------------------------------------*/
+
+class cloudInfo
+{
+protected:
+
+    // Protected data
+
+        //- Name of this set of cloudInfo object
+        word name_;
+
+        const objectRegistry& obr_;
+
+        //- on/off switch
+        bool active_;
+
+        //- Clouds to process
+        wordHashSet cloudSet_;
+
+        //- Output file pointers
+        PtrList<OFstream> outputFilePtr_;
+
+
+    // Protected Member Functions
+
+        //- If the output file has not been created create it
+        void makeFiles();
+
+        //- Disallow default bitwise copy construct
+        cloudInfo(const cloudInfo&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const cloudInfo&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("cloudInfo");
+
+
+    // Constructors
+
+        //- Construct for given objectRegistry and dictionary.
+        //  Allow the possibility to load fields from files
+        cloudInfo
+        (
+            const word& name,
+            const objectRegistry&,
+            const dictionary&,
+            const bool loadFromFiles = false
+        );
+
+
+    //- Destructor
+    virtual ~cloudInfo();
+
+
+    // Member Functions
+
+        //- Return name of the cloudInfo object
+        virtual const word& name() const
+        {
+            return name_;
+        }
+
+        //- Read the field min/max data
+        virtual void read(const dictionary&);
+
+        //- Execute, currently does nothing
+        virtual void execute();
+
+        //- Execute at the final time-loop, currently does nothing
+        virtual void end();
+
+        //- Write
+        virtual void write();
+
+        //- Update for changes of mesh
+        virtual void updateMesh(const mapPolyMesh&)
+        {}
+
+        //- Update for changes of mesh
+        virtual void movePoints(const pointField&)
+        {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfoFunctionObject.C b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfoFunctionObject.C
new file mode 100644
index 0000000000000000000000000000000000000000..8197da4ec8037cbfcea805511aa58ec59c41a94b
--- /dev/null
+++ b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfoFunctionObject.C
@@ -0,0 +1,42 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "cloudInfoFunctionObject.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineNamedTemplateTypeNameAndDebug(cloudInfoFunctionObject, 0);
+
+    addToRunTimeSelectionTable
+    (
+        functionObject,
+        cloudInfoFunctionObject,
+        dictionary
+    );
+}
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfoFunctionObject.H b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfoFunctionObject.H
new file mode 100644
index 0000000000000000000000000000000000000000..3d85754fceb28ff62ce226939b144d61f3cab493
--- /dev/null
+++ b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfoFunctionObject.H
@@ -0,0 +1,54 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Typedef
+    Foam::cloudInfoFunctionObject
+
+Description
+    FunctionObject wrapper around cloudInfo to allow them to be created via
+    the functions entry within controlDict.
+
+SourceFiles
+    cloudInfoFunctionObject.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef cloudInfoFunctionObject_H
+#define cloudInfoFunctionObject_H
+
+#include "cloudInfo.H"
+#include "OutputFilterFunctionObject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef OutputFilterFunctionObject<cloudInfo>
+        cloudInfoFunctionObject;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/cloud/cloudInfo/postProcessingDict b/src/postProcessing/functionObjects/cloud/cloudInfo/postProcessingDict
new file mode 100644
index 0000000000000000000000000000000000000000..da6d02204cdd4937e8ec72ff67917dddc30a599b
--- /dev/null
+++ b/src/postProcessing/functionObjects/cloud/cloudInfo/postProcessingDict
@@ -0,0 +1,31 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      postProcessingDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+functions
+{
+    cloudInfo1
+    {
+        type            cloudInfo;
+        functionObjectLibs ("libcloudFunctionObjects.so");
+        enabled         true;
+        outputControl   timeStep;
+        outputInterval  1;
+
+        clouds          (myCloud1);
+    }
+}
+
+// ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.C b/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.C
index 3ce1fd2f11846f96ad10c616fcc11fc1ddc9053f..d01d17e986c6179c3f0eb352f434d16ab6b51a57 100644
--- a/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.C
+++ b/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.C
@@ -137,9 +137,11 @@ void Foam::forceCoeffs::write()
             if (log_)
             {
                 Info<< "forceCoeffs output:" << nl
-                    << "    Cd = " << Cd << nl
-                    << "    Cl = " << Cl << nl
-                    << "    Cm = " << Cm << nl
+                    << "    Cm    = " << Cm << nl
+                    << "    Cd    = " << Cd << nl
+                    << "    Cl    = " << Cl << nl
+                    << "    Cl(f) = " << Cl/2.0 - Cm << nl
+                    << "    Cl(r) = " << Cl/2.0 + Cm << nl
                     << endl;
             }
         }