VTK  9.3.20240424
vtkMPASReader.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-FileCopyrightText: Copyright (c) 2002-2005 Los Alamos National Laboratory
3// SPDX-License-Identifier: BSD-3-Clause-Sandia-LANL-California-USGov
39#ifndef vtkMPASReader_h
40#define vtkMPASReader_h
41
42#include "vtkIONetCDFModule.h" // For export macro
44
45#include <string> // for std::string
46
47VTK_ABI_NAMESPACE_BEGIN
50class vtkDoubleArray;
51class vtkStringArray;
52
53class VTKIONETCDF_EXPORT vtkMPASReader : public vtkUnstructuredGridAlgorithm
54{
55public:
56 static vtkMPASReader* New();
58 void PrintSelf(ostream& os, vtkIndent indent) override;
59
61
67
69
72 vtkGetMacro(MaximumCells, int);
74
76
79 vtkGetMacro(MaximumPoints, int);
81
83
86 virtual int GetNumberOfCellVars();
87 virtual int GetNumberOfPointVars();
89
91
97
99
105 vtkSetMacro(UseDimensionedArrayNames, bool);
106 vtkGetMacro(UseDimensionedArrayNames, bool);
107 vtkBooleanMacro(UseDimensionedArrayNames, bool);
109
111
117 const char* GetPointArrayName(int index);
118 int GetPointArrayStatus(const char* name);
119 void SetPointArrayStatus(const char* name, int status);
123
125 const char* GetCellArrayName(int index);
126 int GetCellArrayStatus(const char* name);
127 void SetCellArrayStatus(const char* name, int status);
130
132
141 std::string GetDimensionName(int idx);
143 int GetDimensionCurrentIndex(const std::string& dim);
144 void SetDimensionCurrentIndex(const std::string& dim, int idx);
145 int GetDimensionSize(const std::string& dim);
147
149
153 vtkSetMacro(VerticalDimension, std::string);
154 vtkGetMacro(VerticalDimension, std::string);
156
158
162 void SetVerticalLevel(int level);
165
166 vtkGetVector2Macro(VerticalLevelRange, int);
167
168 vtkSetMacro(LayerThickness, int);
169 vtkGetMacro(LayerThickness, int);
170 vtkGetVector2Macro(LayerThicknessRange, int);
171
172 void SetCenterLon(int val);
173 vtkGetVector2Macro(CenterLonRange, int);
174
175 vtkSetMacro(ProjectLatLon, bool);
176 vtkGetMacro(ProjectLatLon, bool);
177
178 vtkSetMacro(IsAtmosphere, bool);
179 vtkGetMacro(IsAtmosphere, bool);
180
181 vtkSetMacro(IsZeroCentered, bool);
182 vtkGetMacro(IsZeroCentered, bool);
183
184 vtkSetMacro(ShowMultilayerView, bool);
185 vtkGetMacro(ShowMultilayerView, bool);
186
190 static int CanReadFile(VTK_FILEPATH const char* filename);
191
193
194protected:
196 ~vtkMPASReader() override;
199
200 char* FileName; // First field part file giving path
201
202 size_t NumberOfTimeSteps; // Temporal domain
203 double DTime; // The current time
204
205 // Observer to modify this object when array selections are modified
207
210
211 static void SelectionCallback(
212 vtkObject* caller, unsigned long eid, void* clientdata, void* calldata);
213
214 // Selected field of interest
217
222 void UpdateDimensions(bool force = false);
223
224 std::string VerticalDimension;
225 int VerticalLevelRange[2];
226
228 int LayerThicknessRange[2];
229
231 int CenterLonRange[2];
232
234 {
237 Planar
238 };
239
241
242 bool ProjectLatLon; // User option
243 bool OnASphere; // Data file attribute
247
250 double CenterRad;
251
253
254 // geometry
261 size_t CurrentExtraPoint; // current extra point
262 size_t CurrentExtraCell; // current extra cell
263 double* PointX; // x coord of point
264 double* PointY; // y coord of point
265 double* PointZ; // z coord of point
268 int* OrigConnections; // original connections
269 int* ModConnections; // modified connections
270 size_t* CellMap; // maps from added cell to original cell #
271 size_t* PointMap; // maps from added point to original point #
273 int MaximumCells; // max cells
274 int MaximumPoints; // max points
275
280 int GetNcVars(const char* cellDimName, const char* pointDimName);
287 int AddMirrorPoint(int index, double dividerX, double offset);
288 void FixPoints();
292 unsigned char GetCellType();
293
298
308
309private:
310 vtkMPASReader(const vtkMPASReader&) = delete;
311 void operator=(const vtkMPASReader&) = delete;
312
313 class Internal;
314 Internal* Internals;
315};
316
317VTK_ABI_NAMESPACE_END
318#endif
supports function callbacks
Store on/off settings for data arrays, etc.
abstract superclass for arrays of numeric data
dynamic, self-adjusting array of double
a simple class to control print indentation
Definition vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Read an MPAS netCDF file.
void UpdateDimensions(bool force=false)
Update the list of available dimensions.
size_t * PointMap
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
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int EliminateXWrap()
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()
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.
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.
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()
void OutputPoints()
int BuildVarArrays()
int ReadAndOutputGrid()
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()
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()
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...
vtkDataArray * LoadCellVarData(int variable)
vtkMTimeType GetMTime() override
Return this object's modified time.
bool UseDimensionedArrayNames
void SetCenterLon(int val)
int AllocProjectedGeometry()
int * MaximumLevelPoint
size_t NumberOfTimeSteps
abstract base class for most VTK objects
Definition vtkObject.h:162
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:315
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:270
#define VTK_FILEPATH