VTK
vtkADIOSWriter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkADIOSWriter.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 =========================================================================*/
24 #ifndef vtkADIOSWriter_h
25 #define vtkADIOSWriter_h
26 
27 #include <map> // For independently stepped array indexing
28 #include <string> // For independently stepped array indexing
29 #include <vector> // For independently stepped array indexing
30 
31 #include "vtkDataObjectAlgorithm.h"
32 #include "vtkMultiProcessController.h" // For the MPI controller member
33 #include "vtkSetGet.h" // For property get/set macros
34 
35 #include "ADIOSDefs.h" // For enum definitions
36 
37 #include "vtkIOADIOSModule.h" // For export macro
38 
39 namespace ADIOS
40 {
41  class Writer;
42 }
43 
44 class vtkAbstractArray;
45 class vtkCellArray;
46 class vtkDataArray;
47 class vtkDataObject;
48 class vtkDataSet;
49 class vtkFieldData;
50 class vtkImageData;
51 class vtkPolyData;
53 
54 class VTKIOADIOS_EXPORT vtkADIOSWriter : public vtkDataObjectAlgorithm
55 {
56 public:
57  static vtkADIOSWriter* New();
59  virtual void PrintSelf(ostream& os, vtkIndent indent);
60 
61  const char* GetDefaultFileExtension();
62 
64 
68 
70 
71  vtkGetMacro(TransportMethod, int);
72  vtkSetClampMacro(TransportMethod, int,
73  static_cast<int>(ADIOS::TransportMethod_NULL),
74  static_cast<int>(ADIOS::TransportMethod_NetCDF4));
75  void SetTransportMethodToNULL() { this->SetTransportMethod(static_cast<int>(ADIOS::TransportMethod_NULL)); }
76  void SetTransportMethodToPOSIX() { this->SetTransportMethod(static_cast<int>(ADIOS::TransportMethod_POSIX)); }
77  void SetTransportMethodToMPI() { this->SetTransportMethod(static_cast<int>(ADIOS::TransportMethod_MPI)); }
78  void SetTransportMethodToMPILustre() { this->SetTransportMethod(static_cast<int>(ADIOS::TransportMethod_MPI_LUSTRE)); }
79  void SetTransportMethodToMPIAggregate() { this->SetTransportMethod(static_cast<int>(ADIOS::TransportMethod_MPI_AGGREGATE)); }
80  void SetTransportMethodToVarMerge() { this->SetTransportMethod(static_cast<int>(ADIOS::TransportMethod_VAR_MERGE)); }
81  void SetTransportMethodToDataSpaces() { this->SetTransportMethod(static_cast<int>(ADIOS::TransportMethod_DataSpaces)); }
82  void SetTransportMethodToDIMES() { this->SetTransportMethod(static_cast<int>(ADIOS::TransportMethod_DIMES)); }
83  void SetTransportMethodToFlexPath() { this->SetTransportMethod(static_cast<int>(ADIOS::TransportMethod_FlexPath)); }
84  void SetTransportMethodToPHDF5() { this->SetTransportMethod(static_cast<int>(ADIOS::TransportMethod_PHDF5)); }
85  void SetTransportMethodToNetCDF4() { this->SetTransportMethod(static_cast<int>(ADIOS::TransportMethod_NetCDF4)); }
87 
89 
91  vtkSetStringMacro(TransportMethodArguments)
92  vtkGetStringMacro(TransportMethodArguments)
94 
96 
99  static_cast<int>(ADIOS::Transform_NONE),
100  static_cast<int>(ADIOS::Transform_SZIP));
101  void SetTransformToNone() { this->SetTransform(static_cast<int>(ADIOS::Transform_NONE)); }
102  void SetTransformToZLib() { this->SetTransform(static_cast<int>(ADIOS::Transform_ZLIB)); }
103  void SetTransformToBZip2() { this->SetTransform(static_cast<int>(ADIOS::Transform_BZLIB2)); }
104  void SetTransformToSZip() { this->SetTransform(static_cast<int>(ADIOS::Transform_SZIP)); }
106 
108 
110  vtkSetMacro(WriteAllTimeSteps, bool);
111  vtkGetMacro(WriteAllTimeSteps, bool);
112  vtkBooleanMacro(WriteAllTimeSteps, bool);
114 
116 
120 
122 
126 
129  void Write() { return this->Update(); }
130 
131 protected:
132 
134 
136  void Define(const std::string& path, const vtkDataArray* value);
137  void Define(const std::string& path, const vtkCellArray* value);
138  void Define(const std::string& path, const vtkFieldData* value);
139  void Define(const std::string& path, const vtkDataSet* value);
140  void Define(const std::string& path, const vtkImageData* value);
141  void Define(const std::string& path, const vtkPolyData* value);
144 
146 
150  void OpenFile();
151  void CloseFile();
153 
155 
157  void Write(const std::string& path, const vtkDataArray* value);
158  void Write(const std::string& path, const vtkCellArray* value);
159  void Write(const std::string& path, const vtkFieldData* value);
160  void Write(const std::string& path, const vtkDataSet* value);
161  void Write(const std::string& path, const vtkImageData* value);
162  void Write(const std::string& path, const vtkPolyData* value);
165 
166  char *FileName;
170  int Rank;
173  ADIOS::Writer *Writer;
174 
177 
178 protected:
179  // Used to implement vtkAlgorithm
180 
182 
183  virtual int RequestInformation(vtkInformation *request,
185  vtkInformationVector *output);
186  virtual int RequestUpdateExtent(vtkInformation *request,
188  vtkInformationVector *output);
189  virtual int RequestData(vtkInformation *request,
191  vtkInformationVector *output);
192 
197  std::vector<double> TimeSteps;
199  int RequestExtent[6];
200 
201  // Used to determine whether or not the data getting written is stale
203  std::map<std::string, unsigned long> LastUpdated;
204 private:
205  bool WriteInternal();
206 
207  template<typename T>
208  bool DefineAndWrite(vtkDataObject *input);
209 
210  vtkADIOSWriter(const vtkADIOSWriter&); // Not implemented.
211  void operator=(const vtkADIOSWriter&); // Not implemented.
212 };
213 
214 #endif
vtkADIOSWriter::Define
void Define(const std::string &path, const vtkFieldData *value)
vtkADIOSWriter::SetTransportMethodToDataSpaces
void SetTransportMethodToDataSpaces()
Definition: vtkADIOSWriter.h:81
vtkADIOSWriter::SetTransportMethodToMPILustre
void SetTransportMethodToMPILustre()
Definition: vtkADIOSWriter.h:78
vtkADIOSWriter::SetController
void SetController(vtkMultiProcessController *)
vtkGetObjectMacro
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:232
vtkADIOSWriter::SetTransportMethodToVarMerge
void SetTransportMethodToVarMerge()
Definition: vtkADIOSWriter.h:80
vtkADIOSWriter::NumberOfGhostLevels
int NumberOfGhostLevels
Definition: vtkADIOSWriter.h:195
vtkADIOSWriter::Define
void Define(const std::string &path, const vtkUnstructuredGrid *value)
vtkADIOSWriter::Rank
int Rank
Definition: vtkADIOSWriter.h:170
vtkADIOSWriter::SetTransportMethodToPHDF5
void SetTransportMethodToPHDF5()
Definition: vtkADIOSWriter.h:84
vtkADIOSWriter::Write
void Write(const std::string &path, const vtkFieldData *value)
vtkADIOSWriter::Write
void Write(const std::string &path, const vtkPolyData *value)
vtkADIOSWriter::NumberOfPieces
int NumberOfPieces
Definition: vtkADIOSWriter.h:193
vtkADIOSWriter::WriteAllTimeSteps
bool WriteAllTimeSteps
Definition: vtkADIOSWriter.h:196
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:41
vtkADIOSWriter::ProcessRequest
virtual int ProcessRequest(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
vtkDataObjectAlgorithm
Superclass for algorithms that produce only data object as output.
Definition: vtkDataObjectAlgorithm.h:43
vtkMultiProcessController.h
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkADIOSWriter::Define
void Define(const std::string &path, const vtkDataArray *value)
vtkSetGet.h
vtkADIOSWriter::TransportMethod
int TransportMethod
Definition: vtkADIOSWriter.h:167
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkADIOSWriter::GetDefaultFileExtension
const char * GetDefaultFileExtension()
vtkADIOSWriter::SetTransportMethodToMPI
void SetTransportMethodToMPI()
Definition: vtkADIOSWriter.h:77
vtkADIOSWriter::Define
void Define(const std::string &path, const vtkDataSet *value)
vtkADIOSWriter::Transform
int Transform
Definition: vtkADIOSWriter.h:169
vtkADIOSWriter::RequestPiece
int RequestPiece
Definition: vtkADIOSWriter.h:194
vtkADIOSWriter::Write
void Write(const std::string &path, const vtkImageData *value)
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:55
vtkgl::input
GLenum GLenum GLenum input
Definition: vtkgl.h:15941
vtkADIOSWriter::Define
void Define(const std::string &path, const vtkPolyData *value)
vtkX3D::Transform
@ Transform
Definition: vtkX3D.h:41
vtkADIOSWriter::vtkADIOSWriter
vtkADIOSWriter()
vtkFieldData
represent and manipulate fields of data
Definition: vtkFieldData.h:56
vtkADIOSWriter::FileName
char * FileName
Definition: vtkADIOSWriter.h:166
vtkX3D::port
@ port
Definition: vtkX3D.h:447
vtkSetClampMacro
#define vtkSetClampMacro(name, type, min, max)
Definition: vtkSetGet.h:143
vtkgl::value
GLsizei const GLfloat * value
Definition: vtkgl.h:12021
vtkADIOSWriter::OpenFile
void OpenFile()
vtkADIOSWriter::UpdateMTimeTable
bool UpdateMTimeTable(const std::string path, const vtkObject *value)
vtkMultiProcessController
Multiprocessing communication superclass.
Definition: vtkMultiProcessController.h:85
vtkADIOSWriter::Write
void Write(const std::string &path, const vtkCellArray *value)
vtkAlgorithm::Update
virtual void Update()
vtkADIOSWriter::CurrentStep
int CurrentStep
Definition: vtkADIOSWriter.h:171
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkADIOSWriter::Controller
vtkMultiProcessController * Controller
Definition: vtkADIOSWriter.h:172
vtkCellArray
object to represent cell connectivity
Definition: vtkCellArray.h:50
vtkADIOSWriter::RequestUpdateExtent
virtual int RequestUpdateExtent(vtkInformation *request, vtkInformationVector **input, vtkInformationVector *output)
vtkSetStringMacro
#define vtkSetStringMacro(name)
Definition: vtkSetGet.h:104
vtkADIOSWriter::SetTransportMethodToDIMES
void SetTransportMethodToDIMES()
Definition: vtkADIOSWriter.h:82
vtkgl::path
GLsizei const GLchar ** path
Definition: vtkgl.h:13835
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkGetStringMacro
vtkGetStringMacro(ExtensionsString)
vtkADIOSWriter::TransportMethodArguments
char * TransportMethodArguments
Definition: vtkADIOSWriter.h:168
vtkADIOSWriter::Define
void Define(const std::string &path, const vtkImageData *value)
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
vtkAbstractArray
Abstract superclass for all arrays.
Definition: vtkAbstractArray.h:65
vtkADIOSWriter::RequestInformation
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **input, vtkInformationVector *output)
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:86
vtkADIOSWriter::FillInputPortInformation
int FillInputPortInformation(int port, vtkInformation *info)
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkX3D::info
@ info
Definition: vtkX3D.h:376
vtkADIOSWriter::SetTransportMethodToMPIAggregate
void SetTransportMethodToMPIAggregate()
Definition: vtkADIOSWriter.h:79
vtkADIOSWriter::SetTransportMethodToNetCDF4
void SetTransportMethodToNetCDF4()
Definition: vtkADIOSWriter.h:85
vtkADIOSWriter::New
static vtkADIOSWriter * New()
vtkADIOSWriter::RequestData
virtual int RequestData(vtkInformation *request, vtkInformationVector **input, vtkInformationVector *output)
vtkADIOSWriter::~vtkADIOSWriter
~vtkADIOSWriter()
vtkADIOSWriter::CloseFile
void CloseFile()
vtkADIOSWriter::Define
void Define(const std::string &path, const vtkCellArray *value)
vtkADIOSWriter::Write
void Write(const std::string &path, const vtkDataArray *value)
ADIOS
Definition: vtkADIOSReader.h:42
vtkADIOSWriter::Define
void Define(const std::string &path, const vtkAbstractArray *value)
vtkADIOSWriter::Write
void Write(const std::string &path, const vtkUnstructuredGrid *value)
vtkADIOSWriter::CurrentTimeStepIndex
int CurrentTimeStepIndex
Definition: vtkADIOSWriter.h:198
vtkADIOSWriter::SetTransportMethodToFlexPath
void SetTransportMethodToFlexPath()
Definition: vtkADIOSWriter.h:83
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
vtkADIOSWriter::SetTransformToZLib
void SetTransformToZLib()
Definition: vtkADIOSWriter.h:102
vtkADIOSWriter::LastUpdated
std::map< std::string, unsigned long > LastUpdated
Definition: vtkADIOSWriter.h:203
vtkUnstructuredGrid
dataset represents arbitrary combinations of all possible cell types
Definition: vtkUnstructuredGrid.h:82
vtkDataObjectAlgorithm.h
vtkADIOSWriter::SetTransportMethodToPOSIX
void SetTransportMethodToPOSIX()
Definition: vtkADIOSWriter.h:76
vtkADIOSWriter
Write ADIOS files.
Definition: vtkADIOSWriter.h:55
vtkADIOSWriter::Write
void Write(const std::string &path, const vtkAbstractArray *value)
vtkADIOSWriter::PrintSelf
virtual void PrintSelf(ostream &os, vtkIndent indent)
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:65
vtkADIOSWriter::SetTransformToBZip2
void SetTransformToBZip2()
Definition: vtkADIOSWriter.h:103
vtkADIOSWriter::TimeSteps
std::vector< double > TimeSteps
Definition: vtkADIOSWriter.h:197
vtkADIOSWriter::SetTransformToSZip
void SetTransformToSZip()
Definition: vtkADIOSWriter.h:104
vtkADIOSWriter::Write
void Write()
Definition: vtkADIOSWriter.h:129
vtkADIOSWriter::Writer
ADIOS::Writer * Writer
Definition: vtkADIOSWriter.h:173
vtkgl::string
GLsizei const GLchar ** string
Definition: vtkgl.h:12011
vtkADIOSWriter::Write
void Write(const std::string &path, const vtkDataSet *value)