1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
7 -------------------------------------------------------------------------------
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 the
13 Free Software Foundation; either version 2 of the License, or (at your
14 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
21 You should have received a copy of the GNU General Public License
22 along with OpenFOAM; if not, write to the Free Software Foundation,
23 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 \*---------------------------------------------------------------------------*/
30 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
32 Foam::Pstream::commsStruct::commsStruct()
41 Foam::Pstream::commsStruct::commsStruct
44 const labelList& below,
45 const labelList& allBelow,
46 const labelList& allNotBelow
52 allNotBelow_(allNotBelow)
56 Foam::Pstream::commsStruct::commsStruct
61 const labelList& below,
62 const labelList& allBelow
68 allNotBelow_(nProcs - allBelow.size() - 1)
70 boolList inBelow(nProcs, false);
72 forAll(allBelow, belowI)
74 inBelow[allBelow[belowI]] = true;
78 forAll(inBelow, procI)
80 if ((procI != myProcID) && !inBelow[procI])
82 allNotBelow_[notI++] = procI;
85 if (notI != allNotBelow_.size())
87 FatalErrorIn("commsStruct") << "problem!" << Foam::abort(FatalError);
92 // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
94 bool Foam::Pstream::commsStruct::operator==(const commsStruct& comm) const
98 (above_ == comm.above())
99 && (below_ == comm.below())
100 && (allBelow_ == allBelow())
101 && (allNotBelow_ == allNotBelow())
106 bool Foam::Pstream::commsStruct::operator!=(const commsStruct& comm) const
108 return !operator==(comm);
112 // * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * //
114 Foam::Ostream& Foam::operator<<(Ostream& os, const Pstream::commsStruct& comm)
116 os << comm.above_ << token::SPACE
117 << comm.below_ << token::SPACE
118 << comm.allBelow_ << token::SPACE
119 << comm.allNotBelow_;
123 "Ostream& operator<<(Ostream&, const commsStruct&)"
130 // ************************************************************************* //