Fix tutorials: coupled/conjugateHeatFoam/conjugateCavity: fix Allrun file
[OpenFOAM-1.6-ext.git] / src / meshTools / sets / topoSets / topoSet.H
blobb81fdb44506e0bd2d9d61273eb4d82c36e38aa96
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     Foam::topoSet
28 Description
29     General set of labels of mesh quantity (points, cells, faces).
31     Contains various 'notImplemented' functions, but I do not want to make
32     this class abstract since it is quite handy to work on topoSets.
34 SourceFiles
35     topoSet.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef topoSet_H
40 #define topoSet_H
42 #include "HashSet.H"
43 #include "regIOobject.H"
44 #include "labelList.H"
45 #include "typeInfo.H"
46 #include "autoPtr.H"
47 #include "pointField.H"
49 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
51 namespace Foam
55 class mapPolyMesh;
56 class polyMesh;
57 class primitiveMesh;
59 /*---------------------------------------------------------------------------*\
60                            Class topoSet Declaration
61 \*---------------------------------------------------------------------------*/
63 class topoSet
65     public regIOobject,
66     public labelHashSet
68 protected:
70     // Protected Member Functions
72         //- Update map from map. Used to update cell/face labels
73         //  after morphing
74         void updateLabels(const labelList& map);
76         //- Check validity of contents.
77         void check(const label maxLabel);
79         //- Write part of contents nicely formatted. Prints labels only.
80         void writeDebug
81         (
82             Ostream& os,
83             const label maxElem,
84             topoSet::const_iterator& iter,
85             label& elemI
86         ) const;
88         //- Write part of contents nicely formatted. Prints label
89         //  and corresponding coordinate.
90         void writeDebug
91         (
92             Ostream& os,
93             const pointField& coords,
94             const label maxElem,
95             topoSet::const_iterator& iter,
96             label& elemI
97         ) const;
99         //- Write labels and coordinates columnwise to os. Truncate to maxLen.
100         void writeDebug
101         (
102             Ostream& os,
103             const pointField& coords,
104             const label maxLen
105         ) const;
108         //- Disallow default bitwise copy construct
109         topoSet(const topoSet&);
111 public:
113     //- Runtime type information
114     TypeName("topoSet");
117     // Static
119         //- Name of file set will use.
120         static fileName localPath(const polyMesh& mesh, const word& name);
123     // Declare run-time constructor selection table
125         // For the direct constructor
126         declareRunTimeSelectionTable
127         (
128             autoPtr,
129             topoSet,
130             word,
131             (
132                 const polyMesh& mesh,
133                 const word& name,
134                 readOption r,
135                 writeOption w
136             ),
137             (mesh, name, r, w)
138         );
140         // For the constructor from size
141         declareRunTimeSelectionTable
142         (
143             autoPtr,
144             topoSet,
145             size,
146             (
147                 const polyMesh& mesh,
148                 const word& name,
149                 const label size,
150                 writeOption w
151             ),
152             (mesh, name, size, w)
153         );
155         // For the constructor as copy
156         declareRunTimeSelectionTable
157         (
158             autoPtr,
159             topoSet,
160             set,
161             (
162                 const polyMesh& mesh,
163                 const word& name,
164                 const topoSet& set,
165                 writeOption w
166             ),
167             (mesh, name, set, w)
168         );
171     // Constructors
174         //- Construct from IOobject as explicitly passed type.
175         //  Can't use typeName info here since subclasses not yet instantiated
176         topoSet(const IOobject&, const word& wantedType);
178         //- Construct from polyMesh and name
179         topoSet
180         (
181             const polyMesh& mesh,
182             const word& wantedType,
183             const word& name,
184             readOption r = MUST_READ,
185             writeOption w = NO_WRITE
186         );
188         //- Construct empty from additional size of labelHashSet
189         topoSet
190         (
191             const polyMesh& mesh,
192             const word& name,
193             const label,
194             writeOption w = NO_WRITE
195         );
197         //- Construct empty from additional labelHashSet
198         topoSet
199         (
200             const polyMesh& mesh,
201             const word& name,
202             const labelHashSet&,
203             writeOption w = NO_WRITE
204         );
206         //- Construct empty from IOobject and size
207         topoSet(const IOobject&, const label size);
209         //- Construct from IOobject and labelHashSet
210         topoSet(const IOobject&, const labelHashSet&);
214         //- Clone
215         autoPtr<topoSet> clone() const
216         {
217             notImplemented("autoPtr<topoSet> clone() const");
218             return autoPtr<topoSet>(NULL);
219         }
222     // Selectors
224         //- Return a pointer to a toposet read from file
225         static autoPtr<topoSet> New
226         (
227             const word& setType,
228             const polyMesh& mesh,
229             const word& name,
230             readOption r = MUST_READ,
231             writeOption w = NO_WRITE
232         );
234         //- Return a pointer to a new toposet of given size
235         static autoPtr<topoSet> New
236         (
237             const word& setType,
238             const polyMesh& mesh,
239             const word& name,
240             const label size,
241             writeOption w = NO_WRITE
242         );
244         //- Return a pointer to a new toposet as copy of another toposet
245         static autoPtr<topoSet> New
246         (
247             const polyMesh& mesh,
248             const word& name,
249             const topoSet& set,
250             writeOption w = NO_WRITE
251         );
254     // Destructor
256         virtual ~topoSet();
259     // Member functions
261         //- Invert contents. (insert all members 0..maxLen-1 which were not in
262         //  set)
263         virtual void invert(const label maxLen);
265         //- Subset contents. Only elements present in both sets remain.
266         virtual void subset(const topoSet& set);
268         //- Add elements present in set.
269         virtual void addSet(const topoSet& set);
271         //- Delete elements present in set.
272         virtual void deleteSet(const topoSet& set);
274         //- Sync set across coupled patches.
275         virtual void sync(const polyMesh& mesh);
277         //- Write labels columnwise to os. Truncate to maxLen.
278         virtual void writeDebug(Ostream& os, const label maxLen) const;
280         //- Like above but also writes mesh related quantity
281         //  (usually coordinate).
282         virtual void writeDebug
283         (
284             Ostream& os,
285             const primitiveMesh&,
286             const label maxLen
287         ) const;
289         //- Write contents.
290         virtual bool writeData(Ostream&) const;
292         //- Update any stored data for new labels. Not implemented.
293         virtual void updateMesh(const mapPolyMesh& morphMap);
295         //- Return max allowable index (+1). Not implemented.
296         virtual label maxSize(const polyMesh& mesh) const;
300     // Member operators
302         //- Copy labelHashSet part only
303         void operator=(const topoSet&);
308 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
310 } // End namespace Foam
312 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
314 #endif
316 // ************************************************************************* //