ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / lagrangian / intermediate / submodels / CloudFunctionObjects / FacePostProcessing / FacePostProcessing.H
blobf53c63b6bb54dcf4b42c98a6c2c5c405b4d8d90d
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::FacePostProcessing
27 Description
28     Records particle face quantities on used-specified face zone
30     Currently supports:
31         accummulated mass
32         average mass flux
34 SourceFiles
35     FacePostProcessing.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef FacePostProcessing_H
40 #define FacePostProcessing_H
42 #include "CloudFunctionObject.H"
43 #include "faceZone.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 /*---------------------------------------------------------------------------*\
51                      Class FacePostProcessing Declaration
52 \*---------------------------------------------------------------------------*/
54 template<class CloudType>
55 class FacePostProcessing
57     public CloudFunctionObject<CloudType>
59     // Private Data
61         // Typedefs
63             //- Convenience typedef for parcel type
64             typedef typename CloudType::parcelType parcelType;
67         //- Face zone IDs
68         labelList faceZoneIDs_;
70         //- Surface output format
71         const word surfaceFormat_;
73         //- Flag to indicate whether data should be reset/cleared on writing
74         Switch resetOnWrite_;
76         //- Total time
77         scalar totalTime_;
79         //- Mass storage
80         List<scalarField> mass_;
82         //- Mass total storage
83         List<scalarField> massTotal_;
85         //- Mass flux storage
86         List<scalarField> massFlux_;
88         //- Flag to indicate whether data should be written to file
89         Switch log_;
91         //- Output file pointer per zone
92         PtrList<OFstream> outputFilePtr_;
94         //- Output directory
95         fileName outputDir_;
98     // Private Member Functions
100         //- Helper function to create log files
101         void makeLogFile
102         (
103             const word& zoneName,
104             const label zoneI,
105             const label nFaces,
106             const scalar totArea
107         );
110 protected:
112     // Protected Member Functions
114         //- Write post-processing info
115         void write();
118 public:
120     //- Runtime type information
121     TypeName("facePostProcessing");
124     // Constructors
126         //- Construct from dictionary
127         FacePostProcessing(const dictionary& dict, CloudType& owner);
129         //- Construct copy
130         FacePostProcessing(const FacePostProcessing<CloudType>& ppm);
132         //- Construct and return a clone
133         virtual autoPtr<CloudFunctionObject<CloudType> > clone() const
134         {
135             return autoPtr<CloudFunctionObject<CloudType> >
136             (
137                 new FacePostProcessing<CloudType>(*this)
138             );
139         }
142     //- Destructor
143     virtual ~FacePostProcessing();
146     // Member Functions
148         // Access
150             //- Return const access to the reset on write flag
151             inline const Switch& resetOnWrite() const;
154         // Evaluation
156             //- Post-face hook
157             virtual void postFace
158             (
159                 const parcelType& p,
160                 const label faceI
161             );
165 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
167 } // End namespace Foam
169 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
171 #include "FacePostProcessingI.H"
173 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
175 #ifdef NoRepository
176 #   include "FacePostProcessing.C"
177 #endif
179 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
181 #endif
183 // ************************************************************************* //