Forward compatibility: flex
[foam-extend-3.2.git] / src / finiteArea / faMesh / faGlobalMeshData / faGlobalMeshData.H
blob5f2c061e4e57b1f9f8cb5faa13c743d2bb4089be
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     faGlobalMeshData
27 Description
28     Various mesh related information for a parallel run.  Incomplete.
29     HJ, 3/Jul/2007
31 SourceFiles
33 \*---------------------------------------------------------------------------*/
35 #ifndef faGlobalMeshData_H
36 #define faGlobalMeshData_H
38 #include "faProcessorTopology.H"
40 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42 namespace Foam
45 // Class forward declarations
46 class faMesh;
48 /*---------------------------------------------------------------------------*\
49                         Class faGlobalMeshData Declaration
50 \*---------------------------------------------------------------------------*/
52 class faGlobalMeshData
54     public faProcessorTopology
56     // Private data
58         //- Reference to mesh
59         const faMesh& mesh_;
61         // Globally shared point addressing
63             //- Total number of global points
64             label nGlobalPoints_;
66             //- Indices of local points that are globally shared
67             labelList sharedPointLabels_;
69             //- Indices of globally shared points in the master list
70             //  This list contains all the shared points in the mesh
71             labelList sharedPointAddr_;
73     // Private Member Functions
75         //- Disallow default bitwise copy construct
76         faGlobalMeshData(const faGlobalMeshData&);
78         //- Disallow default bitwise assignment
79         void operator=(const faGlobalMeshData&);
82 public:
84     //- Runtime type information
85     ClassName("faGlobalMeshData");
88     // Constructors
90         //- Construct from mesh
91         faGlobalMeshData(const faMesh& mesh);
94     // Destructor
96         ~faGlobalMeshData();
99     // Member Functions
101         // Access
103             //- Return mesh reference
104             const faMesh& mesh() const;
106         // Globally shared point addressing
108             //- Return number of globally shared points
109             label nGlobalPoints() const
110             {
111                 return nGlobalPoints_;
112             }
114             //- Return indices of local points that are globally shared
115             const labelList& sharedPointLabels() const
116             {
117                 return sharedPointLabels_;
118             }
120             //- Return addressing into the complete globally shared points
121             //  list
122             const labelList& sharedPointAddr() const
123             {
124                 return sharedPointAddr_;
125             }
127             //- Change global mesh data given a topological change.
128             void updateMesh();
132 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
134 } // End namespace Foam
136 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
138 #endif
140 // ************************************************************************* //