VTK  9.0.1
vtkXdmf3DataSet.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkXdmf3DataSet.h
5  Language: C++
6 
7  Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen
8  All rights reserved.
9  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
10 
11  This software is distributed WITHOUT ANY WARRANTY; without even
12  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13  PURPOSE. See the above copyright notice for more information.
14 
15 =========================================================================*/
27 #ifndef vtkXdmf3DataSet_h
28 #define vtkXdmf3DataSet_h
29 
30 #include "vtkIOXdmf3Module.h" // For export macro
31 
32 // clang-format off
33 #include "vtk_xdmf3.h"
34 #include VTKXDMF3_HEADER(core/XdmfSharedPtr.hpp)
35 // clang-format on
36 
37 #include <string> //Needed only for XdmfArray::getName :(
38 
41 class XdmfArray;
42 class XdmfAttribute;
43 class vtkDataArray;
44 class XdmfGrid;
45 class vtkDataObject;
46 class XdmfSet;
47 class vtkDataSet;
48 class XdmfTopologyType;
49 class XdmfRegularGrid;
50 class vtkImageData;
51 class XdmfRectilinearGrid;
52 class vtkRectilinearGrid;
53 class XdmfCurvilinearGrid;
54 class vtkStructuredGrid;
55 class XdmfUnstructuredGrid;
57 class vtkPointSet;
58 class XdmfGraph;
60 class vtkDirectedGraph;
61 class XdmfDomain;
62 
63 class VTKIOXDMF3_EXPORT vtkXdmf3DataSet
64 {
65 public:
66  // Common
67 
71  static vtkDataArray* XdmfToVTKArray(XdmfArray* xArray,
72  std::string attrName, // TODO: needed because XdmfArray::getName() misbehaves
73  unsigned int preferredComponents = 0, vtkXdmf3ArrayKeeper* keeper = nullptr);
74 
78  static bool VTKToXdmfArray(
79  vtkDataArray* vArray, XdmfArray* xArray, unsigned int rank = 0, unsigned int* dims = nullptr);
80 
86  vtkXdmf3ArraySelection* cselection, vtkXdmf3ArraySelection* pselection, XdmfGrid* grid,
87  vtkDataObject* dObject, vtkXdmf3ArrayKeeper* keeper = nullptr);
88 
93  static void VTKToXdmfAttributes(vtkDataObject* dObject, XdmfGrid* grid);
94 
96 
99  static unsigned int GetNumberOfPointsPerCell(int vtk_cell_type, bool& fail);
100  static int GetVTKCellType(shared_ptr<const XdmfTopologyType> topologyType);
101  static int GetXdmfCellType(int vtkType);
103 
105 
108  static void SetTime(XdmfGrid* grid, double hasTime, double time);
109  static void SetTime(XdmfGraph* graph, double hasTime, double time);
111 
112  // vtkXdmf3RegularGrid
113 
117  static void XdmfToVTK(vtkXdmf3ArraySelection* fselection, vtkXdmf3ArraySelection* cselection,
118  vtkXdmf3ArraySelection* pselection, XdmfRegularGrid* grid, vtkImageData* dataSet,
119  vtkXdmf3ArrayKeeper* keeper = nullptr);
120 
124  static void CopyShape(
125  XdmfRegularGrid* grid, vtkImageData* dataSet, vtkXdmf3ArrayKeeper* keeper = nullptr);
126 
130  static void VTKToXdmf(
131  vtkImageData* dataSet, XdmfDomain* domain, bool hasTime, double time, const char* name = 0);
132 
133  // vtkXdmf3RectilinearGrid
137  static void XdmfToVTK(vtkXdmf3ArraySelection* fselection, vtkXdmf3ArraySelection* cselection,
138  vtkXdmf3ArraySelection* pselection, XdmfRectilinearGrid* grid, vtkRectilinearGrid* dataSet,
139  vtkXdmf3ArrayKeeper* keeper = nullptr);
140 
144  static void CopyShape(
145  XdmfRectilinearGrid* grid, vtkRectilinearGrid* dataSet, vtkXdmf3ArrayKeeper* keeper = nullptr);
146 
150  static void VTKToXdmf(vtkRectilinearGrid* dataSet, XdmfDomain* domain, bool hasTime, double time,
151  const char* name = 0);
152 
153  // vtkXdmf3CurvilinearGrid
157  static void XdmfToVTK(vtkXdmf3ArraySelection* fselection, vtkXdmf3ArraySelection* cselection,
158  vtkXdmf3ArraySelection* pselection, XdmfCurvilinearGrid* grid, vtkStructuredGrid* dataSet,
159  vtkXdmf3ArrayKeeper* keeper = nullptr);
160 
164  static void CopyShape(
165  XdmfCurvilinearGrid* grid, vtkStructuredGrid* dataSet, vtkXdmf3ArrayKeeper* keeper = nullptr);
166 
170  static void VTKToXdmf(vtkStructuredGrid* dataSet, XdmfDomain* domain, bool hasTime, double time,
171  const char* name = 0);
172 
173  // vtkXdmf3UnstructuredGrid
177  static void XdmfToVTK(vtkXdmf3ArraySelection* fselection, vtkXdmf3ArraySelection* cselection,
178  vtkXdmf3ArraySelection* pselection, XdmfUnstructuredGrid* grid, vtkUnstructuredGrid* dataSet,
179  vtkXdmf3ArrayKeeper* keeper = nullptr);
180 
184  static void CopyShape(XdmfUnstructuredGrid* grid, vtkUnstructuredGrid* dataSet,
185  vtkXdmf3ArrayKeeper* keeper = nullptr);
186 
190  static void VTKToXdmf(
191  vtkPointSet* dataSet, XdmfDomain* domain, bool hasTime, double time, const char* name = 0);
192 
193  // vtkXdmf3Graph
197  static void XdmfToVTK(vtkXdmf3ArraySelection* fselection, vtkXdmf3ArraySelection* cselection,
198  vtkXdmf3ArraySelection* pselection, XdmfGraph* grid, vtkMutableDirectedGraph* dataSet,
199  vtkXdmf3ArrayKeeper* keeper = nullptr);
200 
204  static void VTKToXdmf(
205  vtkDirectedGraph* dataSet, XdmfDomain* domain, bool hasTime, double time, const char* name = 0);
206 
207  // Side Sets
208 
213  static void XdmfToVTKAttributes(
214  /*
215  vtkXdmf3ArraySelection *fselection,
216  vtkXdmf3ArraySelection *cselection,
217  vtkXdmf3ArraySelection *pselection,
218  */
219  XdmfSet* grid, vtkDataObject* dObject, vtkXdmf3ArrayKeeper* keeper = nullptr);
220 
225  static void XdmfSubsetToVTK(XdmfGrid* grid, unsigned int setnum, vtkDataSet* dataSet,
226  vtkUnstructuredGrid* subSet, vtkXdmf3ArrayKeeper* keeper = nullptr);
227 
233  static int GetVTKFiniteElementCellType(unsigned int element_degree,
234  const std::string& element_family, shared_ptr<const XdmfTopologyType> topologyType);
235 
248  shared_ptr<XdmfAttribute> xmfAttribute, vtkDataArray* array, XdmfGrid* grid,
249  vtkXdmf3ArrayKeeper* keeper = nullptr);
250 };
251 
252 #endif
253 // VTK-HeaderTest-Exclude: vtkXdmf3DataSet.h
vtkMutableDirectedGraph
An editable directed graph.
Definition: vtkMutableDirectedGraph.h:46
vtkXdmf3DataSet::VTKToXdmf
static void VTKToXdmf(vtkStructuredGrid *dataSet, XdmfDomain *domain, bool hasTime, double time, const char *name=0)
Populates the Xdmf Grid with the contents of the VTK data set.
vtkXdmf3DataSet::GetVTKCellType
static int GetVTKCellType(shared_ptr< const XdmfTopologyType > topologyType)
vtkXdmf3DataSet::CopyShape
static void CopyShape(XdmfRegularGrid *grid, vtkImageData *dataSet, vtkXdmf3ArrayKeeper *keeper=nullptr)
Helper that does topology for XdmfToVTK.
vtkRectilinearGrid
a dataset that is topologically regular with variable spacing in the three coordinate directions
Definition: vtkRectilinearGrid.h:52
vtkXdmf3ArraySelection
helper to identify requested arrays with
Definition: vtkXdmf3ArraySelection.h:41
vtkXdmf3DataSet::XdmfToVTKArray
static vtkDataArray * XdmfToVTKArray(XdmfArray *xArray, std::string attrName, unsigned int preferredComponents=0, vtkXdmf3ArrayKeeper *keeper=nullptr)
Returns a VTK array corresponding to the Xdmf array it is given.
vtkXdmf3ArrayKeeper
LRU cache of XDMF Arrays.
Definition: vtkXdmf3ArrayKeeper.h:42
vtkStructuredGrid
topologically regular array of data
Definition: vtkStructuredGrid.h:58
vtkXdmf3DataSet::VTKToXdmfAttributes
static void VTKToXdmfAttributes(vtkDataObject *dObject, XdmfGrid *grid)
Populates the given Xdmf Grid's attribute arrays with the selected arrays from the VTK DataObject.
vtkDirectedGraph
A directed graph.
Definition: vtkDirectedGraph.h:45
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:50
vtkX3D::time
@ time
Definition: vtkX3D.h:503
vtkXdmf3DataSet::XdmfToVTK
static void XdmfToVTK(vtkXdmf3ArraySelection *fselection, vtkXdmf3ArraySelection *cselection, vtkXdmf3ArraySelection *pselection, XdmfUnstructuredGrid *grid, vtkUnstructuredGrid *dataSet, vtkXdmf3ArrayKeeper *keeper=nullptr)
Populates the VTK data set with the contents of the Xdmf grid.
vtkXdmf3DataSet::VTKToXdmf
static void VTKToXdmf(vtkPointSet *dataSet, XdmfDomain *domain, bool hasTime, double time, const char *name=0)
Populates the Xdmf Grid with the contents of the VTK data set.
vtkXdmf3DataSet::CopyShape
static void CopyShape(XdmfCurvilinearGrid *grid, vtkStructuredGrid *dataSet, vtkXdmf3ArrayKeeper *keeper=nullptr)
Helper that does topology for XdmfToVTK.
vtkXdmf3DataSet::XdmfToVTK
static void XdmfToVTK(vtkXdmf3ArraySelection *fselection, vtkXdmf3ArraySelection *cselection, vtkXdmf3ArraySelection *pselection, XdmfRegularGrid *grid, vtkImageData *dataSet, vtkXdmf3ArrayKeeper *keeper=nullptr)
Populates the VTK data set with the contents of the Xdmf grid.
vtkXdmf3DataSet::GetNumberOfPointsPerCell
static unsigned int GetNumberOfPointsPerCell(int vtk_cell_type, bool &fail)
Helpers for Unstructured Grid translation.
vtkXdmf3DataSet::XdmfToVTK
static void XdmfToVTK(vtkXdmf3ArraySelection *fselection, vtkXdmf3ArraySelection *cselection, vtkXdmf3ArraySelection *pselection, XdmfRectilinearGrid *grid, vtkRectilinearGrid *dataSet, vtkXdmf3ArrayKeeper *keeper=nullptr)
Populates the VTK data set with the contents of the Xdmf grid.
vtkXdmf3DataSet::VTKToXdmf
static void VTKToXdmf(vtkImageData *dataSet, XdmfDomain *domain, bool hasTime, double time, const char *name=0)
Populates the Xdmf Grid with the contents of the VTK data set.
vtkXdmf3DataSet::CopyShape
static void CopyShape(XdmfUnstructuredGrid *grid, vtkUnstructuredGrid *dataSet, vtkXdmf3ArrayKeeper *keeper=nullptr)
Helper that does topology for XdmfToVTK.
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:42
vtkXdmf3DataSet::XdmfToVTK
static void XdmfToVTK(vtkXdmf3ArraySelection *fselection, vtkXdmf3ArraySelection *cselection, vtkXdmf3ArraySelection *pselection, XdmfCurvilinearGrid *grid, vtkStructuredGrid *dataSet, vtkXdmf3ArrayKeeper *keeper=nullptr)
Populates the VTK data set with the contents of the Xdmf grid.
vtkXdmf3DataSet::VTKToXdmf
static void VTKToXdmf(vtkRectilinearGrid *dataSet, XdmfDomain *domain, bool hasTime, double time, const char *name=0)
Populates the Xdmf Grid with the contents of the VTK data set.
vtkXdmf3DataSet::VTKToXdmfArray
static bool VTKToXdmfArray(vtkDataArray *vArray, XdmfArray *xArray, unsigned int rank=0, unsigned int *dims=nullptr)
Populates and Xdmf array corresponding to the VTK array it is given.
vtkXdmf3DataSet::VTKToXdmf
static void VTKToXdmf(vtkDirectedGraph *dataSet, XdmfDomain *domain, bool hasTime, double time, const char *name=0)
Populates the Xdmf Grid with the contents of the VTK data set.
vtkX3D::name
@ name
Definition: vtkX3D.h:225
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:57
vtkXdmf3DataSet::XdmfToVTKAttributes
static void XdmfToVTKAttributes(XdmfSet *grid, vtkDataObject *dObject, vtkXdmf3ArrayKeeper *keeper=nullptr)
Populates the given VTK DataObject's attribute arrays with the selected arrays from the Xdmf Grid.
vtkX3D::string
@ string
Definition: vtkX3D.h:496
vtkPointSet
abstract class for specifying dataset behavior
Definition: vtkPointSet.h:63
vtkXdmf3DataSet::XdmfSubsetToVTK
static void XdmfSubsetToVTK(XdmfGrid *grid, unsigned int setnum, vtkDataSet *dataSet, vtkUnstructuredGrid *subSet, vtkXdmf3ArrayKeeper *keeper=nullptr)
Extracts numbered subset out of grid (grid corresponds to dataSet), and fills in subSet with it.
vtkXdmf3DataSet
dataset level translation between xdmf3 and vtk
Definition: vtkXdmf3DataSet.h:64
vtkXdmf3DataSet::XdmfToVTKAttributes
static void XdmfToVTKAttributes(vtkXdmf3ArraySelection *fselection, vtkXdmf3ArraySelection *cselection, vtkXdmf3ArraySelection *pselection, XdmfGrid *grid, vtkDataObject *dObject, vtkXdmf3ArrayKeeper *keeper=nullptr)
Populates the given VTK DataObject's attribute arrays with the selected arrays from the Xdmf Grid.
vtkUnstructuredGrid
dataset represents arbitrary combinations of all possible cell types
Definition: vtkUnstructuredGrid.h:93
vtkXdmf3DataSet::GetXdmfCellType
static int GetXdmfCellType(int vtkType)
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:60
vtkXdmf3DataSet::ParseFiniteElementFunction
static void ParseFiniteElementFunction(vtkDataObject *dObject, shared_ptr< XdmfAttribute > xmfAttribute, vtkDataArray *array, XdmfGrid *grid, vtkXdmf3ArrayKeeper *keeper=nullptr)
Parses finite element function defined in Attribute.
vtkXdmf3DataSet::XdmfToVTK
static void XdmfToVTK(vtkXdmf3ArraySelection *fselection, vtkXdmf3ArraySelection *cselection, vtkXdmf3ArraySelection *pselection, XdmfGraph *grid, vtkMutableDirectedGraph *dataSet, vtkXdmf3ArrayKeeper *keeper=nullptr)
Populates the VTK graph with the contents of the Xdmf grid.
vtkXdmf3DataSet::SetTime
static void SetTime(XdmfGraph *graph, double hasTime, double time)
vtkXdmf3DataSet::GetVTKFiniteElementCellType
static int GetVTKFiniteElementCellType(unsigned int element_degree, const std::string &element_family, shared_ptr< const XdmfTopologyType > topologyType)
Converts XDMF topology type, finite element family and degree into an equivalent (or approximative) r...
vtkXdmf3DataSet::CopyShape
static void CopyShape(XdmfRectilinearGrid *grid, vtkRectilinearGrid *dataSet, vtkXdmf3ArrayKeeper *keeper=nullptr)
Helper that does topology for XdmfToVTK.
vtkXdmf3DataSet::SetTime
static void SetTime(XdmfGrid *grid, double hasTime, double time)
Helper used in VTKToXdmf to set the time in a Xdmf grid.