/usr/include/vtk-7.1/vtkTecplotReader.h is in libvtk7-dev 7.1.1+dfsg1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkTecplotReader.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/*****************************************************************************
*
* Copyright (c) 2000 - 2009, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-400124
* All rights reserved.
*
* This file was adapted from the ASCII Tecplot reader of VisIt. For details,
* see https://visit.llnl.gov/. The full copyright notice is contained in the
* file COPYRIGHT located at the root of the VisIt distribution or at
* http://www.llnl.gov/visit/copyright.html.
*
*****************************************************************************/
/**
* @class vtkTecplotReader
* @brief A concrete class to read an ASCII Tecplot file.
*
*
* vtkTecplotReader parses an ASCII Tecplot file to get a vtkMultiBlockDataSet
* object made up of several vtkDataSet objects, of which each is of type
* either vtkStructuredGrid or vtkUnstructuredGrid. Each vtkDataSet object
* maintains the geometry, topology, and some associated attributes describing
* physical properties.
*
* Tecplot treats 3D coordinates (only one or two coordinates might be
* explicitly specified in a file) as varaibles too, whose names (e.g.,
* 'X' / 'x' / 'I', 'Y' / 'y' / 'J', 'Z' / 'z' / 'K') are provided in the
* variables list (the 'VARIABLES' section). These names are then followed
* in the list by those of other traditional variables or attributes (node-
* based and / or cell-based data with the mode specified via token 'VAR
* LOCATION', to be extracted to create vtkPointData and / or vtkCellData).
* Each zone described afterwards (in the 'ZONE's section) provides the
* specific values of the aforementioned variables (including 3D coordinates),
* in the same order as indicated by the variable-names list, through either
* POINT-packing (i.e., tuple-based storage) or BLOCK-packing (component-based
* storage). In particular, the first / description line of each zone tells
* the type of all the constituent cells as the connectivity / topology
* information. In other words, the entire dataset is made up of multiple zones
* (blocks), of which each maintains a set of cells of the same type ('BRICK',
* 'TRIANGLE', 'QUADRILATERAL', 'TETRAHEDRON', and 'POINT' in Tecplot terms).
* In addition, the description line of each zone specifies the zone name,
* dimensionality information (size of each dimension for a structured zone),
* number of nodes, and number of cells. Information about the file format is
* available at http://download.tecplot.com/360/dataformat.pdf.
*
* @warning
* vtkTecplotReader is currently a simplified ASCII Tecplot reader and some
* functionalities (e.g., extraction of sections 'GEOMETRY', 'TEXT', and 'DATA
* SETAUXDATA', access to multiple time steps, in addition to the construction
* of vtkRectilinearGrid and vtkImageData objects) are not supported.
*
* @par Thanks:
* This class is a VTK implementation of VisIt's ASCII Tecplot reader.
*
* @sa
* vtkPoints vtkStructuredGrid vtkUnstructuredGrid vtkPointData vtkCellData
* vtkDataSet vtkMultiBlockDataSet
*/
#ifndef vtkTecplotReader_h
#define vtkTecplotReader_h
#include "vtkIOGeometryModule.h" // For export macro
#include "vtkMultiBlockDataSetAlgorithm.h"
#include <vector> // STL Header; Required for vector
#include <string> // STL Header; Required for string
class vtkPoints;
class vtkCellData;
class vtkPointData;
class vtkCallbackCommand;
class vtkUnstructuredGrid;
class vtkMultiBlockDataSet;
class vtkDataArraySelection;
class vtkTecplotReaderInternal;
class VTKIOGEOMETRY_EXPORT vtkTecplotReader : public vtkMultiBlockDataSetAlgorithm
{
public:
static vtkTecplotReader * New();
vtkTypeMacro( vtkTecplotReader, vtkMultiBlockDataSetAlgorithm );
void PrintSelf( ostream & os, vtkIndent indent );
//@{
/**
* Get the number of all variables (including 3D coordinates).
*/
vtkGetMacro( NumberOfVariables, int );
//@}
/**
* Specify a Tecplot ASCII file for data loading.
*/
void SetFileName( const char * fileName );
/**
* Get the Tecplot data title.
*/
const char * GetDataTitle();
/**
* Get the number of blocks (i.e., zones in Tecplot terms).
*/
int GetNumberOfBlocks();
/**
* Get the name of a block specified by a zero-based index. NULL is returned
* for an invalid block index.
*/
const char * GetBlockName( int blockIdx );
/**
* Get the number of standard data attributes (node-based and cell-based),
* excluding 3D coordinates.
*/
int GetNumberOfDataAttributes();
/**
* Get the name of a zero-based data attribute (not 3D coordinates). NULL is
* returned for an invalid attribute index.
*/
const char * GetDataAttributeName( int attrIndx );
/**
* Get the type (0 for node-based and 1 for cell-based) of a specified data
* attribute (not 3D coordinates). -1 is returned for an invalid attribute
* name.
*/
int IsDataAttributeCellBased( const char * attrName );
/**
* Get the type (0 for node-based and 1 for cell-based) of a specified data
* attribute (not 3D coordinates). -1 is returned for an invalid attribute
* index.
*/
int IsDataAttributeCellBased( int attrIndx );
/**
* Get the number of all data attributes (point data and cell data).
*/
int GetNumberOfDataArrays();
/**
* Get the name of a data array specified by the zero-based index (arrayIdx).
*/
const char * GetDataArrayName( int arrayIdx );
/**
* Get the status of a specific data array (0: un-selected; 1: selected).
*/
int GetDataArrayStatus( const char * arayName );
/**
* Set the status of a specific data array (0: de-select; 1: select) specified
* by the name.
*/
void SetDataArrayStatus( const char * arayName, int bChecked );
protected:
vtkTecplotReader();
~vtkTecplotReader();
virtual int FillOutputPortInformation( int port, vtkInformation * info );
virtual int RequestInformation( vtkInformation * request,
vtkInformationVector ** inputVector,
vtkInformationVector * outputVector );
virtual int RequestData
( vtkInformation *, vtkInformationVector **, vtkInformationVector * );
/**
* A callback function registered with the selection observer.
*/
static void SelectionModifiedCallback
( vtkObject *, unsigned long, void * tpReader, void * );
/**
* This function initializes the context. Note that the Tecplot file name
* must NOT be addressed (either specified or inited) in this function. It
* is addressed in constructor, destructor, and SetTecplotFile() only.
*/
void Init();
/**
* Get the data arrays list from the tecplot file header.
*/
void GetDataArraysList();
/**
* This function, the data loading engine, parses the Tecplot file to fill
* a vtkMultiBlockDataSet object.
*/
void ReadFile( vtkMultiBlockDataSet * multZone);
/**
* This function extracts each variable array from a block-packing (component-
* based) zone and collects the 3D point coordinates in addition to data
* attributes (node-based and / or cell-based). Note that Tecplot treats 3D
* coordinates as variables too, though three special ones.
*/
void GetArraysFromBlockPackingZone( int numNodes, int numCells,
vtkPoints * theNodes, vtkPointData * nodeData, vtkCellData * cellData );
/**
* This function extracts each variable array from a point-packing (tuple-
* based) zone and collects the 3D point coordbinates in addition to data
* attributes (node-based and / or cell-based). Note that Tecplot treats 3D
* coordinates as variables too, though three special ones. A point-packing
* zone does not contain any cell data at all, instead it is supposed to
* contain point data only, if any.
*/
void GetArraysFromPointPackingZone
( int numNodes, vtkPoints * theNodes, vtkPointData * nodeData );
/**
* This function creates a vtkStructuredGrid object made up of a set of
* points and the associated attributes (node-based and / or cell-based)
* extracted from a block-packing (i.e., component-based) zone. This
* vtkStructuredGrid is then inserted, with a specified zone name, to a
* vtkMultiBlockDataSet object.
*/
void GetStructuredGridFromBlockPackingZone( int iDimSize, int jDimSize,
int kDimSize, int zoneIndx, const char * zoneName,
vtkMultiBlockDataSet * multZone );
/**
* This function creates a vtkStructuredGrid object made up of a set of
* points and the associated attributes (node-based and / or cell-based)
* extracted from a point-packing (i.e., tuple-based) zone. This
* vtkStructuredGrid is then inserted, with a specified zone name, to a
* vtkMultiBlockDataSet object.
*/
void GetStructuredGridFromPointPackingZone( int iDimSize, int jDimSize,
int kDimSize, int zoneIndx, const char * zoneName,
vtkMultiBlockDataSet * multZone );
/**
* This function creates a vtkUnstructuredGrid object made up of a set of
* points and the associated attributes (node-based and / or cell-based)
* extracted from a block-packing (i.e., component-based) zone. This
* vtkUnstructuredGrid is then inserted, with a specified zone name, to a
* vtkMultiBlockDataSet object.
*/
void GetUnstructuredGridFromBlockPackingZone( int numNodes, int numCells,
const char * cellType, int zoneIndx, const char * zoneName,
vtkMultiBlockDataSet * multZone );
/**
* This function creates a vtkUnstructuredGrid object made up of a set of
* points and the associated attributes (node-based and / or cell-based)
* extracted from a point-packing (i.e., tuple-based) zone. This
* vtkUnstructuredGrid is then inserted, with a specified zone name, to a
* vtkMultiBlockDataSet object.
*/
void GetUnstructuredGridFromPointPackingZone( int numNodes, int numCells,
const char * cellType,int zoneIndx, const char * zoneName,
vtkMultiBlockDataSet * multZone );
/**
* This function fills an allocated vtkUnstructuredGrid object with numberCells
* cells of type cellTypeStr to define the grid topology.
*/
void GetUnstructuredGridCells( int numberCells, const char * cellTypeStr,
vtkUnstructuredGrid * unstrctGrid );
int NumberOfVariables;
char * FileName;
vtkCallbackCommand * SelectionObserver;
vtkDataArraySelection * DataArraySelection;
vtkTecplotReaderInternal * Internal;
std::string DataTitle;
std::vector< int > CellBased;
std::vector< std::string > ZoneNames;
std::vector< std::string > Variables;
private:
vtkTecplotReader( const vtkTecplotReader & ) VTK_DELETE_FUNCTION;
void operator = ( const vtkTecplotReader & ) VTK_DELETE_FUNCTION;
};
#endif
|