VTK  9.3.1
vtkXdmfWriter.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
3 
17 #ifndef vtkXdmfWriter_h
18 #define vtkXdmfWriter_h
19 
20 #include "vtkIOXdmf2Module.h" // For export macro
21 
22 #include "vtkDataObjectAlgorithm.h"
23 
24 #include <string> // Needed for private members
25 #include <vector> //
26 
27 namespace xdmf2
28 {
29 class XdmfArray;
30 class XdmfDOM;
31 class XdmfElement;
32 class XdmfGrid;
33 class XdmfGeometry;
34 class XdmfTopology;
35 }
36 
37 VTK_ABI_NAMESPACE_BEGIN
38 class vtkExecutive;
39 
41 class vtkDataArray;
42 class vtkDataSet;
43 class vtkDataObject;
44 class vtkFieldData;
45 class vtkInformation;
47 class vtkXdmfWriterDomainMemoryHandler;
48 
49 class VTKIOXDMF2_EXPORT vtkXdmfWriter : public vtkDataObjectAlgorithm
50 {
51 public:
52  static vtkXdmfWriter* New();
54  void PrintSelf(ostream& os, vtkIndent indent) override;
55 
59  virtual void SetInputData(vtkDataObject* dobj);
60 
62 
65  vtkSetFilePathMacro(FileName);
66  vtkGetFilePathMacro(FileName);
68 
70 
74  vtkSetFilePathMacro(HeavyDataFileName);
75  vtkGetFilePathMacro(HeavyDataFileName);
77 
79 
83  vtkSetStringMacro(HeavyDataGroupName);
84  vtkGetStringMacro(HeavyDataGroupName);
86 
92  virtual int Write();
93 
95 
100  vtkSetMacro(LightDataLimit, int);
101  vtkGetMacro(LightDataLimit, int);
103 
105 
110  vtkSetMacro(WriteAllTimeSteps, int);
111  vtkGetMacro(WriteAllTimeSteps, int);
112  vtkBooleanMacro(WriteAllTimeSteps, int);
114 
116 
122  vtkSetMacro(MeshStaticOverTime, bool);
123  vtkGetMacro(MeshStaticOverTime, bool);
124  vtkBooleanMacro(MeshStaticOverTime, bool);
126 
128 
132  vtkSetMacro(Piece, int);
133  vtkSetMacro(NumberOfPieces, int);
135 
136  // TODO: control choice of heavy data format (xml, hdf5, sql, raw)
137 
138  // TODO: These controls are available in vtkXdmfWriter, but are not used here.
139  // GridsOnly
140  // Append to Domain
141 
142 protected:
143  vtkXdmfWriter();
144  ~vtkXdmfWriter() override;
145 
146  // Choose composite executive by default for time.
148 
149  // Can take any one data object
150  int FillInputPortInformation(int port, vtkInformation* info) override;
151 
152  // Overridden to ...
154  // Overridden to ...
156  // Overridden to ...
158 
159  // These do the work: recursively parse down input's structure all the way to arrays,
160  // use XDMF lib to dump everything to file.
161 
162  virtual int CreateTopology(vtkDataSet* ds, xdmf2::XdmfGrid* grid, vtkIdType PDims[3],
163  vtkIdType CDims[3], vtkIdType& PRank, vtkIdType& CRank, void* staticdata);
164  virtual int CreateGeometry(vtkDataSet* ds, xdmf2::XdmfGrid* grid, void* staticdata);
165 
166  virtual int WriteDataSet(vtkDataObject* dobj, xdmf2::XdmfGrid* grid);
167  virtual int WriteCompositeDataSet(vtkCompositeDataSet* dobj, xdmf2::XdmfGrid* grid);
168  virtual int WriteAtomicDataSet(vtkDataObject* dobj, xdmf2::XdmfGrid* grid);
169  virtual int WriteArrays(vtkFieldData* dsa, xdmf2::XdmfGrid* grid, int association, vtkIdType rank,
170  vtkIdType* dims, const char* name);
171  virtual void ConvertVToXArray(vtkDataArray* vda, xdmf2::XdmfArray* xda, vtkIdType rank,
172  vtkIdType* dims, int AllocStrategy, const char* heavyprefix);
173 
174  virtual void SetupDataArrayXML(xdmf2::XdmfElement*, xdmf2::XdmfArray*) const;
175 
176  char* FileName;
181 
183 
186  double CurrentTime;
190 
191  int Piece;
193 
195 
196  xdmf2::XdmfDOM* DOM;
197  xdmf2::XdmfGrid* TopTemporalGrid;
198 
199  vtkXdmfWriterDomainMemoryHandler* DomainMemoryHandler;
200 
201  std::vector<xdmf2::XdmfTopology*> TopologyAtT0;
202  std::vector<xdmf2::XdmfGeometry*> GeometryAtT0;
203 
204 private:
205  vtkXdmfWriter(const vtkXdmfWriter&) = delete;
206  void operator=(const vtkXdmfWriter&) = delete;
207 };
208 
209 VTK_ABI_NAMESPACE_END
210 #endif /* vtkXdmfWriter_h */
virtual vtkExecutive * CreateDefaultExecutive()
Create a default executive.
Store vtkAlgorithm input/output information.
char * HeavyDataGroupName
abstract class to specify dataset behavior
Definition: vtkDataSet.h:52
static vtkDataObjectAlgorithm * New()
int vtkIdType
Definition: vtkType.h:315
Superclass for all pipeline executives in VTK.
Definition: vtkExecutive.h:38
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:49
a simple class to control print indentation
Definition: vtkIndent.h:28
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:44
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
xdmf2::XdmfGrid * TopTemporalGrid
void SetInputData(vtkDataObject *)
Assign a data object as input.
vtkXdmfWriterDomainMemoryHandler * DomainMemoryHandler
std::string WorkingDirectory
void WriteDataSet(vtkUnstructuredGrid *grid, const std::string &file)
Superclass for algorithms that produce only data object as output.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
double CurrentTime
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
int UnlabelledDataArrayId
Store zero or more vtkInformation instances.
bool MeshStaticOverTime
std::map< DataSetType, DataSet > Piece
Definition: VTXTypes.h:43
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
xdmf2::XdmfDOM * DOM
std::vector< xdmf2::XdmfTopology * > TopologyAtT0
general representation of visualization data
Definition: vtkDataObject.h:54
char * HeavyDataFileName
represent and manipulate fields of data
Definition: vtkFieldData.h:51
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.