ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / meshTools / sets / topoSets / cellZoneSet.H
blobd3dfe2e63bd70fe3b5a4e311101239d25de7b29e
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
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::cellZoneSet
27 Description
28     Like cellSet but updates cellZone when writing.
30 SourceFiles
31     cellZone.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef cellZoneSet_H
36 #define cellZoneSet_H
38 #include "cellSet.H"
39 #include "boolList.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                            Class cellZoneSet Declaration
48 \*---------------------------------------------------------------------------*/
50 class cellZoneSet
52     public cellSet
54     // Private data
56         const polyMesh& mesh_;
58         labelList addressing_;
60 public:
62     //- Runtime type information
63     TypeName("cellZoneSet");
66     // Constructors
68         //- Construct from objectRegistry and name
69         cellZoneSet
70         (
71             const polyMesh& mesh,
72             const word& name,
73             readOption r=MUST_READ,
74             writeOption w=NO_WRITE
75         );
77         //- Construct from additional size of labelHashSet
78         cellZoneSet
79         (
80             const polyMesh& mesh,
81             const word& name,
82             const label,
83             writeOption w=NO_WRITE
84         );
86         //- Construct from existing set
87         cellZoneSet
88         (
89             const polyMesh& mesh,
90             const word& name,
91             const topoSet&,
92             writeOption w=NO_WRITE
93         );
97     //- Destructor
98     virtual ~cellZoneSet();
101     // Member functions
103         const labelList& addressing() const
104         {
105             return addressing_;
106         }
108         labelList& addressing()
109         {
110             return addressing_;
111         }
113         //- Sort addressing and make cellSet part consistent with addressing
114         void updateSet();
116         //- Invert contents. (insert all members 0..maxLen-1 which were not in
117         //  set)
118         virtual void invert(const label maxLen);
120         //- Subset contents. Only elements present in both sets remain.
121         virtual void subset(const topoSet& set);
123         //- Add elements present in set.
124         virtual void addSet(const topoSet& set);
126         //- Delete elements present in set.
127         virtual void deleteSet(const topoSet& set);
129         //- Sync cellZoneSet across coupled patches.
130         virtual void sync(const polyMesh& mesh);
132         //- Write maxLen items with label and coordinates.
133         virtual void writeDebug
134         (
135             Ostream& os,
136             const primitiveMesh&,
137             const label maxLen
138         ) const;
140         //- Write cellZone
141         virtual bool writeObject
142         (
143             IOstream::streamFormat,
144             IOstream::versionNumber,
145             IOstream::compressionType
146         ) const;
148         //- Update any stored data for new labels
149         virtual void updateMesh(const mapPolyMesh& morphMap);
151         //- Return max index+1.
152         virtual label maxSize(const polyMesh& mesh) const;
160 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
162 } // End namespace Foam
164 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
166 #endif
168 // ************************************************************************* //