VTK  9.0.1
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 
26 #ifndef vtkXdmfWriter_h
27 #define vtkXdmfWriter_h
28 
29 #include "vtkIOXdmf2Module.h" // For export macro
30 
31 #include "vtkDataObjectAlgorithm.h"
32 
33 #include <string> // Needed for private members
34 #include <vector> //
35 
36 class vtkExecutive;
37 
39 class vtkDataArray;
40 class vtkDataSet;
41 class vtkDataObject;
42 class vtkFieldData;
43 class vtkInformation;
45 class vtkXdmfWriterDomainMemoryHandler;
46 
47 namespace xdmf2
48 {
49 class XdmfArray;
50 class XdmfDOM;
51 class XdmfElement;
52 class XdmfGrid;
53 class XdmfGeometry;
54 class XdmfTopology;
55 }
56 
57 class VTKIOXDMF2_EXPORT vtkXdmfWriter : public vtkDataObjectAlgorithm
58 {
59 public:
60  static vtkXdmfWriter* New();
62  void PrintSelf(ostream& os, vtkIndent indent) override;
63 
67  virtual void SetInputData(vtkDataObject* dobj);
68 
70 
73  vtkSetStringMacro(FileName);
74  vtkGetStringMacro(FileName);
76 
78 
82  vtkSetStringMacro(HeavyDataFileName);
83  vtkGetStringMacro(HeavyDataFileName);
85 
87 
91  vtkSetStringMacro(HeavyDataGroupName);
92  vtkGetStringMacro(HeavyDataGroupName);
94 
100  virtual int Write();
101 
103 
108  vtkSetMacro(LightDataLimit, int);
109  vtkGetMacro(LightDataLimit, int);
111 
113 
118  vtkSetMacro(WriteAllTimeSteps, int);
119  vtkGetMacro(WriteAllTimeSteps, int);
120  vtkBooleanMacro(WriteAllTimeSteps, int);
122 
124 
130  vtkSetMacro(MeshStaticOverTime, bool);
131  vtkGetMacro(MeshStaticOverTime, bool);
132  vtkBooleanMacro(MeshStaticOverTime, bool);
134 
136 
140  vtkSetMacro(Piece, int);
141  vtkSetMacro(NumberOfPieces, int);
143 
144  // TODO: control choice of heavy data format (xml, hdf5, sql, raw)
145 
146  // TODO: These controls are available in vtkXdmfWriter, but are not used here.
147  // GridsOnly
148  // Append to Domain
149 
150 protected:
152  ~vtkXdmfWriter() override;
153 
154  // Choose composite executive by default for time.
156 
157  // Can take any one data object
159 
160  // Overridden to ...
162  // Overridden to ...
164  // Overridden to ...
166 
167  // These do the work: recursively parse down input's structure all the way to arrays,
168  // use XDMF lib to dump everything to file.
169 
170  virtual int CreateTopology(vtkDataSet* ds, xdmf2::XdmfGrid* grid, vtkIdType PDims[3],
171  vtkIdType CDims[3], vtkIdType& PRank, vtkIdType& CRank, void* staticdata);
172  virtual int CreateGeometry(vtkDataSet* ds, xdmf2::XdmfGrid* grid, void* staticdata);
173 
174  virtual int WriteDataSet(vtkDataObject* dobj, xdmf2::XdmfGrid* grid);
175  virtual int WriteCompositeDataSet(vtkCompositeDataSet* dobj, xdmf2::XdmfGrid* grid);
176  virtual int WriteAtomicDataSet(vtkDataObject* dobj, xdmf2::XdmfGrid* grid);
177  virtual int WriteArrays(vtkFieldData* dsa, xdmf2::XdmfGrid* grid, int association, vtkIdType rank,
178  vtkIdType* dims, const char* name);
179  virtual void ConvertVToXArray(vtkDataArray* vda, xdmf2::XdmfArray* xda, vtkIdType rank,
180  vtkIdType* dims, int AllocStrategy, const char* heavyprefix);
181 
182  virtual void SetupDataArrayXML(xdmf2::XdmfElement*, xdmf2::XdmfArray*) const;
183 
184  char* FileName;
189 
191 
194  double CurrentTime;
198 
199  int Piece;
201 
203 
204  xdmf2::XdmfDOM* DOM;
205  xdmf2::XdmfGrid* TopTemporalGrid;
206 
207  vtkXdmfWriterDomainMemoryHandler* DomainMemoryHandler;
208 
209  std::vector<xdmf2::XdmfTopology*> TopologyAtT0;
210  std::vector<xdmf2::XdmfGeometry*> GeometryAtT0;
211 
212 private:
213  vtkXdmfWriter(const vtkXdmfWriter&) = delete;
214  void operator=(const vtkXdmfWriter&) = delete;
215 };
216 
217 #endif /* vtkXdmfWriter_h */
vtkXdmfWriter::FillInputPortInformation
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtx::types::Piece
std::map< DataSetType, DataSet > Piece
Definition: VTXTypes.h:54
vtkXdmfWriter::CreateDefaultExecutive
vtkExecutive * CreateDefaultExecutive() override
Create a default executive.
vtkXdmfWriter::TopologyAtT0
std::vector< xdmf2::XdmfTopology * > TopologyAtT0
Definition: vtkXdmfWriter.h:209
vtkIdType
int vtkIdType
Definition: vtkType.h:338
vtkXdmfWriter::CreateGeometry
virtual int CreateGeometry(vtkDataSet *ds, xdmf2::XdmfGrid *grid, void *staticdata)
xdmf2
Definition: vtkXdmfDataArray.h:31
vtkXdmfWriter::MeshStaticOverTime
bool MeshStaticOverTime
Definition: vtkXdmfWriter.h:202
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:36
vtkXdmfWriter::~vtkXdmfWriter
~vtkXdmfWriter() override
vtkDataObjectAlgorithm
Superclass for algorithms that produce only data object as output.
Definition: vtkDataObjectAlgorithm.h:44
vtkXdmfWriter::NumberOfPieces
int NumberOfPieces
Definition: vtkXdmfWriter.h:200
vtkXdmfWriter::RequestData
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
vtkXdmfWriter::Piece
int Piece
Definition: vtkXdmfWriter.h:199
vtkXdmfWriter::RequestUpdateExtent
int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:50
vtkXdmfWriter::CurrentTimeIndex
int CurrentTimeIndex
Definition: vtkXdmfWriter.h:195
vtkXdmfWriter::New
static vtkXdmfWriter * New()
vtkCompositeDataSet
abstract superclass for composite (multi-block or AMR) datasets
Definition: vtkCompositeDataSet.h:46
vtkXdmfWriter::WriteAllTimeSteps
int WriteAllTimeSteps
Definition: vtkXdmfWriter.h:192
vtkXdmfWriter::DomainMemoryHandler
vtkXdmfWriterDomainMemoryHandler * DomainMemoryHandler
Definition: vtkXdmfWriter.h:207
vtkFieldData
represent and manipulate fields of data
Definition: vtkFieldData.h:54
vtkXdmfWriter::CurrentTime
double CurrentTime
Definition: vtkXdmfWriter.h:194
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkExecutive
Superclass for all pipeline executives in VTK.
Definition: vtkExecutive.h:47
vtkXdmfWriter::WorkingDirectory
std::string WorkingDirectory
Definition: vtkXdmfWriter.h:187
vtkXdmfWriter::TopTemporalGrid
xdmf2::XdmfGrid * TopTemporalGrid
Definition: vtkXdmfWriter.h:205
vtkXdmfWriter::vtkXdmfWriter
vtkXdmfWriter()
vtkXdmfWriter::WriteDataSet
virtual int WriteDataSet(vtkDataObject *dobj, xdmf2::XdmfGrid *grid)
vtkXdmfWriter::CurrentBlockIndex
int CurrentBlockIndex
Definition: vtkXdmfWriter.h:196
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:34
vtkXdmfWriter::UnlabelledDataArrayId
int UnlabelledDataArrayId
Definition: vtkXdmfWriter.h:197
vtkXdmfWriter::Write
virtual int Write()
Write data to output.
vtkXdmfWriter::CreateTopology
virtual int CreateTopology(vtkDataSet *ds, xdmf2::XdmfGrid *grid, vtkIdType PDims[3], vtkIdType CDims[3], vtkIdType &PRank, vtkIdType &CRank, void *staticdata)
vtkXdmfWriter::SetInputData
virtual void SetInputData(vtkDataObject *dobj)
Set the input data set.
vtkXdmfWriter
write eXtensible Data Model and Format files
Definition: vtkXdmfWriter.h:58
vtkX3D::name
@ name
Definition: vtkX3D.h:225
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:57
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:65
vtkXdmfWriter::GeometryAtT0
std::vector< xdmf2::XdmfGeometry * > GeometryAtT0
Definition: vtkXdmfWriter.h:210
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkX3D::string
@ string
Definition: vtkX3D.h:496
vtkXdmfWriter::BaseFileName
std::string BaseFileName
Definition: vtkXdmfWriter.h:188
vtkXdmfWriter::NumberOfTimeSteps
int NumberOfTimeSteps
Definition: vtkXdmfWriter.h:193
vtkXdmfWriter::FileName
char * FileName
Definition: vtkXdmfWriter.h:184
vtkXdmfWriter::DOM
xdmf2::XdmfDOM * DOM
Definition: vtkXdmfWriter.h:204
vtkDataObjectAlgorithm.h
vtkXdmfWriter::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkXdmfWriter::ConvertVToXArray
virtual void ConvertVToXArray(vtkDataArray *vda, xdmf2::XdmfArray *xda, vtkIdType rank, vtkIdType *dims, int AllocStrategy, const char *heavyprefix)
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:60
vtkXdmfWriter::WriteArrays
virtual int WriteArrays(vtkFieldData *dsa, xdmf2::XdmfGrid *grid, int association, vtkIdType rank, vtkIdType *dims, const char *name)
vtkXdmfWriter::WriteCompositeDataSet
virtual int WriteCompositeDataSet(vtkCompositeDataSet *dobj, xdmf2::XdmfGrid *grid)
vtkXdmfWriter::HeavyDataGroupName
char * HeavyDataGroupName
Definition: vtkXdmfWriter.h:186
vtkXdmfWriter::HeavyDataFileName
char * HeavyDataFileName
Definition: vtkXdmfWriter.h:185
vtkXdmfWriter::WriteAtomicDataSet
virtual int WriteAtomicDataSet(vtkDataObject *dobj, xdmf2::XdmfGrid *grid)
vtkXdmfWriter::RequestInformation
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
vtkXdmfWriter::LightDataLimit
int LightDataLimit
Definition: vtkXdmfWriter.h:190
vtkXdmfWriter::SetupDataArrayXML
virtual void SetupDataArrayXML(xdmf2::XdmfElement *, xdmf2::XdmfArray *) const