initial commit for version 1.5.x patch release
[OpenFOAM-1.5.x.git] / applications / utilities / mesh / generation / blockMesh / blockMesh.H
blob808e93dad53928febaca2204623d90ea33f8be62
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2008 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         scalar scale_;
67         labelList blockOffsets_;
68         labelList mergeList_;
70         pointField points_;
71         cellShapeList cells_;
72         faceListList patches_;
75     // Private Member Functions
77         bool blockLabelsOK
78         (
79             const label blockLabel,
80             const pointField& points,
81             const cellShape& blockShape
82         );
84         bool patchLabelsOK
85         (
86             const label patchLabel,
87             const pointField& points,
88             const faceList& patchShapes
89         );
91         polyMesh* createTopology(IOdictionary&);
92         void checkBlockMesh(const polyMesh&);
94         labelList createBlockOffsets();
95         labelList createMergeList();
97         pointField createPoints();
98         cellShapeList createCells();
100         faceList createPatchFaces(const polyPatch& patchTopologyFaces);
101         faceListList createPatches();
103         //- as copy (not implemented)
104         blockMesh(const blockMesh&);
107 public:
109     // Constructors
111         //- Construct from IOdictionary
112         blockMesh(IOdictionary&);
115     // Destructor
117         ~blockMesh();
120     // Member Functions
122         // Access
124             const polyMesh& topology() const;
126             const curvedEdgeList& edges() const;
128             const pointField& points() const
129             {
130                 return points_;
131             }
133             const cellShapeList& cells() const
134             {
135                 return cells_;
136             }
138             const faceListList& patches() const
139             {
140                 return patches_;
141             }
143             wordList patchNames() const;
145             wordList patchTypes() const;
147             wordList patchPhysicalTypes() const;
149             //- Number of blocks with specified zones
150             label numZonedBlocks() const;
153         // Write
155             //- Writes edges of blockMesh in OBJ format.
156             void writeTopology(Ostream&) const;
160 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
162 } // End namespace Foam
164 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
166 #endif
168 // ************************************************************************* //