fieldVisualisationBase.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2015-2019 OpenCFD Ltd.
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 Class
27  Foam::functionObjects::runTimePostPro::fieldVisualisationBase
28 
29 Description
30  Base class for scene objects
31 
32  Dictionary controls - colour by field
33  \table
34  Property | Description | Required | Default
35  colourBy | Colouring type (color / field) | yes |
36  range | Lower/upper range to display | yes |
37  smooth | Request smoother output | no | false
38  colourMap | Colour map for rendering | no | rainbow
39  scalarBar | Scalar-bar sub-dictionary | yes |
40  \endtable
41 
42 Colour maps include "coolToWarm" ("blueWhiteRed"), "coldAndHot",
43 "fire", "rainbow", "greyscale" ("grayscale"), "xray". For historical
44 reasons, the default is still "rainbow".
45 
46 SourceFiles
47  fieldVisualisationBase.C
48 
49 \*---------------------------------------------------------------------------*/
50 
51 #ifndef functionObjects_fieldVisualisationBase_H
52 #define functionObjects_fieldVisualisationBase_H
53 
54 #include "dictionary.H"
55 #include "Tuple2.H"
56 #include "Enum.H"
57 #include "vector.H"
58 #include "MinMax.H"
59 #include "HashPtrTable.H"
60 #include "scalarBar.H"
61 #include "Function1.H"
62 
63 #include "vtkSmartPointer.h"
64 
65 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
66 
67 // Forward Declarations
68 class vtkActor;
69 class vtkCompositeDataSet;
70 class vtkCompositeDataGeometryFilter;
71 class vtkCompositePolyDataMapper;
72 class vtkDataSet;
73 class vtkDataSetAlgorithm;
74 class vtkFieldData;
75 class vtkLookupTable;
76 class vtkMapper;
77 class vtkPolyData;
78 class vtkPolyDataMapper;
79 class vtkRenderer;
80 
81 
82 namespace Foam
83 {
84 namespace functionObjects
85 {
86 // Forward Declarations
87 class runTimePostProcessing;
88 
89 namespace runTimePostPro
90 {
91 
92 /*---------------------------------------------------------------------------*\
93  Class fieldVisualisationBase Declaration
94 \*---------------------------------------------------------------------------*/
95 
96 class fieldVisualisationBase
97 {
98 public:
99 
100  // Public Enumerations
101 
102  //- Colouring type
103  enum colourByType
104  {
105  cbColour,
106  cbField
107  };
108 
109  //- Enumeration names for colourByType
110  static const Enum<colourByType> colourByTypeNames;
111 
112  //- Colour map enumerations
113  enum colourMapType
114  {
115  cmCoolToWarm,
117  cmColdAndHot,
118  cmFire,
119  cmRainbow,
120  cmGreyscale,
121  cmXray
122  };
123 
124  //- Enumeration names for colourMapType
126 
127 
128  //- Enumeration of the data field associations
129  // These values are used internally and do NOT correspond to the
130  // vtkDataObject::FieldAssociations enumeration.
131  enum FieldAssociation
132  {
133  NO_DATA = 0,
134  CELL_DATA = 0x1,
135  POINT_DATA = 0x2,
136  CELL_POINT_DATA = 0x3
137  };
138 
139 
140  //- General field characteristics.
141  // For convenience, the interface is exposed but external use is
142  // highly discouraged.
143  struct fieldSummary
144  {
146  unsigned association_;
148 
149  //- Construct null
151  :
152  nComponents_(0),
153  association_(0u),
155  {}
156 
157  //- Parallel reduction. A no-op if Pstream::parRun() is false
158  void reduce();
159 
160  //- True if nComponents_ == 1
161  bool isScalar() const
162  {
163  return nComponents_ == 1;
164  }
165 
166  //- True if nComponents_ == 3
167  bool isVector() const
168  {
169  return nComponents_ == 3;
170  }
171 
172  //- True if association_ is non-zero
173  bool exists() const
174  {
175  return association_;
176  }
177 
178  //- True if there is a POINT_DATA association
179  bool hasPointData() const
180  {
182  }
183 
185  {
186  return InfoProxy<fieldSummary>(*this);
187  }
188  };
189 
190 
191 protected:
192 
193  // Protected Data
194 
195  //- Colours
197 
198  //- Field name
200 
201  //- Requested smoother fields (eg, interpolate cell -> point values)
202  bool smooth_;
203 
204  //- Colour by type
206 
207  //- Colour map type
209 
210  //- Range of values
212 
213  //- Scalar bar characteristics
214  scalarBar scalarBar_;
215 
216 
217  // Protected Member Functions
218 
219  //- Query DataSet for field name and its field association
221  (
222  const word& fieldName,
223  vtkDataSet* dataset
224  );
225 
226  //- Query composite DataSet for field name and its FieldAssociation
228  (
229  const word& fieldName,
230  vtkCompositeDataSet* data
231  );
232 
233  //- Query DataSet for field name and its field association
235  (
236  const word& fieldName,
237  vtkDataSet* dataset
238  );
239 
240  //- Query composite DataSet for field name and its FieldAssociation
242  (
243  const word& fieldName,
244  vtkCompositeDataSet* data
245  );
246 
247 
248  //- Add "mag(..)" field for filters that only accept scalars
249  static void addMagField
250  (
251  const word& fieldName,
252  vtkFieldData* fieldData
253  );
254 
255  //- Add "mag(..)" field for filters that only accept scalars
256  static void addMagField
257  (
258  const word& fieldName,
259  vtkDataSet* dataset
260  );
261 
262  //- Add "mag(..)" field for filters that only accept scalars
263  static void addMagField
264  (
265  const word& fieldName,
266  vtkCompositeDataSet* data
267  );
268 
269 
270  //- Set the colour map
271  void setColourMap(vtkLookupTable* lut) const;
272 
273  //- Add scalar bar (if visible) to renderer
274  void addScalarBar
275  (
276  const scalar position,
277  vtkRenderer* renderer,
278  vtkLookupTable* lut
279  ) const;
280 
281  //- Set field/configure mapper, add scalar bar
282  void setField
283  (
284  const scalar position,
285  const word& colourFieldName,
286  const FieldAssociation fieldAssociation,
287  vtkMapper* mapper,
288  vtkRenderer* renderer
289  ) const;
290 
291  //- Add glyphs
292  void addGlyphs
293  (
294  const scalar position,
295  const word& scaleFieldName,
296  const fieldSummary& scaleFieldInfo,
297  const word& colourFieldName,
298  const fieldSummary& colourFieldInfo,
299  const scalar maxGlyphLength,
300 
301  vtkPolyData* data,
302  vtkActor* actor,
303  vtkRenderer* renderer
304  ) const;
305 
306 
307  //- No copy construct
309 
310  //- No copy assignment
311  void operator=(const fieldVisualisationBase&) = delete;
312 
313 
314 public:
315 
316  // Constructors
317 
318  //- Construct from dictionary
320  (
321  const dictionary& dict,
323  );
324 
325 
326  //- Destructor
327  virtual ~fieldVisualisationBase();
328 
329 
330  // Member Functions
331 
332  // Access
333 
334  //- Return the colours
335  const HashPtrTable<Function1<vector>>& colours() const;
336 
337  //- Return the field name
338  const word& fieldName() const;
339 };
340 
341 
342 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
343 
344 } // End namespace runTimePostPro
345 } // End namespace functionObjects
346 
347 
348 // Ostream
349 Ostream& operator<<
350 (
351  Ostream& os,
352  const InfoProxy
353  <
355  >& proxy
356 );
357 
358 
359 } // End namespace Foam
360 
361 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
362 
363 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
364 
365 #endif
366 
367 // ************************************************************************* //
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::cmRainbow
"rainbow"
Definition: fieldVisualisationBase.H:148
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::queryFieldAssociation
static FieldAssociation queryFieldAssociation(const word &fieldName, vtkDataSet *dataset)
Query DataSet for field name and its field association.
Definition: fieldVisualisationBase.C:179
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::colourMap_
colourMapType colourMap_
Colour map type.
Definition: fieldVisualisationBase.H:237
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::cmBlueWhiteRed
Definition: fieldVisualisationBase.H:145
scalarBar.H
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldVisualisationBase
fieldVisualisationBase(const fieldVisualisationBase &)=delete
No copy construct.
Foam::Enum< colourByType >
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::FieldAssociation
FieldAssociation
Enumeration of the data field associations.
Definition: fieldVisualisationBase.H:160
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::cbField
"field" : Use named field
Definition: fieldVisualisationBase.H:135
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:62
Foam::InfoProxy
A helper class for outputting values to Ostream.
Definition: InfoProxy.H:47
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::range_
Tuple2< scalar, scalar > range_
Range of values.
Definition: fieldVisualisationBase.H:240
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldSummary
General field characteristics.
Definition: fieldVisualisationBase.H:172
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldSummary::isScalar
bool isScalar() const
True if nComponents_ == 1.
Definition: fieldVisualisationBase.H:190
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldName_
word fieldName_
Field name.
Definition: fieldVisualisationBase.H:228
Tuple2.H
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::cmCoolToWarm
ParaView "Cool To Warm" blue-white-read.
Definition: fieldVisualisationBase.H:144
Foam::expressions::patchExpr::POINT_DATA
Point data.
Definition: patchExprFwd.H:60
Function1.H
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldSummary::reduce
void reduce()
Parallel reduction. A no-op if Pstream::parRun() is false.
Definition: fieldVisualisationBase.C:363
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::NO_DATA
No associated data.
Definition: fieldVisualisationBase.H:162
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldSummary::isVector
bool isVector() const
True if nComponents_ == 3.
Definition: fieldVisualisationBase.H:196
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::CELL_DATA
Associated with cells (faces)
Definition: fieldVisualisationBase.H:163
MinMax.H
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::CELL_POINT_DATA
Associated with cells and/or points.
Definition: fieldVisualisationBase.H:165
Foam::vtk::legacy::fieldData
void fieldData(vtk::formatter &fmt, label nFields)
Emit "FIELD FieldData <n>".
Definition: foamVtkOutputI.H:133
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::addMagField
static void addMagField(const word &fieldName, vtkFieldData *fieldData)
Add "mag(..)" field for filters that only accept scalars.
Definition: fieldVisualisationBase.C:238
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::POINT_DATA
Associated with points.
Definition: fieldVisualisationBase.H:164
Foam::Function1
Top level data entry class for use in dictionaries. Provides a mechanism to specify a variable as a c...
Definition: Function1.H:56
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldSummary::range_
scalarMinMax range_
Definition: fieldVisualisationBase.H:176
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::colourMapTypeNames
static const Enum< colourMapType > colourMapTypeNames
Enumeration names for colourMapType.
Definition: fieldVisualisationBase.H:154
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::setColourMap
void setColourMap(vtkLookupTable *lut) const
Set the colour map.
Definition: fieldVisualisationBase.C:395
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::setField
void setField(const scalar position, const word &colourFieldName, const FieldAssociation fieldAssociation, vtkMapper *mapper, vtkRenderer *renderer) const
Set field/configure mapper, add scalar bar.
Definition: fieldVisualisationBase.C:496
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::cmXray
ParaView "X Ray".
Definition: fieldVisualisationBase.H:150
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldSummary::info
InfoProxy< fieldSummary > info() const
Definition: fieldVisualisationBase.H:213
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::colourByType
colourByType
Colouring type.
Definition: fieldVisualisationBase.H:132
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::colourMapType
colourMapType
Colour map enumerations.
Definition: fieldVisualisationBase.H:142
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::colourBy_
colourByType colourBy_
Colour by type.
Definition: fieldVisualisationBase.H:234
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldSummary::exists
bool exists() const
True if association_ is non-zero.
Definition: fieldVisualisationBase.H:202
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::queryFieldSummary
static fieldSummary queryFieldSummary(const word &fieldName, vtkDataSet *dataset)
Query DataSet for field name and its field association.
Definition: fieldVisualisationBase.C:90
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::scalarBar_
scalarBar scalarBar_
Scalar bar characteristics.
Definition: fieldVisualisationBase.H:243
dict
dictionary dict
Definition: searchingEngine.H:14
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::smooth_
bool smooth_
Requested smoother fields (eg, interpolate cell -> point values)
Definition: fieldVisualisationBase.H:231
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:121
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldSummary::association_
unsigned association_
Definition: fieldVisualisationBase.H:175
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::operator=
void operator=(const fieldVisualisationBase &)=delete
No copy assignment.
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::cmGreyscale
ParaView "Grayscale".
Definition: fieldVisualisationBase.H:149
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldSummary::fieldSummary
fieldSummary()
Construct null.
Definition: fieldVisualisationBase.H:179
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::cmColdAndHot
ParaView "Cold and Hot".
Definition: fieldVisualisationBase.H:146
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::addGlyphs
void addGlyphs(const scalar position, const word &scaleFieldName, const fieldSummary &scaleFieldInfo, const word &colourFieldName, const fieldSummary &colourFieldInfo, const scalar maxGlyphLength, vtkPolyData *data, vtkActor *actor, vtkRenderer *renderer) const
Add glyphs.
Definition: fieldVisualisationBase.C:562
Foam::functionObjects::runTimePostPro::fieldVisualisationBase
Base class for scene objects.
Definition: fieldVisualisationBase.H:125
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::colours
const HashPtrTable< Function1< vector > > & colours() const
Return the colours.
Definition: fieldVisualisationBase.C:794
Foam::HashPtrTable
A HashTable of pointers to objects of type <T>.
Definition: HashPtrTable.H:54
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::cmFire
ParaView "Black-Body Radiation".
Definition: fieldVisualisationBase.H:147
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::colours_
const HashPtrTable< Function1< vector > > & colours_
Colours.
Definition: fieldVisualisationBase.H:225
HashPtrTable.H
dictionary.H
vector.H
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::colourByTypeNames
static const Enum< colourByType > colourByTypeNames
Enumeration names for colourByType.
Definition: fieldVisualisationBase.H:139
Foam::Ostream
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:56
Foam::Tuple2< scalar, scalar >
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::~fieldVisualisationBase
virtual ~fieldVisualisationBase()
Destructor.
Definition: fieldVisualisationBase.C:787
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::cbColour
"colour" : Use specified colour
Definition: fieldVisualisationBase.H:134
Foam::MinMax< scalar >
Foam::data
Database for solution data, solver performance and other reduced data.
Definition: data.H:54
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldSummary::nComponents_
int nComponents_
Definition: fieldVisualisationBase.H:174
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldName
const word & fieldName() const
Return the field name.
Definition: fieldVisualisationBase.C:801
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::fieldSummary::hasPointData
bool hasPointData() const
True if there is a POINT_DATA association.
Definition: fieldVisualisationBase.H:208
Foam::functionObjects::runTimePostPro::fieldVisualisationBase::addScalarBar
void addScalarBar(const scalar position, vtkRenderer *renderer, vtkLookupTable *lut) const
Add scalar bar (if visible) to renderer.
Definition: fieldVisualisationBase.C:480
Enum.H