Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / conversion / meshTables / cellTable.H
blob6c101d73c5ee7eb8c1815db4fa9f327d7a327a1f
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-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::cellTable
27 Description
28     The cellTable persistent data saved as a Map<dictionary>.
30     The meshReader supports cellTable information.
32     The <tt>constant/cellTable</tt> file is an \c IOMap<dictionary> that is
33     used to save the information persistently. It contains the cellTable
34     information of the following form:
36     \verbatim
37         (
38             ID
39             {
40                 Label           WORD;
41                 MaterialType    WORD;
42                 MaterialId      INT;
43                 PorosityId      INT;
44                 ColorIdx        INT;
45                 ...
46             }
47         ...
48         )
49     \endverbatim
51     If the \a Label is missing, a value <tt>cellTable_{ID}</tt> will be
52     inferred. If the \a MaterialType is missing, the value @a fluid will
53     be inferred.
55 SourceFiles
56     cellTable.C
58 \*---------------------------------------------------------------------------*/
60 #ifndef cellTable_H
61 #define cellTable_H
63 #include "polyMesh.H"
64 #include "Map.H"
65 #include "dictionary.H"
66 #include "labelList.H"
67 #include "wordReList.H"
69 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
71 namespace Foam
74 /*---------------------------------------------------------------------------*\
75                          Class cellTable Declaration
76 \*---------------------------------------------------------------------------*/
78 class cellTable
80     public Map<dictionary>
82     // Private data
84        static const char* const defaultMaterial_;
87     // Private Member Functions
89         //- Map from cellTable ID => zone number
90         Map<label> zoneMap() const;
92         //- A contiguous list of cellTable names
93         List<word> namesList() const;
95         //- Add required entries - MaterialType
96         void addDefaults();
98         void setEntry(const label id, const word& keyWord, const word& value);
100         //- Disallow default bitwise copy construct
101         cellTable(const cellTable&);
104 public:
106     // Constructors
108         //- Construct null
109         cellTable();
111         //- Construct read from registry, name. instance
112         cellTable
113         (
114             const objectRegistry&,
115             const word& name = "cellTable",
116             const fileName& instance = "constant"
117         );
120     //- Destructor
121     ~cellTable();
124     // Member Functions
126         //- Append to the end, return index
127         label append(const dictionary&);
129         //- Return index corresponding to name
130         //  returns -1 if not found
131         label findIndex(const word& name) const;
133         //- Return the name corresponding to id
134         //  returns cellTable_ID if not otherwise defined
135         word name(const label id) const;
137         //- Return a Map of (id => name)
138         Map<word> names() const;
140         //- Return a Map of (id => names) selected by patterns
141         Map<word> names(const UList<wordRe>& patterns) const;
143         //- Return a Map of (id => name) for materialType
144         //  (fluid | solid | shell)
145         Map<word> selectType(const word& materialType) const;
147         //- Return a Map of (id => name) for fluids
148         Map<word> fluids() const;
150         //- Return a Map of (id => name) for shells
151         Map<word> shells() const;
153         //- Return a Map of (id => name) for solids
154         Map<word> solids() const;
156         //- Return a Map of (id => fluid|solid|shell)
157         Map<word> materialTypes() const;
159         //- Assign material Type
160         void setMaterial(const label, const word&);
162         //- Assign name
163         void setName(const label, const word&);
165         //- Assign default name if not already set
166         void setName(const label);
168         //- Read constant/cellTable
169         void readDict
170         (
171             const objectRegistry&,
172             const word& name = "cellTable",
173             const fileName& instance = "constant"
174         );
176         //- write constant/cellTable for later reuse
177         void writeDict
178         (
179             const objectRegistry&,
180             const word& name = "cellTable",
181             const fileName& instance = "constant"
182         ) const;
185     // Member Operators
187         //- Assignment
188         void operator=(const cellTable&);
190         //- Assign from Map<dictionary>
191         void operator=(const Map<dictionary>&);
193         //- Assign from cellZones
194         void operator=(const polyMesh&);
197     // Friend Functions
199         //- Classify tableIds into cellZones according to the cellTable
200         void addCellZones(polyMesh&, const labelList& tableIds) const;
202         //- Combine tableIds together
203         //  each dictionary entry is a wordList
204         void combine(const dictionary&, labelList& tableIds);
207 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
209 } // End namespace Foam
211 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
213 #endif
215 // ************************************************************************* //