All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
patchWriter.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
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.
15 
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.
20 
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/>.
23 
24 Class
25  Foam::patchWriter
26 
27 Description
28  Write patch fields
29 
30 SourceFiles
31  patchWriter.C
32  patchWriterTemplates.C
33 
34 \*---------------------------------------------------------------------------*/
35 
36 #ifndef patchWriter_H
37 #define patchWriter_H
38 
39 #include "pointMesh.H"
40 #include "OFstream.H"
41 #include "volFields.H"
42 #include "pointFields.H"
43 #include "vtkMesh.H"
44 #include "indirectPrimitivePatch.H"
46 
47 using namespace Foam;
48 
49 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
50 
51 namespace Foam
52 {
53 
55 
56 /*---------------------------------------------------------------------------*\
57  Class patchWriter Declaration
58 \*---------------------------------------------------------------------------*/
59 
60 class patchWriter
61 {
62  const vtkMesh& vMesh_;
63 
64  const bool binary_;
65 
66  const bool nearCellValue_;
67 
68  const fileName fName_;
69 
70  const labelList patchIDs_;
71 
72  std::ofstream os_;
73 
74  label nPoints_;
75 
76  label nFaces_;
77 
78 public:
79 
80  // Constructors
81 
82  //- Construct from components
84  (
85  const vtkMesh&,
86  const bool binary,
87  const bool nearCellValue,
88  const fileName&,
89  const labelList& patchIDs
90  );
91 
92 
93  // Member Functions
94 
95  std::ofstream& os()
96  {
97  return os_;
98  }
99 
100  label nPoints() const
101  {
102  return nPoints_;
103  }
105  label nFaces() const
106  {
107  return nFaces_;
108  }
109 
110  //- Write cellIDs
111  void writePatchIDs();
112 
113  //- Write volFields
114  template<class Type>
115  void write
116  (
118  );
119 
120  //- Write pointFields
121  template<class Type>
122  void write
123  (
124  const UPtrList
125  <
127  >&
128  );
129 
130  //- Interpolate and write volFields
131  template<class Type>
132  void write
133  (
136  );
137 };
138 
139 
140 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
141 
142 } // End namespace Foam
143 
144 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
145 
146 #ifdef NoRepository
147  #include "patchWriterTemplates.C"
148 #endif
149 
150 
151 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
152 
153 #endif
154 
155 // ************************************************************************* //
Interpolation class within a primitive patch. Allows interpolation from points to faces and vice vers...
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
A class for handling file names.
Definition: fileName.H:79
label nPoints() const
Definition: patchWriter.H:99
Generic GeometricField class.
Write patch fields.
Definition: patchWriter.H:59
void writePatchIDs()
Write cellIDs.
void write(const UPtrList< const GeometricField< Type, fvPatchField, volMesh >> &)
Write volFields.
std::ofstream & os()
Definition: patchWriter.H:94
Encapsulation of VTK mesh data. Holds mesh or meshsubset and polyhedral-cell decomposition on it...
Definition: vtkMesh.H:52
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
Definition: UPtrList.H:54
Interpolate from cell centres to points (vertices) using inverse distance weighting.
label nFaces() const
Definition: patchWriter.H:104
patchWriter(const vtkMesh &, const bool binary, const bool nearCellValue, const fileName &, const labelList &patchIDs)
Construct from components.
Namespace for OpenFOAM.