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) override;
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() override;
156 
157  //Choose composite executive by default for time.
159 
160  //Can take any one data object
161  int FillInputPortInformation(int port, vtkInformation *info) override;
162 
163  //Overridden to ...
166  vtkInformationVector*) override;
167  //Overridden to ...
170  vtkInformationVector*) override;
171  //Overridden to ...
174  vtkInformationVector*) override;
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&) = delete;
223  void operator=(const vtkXdmfWriter&) = delete;
224 };
225 
226 #endif /* vtkXdmfWriter_h */
vtkAlgorithm::CreateDefaultExecutive
virtual vtkExecutive * CreateDefaultExecutive()
Create a default executive.
vtkDataObjectAlgorithm::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkXdmfWriter::TopologyAtT0
std::vector< xdmf2::XdmfTopology * > TopologyAtT0
Definition: vtkXdmfWriter.h:218
vtkIdType
int vtkIdType
Definition: vtkType.h:347
xdmf2
Definition: vtkXdmfDataArray.h:30
vtkXdmfWriter::MeshStaticOverTime
bool MeshStaticOverTime
Definition: vtkXdmfWriter.h:211
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:41
vtkDataObjectAlgorithm
Superclass for algorithms that produce only data object as output.
Definition: vtkDataObjectAlgorithm.h:43
vtkXdmfWriter::NumberOfPieces
int NumberOfPieces
Definition: vtkXdmfWriter.h:209
vtkXdmfWriter::Piece
int Piece
Definition: vtkXdmfWriter.h:208
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
vtkXdmfWriter::CurrentTimeIndex
int CurrentTimeIndex
Definition: vtkXdmfWriter.h:204
vtkCompositeDataSet
abstract superclass for composite (multi-block or AMR) datasets
Definition: vtkCompositeDataSet.h:51
vtkXdmfWriter::WriteAllTimeSteps
int WriteAllTimeSteps
Definition: vtkXdmfWriter.h:201
vtkXdmfWriter::DomainMemoryHandler
vtkXdmfWriterDomainMemoryHandler * DomainMemoryHandler
Definition: vtkXdmfWriter.h:216
vtkFieldData
represent and manipulate fields of data
Definition: vtkFieldData.h:56
vtkXdmfWriter::CurrentTime
double CurrentTime
Definition: vtkXdmfWriter.h:203
vtkX3D::port
Definition: vtkX3D.h:447
vtkExecutive
Superclass for all pipeline executives in VTK.
Definition: vtkExecutive.h:49
vtkXdmfWriter::WorkingDirectory
std::string WorkingDirectory
Definition: vtkXdmfWriter.h:196
vtkDataObjectAlgorithm::RequestUpdateExtent
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkDataObjectAlgorithm.h:115
vtkXdmfWriter::TopTemporalGrid
xdmf2::XdmfGrid * TopTemporalGrid
Definition: vtkXdmfWriter.h:214
vtkXdmfWriter::CurrentBlockIndex
int CurrentBlockIndex
Definition: vtkXdmfWriter.h:205
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkXdmfWriter::UnlabelledDataArrayId
int UnlabelledDataArrayId
Definition: vtkXdmfWriter.h:206
vtkXdmfWriter
write eXtensible Data Model and Format files
Definition: vtkXdmfWriter.h:60
vtkX3D::name
Definition: vtkX3D.h:219
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
WriteDataSet
void WriteDataSet(vtkUnstructuredGrid *grid, const std::string &file)
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:86
vtkXdmfWriter::GeometryAtT0
std::vector< xdmf2::XdmfGeometry * > GeometryAtT0
Definition: vtkXdmfWriter.h:219
vtkX3D::info
Definition: vtkX3D.h:376
vtkX3D::string
Definition: vtkX3D.h:490
vtkXdmfWriter::BaseFileName
std::string BaseFileName
Definition: vtkXdmfWriter.h:197
vtkDataObjectAlgorithm::New
static vtkDataObjectAlgorithm * New()
vtkXdmfWriter::NumberOfTimeSteps
int NumberOfTimeSteps
Definition: vtkXdmfWriter.h:202
vtkXdmfWriter::FileName
char * FileName
Definition: vtkXdmfWriter.h:193
vtkDataObjectAlgorithm::SetInputData
void SetInputData(vtkDataObject *)
Assign a data object as input.
vtkXdmfWriter::DOM
xdmf2::XdmfDOM * DOM
Definition: vtkXdmfWriter.h:213
vtkDataObjectAlgorithm::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
Definition: vtkDataObjectAlgorithm.h:122
vtkDataObjectAlgorithm.h
vtkDataObjectAlgorithm::FillInputPortInformation
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtkDataObjectAlgorithm::RequestInformation
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:64
vtkXdmfWriter::HeavyDataGroupName
char * HeavyDataGroupName
Definition: vtkXdmfWriter.h:195
vtkXdmfWriter::HeavyDataFileName
char * HeavyDataFileName
Definition: vtkXdmfWriter.h:194
vtkXdmfWriter::LightDataLimit
int LightDataLimit
Definition: vtkXdmfWriter.h:199