Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / meshes / polyMesh / polyPatches / basic / generic / genericPolyPatch.H
blobab64cddd8adbaa660ef13daf96edfebb8c418b23
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2010 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::genericPolyPatch
27 Description
28     Substitute for unknown patches. Used for postprocessing when only
29     basic polyPatch info is needed.
31 Note
32     Storage is not optimal. It stores all face centres and cells on all
33     processors to keep the addressing calculation simple.
35 SourceFiles
36     genericPolyPatch.C
38 \*---------------------------------------------------------------------------*/
40 #ifndef genericPolyPatch_H
41 #define genericPolyPatch_H
43 #include "polyPatch.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 /*---------------------------------------------------------------------------*\
51                       Class genericPolyPatch Declaration
52 \*---------------------------------------------------------------------------*/
54 class genericPolyPatch
56     public polyPatch
58     // Private data
60         word actualTypeName_;
61         dictionary dict_;
63 public:
65     //- Runtime type information
66     TypeName("genericPatch");
69     // Constructors
71         //- Construct from components
72         genericPolyPatch
73         (
74             const word& name,
75             const label size,
76             const label start,
77             const label index,
78             const polyBoundaryMesh& bm
79         );
81         //- Construct from dictionary
82         genericPolyPatch
83         (
84             const word& name,
85             const dictionary& dict,
86             const label index,
87             const polyBoundaryMesh& bm
88         );
90         //- Construct as copy, resetting the boundary mesh
91         genericPolyPatch
92         (
93             const genericPolyPatch&,
94             const polyBoundaryMesh&
95         );
97         //- Construct given the original patch and resetting the
98         //  face list and boundary mesh information
99         genericPolyPatch
100         (
101             const genericPolyPatch& pp,
102             const polyBoundaryMesh& bm,
103             const label index,
104             const label newSize,
105             const label newStart
106         );
108         //- Construct given the original patch and a map
109         genericPolyPatch
110         (
111             const genericPolyPatch& pp,
112             const polyBoundaryMesh& bm,
113             const label index,
114             const labelUList& mapAddressing,
115             const label newStart
116         );
118         //- Construct and return a clone, resetting the boundary mesh
119         virtual autoPtr<polyPatch> clone(const polyBoundaryMesh& bm) const
120         {
121             return autoPtr<polyPatch>(new genericPolyPatch(*this, bm));
122         }
124         //- Construct and return a clone, resetting the face list
125         //  and boundary mesh
126         virtual autoPtr<polyPatch> clone
127         (
128             const polyBoundaryMesh& bm,
129             const label index,
130             const label newSize,
131             const label newStart
132         ) const
133         {
134             return autoPtr<polyPatch>
135             (
136                 new genericPolyPatch(*this, bm, index, newSize, newStart)
137             );
138         }
140         //- Construct and return a clone, resetting the face list
141         //  and boundary mesh
142         virtual autoPtr<polyPatch> clone
143         (
144             const polyBoundaryMesh& bm,
145             const label index,
146             const labelUList& mapAddressing,
147             const label newStart
148         ) const
149         {
150             return autoPtr<polyPatch>
151             (
152                 new genericPolyPatch(*this, bm, index, mapAddressing, newStart)
153             );
154         }
157     //- Destructor
158     ~genericPolyPatch();
161     // Member functions
163         //- Write the polyPatch data as a dictionary
164         virtual void write(Ostream&) const;
168 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
170 } // End namespace Foam
172 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
174 #endif
176 // ************************************************************************* //