diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/Make/options b/applications/solvers/lagrangian/LTSReactingParcelFoam/Make/options
index 1ff1aaa612..91ee4a594d 100644
--- a/applications/solvers/lagrangian/LTSReactingParcelFoam/Make/options
+++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/Make/options
@@ -19,7 +19,8 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \
-I$(LIB_SRC)/ODE/lnInclude \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
- -I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude
+ -I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
+ -I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \
-lfiniteVolume \
@@ -42,4 +43,5 @@ EXE_LIBS = \
-lradiationModels \
-lODE \
-lregionModels \
- -lsurfaceFilmModels
+ -lsurfaceFilmModels \
+ -lsampling
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/Make/options b/applications/solvers/lagrangian/coalChemistryFoam/Make/options
index 75bbcab490..f2f8d1e758 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/Make/options
+++ b/applications/solvers/lagrangian/coalChemistryFoam/Make/options
@@ -20,6 +20,7 @@ EXE_INC = \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
-I$(LIB_SRC)/ODE/lnInclude \
+ -I$(LIB_SRC)/sampling/lnInclude \
-I$(FOAM_SOLVERS)/combustion/reactingFoam
@@ -45,4 +46,5 @@ EXE_LIBS = \
-lradiationModels \
-lregionModels \
-lsurfaceFilmModels \
- -lODE
+ -lODE \
+ -lsampling
diff --git a/applications/solvers/lagrangian/icoUncoupledKinematicParcelDyMFoam/Make/options b/applications/solvers/lagrangian/icoUncoupledKinematicParcelDyMFoam/Make/options
index f7bb7d2f2d..0786933541 100644
--- a/applications/solvers/lagrangian/icoUncoupledKinematicParcelDyMFoam/Make/options
+++ b/applications/solvers/lagrangian/icoUncoupledKinematicParcelDyMFoam/Make/options
@@ -14,7 +14,8 @@ EXE_INC = \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
- -I$(LIB_SRC)/dynamicFvMesh/lnInclude
+ -I$(LIB_SRC)/dynamicFvMesh/lnInclude \
+ -I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \
@@ -33,4 +34,5 @@ EXE_LIBS = \
-lsurfaceFilmModels \
-ldynamicMesh \
-ldynamicFvMesh \
- -ltopoChangerFvMesh
+ -ltopoChangerFvMesh \
+ -lsampling
diff --git a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/Make/options b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/Make/options
index 1de2ec74de..58d80278f8 100644
--- a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/Make/options
+++ b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/Make/options
@@ -12,6 +12,7 @@ EXE_INC = \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
+ -I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \
-llagrangian \
@@ -26,4 +27,5 @@ EXE_LIBS = \
-lfiniteVolume \
-lmeshTools \
-lregionModels \
- -lsurfaceFilmModels
+ -lsurfaceFilmModels \
+ -lsampling
diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/options b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/options
index 386e25dd47..f2dffe2998 100644
--- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/options
+++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/Make/options
@@ -20,6 +20,7 @@ EXE_INC = \
-I$(LIB_SRC)/ODE/lnInclude \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
+ -I$(LIB_SRC)/sampling/lnInclude \
-I$(FOAM_SOLVERS)/combustion/reactingFoam
@@ -44,4 +45,5 @@ EXE_LIBS = \
-lradiationModels \
-lODE \
-lregionModels \
- -lsurfaceFilmModels
+ -lsurfaceFilmModels \
+ -lsampling
diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options b/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options
index cd1c25ffea..6e225cc092 100644
--- a/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options
+++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options
@@ -19,6 +19,7 @@ EXE_INC = \
-I$(LIB_SRC)/lagrangian/basic/lnInclude \
-I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
-I$(LIB_SRC)/ODE/lnInclude \
+ -I$(LIB_SRC)/sampling/lnInclude \
-I$(FOAM_SOLVERS)/combustion/reactingFoam
@@ -39,4 +40,5 @@ EXE_LIBS = \
-lradiationModels \
-lsurfaceFilmModels \
-llagrangianIntermediate \
- -lODE
+ -lODE \
+ -lsampling
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/Make/options b/applications/solvers/lagrangian/reactingParcelFoam/Make/options
index 1380c457e2..fc312bb5fa 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/Make/options
+++ b/applications/solvers/lagrangian/reactingParcelFoam/Make/options
@@ -19,6 +19,7 @@ EXE_INC = \
-I$(LIB_SRC)/ODE/lnInclude \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
+ -I$(LIB_SRC)/sampling/lnInclude \
-I$(FOAM_SOLVERS)/combustion/reactingFoam
@@ -43,4 +44,5 @@ EXE_LIBS = \
-lradiationModels \
-lODE \
-lregionModels \
- -lsurfaceFilmModels
+ -lsurfaceFilmModels \
+ -lsampling
diff --git a/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options
index d302015a31..7a7ddc0432 100644
--- a/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options
+++ b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/Make/options
@@ -9,7 +9,8 @@ EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
- -I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude
+ -I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
+ -I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \
-llagrangian \
@@ -24,4 +25,5 @@ EXE_LIBS = \
-lfiniteVolume \
-lmeshTools \
-lregionModels \
- -lsurfaceFilmModels
+ -lsurfaceFilmModels \
+ -lsampling
diff --git a/src/lagrangian/coalCombustion/Make/options b/src/lagrangian/coalCombustion/Make/options
index 640565da2e..7253a9073d 100644
--- a/src/lagrangian/coalCombustion/Make/options
+++ b/src/lagrangian/coalCombustion/Make/options
@@ -19,7 +19,8 @@ EXE_INC = \
-I$(LIB_SRC)/turbulenceModels/LES/LESdeltas/lnInclude \
-I$(LIB_SRC)/turbulenceModels/compressible/LES/lnInclude \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
- -I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude
+ -I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
+ -I$(LIB_SRC)/sampling/lnInclude
LIB_LIBS = \
-lfiniteVolume \
diff --git a/src/lagrangian/intermediate/Make/options b/src/lagrangian/intermediate/Make/options
index 6290aae9da..951d16cf58 100644
--- a/src/lagrangian/intermediate/Make/options
+++ b/src/lagrangian/intermediate/Make/options
@@ -19,7 +19,8 @@ EXE_INC = \
-I$(LIB_SRC)/turbulenceModels/compressible/LES/lnInclude \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
- -I$(LIB_SRC)/dynamicFvMesh/lnInclude
+ -I$(LIB_SRC)/dynamicFvMesh/lnInclude \
+ -I$(LIB_SRC)/sampling/lnInclude
LIB_LIBS = \
-lfiniteVolume \
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
index 70c1e73c85..dcd6157226 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
@@ -29,10 +29,11 @@ Description
- cloud function objects
- - particle forces
+ - particle forces, e.g.
- buoyancy
- drag
- pressure gradient
+ - ...
- sub-models:
- dispersion model
diff --git a/src/lagrangian/intermediate/parcels/include/makeParcelCloudFunctionObjects.H b/src/lagrangian/intermediate/parcels/include/makeParcelCloudFunctionObjects.H
index b576cb2c84..0074e1c751 100644
--- a/src/lagrangian/intermediate/parcels/include/makeParcelCloudFunctionObjects.H
+++ b/src/lagrangian/intermediate/parcels/include/makeParcelCloudFunctionObjects.H
@@ -28,6 +28,7 @@ License
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+#include "FacePostProcessing.H"
#include "ParticleTracks.H"
#include "PatchPostProcessing.H"
@@ -37,6 +38,7 @@ License
\
makeCloudFunctionObject(CloudType); \
\
+ makeCloudFunctionObjectType(FacePostProcessing, CloudType); \
makeCloudFunctionObjectType(ParticleTracks, CloudType); \
makeCloudFunctionObjectType(PatchPostProcessing, CloudType);
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C
new file mode 100644
index 0000000000..b3cdad013e
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C
@@ -0,0 +1,281 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
+ \\/ 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "FacePostProcessing.H"
+#include "Pstream.H"
+#include "ListListOps.H"
+#include "surfaceWriter.H"
+
+// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
+
+template
+Foam::label Foam::FacePostProcessing::applyToFace
+(
+ const label faceI
+) const
+{
+ forAll(fZone_, i)
+ {
+ if (fZone_[i] == faceI)
+ {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+
+template
+void Foam::FacePostProcessing::write()
+{
+ const fvMesh& mesh = this->owner().mesh();
+ const scalar dt = this->owner().time().deltaTValue();
+
+ totalTime_ += dt;
+
+ const scalar alpha = (totalTime_ - dt)/totalTime_;
+ const scalar beta = dt/totalTime_;
+
+ massTotal_ += mass_;
+
+ massFlux_ = alpha*massFlux_ + beta*mass_/dt;
+
+ const label procI = Pstream::myProcNo();
+
+ scalarListList allProcMass(Pstream::nProcs());
+ allProcMass[procI].setSize(massTotal_.size());
+ allProcMass[procI] = massTotal_;
+ Pstream::gatherList(allProcMass);
+ scalarList allMass
+ (
+ ListListOps::combine
+ (
+ allProcMass, accessOp()
+ )
+ );
+
+ scalarListList allProcMassFlux(Pstream::nProcs());
+ allProcMassFlux[procI].setSize(massFlux_.size());
+ allProcMassFlux[procI] = massFlux_;
+ Pstream::gatherList(allProcMassFlux);
+ scalarList allMassFlux
+ (
+ ListListOps::combine
+ (
+ allProcMassFlux, accessOp()
+ )
+ );
+
+ Info<< "particleFaceFlux output:" << nl
+ << " total mass = " << sum(allMass) << nl
+ << " average mass flux = " << sum(allMassFlux) << nl << endl;
+
+
+ if (surfaceFormat_ != "none")
+ {
+ labelList pointToGlobal;
+ labelList uniqueMeshPointLabels;
+ autoPtr globalPointsPtr =
+ mesh.globalData().mergePoints
+ (
+ fZone_().meshPoints(),
+ fZone_().meshPointMap(),
+ pointToGlobal,
+ uniqueMeshPointLabels
+ );
+
+ pointField uniquePoints(mesh.points(), uniqueMeshPointLabels);
+ List allProcPoints(Pstream::nProcs());
+ allProcPoints[procI].setSize(uniquePoints.size());
+ allProcPoints[procI] = uniquePoints;
+ Pstream::gatherList(allProcPoints);
+ pointField allPoints
+ (
+ ListListOps::combine
+ (
+ allProcPoints, accessOp()
+ )
+ );
+
+ faceList faces(fZone_().localFaces());
+ forAll(faces, i)
+ {
+ inplaceRenumber(pointToGlobal, faces[i]);
+ }
+ List allProcFaces(Pstream::nProcs());
+ allProcFaces[procI].setSize(faces.size());
+ allProcFaces[procI] = faces;
+ Pstream::gatherList(allProcFaces);
+ faceList allFaces
+ (
+ ListListOps::combine
+ (
+ allProcFaces, accessOp()
+ )
+ );
+
+
+ if (Pstream::master())
+ {
+ fileName outputDir = mesh.time().path();
+
+ if (Pstream::parRun())
+ {
+ // Put in undecomposed case (Note: gives problems for
+ // distributed data running)
+ outputDir =
+ outputDir/".."/"postProcessing"/cloud::prefix/
+ this->owner().name()/mesh.time().timeName();
+ }
+ else
+ {
+ outputDir =
+ outputDir/"postProcessing"/cloud::prefix/
+ this->owner().name()/mesh.time().timeName();
+ }
+
+ autoPtr writer(surfaceWriter::New(surfaceFormat_));
+ writer->write
+ (
+ outputDir,
+ "massTotal",
+ allPoints,
+ allFaces,
+ "massTotal",
+ massTotal_,
+ false
+ );
+ writer->write
+ (
+ outputDir,
+ "massFlux",
+ allPoints,
+ allFaces,
+ "massFlux",
+ massFlux_,
+ false
+ );
+ }
+ }
+
+
+ if (resetOnWrite_)
+ {
+ massFlux_ = 0.0;
+ totalTime_ = 0.0;
+ }
+
+ mass_ = 0.0;
+
+ // writeProperties();
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+template
+Foam::FacePostProcessing::FacePostProcessing
+(
+ const dictionary& dict,
+ CloudType& owner
+)
+:
+ CloudFunctionObject(dict, owner, typeName),
+ fZone_(owner.mesh().faceZones()[this->coeffDict().lookup("faceZone")]),
+ surfaceFormat_(this->coeffDict().lookup("surfaceFormat")),
+ resetOnWrite_(this->coeffDict().lookup("resetOnWrite")),
+ totalTime_(0.0),
+ mass_(),
+ massTotal_(),
+ massFlux_()
+{
+ label allFaces = returnReduce(fZone_().size(), sumOp());
+ Info<< " Number of faces = " << allFaces << endl;
+
+ mass_.setSize(fZone_.size(), 0.0);
+
+ // readProperties(); AND initialise mass... fields
+
+ massTotal_.setSize(fZone_.size(), 0.0);
+ massFlux_.setSize(fZone_.size(), 0.0);
+}
+
+
+template
+Foam::FacePostProcessing::FacePostProcessing
+(
+ const FacePostProcessing& pff
+)
+:
+ CloudFunctionObject(pff),
+ fZone_(pff.fZone_.clone(pff.fZone_.zoneMesh())),
+ surfaceFormat_(pff.surfaceFormat_),
+ resetOnWrite_(pff.resetOnWrite_),
+ totalTime_(pff.totalTime_),
+ mass_(pff.mass_),
+ massTotal_(pff.massTotal_),
+ massFlux_(pff.massFlux_)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+template
+Foam::FacePostProcessing::~FacePostProcessing()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+template
+void Foam::FacePostProcessing::postPatch
+(
+ const parcelType&,
+ const label
+)
+{}
+
+
+template
+void Foam::FacePostProcessing::postFace(const parcelType& p)
+{
+ if
+ (
+ this->owner().solution().output()
+ || this->owner().solution().transient()
+ )
+ {
+ const label faceI = applyToFace(p.face());
+
+ if (faceI != -1)
+ {
+ mass_[faceI] += p.mass()*p.nParticle();
+ }
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.H
new file mode 100644
index 0000000000..de239097e6
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.H
@@ -0,0 +1,167 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
+ \\/ 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 .
+
+Class
+ Foam::FacePostProcessing
+
+Description
+ Records particle face quantities on used-specified face zone
+
+ Currently supports:
+ accummulated mass
+ average mass flux
+
+SourceFiles
+ FacePostProcessing.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef FacePostProcessing_H
+#define FacePostProcessing_H
+
+#include "CloudFunctionObject.H"
+#include "faceZone.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+ Class FacePostProcessing Declaration
+\*---------------------------------------------------------------------------*/
+
+template
+class FacePostProcessing
+:
+ public CloudFunctionObject
+{
+ // Private Data
+
+ // Typedefs
+
+ //- Convenience typedef for parcel type
+ typedef typename CloudType::parcelType parcelType;
+
+
+ //- Face zone
+ const faceZone& fZone_;
+
+ //- Surface output format
+ const word surfaceFormat_;
+
+ //- Flag to indicate whether data should be reset/cleared on writing
+ Switch resetOnWrite_;
+
+ //- Total time
+ scalar totalTime_;
+
+ //- Mass storage
+ scalarField mass_;
+
+ //- Mass total storage
+ scalarField massTotal_;
+
+ //- Mass flux storage
+ scalarField massFlux_;
+
+
+ // Private Member Functions
+
+ //- Return index into massFlux_ list if valid face, else -1
+ label applyToFace(const label faceI) const;
+
+
+protected:
+
+ // Protected Member Functions
+
+ //- Write post-processing info
+ void write();
+
+
+public:
+
+ //- Runtime type information
+ TypeName("facePostProcessing");
+
+
+ // Constructors
+
+ //- Construct from dictionary
+ FacePostProcessing(const dictionary& dict, CloudType& owner);
+
+ //- Construct copy
+ FacePostProcessing(const FacePostProcessing& ppm);
+
+ //- Construct and return a clone
+ virtual autoPtr > clone() const
+ {
+ return autoPtr >
+ (
+ new FacePostProcessing(*this)
+ );
+ }
+
+
+ //- Destructor
+ virtual ~FacePostProcessing();
+
+
+ // Member Functions
+
+ // Access
+
+ //- Return const access to the reset on write flag
+ inline const Switch& resetOnWrite() const;
+
+
+ // Evaluation
+
+ //- Post-patch hook
+ virtual void postPatch(const parcelType& p, const label patchI);
+
+ //- Post-face hook
+ virtual void postFace(const parcelType& p);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "FacePostProcessingI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+# include "FacePostProcessing.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessingI.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessingI.H
new file mode 100644
index 0000000000..8c264fc24a
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessingI.H
@@ -0,0 +1,34 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
+ \\/ 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 .
+
+\*---------------------------------------------------------------------------*/
+
+template
+inline const Foam::Switch&
+Foam::FacePostProcessing::resetOnWrite() const
+{
+ return resetOnWrite_;
+}
+
+
+// ************************************************************************* //