forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkVPICReader.h
184 lines (148 loc) · 6.14 KB
/
vtkVPICReader.h
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
/*=========================================================================
Program: Visualization Toolkit
Module: vtkVPICReader.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.
=========================================================================*/
/**
* @class vtkVPICReader
* @brief class for reading VPIC data files
*
* vtkDataReader is a helper superclass that reads the vtk data file header,
* dataset type, and attribute data (point and cell attributes such as
* scalars, vectors, normals, etc.) from a vtk data file. See text for
* the format of the various vtk file types.
*
* @sa
* vtkPolyDataReader vtkStructuredPointsReader vtkStructuredGridReader
* vtkUnstructuredGridReader vtkRectilinearGridReader
*/
#ifndef vtkVPICReader_h
#define vtkVPICReader_h
#include "vtkIOVPICModule.h" // For export macro
#include "vtkImageAlgorithm.h"
class vtkCallbackCommand;
class vtkDataArraySelection;
class vtkFloatArray;
class vtkStdString;
class vtkMultiProcessController;
class vtkInformation;
class VPICDataSet;
class GridExchange;
class VTKIOVPIC_EXPORT vtkVPICReader : public vtkImageAlgorithm
{
public:
static vtkVPICReader *New();
vtkTypeMacro(vtkVPICReader,vtkImageAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
//@{
/**
* Specify file name of VPIC data file to read.
*/
vtkSetStringMacro(FileName);
vtkGetStringMacro(FileName);
//@}
//@{
/**
* Set the stride in each dimension
*/
vtkSetVector3Macro(Stride, int);
vtkGetVector3Macro(Stride, int);
//@}
//@{
/**
* Set the simulation file decomposition in each dimension
*/
vtkSetVector2Macro(XExtent, int);
vtkSetVector2Macro(YExtent, int);
vtkSetVector2Macro(ZExtent, int);
//@}
// Get the full layout size in files for setting the range in GUI
vtkGetVector2Macro(XLayout, int);
vtkGetVector2Macro(YLayout, int);
vtkGetVector2Macro(ZLayout, int);
//@{
/**
* Get the reader's output
*/
vtkImageData *GetOutput();
vtkImageData *GetOutput(int index);
//@}
//@{
/**
* The following methods allow selective reading of solutions fields.
* By default, ALL data fields on the nodes are read, but this can
* be modified.
*/
int GetNumberOfPointArrays();
const char* GetPointArrayName(int index);
int GetPointArrayStatus(const char* name);
void SetPointArrayStatus(const char* name, int status);
void DisableAllPointArrays();
void EnableAllPointArrays();
//@}
protected:
vtkVPICReader();
~vtkVPICReader();
char *FileName; // First field part file giving path
int Rank; // Number of this processor
int TotalRank; // Number of processors
int UsedRank; // Number of processors used in display
VPICDataSet* vpicData; // Data structure controlling access
GridExchange* exchanger; // Exchange ghost cells between procs
vtkIdType NumberOfNodes; // Number of points in grid
vtkIdType NumberOfCells; // Number of cells in grid
vtkIdType NumberOfTuples; // Number of tuples in sub extent
int WholeExtent[6]; // Problem image extent
int SubExtent[6]; // Processor problem extent
int Dimension[3]; // Size of image
int SubDimension[3]; // Size of subextent of image
int XLayout[2]; // Extent in complete files
int YLayout[2]; // Extent in complete files
int ZLayout[2]; // Extent in complete files
int NumberOfVariables; // Number of variables to display
vtkStdString* VariableName; // Names of each variable
int* VariableStruct; // Scalar, vector or tensor
int NumberOfTimeSteps; // Temporal domain
double* TimeSteps; // Times available for request
int CurrentTimeStep; // Time currently displayed
int Stride[3]; // Stride over actual data
int XExtent[2]; // Subview extent in files
int YExtent[2]; // Subview extent in files
int ZExtent[2]; // Subview extent in files
vtkFloatArray** data; // Actual data arrays
int* dataLoaded; // Data is loaded for current time
int Start[3]; // Start offset for processor w ghosts
int GhostDimension[3]; // Dimension including ghosts on proc
int NumberOfGhostTuples; // Total ghost cells per component
int ghostLevel0; // Left plane number of ghosts
int ghostLevel1; // Right plane number of ghosts
// Controls initializing and querrying MPI
vtkMultiProcessController * MPIController;
// Selected field of interest
vtkDataArraySelection* PointDataArraySelection;
// Observer to modify this object when array selections are modified
vtkCallbackCommand* SelectionObserver;
int RequestData(vtkInformation *, vtkInformationVector **,
vtkInformationVector *) VTK_OVERRIDE;
int RequestInformation(vtkInformation *, vtkInformationVector **inVector,
vtkInformationVector *) VTK_OVERRIDE;
void LoadVariableData(int var, int timeStep);
void LoadComponent(
float* varData,
float* block,
int comp,
int numberOfComponents);
static void SelectionCallback(vtkObject* caller, unsigned long eid,
void* clientdata, void* calldata);
static void EventCallback(vtkObject* caller, unsigned long eid,
void* clientdata, void* calldata);
private:
vtkVPICReader(const vtkVPICReader&) VTK_DELETE_FUNCTION;
void operator=(const vtkVPICReader&) VTK_DELETE_FUNCTION;
};
#endif