VTK  9.1.0
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
17Copyright (c) 2002-2005 Los Alamos National Laboratory
18
19This software and ancillary information known as vtk_ext (and herein
20called "SOFTWARE") is made available under the terms described below.
21The SOFTWARE has been approved for release with associated LA_CC
22Number 99-44, granted by Los Alamos National Laboratory in July 1999.
23
24Unless otherwise indicated, this SOFTWARE has been authored by an
25employee or employees of the University of California, operator of the
26Los Alamos National Laboratory under Contract No. W-7405-ENG-36 with
27the United States Department of Energy.
28
29The United States Government has rights to use, reproduce, and
30distribute this SOFTWARE. The public may copy, distribute, prepare
31derivative works and publicly display this SOFTWARE without charge,
32provided that this Notice and any statement of authorship are
33reproduced on all copies.
34
35Neither the U. S. Government, the University of California, nor the
36Advanced Computing Laboratory makes any warranty, either express or
37implied, nor assumes any liability or responsibility for the use of
38this SOFTWARE.
39
40If SOFTWARE is modified to produce derivative works, such modified
41SOFTWARE should be clearly marked, so as not to confuse it with the
42version available from Los Alamos National Laboratory.
43
44=========================================================================*/
77#ifndef vtkMPASReader_h
78#define vtkMPASReader_h
79
80#include "vtkIONetCDFModule.h" // For export macro
82
83#include <string> // for std::string
84
87class vtkDoubleArray;
88class vtkStdString;
89class vtkStringArray;
90
91class VTKIONETCDF_EXPORT vtkMPASReader : public vtkUnstructuredGridAlgorithm
92{
93public:
94 static vtkMPASReader* New();
96 void PrintSelf(ostream& os, vtkIndent indent) override;
97
99
105
107
110 vtkGetMacro(MaximumCells, int);
112
114
117 vtkGetMacro(MaximumPoints, int);
119
121
124 virtual int GetNumberOfCellVars();
125 virtual int GetNumberOfPointVars();
127
129
135
137
143 vtkSetMacro(UseDimensionedArrayNames, bool);
144 vtkGetMacro(UseDimensionedArrayNames, bool);
145 vtkBooleanMacro(UseDimensionedArrayNames, bool);
147
149
155 const char* GetPointArrayName(int index);
156 int GetPointArrayStatus(const char* name);
157 void SetPointArrayStatus(const char* name, int status);
161
163 const char* GetCellArrayName(int index);
164 int GetCellArrayStatus(const char* name);
165 void SetCellArrayStatus(const char* name, int status);
168
170
179 std::string GetDimensionName(int idx);
181 int GetDimensionCurrentIndex(const std::string& dim);
182 void SetDimensionCurrentIndex(const std::string& dim, int idx);
183 int GetDimensionSize(const std::string& dim);
185
187
191 vtkSetMacro(VerticalDimension, std::string);
192 vtkGetMacro(VerticalDimension, std::string);
194
196
200 void SetVerticalLevel(int level);
203
204 vtkGetVector2Macro(VerticalLevelRange, int);
205
206 vtkSetMacro(LayerThickness, int);
207 vtkGetMacro(LayerThickness, int);
208 vtkGetVector2Macro(LayerThicknessRange, int);
209
210 void SetCenterLon(int val);
211 vtkGetVector2Macro(CenterLonRange, int);
212
213 vtkSetMacro(ProjectLatLon, bool);
214 vtkGetMacro(ProjectLatLon, bool);
215
216 vtkSetMacro(IsAtmosphere, bool);
217 vtkGetMacro(IsAtmosphere, bool);
218
219 vtkSetMacro(IsZeroCentered, bool);
220 vtkGetMacro(IsZeroCentered, bool);
221
222 vtkSetMacro(ShowMultilayerView, bool);
223 vtkGetMacro(ShowMultilayerView, bool);
224
228 static int CanReadFile(VTK_FILEPATH const char* filename);
229
231
232protected:
234 ~vtkMPASReader() override;
237
238 char* FileName; // First field part file giving path
239
240 size_t NumberOfTimeSteps; // Temporal domain
241 double DTime; // The current time
242
243 // Observer to modify this object when array selections are modified
245
248
249 static void SelectionCallback(
250 vtkObject* caller, unsigned long eid, void* clientdata, void* calldata);
251
252 // Selected field of interest
255
260 void UpdateDimensions(bool force = false);
261
262 std::string VerticalDimension;
263 int VerticalLevelRange[2];
264
266 int LayerThicknessRange[2];
267
269 int CenterLonRange[2];
270
272 {
275 Planar
276 };
277
279
280 bool ProjectLatLon; // User option
281 bool OnASphere; // Data file attribute
285
288 double CenterRad;
289
291
292 // geometry
299 size_t CurrentExtraPoint; // current extra point
300 size_t CurrentExtraCell; // current extra cell
301 double* PointX; // x coord of point
302 double* PointY; // y coord of point
303 double* PointZ; // z coord of point
306 int* OrigConnections; // original connections
307 int* ModConnections; // modified connections
308 size_t* CellMap; // maps from added cell to original cell #
309 size_t* PointMap; // maps from added point to original point #
311 int MaximumCells; // max cells
312 int MaximumPoints; // max points
313
318 int GetNcVars(const char* cellDimName, const char* pointDimName);
325 int AddMirrorPoint(int index, double dividerX, double offset);
326 void FixPoints();
330 unsigned char GetCellType();
331
336
346
347private:
348 vtkMPASReader(const vtkMPASReader&) = delete;
349 void operator=(const vtkMPASReader&) = delete;
350
351 class Internal;
352 Internal* Internals;
353};
354
355#endif
supports function callbacks
Store on/off settings for data arrays for a vtkSource.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:159
dynamic, self-adjusting array of double
a simple class to control print indentation
Definition: vtkIndent.h:113
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Read an MPAS netCDF file.
Definition: vtkMPASReader.h:92
void UpdateDimensions(bool force=false)
Update the list of available dimensions.
size_t * PointMap
double * PointX
int GetNumberOfPointArrays()
The following methods allow selective reading of solutions fields.
size_t NumberOfPoints
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
vtkDataArray * LookupPointDataArray(int varIdx)
size_t CurrentExtraPoint
size_t PointOffset
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int EliminateXWrap()
double * PointZ
void DestroyData()
vtkCallbackCommand * SelectionObserver
vtkDataArray * LookupCellDataArray(int varIdx)
virtual int GetNumberOfPointVars()
Get the number of data variables at the cell centers and points.
int AllocPlanarGeometry()
size_t PointsPerCell
void SetDefaults()
vtkUnstructuredGrid * GetOutput(int idx)
Get the reader's output.
void SetPointArrayStatus(const char *name, int status)
The following methods allow selective reading of solutions fields.
int * OrigConnections
size_t ModNumPoints
void ShiftLonData()
void EnableAllPointArrays()
The following methods allow selective reading of solutions fields.
int GetDimensionCurrentIndex(const std::string &dim)
If the point/cell arrays contain dimensions other than Time, nCells, or nVertices,...
int GetCellArrayStatus(const char *name)
int GetVerticalLevel()
Convenience function for setting/querying [GS]etDimensionCurrentIndex for the dimension returned by G...
vtkIdType GetNumberOfDimensions()
If the point/cell arrays contain dimensions other than Time, nCells, or nVertices,...
std::string GetDimensionName(int idx)
If the point/cell arrays contain dimensions other than Time, nCells, or nVertices,...
const char * GetCellArrayName(int index)
vtkGetFilePathMacro(FileName)
Specify file name of MPAS data file to read.
double * PointY
void EnableAllCellArrays()
void SetDimensionCurrentIndex(const std::string &dim, int idx)
If the point/cell arrays contain dimensions other than Time, nCells, or nVertices,...
void SetCellArrayStatus(const char *name, int status)
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkStringArray * GetAllDimensions()
If the point/cell arrays contain dimensions other than Time, nCells, or nVertices,...
size_t MaximumNVertLevels
GeometryType Geometry
int AllocSphericalGeometry()
int AddMirrorPoint(int index, double dividerX, double offset)
int GetNumberOfCellArrays()
vtkDataArraySelection * PointDataArraySelection
static void SelectionCallback(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata)
size_t CurrentExtraCell
void OutputCells()
bool IncludeTopography
void OutputPoints()
int BuildVarArrays()
int ReadAndOutputGrid()
size_t NumberOfCells
std::string VerticalDimension
static vtkMPASReader * New()
void DisableAllPointArrays()
The following methods allow selective reading of solutions fields.
virtual int GetNumberOfCellVars()
Get the number of data variables at the cell centers and points.
unsigned char GetCellType()
int * ModConnections
void FixPoints()
int GetNcVars(const char *cellDimName, const char *pointDimName)
void SetVerticalLevel(int level)
Convenience function for setting/querying [GS]etDimensionCurrentIndex for the dimension returned by G...
~vtkMPASReader() override
vtkDataArray * LoadPointVarData(int variable)
int GetDimensionSize(const std::string &dim)
If the point/cell arrays contain dimensions other than Time, nCells, or nVertices,...
static int CanReadFile(VTK_FILEPATH const char *filename)
Returns true if the given file can be read.
int GetPointArrayStatus(const char *name)
The following methods allow selective reading of solutions fields.
void DisableAllCellArrays()
bool ShowMultilayerView
const char * GetPointArrayName(int index)
The following methods allow selective reading of solutions fields.
vtkUnstructuredGrid * GetOutput()
Get the reader's output.
vtkSetFilePathMacro(FileName)
Specify file name of MPAS data file to read.
void ReleaseNcData()
vtkDataArraySelection * CellDataArraySelection
void LoadTimeFieldData(vtkUnstructuredGrid *dataset)
Update the "Time" vtkStringArray in dataset's FieldData to contain the xtime string for the current t...
size_t * CellMap
vtkDataArray * LoadCellVarData(int variable)
vtkMTimeType GetMTime() override
Return this object's modified time.
size_t ModNumCells
bool UseDimensionedArrayNames
void SetCenterLon(int val)
int AllocProjectedGeometry()
int * MaximumLevelPoint
size_t NumberOfTimeSteps
abstract base class for most VTK objects
Definition: vtkObject.h:82
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:105
a vtkAbstractArray subclass for strings
Superclass for algorithms that produce only unstructured grid as output.
dataset represents arbitrary combinations of all possible cell types
int vtkIdType
Definition: vtkType.h:332
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287
#define VTK_FILEPATH