Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / applications / utilities / postProcessing / miscellaneous / postChannel / sumDataI.H
blob3b6168fdd76f54cadc50d43cb82b2c5fbd246d24
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 \*---------------------------------------------------------------------------*/
26 #include "polyMesh.H"
28 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
31 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
33 // Null constructor
34 inline Foam::sumData::sumData()
36     oldFace_(-1),
37     sum_(0.0),
38     count_(0)
42 // Construct from components
43 inline Foam::sumData::sumData
45     const label oldFace,
46     const scalar sum,
47     const label count
50     oldFace_(oldFace),
51     sum_(sum),
52     count_(count)
56 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
58 inline bool Foam::sumData::valid() const
60     return oldFace_ != -1;
64 // No geometric data so never any problem on cyclics
65 inline bool Foam::sumData::sameGeometry
67     const polyMesh&,
68     const sumData&,
69     const scalar
70 ) const
72     return true;
76 // No geometric data.
77 inline void Foam::sumData::leaveDomain
79     const polyMesh&,
80     const polyPatch& patch,
81     const label patchFaceI,
82     const point& faceCentre
87 // No geometric data.
88 inline void Foam::sumData::transform
90     const polyMesh&,
91     const tensor& rotTensor
96 // No geometric data.
97 inline void Foam::sumData::enterDomain
99     const polyMesh&,
100     const polyPatch& patch,
101     const label patchFaceI,
102     const point& faceCentre
105     oldFace_ = -1;
109 // Update cell with neighbouring face information
110 inline bool Foam::sumData::updateCell
112     const polyMesh&,
113     const label thisCellI,
114     const label neighbourFaceI,
115     const sumData& neighbourInfo,
116     const scalar tol
119     if (!valid())
120     {
121         FatalErrorIn("sumData::updateCell") << "problem"
122             << abort(FatalError);
123         return false;
124     }
127     if (count_ == 0)
128     {
129         sum_ += neighbourInfo.sum();
130         count_ = neighbourInfo.count() + 1;
131         oldFace_ = neighbourFaceI;
132         return true;
133     }
134     else
135     {
136         return false;
137     }
141 // Update face with neighbouring cell information
142 inline bool Foam::sumData::updateFace
144     const polyMesh& mesh,
145     const label thisFaceI,
146     const label neighbourCellI,
147     const sumData& neighbourInfo,
148     const scalar tol
151     // From cell to its faces.
153     // Check that face is opposite the previous one.
154     const cell& cFaces = mesh.cells()[neighbourCellI];
156     label wantedFaceI = cFaces.opposingFaceLabel
157     (
158         neighbourInfo.oldFace(),
159         mesh.faces()
160     );
162     if (thisFaceI == wantedFaceI)
163     {
164         if (count_ != 0)
165         {
166             FatalErrorIn("sumData::updateFace") << "problem"
167                 << abort(FatalError);
168             return false;
169         }
171         sum_ += neighbourInfo.sum();
172         count_ = neighbourInfo.count();
173         oldFace_ = thisFaceI;
174         return true;
175     }
176     else
177     {
178         return false;
179     }
183 // Update face with coupled face information
184 inline bool Foam::sumData::updateFace
186     const polyMesh&,
187     const label thisFaceI,
188     const sumData& neighbourInfo,
189     const scalar tol
192     // From face to face (e.g. coupled faces)
193     if (count_ == 0)
194     {
195         sum_ += neighbourInfo.sum();
196         count_ = neighbourInfo.count();
197         oldFace_ = thisFaceI;
198         return true;
199     }
200     else
201     {
202         return false;
203     }
207 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
209 inline bool Foam::sumData::operator==(const Foam::sumData& rhs)
210  const
212     return
213         oldFace() == rhs.oldFace()
214      && sum() == rhs.sum()
215      && count() == rhs.count();
219 inline bool Foam::sumData::operator!=(const Foam::sumData& rhs)
220  const
222     return !(*this == rhs);
226 // ************************************************************************* //