initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / applications / utilities / mesh / generation / blockMesh / blockMesh.H
blobe6b6998c5883d57458a093c5157bebecb81ce9ab
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::blockMesh
28 Description
30 SourceFiles
31     blockMesh.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef blockMesh_H
36 #define blockMesh_H
38 #include "blockList.H"
39 #include "polyMesh.H"
40 #include "IOdictionary.H"
41 #include "curvedEdgeList.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 /*---------------------------------------------------------------------------*\
49                            Class blockMesh Declaration
50 \*---------------------------------------------------------------------------*/
52 class blockMesh
54     public blockList
56     // Private data
58         label nPoints_;
59         label nCells_;
61         curvedEdgeList edges_;
63         polyMesh* topologyPtr_;
65         labelList blockOffsets_;
66         labelList mergeList_;
68         pointField points_;
69         cellShapeList cells_;
70         faceListList patches_;
73     // Private Member Functions
75         bool blockLabelsOK
76         (
77             const label blockLabel,
78             const pointField& points,
79             const cellShape& blockShape
80         );
82         bool patchLabelsOK
83         (
84             const label patchLabel,
85             const pointField& points,
86             const faceList& patchShapes
87         );
89         polyMesh* createTopology(IOdictionary&);
90         void checkBlockMesh(const polyMesh&);
92         labelList createBlockOffsets();
93         labelList createMergeList();
95         pointField createPoints(const dictionary&);
96         cellShapeList createCells();
98         faceList createPatchFaces(const polyPatch& patchTopologyFaces);
99         faceListList createPatches();
101         //- as copy (not implemented)
102         blockMesh(const blockMesh&);
105 public:
107     // Constructors
109         //- Construct from IOdictionary
110         blockMesh(IOdictionary&);
113     // Destructor
115         ~blockMesh();
118     // Member Functions
120         // Access
122             const polyMesh& topology() const;
124             const curvedEdgeList& edges() const
125             {
126                 return edges_;
127             }
129             const pointField& points() const
130             {
131                 return points_;
132             }
134             const cellShapeList& cells() const
135             {
136                 return cells_;
137             }
139             const faceListList& patches() const
140             {
141                 return patches_;
142             }
144             wordList patchNames() const;
146             wordList patchTypes() const;
148             wordList patchPhysicalTypes() const;
150             //- Number of blocks with specified zones
151             label numZonedBlocks() const;
154         // Write
156             //- Writes edges of blockMesh in OBJ format.
157             void writeTopology(Ostream&) const;
161 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
163 } // End namespace Foam
165 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
167 #endif
169 // ************************************************************************* //