Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / meshes / pointMesh / pointMesh.H
blob7e086d2318c4c540753ef4b0ab9230a7c9c84b15
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::pointMesh
27 Description
28     Mesh representing a set of points created from polyMesh.
30 \*---------------------------------------------------------------------------*/
32 #ifndef pointMesh_H
33 #define pointMesh_H
35 #include "GeoMesh.H"
36 #include "MeshObject.H"
37 #include "polyMesh.H"
38 #include "pointBoundaryMesh.H"
40 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42 namespace Foam
45 /*---------------------------------------------------------------------------*\
46                            Class pointMesh Declaration
47 \*---------------------------------------------------------------------------*/
49 class pointMesh
51     public MeshObject<polyMesh, pointMesh>,
52     public GeoMesh<polyMesh>
54     // Permanent data
56         //- Boundary mesh
57         pointBoundaryMesh boundary_;
60     // Private Member Functions
62         //- Map all fields
63         void mapFields(const mapPolyMesh&);
65         //- Disallow default bitwise copy construct
66         pointMesh(const pointMesh&);
68         //- Disallow default bitwise assignment
69         void operator=(const pointMesh&);
72 public:
74     typedef pointMesh Mesh;
75     typedef pointBoundaryMesh BoundaryMesh;
78     // Constructors
80         //- Construct from polyMesh
81         explicit pointMesh(const polyMesh& pMesh);
84     // Member Functions
86         //- Return number of points
87         label size() const
88         {
89             return size(*this);
90         }
92         //- Return number of points
93         static label size(const Mesh& mesh)
94         {
95             return mesh.GeoMesh<polyMesh>::mesh_.nPoints();
96         }
98         //- Return reference to boundary mesh
99         const pointBoundaryMesh& boundary() const
100         {
101             return boundary_;
102         }
104         //- Return parallel info
105         const globalMeshData& globalData() const
106         {
107             return GeoMesh<polyMesh>::mesh_.globalData();
108         }
110         //- Return database. For now is its polyMesh.
111         const objectRegistry& thisDb() const
112         {
113             return GeoMesh<polyMesh>::mesh_.thisDb();
114         }
117         // Mesh motion
119             //- Move points, returns volumes swept by faces in motion
120             void movePoints(const pointField&);
122             //- Update the mesh corresponding to given map
123             void updateMesh(const mapPolyMesh& mpm);
126     // Member Operators
128         bool operator!=(const pointMesh& pm) const
129         {
130             return &pm != this;
131         }
133         bool operator==(const pointMesh& pm) const
134         {
135             return &pm == this;
136         }
140 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
142 } // End namespace Foam
144 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
146 #endif
148 // ************************************************************************* //