Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / meshes / MeshObject / MeshObject.H
blobf60b50a179e01a7c1aa0634863f1084f7c35b343
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::MeshObject
27 Description
28     Templated abstract base-class for dynamic mesh objects used to automate
29     their allocation to the mesh database and the mesh-modifier event-loop.
31 SourceFiles
32     MeshObject.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef MeshObject_H
37 #define MeshObject_H
39 #include "regIOobject.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                            Class MeshObject Declaration
48 \*---------------------------------------------------------------------------*/
51 template<class Mesh, class Type>
52 class MeshObject
54     public regIOobject
57 protected:
59         // Reference to Mesh
60         const Mesh& mesh_;
63 public:
65     // Constructors
67         explicit MeshObject(const Mesh& mesh);
69         static const Type& New(const Mesh& mesh);
71         template<class Data1>
72         static const Type& New
73         (
74             const Mesh& mesh,
75             const Data1& d
76         );
78         template<class Data1, class Data2>
79         static const Type& New
80         (
81             const Mesh& mesh,
82             const Data1&,
83             const Data2&
84         );
86         template<class Data1, class Data2, class Data3>
87         static const Type& New
88         (
89             const Mesh& mesh,
90             const Data1&,
91             const Data2&,
92             const Data3&
93         );
95         template<class Data1, class Data2, class Data3, class Data4>
96         static const Type& New
97         (
98             const Mesh& mesh,
99             const Data1&,
100             const Data2&,
101             const Data3&,
102             const Data4&
103         );
106     // Destructors
108         virtual ~MeshObject();
110         static bool Delete(const Mesh& mesh);
113     // Member Functions
115         const Mesh& mesh() const
116         {
117             return mesh_;
118         }
120         virtual bool writeData(Foam::Ostream&) const
121         {
122             return true;
123         }
127 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
129 } // End namespace Foam
131 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
133 #ifdef NoRepository
134 #   include "MeshObject.C"
135 #endif
137 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
139 #endif
141 // ************************************************************************* //