initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / src / OpenFOAM / meshes / ProcessorTopology / ProcessorTopology.H
blobce598fb09bfbc259da5d01b344ac6a446257f57f
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 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 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
19     for more details.
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 Class
26     Foam::ProcessorTopology
28 Description
29     Determines processor-processor connection. After instantiation contains
30     on all processors the processor-processor connection table.
32     *this[procI] gives the list of neighbouring processors.
34 SourceFiles
35     ProcessorTopology.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef ProcessorTopology_H
40 #define ProcessorTopology_H
42 #include "labelList.H"
43 #include "lduSchedule.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 /*---------------------------------------------------------------------------*\
51                        Class ProcessorTopology Declaration
52 \*---------------------------------------------------------------------------*/
54 template<class Patch, class ProcPatch>
55 class ProcessorTopology
57     public labelListList
60 private:
62     // Private data
64         //- Local map from neighbour proc to patchI. Different per processor!
65         //  -1 or patchI for connection to procID
66         labelList procPatchMap_;
68         //- Order in which the patches should be initialised/evaluated
69         //  corresponding to the schedule
70         lduSchedule patchSchedule_;
73     // Private Member Functions
75         //- Return all neighbouring processors of this processor. Set
76         //  procPatchMap_.
77         labelList procNeighbours(const PtrList<Patch>&);
79 public:
81     // Constructors
83         //- Construct from boundaryMesh
84         ProcessorTopology(const PtrList<Patch>& patches);
87     // Member Functions
89         //- from neighbour processor to index in boundaryMesh. Local information
90         //  (so not same over all processors)
91         const labelList& procPatchMap() const
92         {
93             return procPatchMap_;
94         }
96         //- Order in which the patches should be initialised/evaluated
97         //  corresponding to the schedule
98         const lduSchedule& patchSchedule() const
99         {
100             return patchSchedule_;
101         }
105 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
107 } // End namespace Foam
109 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
111 #ifdef NoRepository
112 #   include "ProcessorTopology.C"
113 #endif
115 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
117 #endif
119 // ************************************************************************* //