VTK  9.2.6
vtkNetCDFReader.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 /*=========================================================================
3 
4  Program: Visualization Toolkit
5  Module: vtkNetCDFReader.h
6 
7  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
8  All rights reserved.
9  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
10 
11  This software is distributed WITHOUT ANY WARRANTY; without even
12  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13  PURPOSE. See the above copyright notice for more information.
14 
15 =========================================================================*/
16 
17 /*-------------------------------------------------------------------------
18  Copyright 2008 Sandia Corporation.
19  Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
20  the U.S. Government retains certain rights in this software.
21 -------------------------------------------------------------------------*/
22 
34 #ifndef vtkNetCDFReader_h
35 #define vtkNetCDFReader_h
36 
37 #include "vtkDataObjectAlgorithm.h"
38 #include "vtkIONetCDFModule.h" // For export macro
39 
40 #include "vtkSmartPointer.h" // For ivars
41 #include <string> //For std::string
42 
44 class vtkDataSet;
45 class vtkDoubleArray;
46 class vtkIntArray;
47 class vtkStdString;
48 class vtkStringArray;
49 class vtkNetCDFReaderPrivate;
50 
51 class VTKIONETCDF_EXPORT vtkNetCDFReader : public vtkDataObjectAlgorithm
52 {
53 public:
55  static vtkNetCDFReader* New();
56  void PrintSelf(ostream& os, vtkIndent indent) override;
57 
58  virtual void SetFileName(VTK_FILEPATH const char* filename);
59  vtkGetFilePathMacro(FileName);
60 
65  int UpdateMetaData();
66 
67  // // Description:
68  // // Get the data array selection tables used to configure which variables to
69  // // load.
70  // vtkGetObjectMacro(VariableArraySelection, vtkDataArraySelection);
71 
73 
76  virtual int GetNumberOfVariableArrays();
77  virtual const char* GetVariableArrayName(int index);
78  virtual int GetVariableArrayStatus(const char* name);
79  virtual void SetVariableArrayStatus(const char* name, int status);
81 
87  virtual vtkStringArray* GetAllVariableArrayNames();
88 
90 
96  vtkGetObjectMacro(VariableDimensions, vtkStringArray);
98 
106  virtual void SetDimensions(const char* dimensions);
107 
112  bool ComputeArraySelection();
113 
115 
122  vtkGetObjectMacro(AllDimensions, vtkStringArray);
124 
126 
135  vtkGetMacro(ReplaceFillValueWithNan, vtkTypeBool);
136  vtkSetMacro(ReplaceFillValueWithNan, vtkTypeBool);
137  vtkBooleanMacro(ReplaceFillValueWithNan, vtkTypeBool);
139 
141 
146  vtkGetStringMacro(TimeUnits);
147  vtkGetStringMacro(Calendar);
149 
153  std::string QueryArrayUnits(const char* ArrayName);
154 
155 protected:
156  vtkNetCDFReader();
157  ~vtkNetCDFReader() override;
158 
159  char* FileName;
162 
167 
169 
171 
176 
178 
183 
185 
186  int WholeExtent[6];
187 
188  int RequestDataObject(vtkInformation* request, vtkInformationVector** inputVector,
189  vtkInformationVector* outputVector) override;
190 
191  int RequestInformation(vtkInformation* request, vtkInformationVector** inputVector,
192  vtkInformationVector* outputVector) override;
193 
194  int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
195  vtkInformationVector* outputVector) override;
196 
200  static void SelectionModifiedCallback(
201  vtkObject* caller, unsigned long eid, void* clientdata, void* calldata);
202 
207  vtkStdString DescribeDimensions(int ncFD, const int* dimIds, int numDims);
208 
212  virtual int ReadMetaData(int ncFD);
213 
217  virtual int FillVariableDimensions(int ncFD);
218 
226  virtual int IsTimeDimension(int ncFD, int dimId);
227 
235  virtual vtkSmartPointer<vtkDoubleArray> GetTimeValues(int ncFD, int dimId);
236 
243  virtual bool DimensionsAreForPointData(vtkIntArray* vtkNotUsed(dimensions)) { return true; }
244 
251  virtual void GetUpdateExtentForOutput(vtkDataSet* output, int extent[6]);
252 
257  virtual int LoadVariable(int ncFD, const char* varName, double time, vtkDataSet* output);
258 
259 private:
260  vtkNetCDFReader(const vtkNetCDFReader&) = delete;
261  void operator=(const vtkNetCDFReader&) = delete;
262 
263  int UpdateExtent[6];
264  char* TimeUnits;
265  char* Calendar;
266  vtkNetCDFReaderPrivate* Private;
267 };
268 
269 #endif // vtkNetCDFReader_h
virtual int RequestDataObject(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:38
vtkTypeBool ReplaceFillValueWithNan
abstract base class for most VTK objects
Definition: vtkObject.h:62
Store vtkAlgorithm input/output information.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
static vtkDataObjectAlgorithm * New()
virtual bool DimensionsAreForPointData(vtkIntArray *vtkNotUsed(dimensions))
Called internally to determine whether a variable with the given set of dimensions should be loaded a...
record modification and/or execution time
Definition: vtkTimeStamp.h:35
a vtkAbstractArray subclass for strings
vtkTimeStamp FileNameMTime
A superclass for reading netCDF files.
dynamic, self-adjusting array of double
int vtkTypeBool
Definition: vtkABI.h:69
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:45
vtkSmartPointer< vtkStringArray > AllVariableArrayNames
a simple class to control print indentation
Definition: vtkIndent.h:39
Store on/off settings for data arrays, etc.
vtkSmartPointer< vtkIntArray > LoadingDimensions
The dimension ids of the arrays being loaded into the data.
std::string CurrentDimensions
#define VTK_FILEPATH
Superclass for algorithms that produce only data object as output.
vtkStringArray * VariableDimensions
Placeholder for structure returned from GetVariableDimensions().
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
Store zero or more vtkInformation instances.
vtkTimeStamp MetaDataMTime
vtkStringArray * AllDimensions
Placeholder for structure returned from GetAllDimensions().
vtkSmartPointer< vtkDataArraySelection > VariableArraySelection
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.