VTK
vtkMPASReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkMPASReader.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 /*=========================================================================
16 
17 Copyright (c) 2002-2005 Los Alamos National Laboratory
18 
19 This software and ancillary information known as vtk_ext (and herein
20 called "SOFTWARE") is made available under the terms described below.
21 The SOFTWARE has been approved for release with associated LA_CC
22 Number 99-44, granted by Los Alamos National Laboratory in July 1999.
23 
24 Unless otherwise indicated, this SOFTWARE has been authored by an
25 employee or employees of the University of California, operator of the
26 Los Alamos National Laboratory under Contract No. W-7405-ENG-36 with
27 the United States Department of Energy.
28 
29 The United States Government has rights to use, reproduce, and
30 distribute this SOFTWARE. The public may copy, distribute, prepare
31 derivative works and publicly display this SOFTWARE without charge,
32 provided that this Notice and any statement of authorship are
33 reproduced on all copies.
34 
35 Neither the U. S. Government, the University of California, nor the
36 Advanced Computing Laboratory makes any warranty, either express or
37 implied, nor assumes any liability or responsibility for the use of
38 this SOFTWARE.
39 
40 If SOFTWARE is modified to produce derivative works, such modified
41 SOFTWARE should be clearly marked, so as not to confuse it with the
42 version available from Los Alamos National Laboratory.
43 
44 =========================================================================*/
80 #ifndef vtkMPASReader_h
81 #define vtkMPASReader_h
82 
83 #define MAX_VARS 100
84 #define MAX_VAR_NAME 100
85 
86 #include "vtkIONetCDFModule.h" // For export macro
88 
89 class vtkCallbackCommand;
91 class vtkDoubleArray;
92 class vtkStdString;
93 class vtkStringArray;
94 
96 {
97  public:
98  static vtkMPASReader *New();
100  void PrintSelf(ostream& os, vtkIndent indent);
101 
103 
104  vtkSetStringMacro(FileName);
105  vtkGetStringMacro(FileName);
107 
109 
110  vtkGetMacro(MaximumCells, int);
112 
114 
115  vtkGetMacro(MaximumPoints, int);
117 
119 
120  vtkGetMacro(NumberOfCellVars, int);
121  vtkGetMacro(NumberOfPointVars, int);
123 
125 
129 
131 
135  const char* GetPointArrayName(int index);
136  int GetPointArrayStatus(const char* name);
137  void SetPointArrayStatus(const char* name, int status);
141 
143  const char* GetCellArrayName(int index);
144  int GetCellArrayStatus(const char* name);
145  void SetCellArrayStatus(const char* name, int status);
148 
150  vtkGetVector2Macro(VerticalLevelRange, int);
151 
153  vtkGetVector2Macro(LayerThicknessRange, int);
154 
155  void SetCenterLon(int val);
156  vtkGetVector2Macro(CenterLonRange, int);
157 
158  void SetProjectLatLon(bool val);
159  vtkGetMacro(ProjectLatLon, bool);
160 
161  void SetIsAtmosphere(bool val);
162  vtkGetMacro(IsAtmosphere, bool);
163 
164  void SetIsZeroCentered(bool val);
165  vtkGetMacro(IsZeroCentered, bool);
166 
168  vtkGetMacro(ShowMultilayerView, bool);
169 
171  static int CanReadFile(const char *filename);
172 
173  protected:
176  void DestroyData();
177 
178  char *FileName; // First field part file giving path
179  /*
180  int Rank; // Number of this processor
181  int TotalRank; // Number of processors
182  */
183 
184  // int NumberOfPieces; // Number of files in dataset
185  // vtkIdType NumberOfTuples; // Number of tuples in sub extent
186 
187  vtkStdString* VariableName; // Names of each variable
188  int* VariableType; // Scalar, vector or tensor
189 
190  int NumberOfTimeSteps; // Temporal domain
191  double* TimeSteps; // Times available for request
192  double DTime;
193 
194 
195  // Observer to modify this object when array selections are modified
197 
202 
203 
204  static void SelectionCallback(vtkObject* caller, unsigned long eid,
205  void* clientdata, void* calldata);
206 
209 
210  // params
211 
212  // Selected field of interest
215 
216  vtkDoubleArray** CellVarDataArray; // Actual data arrays
217  vtkDoubleArray** PointVarDataArray; // Actual data arrays
218 
220  int VerticalLevelRange[2];
221 
223  int LayerThicknessRange[2];
224 
226  int CenterLonRange[2];
227 
232 
234  bool DoBugFix;
235  double CenterRad;
236 
237 
238  // geometry
245  int CurrentExtraPoint; // current extra point
246  int CurrentExtraCell; // current extra cell
247  double* PointX; // x coord of point
248  double* PointY; // y coord of point
249  double* PointZ; // z coord of point
252  int* CellMask;
253  int* OrigConnections; // original connections
254  int* ModConnections; // modified connections
255  int* CellMap; // maps from added cell to original cell #
256  int* PointMap; // maps from added point to original point #
258  int MaximumCells; // max cells
259  int MaximumPoints; // max points
260  int VerticalIndex; // for singleLayer, which vertical level
261 
262  // vars
265  double* PointVarData;
266 
267  void SetDefaults();
268  int GetNcDims();
269  int CheckParams();
270  int GetNcVars(const char* cellDimName, const char* pointDimName);
271  int ReadAndOutputGrid(bool init);
276  void ShiftLonData();
277  int AddMirrorPoint(int index, double dividerX);
278  void FixPoints();
280  void OutputPoints(bool init);
281  void OutputCells(bool init);
282  unsigned char GetCellType();
283  void LoadGeometryData(int var, double dTime);
284  int LoadPointVarData(int variable, double dTime);
285  int LoadCellVarData(int variable, double dTime);
287 
288  private:
289  vtkMPASReader(const vtkMPASReader&); // Not implemented.
290  void operator=(const vtkMPASReader&); // Not implemented.
291  class Internal;
292  Internal *Internals;
293 
294 };
295 
296 #endif
vtkMPASReader::DoBugFix
bool DoBugFix
Definition: vtkMPASReader.h:234
vtkMPASReader::MaximumPoints
int MaximumPoints
Definition: vtkMPASReader.h:259
vtkMPASReader::SelectionObserver
vtkCallbackCommand * SelectionObserver
Definition: vtkMPASReader.h:196
vtkMPASReader::New
static vtkMPASReader * New()
vtkMPASReader::CanReadFile
static int CanReadFile(const char *filename)
vtkMPASReader::CellMask
int * CellMask
Definition: vtkMPASReader.h:252
vtkMPASReader::LoadPointVarData
int LoadPointVarData(int variable, double dTime)
vtkMPASReader::VariableType
int * VariableType
Definition: vtkMPASReader.h:188
vtkMPASReader::ModNumPoints
int ModNumPoints
Definition: vtkMPASReader.h:250
vtkMPASReader::EliminateXWrap
int EliminateXWrap()
vtkGetVector2Macro
#define vtkGetVector2Macro(name, type)
Definition: vtkSetGet.h:270
vtkMPASReader::IsAtmosphere
bool IsAtmosphere
Definition: vtkMPASReader.h:229
vtkMPASReader::CenterRad
double CenterRad
Definition: vtkMPASReader.h:235
vtkMPASReader::CurrentExtraPoint
int CurrentExtraPoint
Definition: vtkMPASReader.h:245
vtkMPASReader::MaximumNVertLevels
int MaximumNVertLevels
Definition: vtkMPASReader.h:239
vtkMPASReader::DTime
double DTime
Definition: vtkMPASReader.h:192
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:41
vtkMPASReader::CenterLon
int CenterLon
Definition: vtkMPASReader.h:225
vtkMPASReader::ModConnections
int * ModConnections
Definition: vtkMPASReader.h:254
vtkMPASReader::EnableAllPointArrays
void EnableAllPointArrays()
vtkMPASReader::PointY
double * PointY
Definition: vtkMPASReader.h:248
vtkMPASReader::AddMirrorPoint
int AddMirrorPoint(int index, double dividerX)
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkMPASReader::AllocLatLonGeometry
int AllocLatLonGeometry()
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkMPASReader::NumberOfPoints
int NumberOfPoints
Definition: vtkMPASReader.h:241
vtkMPASReader::NumberOfCells
int NumberOfCells
Definition: vtkMPASReader.h:240
vtkMPASReader::PointDataArraySelection
vtkDataArraySelection * PointDataArraySelection
Definition: vtkMPASReader.h:213
vtkMPASReader::SelectionCallback
static void SelectionCallback(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata)
vtkMPASReader::AllocSphereGeometry
int AllocSphereGeometry()
vtkMPASReader::LoadGeometryData
void LoadGeometryData(int var, double dTime)
vtkMPASReader::SetLayerThickness
void SetLayerThickness(int val)
vtkMPASReader::EnableAllCellArrays
void EnableAllCellArrays()
vtkMPASReader::SetDefaults
void SetDefaults()
vtkMPASReader::CurrentExtraCell
int CurrentExtraCell
Definition: vtkMPASReader.h:246
vtkMPASReader::SetVerticalLevel
void SetVerticalLevel(int level)
vtkMPASReader::SetCenterLon
void SetCenterLon(int val)
vtkMPASReader::MaximumLevelPoint
int * MaximumLevelPoint
Definition: vtkMPASReader.h:257
vtkMPASReader::NumberOfTimeSteps
int NumberOfTimeSteps
Definition: vtkMPASReader.h:190
vtkMPASReader::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkMPASReader::SetCellArrayStatus
void SetCellArrayStatus(const char *name, int status)
vtkDataArraySelection
Store on/off settings for data arrays for a vtkSource.
Definition: vtkDataArraySelection.h:34
vtkMPASReader::CellOffset
int CellOffset
Definition: vtkMPASReader.h:242
vtkMPASReader::IncludeTopography
bool IncludeTopography
Definition: vtkMPASReader.h:233
vtkgl::val
GLuint GLfloat * val
Definition: vtkgl.h:13789
vtkMPASReader::OrigConnections
int * OrigConnections
Definition: vtkMPASReader.h:253
vtkMPASReader::VariableName
vtkStdString * VariableName
Definition: vtkMPASReader.h:187
vtkMPASReader::DataRequested
bool DataRequested
Definition: vtkMPASReader.h:208
vtkgl::name
GLuint const GLchar * name
Definition: vtkgl.h:11983
vtkMPASReader
Read an MPAS netCDF file.
Definition: vtkMPASReader.h:96
vtkMPASReader::GetPointArrayStatus
int GetPointArrayStatus(const char *name)
vtkMPASReader::LayerThickness
int LayerThickness
Definition: vtkMPASReader.h:222
vtkMPASReader::CellDataArraySelection
vtkDataArraySelection * CellDataArraySelection
Definition: vtkMPASReader.h:214
vtkMPASReader::NumberOfCellVars
int NumberOfCellVars
Definition: vtkMPASReader.h:263
vtkMPASReader::SetProjectLatLon
void SetProjectLatLon(bool val)
vtkMPASReader::PointOffset
int PointOffset
Definition: vtkMPASReader.h:243
vtkMPASReader::PointX
double * PointX
Definition: vtkMPASReader.h:247
vtkMPASReader::DisableAllCellArrays
void DisableAllCellArrays()
vtkMPASReader::PointZ
double * PointZ
Definition: vtkMPASReader.h:249
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkMPASReader::GetPointArrayName
const char * GetPointArrayName(int index)
vtkSetStringMacro
#define vtkSetStringMacro(name)
Definition: vtkSetGet.h:104
vtkMPASReader::DisableAllPointArrays
void DisableAllPointArrays()
vtkMPASReader::GetNumberOfPointArrays
int GetNumberOfPointArrays()
vtkMPASReader::NumberOfPointVars
int NumberOfPointVars
Definition: vtkMPASReader.h:264
vtkMPASReader::GetCellArrayStatus
int GetCellArrayStatus(const char *name)
vtkMPASReader::SetPointArrayStatus
void SetPointArrayStatus(const char *name, int status)
vtkMPASReader::PointVarData
double * PointVarData
Definition: vtkMPASReader.h:265
vtkMPASReader::PointsPerCell
int PointsPerCell
Definition: vtkMPASReader.h:244
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkMPASReader::CellMap
int * CellMap
Definition: vtkMPASReader.h:255
vtkMPASReader::MaximumCells
int MaximumCells
Definition: vtkMPASReader.h:258
vtkGetStringMacro
vtkGetStringMacro(ExtensionsString)
vtkMPASReader::GetNcDims
int GetNcDims()
vtkMPASReader::ModNumCells
int ModNumCells
Definition: vtkMPASReader.h:251
vtkMPASReader::RegenerateGeometry
int RegenerateGeometry()
vtkgl::level
GLint level
Definition: vtkgl.h:11316
vtkMPASReader::OutputCells
void OutputCells(bool init)
vtkMPASReader::OutputPoints
void OutputPoints(bool init)
vtkMPASReader::ShiftLonData
void ShiftLonData()
vtkMPASReader::FileName
char * FileName
Definition: vtkMPASReader.h:178
vtkMPASReader::LoadCellVarData
int LoadCellVarData(int variable, double dTime)
vtkMPASReader::GetNumberOfCellArrays
int GetNumberOfCellArrays()
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:86
vtkMPASReader::ReadAndOutputVariableData
int ReadAndOutputVariableData()
vtkgl::index
GLuint index
Definition: vtkgl.h:11983
vtkMPASReader::RequestInformation
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
vtkMPASReader::ReadAndOutputGrid
int ReadAndOutputGrid(bool init)
vtkMPASReader::PointVarDataArray
vtkDoubleArray ** PointVarDataArray
Definition: vtkMPASReader.h:217
vtkMPASReader::vtkMPASReader
vtkMPASReader()
vtkMPASReader::SetShowMultilayerView
void SetShowMultilayerView(bool val)
vtkMPASReader::DestroyData
void DestroyData()
vtkMPASReader::~vtkMPASReader
~vtkMPASReader()
vtkMPASReader::GetOutput
vtkUnstructuredGrid * GetOutput(int index)
VTKIONETCDF_EXPORT
#define VTKIONETCDF_EXPORT
Definition: vtkIONetCDFModule.h:15
vtkCallbackCommand
supports function callbacks
Definition: vtkCallbackCommand.h:50
vtkMPASReader::GetCellType
unsigned char GetCellType()
vtkUnstructuredGridAlgorithm.h
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:45
vtkMPASReader::GetOutput
vtkUnstructuredGrid * GetOutput()
vtkUnstructuredGridAlgorithm
Superclass for algorithms that produce only unstructured grid as output.
Definition: vtkUnstructuredGridAlgorithm.h:40
vtkDoubleArray
dynamic, self-adjusting array of double
Definition: vtkDoubleArray.h:49
vtkUnstructuredGrid
dataset represents arbitrary combinations of all possible cell types
Definition: vtkUnstructuredGrid.h:82
vtkIONetCDFModule.h
vtkMPASReader::CheckParams
int CheckParams()
vtkMPASReader::VerticalIndex
int VerticalIndex
Definition: vtkMPASReader.h:260
vtkMPASReader::ShowMultilayerView
bool ShowMultilayerView
Definition: vtkMPASReader.h:231
vtkMPASReader::GetCellArrayName
const char * GetCellArrayName(int index)
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:48
vtkMPASReader::CellVarDataArray
vtkDoubleArray ** CellVarDataArray
Definition: vtkMPASReader.h:216
vtkMPASReader::GetNcVars
int GetNcVars(const char *cellDimName, const char *pointDimName)
vtkMPASReader::BuildVarArrays
int BuildVarArrays()
vtkMPASReader::RequestData
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
vtkgl::variable
GLenum GLenum variable
Definition: vtkgl.h:15941
vtkMPASReader::SetIsAtmosphere
void SetIsAtmosphere(bool val)
vtkMPASReader::FixPoints
void FixPoints()
vtkMPASReader::ProjectLatLon
bool ProjectLatLon
Definition: vtkMPASReader.h:228
vtkMPASReader::IsZeroCentered
bool IsZeroCentered
Definition: vtkMPASReader.h:230
vtkMPASReader::SetIsZeroCentered
void SetIsZeroCentered(bool val)
vtkMPASReader::PointMap
int * PointMap
Definition: vtkMPASReader.h:256
vtkMPASReader::VerticalLevelSelected
int VerticalLevelSelected
Definition: vtkMPASReader.h:219
vtkMPASReader::InfoRequested
bool InfoRequested
Definition: vtkMPASReader.h:207
vtkMPASReader::TimeSteps
double * TimeSteps
Definition: vtkMPASReader.h:191