Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / applications / utilities / postProcessing / dataConversion / foamToTecplot360 / vtkMesh.H
blob67a30bbb3de4a5c1457d40bee1af9173b9f3daef
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     Foam::vtkMesh
27 Description
28     Encapsulation of VTK mesh data. Holds mesh or meshsubset and
29     polyhedral-cell decomposition on it.
31 SourceFiles
32     vtkMesh.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef vtkMesh_H
37 #define vtkMesh_H
39 #include "fvMeshSubset.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 // Forward declaration of classes
47 class Time;
49 /*---------------------------------------------------------------------------*\
50                            Class vtkMesh Declaration
51 \*---------------------------------------------------------------------------*/
53 class vtkMesh
55     public fvMesh
57     // Private data
59         //- Mesh subset
60         fvMeshSubset subsetMesh_;
62         //- Current cellSet (or empty)
63         const word setName_;
66     // Private Member Functions
68         //- Disallow default bitwise copy construct
69         vtkMesh(const vtkMesh&);
71         //- Disallow default bitwise assignment
72         void operator=(const vtkMesh&);
75 public:
77     // Constructors
79         //- Construct from components
80         vtkMesh(const IOobject& io, const word& setName = "");
83     // Destructor
85         ~vtkMesh();
88     // Member Functions
90         // Access
92             const fvMeshSubset& subsetMesh() const
93             {
94                 return subsetMesh_;
95             }
97             //- Check if running subMesh
98             bool useSubMesh() const
99             {
100                 return setName_.size();
101             }
103             //- Access either mesh or submesh
104             const fvMesh& mesh() const
105             {
106                 if (useSubMesh())
107                 {
108                     return subsetMesh_.subMesh();
109                 }
110                 else
111                 {
112                     return *this;
113                 }
114             }
117         // Edit
119             //- Read mesh
120             polyMesh::readUpdateState readUpdate();
123             //- Map volume field (does in fact do very little interpolation;
124             //  just copied from fvMeshSubset)
125             template<class GeoField>
126             tmp<GeoField> interpolate(const GeoField& fld) const
127             {
128                 if (useSubMesh())
129                 {
130                     tmp<GeoField> subFld = subsetMesh_.interpolate(fld);
131                     subFld().rename(fld.name());
132                     return subFld;
133                 }
134                 else
135                 {
136                     return fld;
137                 }
138             }
142 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
144 } // End namespace Foam
146 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
148 #endif
150 // ************************************************************************* //