VTK
vtkXdmfWriter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkXdmfWriter.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 
29 #ifndef vtkXdmfWriter_h
30 #define vtkXdmfWriter_h
31 
32 #include "vtkIOXdmf2Module.h" // For export macro
33 
34 #include "vtkDataObjectAlgorithm.h"
35 
36 #include <string> // Needed for private members
37 #include <vector> //
38 
39 class vtkExecutive;
40 
42 class vtkDataArray;
43 class vtkDataSet;
44 class vtkDataObject;
45 class vtkFieldData;
46 class vtkInformation;
48 class vtkXdmfWriterDomainMemoryHandler;
49 
50 namespace xdmf2
51 {
52 class XdmfArray;
53 class XdmfDOM;
54 class XdmfElement;
55 class XdmfGrid;
56 class XdmfGeometry;
57 class XdmfTopology;
58 }
59 
60 class VTKIOXDMF2_EXPORT vtkXdmfWriter : public vtkDataObjectAlgorithm
61 {
62 public:
63  static vtkXdmfWriter *New();
65  void PrintSelf(ostream& os, vtkIndent indent);
66 
70  virtual void SetInputData(vtkDataObject* dobj);
71 
73 
76  vtkSetStringMacro(FileName);
77  vtkGetStringMacro(FileName);
79 
81 
85  vtkSetStringMacro(HeavyDataFileName);
86  vtkGetStringMacro(HeavyDataFileName);
88 
90 
94  vtkSetStringMacro(HeavyDataGroupName);
95  vtkGetStringMacro(HeavyDataGroupName);
97 
103  virtual int Write();
104 
106 
111  vtkSetMacro(LightDataLimit, int);
112  vtkGetMacro(LightDataLimit, int);
114 
116 
121  vtkSetMacro(WriteAllTimeSteps, int);
122  vtkGetMacro(WriteAllTimeSteps, int);
123  vtkBooleanMacro(WriteAllTimeSteps, int);
125 
127 
133  vtkSetMacro(MeshStaticOverTime, bool);
134  vtkGetMacro(MeshStaticOverTime, bool);
135  vtkBooleanMacro(MeshStaticOverTime, bool);
137 
139 
143  vtkSetMacro(Piece, int);
144  vtkSetMacro(NumberOfPieces, int);
146 
147  //TODO: control choice of heavy data format (xml, hdf5, sql, raw)
148 
149  //TODO: These controls are available in vtkXdmfWriter, but are not used here.
150  //GridsOnly
151  //Append to Domain
152 
153 protected:
154  vtkXdmfWriter();
155  ~vtkXdmfWriter();
156 
157  //Choose composite executive by default for time.
158  virtual vtkExecutive* CreateDefaultExecutive();
159 
160  //Can take any one data object
161  virtual int FillInputPortInformation(int port, vtkInformation *info);
162 
163  //Overridden to ...
164  virtual int RequestInformation(vtkInformation*,
167  //Overridden to ...
168  virtual int RequestUpdateExtent(vtkInformation*,
171  //Overridden to ...
172  virtual int RequestData(vtkInformation*,
175 
176  //These do the work: recursively parse down input's structure all the way to arrays,
177  //use XDMF lib to dump everything to file.
178 
179  virtual int CreateTopology(vtkDataSet *ds, xdmf2::XdmfGrid *grid, vtkIdType PDims[3], vtkIdType CDims[3], vtkIdType &PRank, vtkIdType &CRank, void *staticdata);
180  virtual int CreateGeometry(vtkDataSet *ds, xdmf2::XdmfGrid *grid, void *staticdata);
181 
182  virtual int WriteDataSet(vtkDataObject *dobj, xdmf2::XdmfGrid *grid);
183  virtual int WriteCompositeDataSet(vtkCompositeDataSet *dobj, xdmf2::XdmfGrid *grid);
184  virtual int WriteAtomicDataSet(vtkDataObject *dobj, xdmf2::XdmfGrid *grid);
185  virtual int WriteArrays(vtkFieldData* dsa, xdmf2::XdmfGrid *grid, int association,
186  vtkIdType rank, vtkIdType *dims, const char *name);
187  virtual void ConvertVToXArray(vtkDataArray *vda, xdmf2::XdmfArray *xda,
188  vtkIdType rank, vtkIdType *dims,
189  int AllocStrategy, const char *heavyprefix);
190 
191  virtual void SetupDataArrayXML(xdmf2::XdmfElement*, xdmf2::XdmfArray*) const;
192 
193  char *FileName;
198 
200 
203  double CurrentTime;
207 
208  int Piece;
210 
212 
213  xdmf2::XdmfDOM *DOM;
214  xdmf2::XdmfGrid *TopTemporalGrid;
215 
216  vtkXdmfWriterDomainMemoryHandler *DomainMemoryHandler;
217 
218  std::vector<xdmf2::XdmfTopology*> TopologyAtT0;
219  std::vector<xdmf2::XdmfGeometry*> GeometryAtT0;
220 
221 private:
222  vtkXdmfWriter(const vtkXdmfWriter&) VTK_DELETE_FUNCTION;
223  void operator=(const vtkXdmfWriter&) VTK_DELETE_FUNCTION;
224 };
225 
226 #endif /* vtkXdmfWriter_h */
Store vtkAlgorithm input/output information.
char * HeavyDataGroupName
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
int vtkIdType
Definition: vtkType.h:287
Superclass for all pipeline executives in VTK.
Definition: vtkExecutive.h:49
std::string BaseFileName
abstract superclass for composite (multi-block or AMR) datasets
std::vector< xdmf2::XdmfGeometry * > GeometryAtT0
write eXtensible Data Model and Format files
Definition: vtkXdmfWriter.h:60
a simple class to control print indentation
Definition: vtkIndent.h:39
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
xdmf2::XdmfGrid * TopTemporalGrid
vtkGetStringMacro(ExtensionsString)
Returns a string listing all available extensions.
vtkXdmfWriterDomainMemoryHandler * DomainMemoryHandler
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
std::string WorkingDirectory
void WriteDataSet(vtkUnstructuredGrid *grid, const std::string &file)
Superclass for algorithms that produce only data object as output.
double CurrentTime
int UnlabelledDataArrayId
Store zero or more vtkInformation instances.
bool MeshStaticOverTime
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
xdmf2::XdmfDOM * DOM
std::vector< xdmf2::XdmfTopology * > TopologyAtT0
general representation of visualization data
Definition: vtkDataObject.h:64
char * HeavyDataFileName
represent and manipulate fields of data
Definition: vtkFieldData.h:56