Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / conversion / ensight / part / ensightPartCells.H
blob8a2c2970fcbaff3d3a739ba020613a728597ea00
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2008-2011 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
13     the Free Software Foundation, either version 3 of the License, or
14     (at your 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, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::ensightPartCells
27 Description
28     An implementation of ensightPart to hold volume mesh cells.
30 SourceFiles
31     ensightPartCells.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef ensightPartCells_H
36 #define ensightPartCells_H
38 #include "ensightPart.H"
39 #include "typeInfo.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                       Class ensightPartCells Declaration
48 \*---------------------------------------------------------------------------*/
50 class ensightPartCells
52     public ensightPart
54     // Private Member Functions
56         //- Disallow default bitwise assignment
57         void operator=(const ensightPartCells&);
59         //- Classify the cell types, set elemLists.
60         void classify
61         (
62             const polyMesh&,
63             const labelUList& idLabels = labelUList::null()
64         );
66         //- track points used
67         virtual localPoints calcLocalPoints() const;
69         //- track the points used
70         // virtual void makeLocalPointMap();
72         //- element connectivity
73         virtual void writeConnectivity
74         (
75             ensightGeoFile&,
76             const word& key,
77             const labelUList& idList,
78             const labelUList& pointMap
79         ) const;
82 protected:
84         //- addressable ensight element types
85         enum elemType
86         {
87             tetra4Elements,
88             pyramid5Elements,
89             penta6Elements,
90             hexa8Elements,
91             nfacedElements
92         };
95     // Static data members
97         static const List<word> elemTypes_;
100     // Protected data
102         //- mesh referenced
103         const polyMesh& mesh_;
106 public:
108     //- Runtime type information
109     TypeName("ensightCells");
111     // Constructors
113         //- Construct empty part with number and description
114         ensightPartCells(label partNumber, const string& partDescription);
116         //- Construct from polyMesh without zones
117         ensightPartCells(label partNumber, const polyMesh&);
119         //- Construct from polyMesh and list of (non-zoned) cells
120         ensightPartCells
121         (
122             label partNumber,
123             const polyMesh&,
124             const labelUList&
125         );
127         //- Construct from polyMesh and cellZone
128         ensightPartCells
129         (
130             label partNumber,
131             const polyMesh&,
132             const cellZone&
133         );
135         //- Construct as copy
136         ensightPartCells(const ensightPartCells&);
138         //- Reconstruct part characteristics (eg, element types) from Istream
139         //  A part reconstructed in this manner can be used when writing fields,
140         //  but cannot be used to write a new geometry
141         //  \sa Foam::ensightPart::reconstruct
142         ensightPartCells(Istream&);
144         //- Reconstruct part characteristics on freestore from Istream
145         static autoPtr<ensightPartCells> New(Istream& is)
146         {
147             return autoPtr<ensightPartCells>(new ensightPartCells(is));
148         }
151     //- Destructor
152     virtual ~ensightPartCells();
155     // Member Functions
157         //- write geometry
158         virtual void writeGeometry(ensightGeoFile&) const;
160         //- static listing of the element types
161         virtual const List<word>& elementTypes() const
162         {
163             return elemTypes_;
164         }
168 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
170 } // End namespace Foam
172 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
174 #endif
176 // ************************************************************************* //