BUGFIX: Uninitialised member variables
[foam-extend-3.2.git] / applications / utilities / parallelProcessing / decomposePar / faMeshDecomposition.H
blob37c3ac9cd899ed66a5210d9d413867f2f02d4d91
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright held by original author
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     faMeshDecomposition
28 Description
29     Automatic faMesh decomposition class
31 Author
32     Zeljko Tukovic, FSB Zagreb.  All rights reserved
34 SourceFiles
35     faMeshDecomposition.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef faMeshDecomposition_H
40 #define faMeshDecomposition_H
42 #include "fvMesh.H"
43 #include "faMesh.H"
44 #include "labelList.H"
45 #include "SLList.H"
46 #include "PtrList.H"
47 #include "point.H"
49 #ifndef namespaceFoam
50 #define namespaceFoam
51     using namespace Foam;
52 #endif
54 /*---------------------------------------------------------------------------*\
55                            Class faMeshDecomposition Declaration
56 \*---------------------------------------------------------------------------*/
58 class faMeshDecomposition
60     public faMesh
62     // Private data
64         //- Mesh decomposition control dictionary
65         IOdictionary decompositionDict_;
67         //- Number of processors in decomposition
68         label nProcs_;
70         //- Is the decomposition data to be distributed for each processor
71         bool distributed_;
73         //- Processor label for each cell
74         labelList faceToProc_;
76         //- Face labels for each processor mesh
77         labelListList procFaceLabels_;
79         //-
80         List<Map<label> > procMeshEdgesMap_;
82         //- Number of internal edges for each processor mesh
83         labelList procNInternalEdges_;
85         //- Edge labels for patches of processor meshes
86         List<List<List<label> > > procPatchEdgeLabels_;
88         //- Labels of points for each processor
89         labelListList procPatchPointAddressing_;
91         //- Labels of edges for each processor
92         labelListList procPatchEdgeAddressing_;
94         //- Labels of edges for each processor
95         labelListList procEdgeAddressing_;
97         //- Labels of faces for each processor
98         labelListList procFaceAddressing_;
100         //- Original patch index for every processor patch
101         labelListList procBoundaryAddressing_;
103         //- Sizes for processor mesh patches
104         // Excludes inter-processor boundaries
105         labelListList procPatchSize_;
107         //- Start indices for processor patches
108         // Excludes inter-processor boundaries
109         labelListList procPatchStartIndex_;
111         //- Neighbour processor ID for inter-processor boundaries
112         labelListList procNeighbourProcessors_;
114         //- Sizes for inter-processor patches
115         labelListList procProcessorPatchSize_;
117         //- Start indices for inter-processor patches
118         labelListList procProcessorPatchStartIndex_;
120         //- List of globally shared point labels
121         labelList globallySharedPoints_;
123         //- Are there cyclic-parallel faces
124         bool cyclicParallel_;
127     // Private Member Functions
129         void distributeFaces();
131 public:
133     // Constructors
135         //- Construct from fvMesh
136         faMeshDecomposition(const fvMesh& mesh);
139     // Destructor
141         ~faMeshDecomposition();
144     // Member Functions
146         //- Number of processor in decomposition
147         label nProcs() const
148         {
149             return nProcs_;
150         }
152         //- Is the decomposition data to be distributed for each processor
153         bool distributed() const
154         {
155             return distributed_;
156         }
158         //- Decompose mesh. Optionally remove zero-sized patches.
159         void decomposeMesh(const bool filterEmptyPatches);
161         //- Write decomposition
162         bool writeDecomposition();
164         //- Cell-processor decomposition labels
165         const labelList& faceToProc() const
166         {
167             return faceToProc_;
168         }
172 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
174 #endif
176 // ************************************************************************* //