Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / dynamicMesh / dynamicTopoFvMesh / changeMap.H
blobe6ebee8a08f0dced45c4e62ea8b427a22cfd0bd9
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend 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 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     changeMap
27 Description
28     Accumulate topology change statistics
30 Author
31     Sandeep Menon
32     University of Massachusetts Amherst
33     All rights reserved
35 SourceFiles
36     changeMapI.H
38 \*---------------------------------------------------------------------------*/
40 #ifndef changeMap_H
41 #define changeMap_H
43 #include "objectMap.H"
44 #include "labelList.H"
45 #include "dictionary.H"
46 #include "DynamicList.H"
48 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
50 namespace Foam
53 // Class forward declarations
54 class changeMap;
56 // * * * * * * * * Forward declaration of friend fuctions  * * * * * * * * * //
58 Ostream& operator<<(Ostream&, const changeMap&);
61 /*---------------------------------------------------------------------------*\
62                            Class changeMap Declaration
63 \*---------------------------------------------------------------------------*/
65 class changeMap
67     public dictionary
69     // Entity index
70     label index_;
72     // Coupled patch index
73     label pIndex_;
75     // Type
76     label type_;
78     // Entities that were added during the operation.
79     DynamicList<objectMap> addedPoints_;
80     DynamicList<objectMap> addedEdges_;
81     DynamicList<objectMap> addedFaces_;
82     DynamicList<objectMap> addedCells_;
84     // Entities that were removed during the operation
85     dynamicLabelList removedPoints_;
86     dynamicLabelList removedEdges_;
87     dynamicLabelList removedFaces_;
88     dynamicLabelList removedCells_;
90 public:
92     // Constructor
93     changeMap()
94     :
95         index_(-1),
96         pIndex_(-1),
97         type_(-1),
98         addedPoints_(5),
99         addedEdges_(5),
100         addedFaces_(5),
101         addedCells_(5),
102         removedPoints_(5),
103         removedEdges_(5),
104         removedFaces_(5),
105         removedCells_(5)
106     {}
108     //- Access
110         // Entity index
111         inline label& index();
112         inline label index() const;
114         // Coupled patch index
115         inline label& patchIndex();
116         inline label patchIndex() const;
118         // Type
119         inline label& type();
120         inline label type() const;
122         // Added entities
123         inline void addPoint
124         (
125             const label pIndex,
126             const labelList& master = labelList()
127         );
129         inline void addEdge
130         (
131             const label eIndex,
132             const labelList& master = labelList()
133         );
135         inline void addFace
136         (
137             const label fIndex,
138             const labelList& master = labelList()
139         );
141         inline void addCell
142         (
143             const label cIndex,
144             const labelList& master = labelList()
145         );
147         // Return the list of added entities
148         inline const List<objectMap>& addedPointList() const;
149         inline const List<objectMap>& addedEdgeList() const;
150         inline const List<objectMap>& addedFaceList() const;
151         inline const List<objectMap>& addedCellList() const;
153         // Removed entities
154         inline void removePoint(const label pIndex);
155         inline void removeEdge(const label eIndex);
156         inline void removeFace(const label fIndex);
157         inline void removeCell(const label cIndex);
159         // Return the list of removed entities
160         inline const labelList& removedPointList() const;
161         inline const labelList& removedEdgeList() const;
162         inline const labelList& removedFaceList() const;
163         inline const labelList& removedCellList() const;
165     //- Edit
167         // Clear existing lists
168         inline void clear();
170     //- Operators
172         inline void operator=(const changeMap& rhs);
174     //- IOstream Operators
176         inline friend Ostream& operator<<(Ostream&, const changeMap&);
180 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
182 } // End namespace Foam
184 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
186 #include "changeMapI.H"
188 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
190 #endif
192 // ************************************************************************* //