Forward compatibility: flex
[foam-extend-3.2.git] / applications / utilities / postProcessing / dataConversion / foamToVTK / writeFuns.H
blob86122b4d6bacd2d1c11fe4c24df6d4038645a885
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::writeFunctions
27 Description
28     Various functions for collecting and writing binary data.
30 SourceFiles
31     writeFunctions.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef writeFunctions_H
36 #define writeFunctions_H
38 #include "floatScalar.H"
39 #include "DynamicList.H"
40 #include "volFieldsFwd.H"
41 #include "pointFieldsFwd.H"
42 #include "vtkMesh.H"
43 #include "volPointInterpolation.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 /*---------------------------------------------------------------------------*\
51                            Class writeFuns Declaration
52 \*---------------------------------------------------------------------------*/
54 class writeFuns
56     // Private member functions
58         // Swap halves of word.
60             static void swapWord(label& word32);
61             static void swapWords(const label nWords, label* words32);
64 public:
66     // Write ascii or binary. If binary optionally in-place swaps argument
68         static void write(std::ostream&, const bool, List<floatScalar>&);
69         static void write(std::ostream&, const bool, DynamicList<floatScalar>&);
70         static void write(std::ostream&, const bool, labelList&);
71         static void write(std::ostream&, const bool, DynamicList<label>&);
74     // Write header
76         static void writeHeader
77         (
78             std::ostream&,
79             const bool,
80             const string&
81         );
83         static void writeCellDataHeader
84         (
85             std::ostream&,
86             const label,
87             const label
88         );
90         static void writePointDataHeader
91         (
92             std::ostream&,
93             const label,
94             const label
95         );
98     // Convert to VTK and store
100         static void insert(const scalar&, DynamicList<floatScalar>&);
101         static void insert(const point&, DynamicList<floatScalar>&);
102         static void insert(const sphericalTensor&, DynamicList<floatScalar>&);
103         static void insert(const symmTensor&, DynamicList<floatScalar>&);
104         static void insert(const tensor&, DynamicList<floatScalar>&);
107     //- Append elements to DynamicList
108     static void insert(const labelList&, DynamicList<label>&);
109     template<class Type>
110     static void insert(const List<Type>&, DynamicList<floatScalar>&);
112     //- Write volField with cell values (including decomposed cells)
113     template<class Type>
114     static void write
115     (
116         std::ostream&,
117         const bool binary,
118         const GeometricField<Type, fvPatchField, volMesh>&,
119         const vtkMesh&
120     );
122     //- Write pointField on all mesh points. Interpolate to cell centre
123     //  for decomposed cell centres.
124     template<class Type>
125     static void write
126     (
127         std::ostream&,
128         const bool binary,
129         const GeometricField<Type, pointPatchField, pointMesh>&,
130         const vtkMesh&
131     );
133     //- Write interpolated field on points and original cell values on
134     //  decomposed cell centres.
135     template<class Type>
136     static void write
137     (
138         std::ostream&,
139         const bool binary,
140         const GeometricField<Type, fvPatchField, volMesh>&,
141         const GeometricField<Type, pointPatchField, pointMesh>&,
142         const vtkMesh&
143     );
145     //- Write generic GeometricFields
146     template<class Type, template<class> class PatchField, class GeoMesh>
147     static void write
148     (
149         std::ostream&,
150         const bool binary,
151         const PtrList<GeometricField<Type, PatchField, GeoMesh> >&,
152         const vtkMesh&
153     );
155     //- Interpolate and write volFields
156     template<class Type>
157     static void write
158     (
159         std::ostream&,
160         const bool binary,
161         const volPointInterpolation&,
162         const PtrList<GeometricField<Type, fvPatchField, volMesh> >&,
163         const vtkMesh&
164     );
168 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
170 } // End namespace Foam
172 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
174 #ifdef NoRepository
175 #   include "writeFunsTemplates.C"
176 #endif
178 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
180 #endif
182 // ************************************************************************* //