Forward compatibility: flex
[foam-extend-3.2.git] / applications / utilities / postProcessing / miscellaneous / postChannel / sumData.H
blob6bde94580599205881ffa9a8d125a78a14f6d19d
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation, either version 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::sumData
27 Description
28     Sums data while walking across cells. Used in collapsing fields.
30 SourceFiles
31     sumDataI.H
32     sumData.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef sumData_H
37 #define sumData_H
39 #include "point.H"
40 #include "tensor.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 class polyPatch;
48 class polyMesh;
50 /*---------------------------------------------------------------------------*\
51                            Class sumData Declaration
52 \*---------------------------------------------------------------------------*/
54 class sumData
56     // Private data
58         //- Previous face
59         label oldFace_;
61         //- summed data
62         scalar sum_;
64         //- number of items summed
65         label count_;
67 public:
69     // Constructors
71         //- Construct null
72         inline sumData();
74         //- Construct from count
75         inline sumData
76         (
77             const label oldFace,
78             const scalar sum,
79             const label count
80         );
83     // Member Functions
85         // Access
87             inline label oldFace() const
88             {
89                 return oldFace_;
90             }
92             inline scalar sum() const
93             {
94                 return sum_;
95             }
97             inline label count() const
98             {
99                 return count_;
100             }
103         // Needed by FaceCellWave
105             //- Check whether origin has been changed at all or
106             //  still contains original (invalid) value.
107             inline bool valid() const;
109             //- Check for identical geometrical data. Used for cyclics checking.
110             inline bool sameGeometry
111             (
112                 const polyMesh&,
113                 const sumData&,
114                 const scalar
115             ) const;
117             //- Convert any absolute coordinates into relative to (patch)face
118             //  centre
119             inline void leaveDomain
120             (
121                 const polyMesh&,
122                 const polyPatch&,
123                 const label patchFaceI,
124                 const point& faceCentre
125             );
127             //- Reverse of leaveDomain
128             inline void enterDomain
129             (
130                 const polyMesh&,
131                 const polyPatch&,
132                 const label patchFaceI,
133                 const point& faceCentre
134             );
136             //- Apply rotation matrix to any coordinates
137             inline void transform
138             (
139                 const polyMesh&,
140                 const tensor&
141             );
143             //- Influence of neighbouring face.
144             inline bool updateCell
145             (
146                 const polyMesh&,
147                 const label thisCellI,
148                 const label neighbourFaceI,
149                 const sumData& neighbourInfo,
150                 const scalar tol
151             );
153             //- Influence of neighbouring cell.
154             inline bool updateFace
155             (
156                 const polyMesh&,
157                 const label thisFaceI,
158                 const label neighbourCellI,
159                 const sumData& neighbourInfo,
160                 const scalar tol
161             );
163             //- Influence of different value on same face.
164             inline bool updateFace
165             (
166                 const polyMesh&,
167                 const label thisFaceI,
168                 const sumData& neighbourInfo,
169                 const scalar tol
170             );
172     // Member Operators
174         // Needed for List IO
175         inline bool operator==(const sumData&) const;
177         inline bool operator!=(const sumData&) const;
180     // IOstream Operators
182         friend Ostream& operator<<(Ostream&, const sumData&);
183         friend Istream& operator>>(Istream&, sumData&);
187 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
189 } // End namespace Foam
191 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
193 #include "sumDataI.H"
195 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
197 #endif
199 // ************************************************************************* //