Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / lagrangian / intermediate / submodels / CloudFunctionObjects / PatchPostProcessing / PatchPostProcessing.H
blob90a75dd6a0a3e30a6ee924f44739ab2bae1b879e
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2008-2011 OpenCFD Ltd.
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::PatchPostProcessing
27 Description
28     Standard post-processing
30 SourceFiles
31     PatchPostProcessing.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef PatchPostProcessing_H
36 #define PatchPostProcessing_H
38 #include "CloudFunctionObject.H"
40 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42 namespace Foam
45 /*---------------------------------------------------------------------------*\
46                     Class PatchPostProcessing Declaration
47 \*---------------------------------------------------------------------------*/
49 template<class CloudType>
50 class PatchPostProcessing
52     public CloudFunctionObject<CloudType>
54     // Private data
56         typedef typename CloudType::particleType parcelType;
58         //- Maximum number of parcels to store - set as a scalar for I/O
59         scalar maxStoredParcels_;
61         //- List of patch indices to post-process
62         labelList patchIDs_;
64         //- List of output data per patch
65         List<DynamicList<string> > patchData_;
68     // Private Member Functions
70         //- Returns local patchI if patch is in patchIds_ list
71         label applyToPatch(const label globalPatchI) const;
74 protected:
76     // Protected Member Functions
78         //- Write post-processing info
79         void write();
82 public:
84     //- Runtime type information
85     TypeName("patchPostProcessing");
88     // Constructors
90         //- Construct from dictionary
91         PatchPostProcessing(const dictionary& dict, CloudType& owner);
93         //- Construct copy
94         PatchPostProcessing(const PatchPostProcessing<CloudType>& ppm);
96         //- Construct and return a clone
97         virtual autoPtr<CloudFunctionObject<CloudType> > clone() const
98         {
99             return autoPtr<CloudFunctionObject<CloudType> >
100             (
101                 new PatchPostProcessing<CloudType>(*this)
102             );
103         }
106     //- Destructor
107     virtual ~PatchPostProcessing();
110     // Member Functions
112         // Access
114             //- Return maximum number of parcels to store per patch
115             inline label maxStoredParcels() const;
117             //- Return const mapping from local to global patch ids
118             inline const labelList& patchIDs() const;
121         // Evaluation
123             //- Post-patch hook
124             virtual void postPatch(const parcelType& p, const label patchI);
126             //- Post-face hook
127             virtual void postFace(const parcelType& p);
131 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
133 } // End namespace Foam
135 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
137 #include "PatchPostProcessingI.H"
139 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
141 #ifdef NoRepository
142 #   include "PatchPostProcessing.C"
143 #endif
145 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
147 #endif
149 // ************************************************************************* //