svMultiPhysics
Loading...
Searching...
No Matches
VtkData.h
1// SPDX-FileCopyrightText: Copyright (c) Stanford University, The Regents of the University of California, and others.
2// SPDX-License-Identifier: BSD-3-Clause
3
4#ifndef VTK_DATA_H
5#define VTK_DATA_H
6
7#include "Array.h"
8#include "Vector.h"
9
10#include <utility>
11#include <string>
12
13class VtkData {
14 public:
15 VtkData();
16 virtual ~VtkData();
17
18 virtual Array<int> get_connectivity() const = 0;
19 virtual Array<double> get_points() const = 0;
20 virtual int num_elems() const = 0;
21 virtual int elem_type() const = 0;
22 virtual int np_elem() const = 0;
23 virtual int num_points() const = 0;
24 virtual void read_file(const std::string& file_name) = 0;
25
26 virtual void set_element_data(const std::string& data_name, const Array<double>& data) = 0;
27 virtual void set_element_data(const std::string& data_name, const Array<int>& data) = 0;
28
29 virtual void set_point_data(const std::string& data_name, const Array<double>& data) = 0;
30 virtual void set_point_data(const std::string& data_name, const Array<int>& data) = 0;
31 virtual void set_point_data(const std::string& data_name, const Vector<int>& data) = 0;
32
33 virtual void set_points(const Array<double>& points) = 0;
34 virtual void set_connectivity(const int nsd, const Array<int>& conn, const int pid = 0) = 0;
35
36 virtual bool has_cell_data(const std::string& data_name) = 0;
37 virtual bool has_point_data(const std::string& data_name) = 0;
38
39 virtual void copy_points(Array<double>& points) = 0;
40
41 virtual void copy_point_data(const std::string& data_name, Array<double>& mesh_data) = 0;
42 virtual void copy_point_data(const std::string& data_name, Vector<double>& mesh_data) = 0;
43 virtual void copy_point_data(const std::string& data_name, Vector<int>& mesh_data) = 0;
44
45 virtual void copy_cell_data(const std::string& data_name, Array<double>& mesh_data) = 0;
46 virtual void copy_cell_data(const std::string& data_name, Vector<double>& mesh_data) = 0;
47 virtual void copy_cell_data(const std::string& data_name, Vector<int>& mesh_data) = 0;
48
49 virtual Array<double> get_point_data(const std::string& data_name) = 0;
50 virtual std::vector<std::string> get_point_data_names() = 0;
51
52 virtual void write() = 0;
53
54 static VtkData* create_reader(const std::string& file_name);
55 static VtkData* create_writer(const std::string& file_name);
56
57 std::string file_name;
58};
59
60class VtkVtpData : public VtkData {
61 public:
62 VtkVtpData();
63 VtkVtpData(const std::string& file_name, bool reader=true);
65
66 // Copy constructor
67 VtkVtpData(const VtkVtpData& other);
68 // Copy assignment operator
69 VtkVtpData& operator=(const VtkVtpData& other);
70
71 virtual Array<int> get_connectivity() const override;
72 virtual Array<double> get_points() const override;
73 virtual int elem_type() const override;
74 virtual int num_elems() const override;
75 virtual int np_elem() const override;
76 virtual int num_points() const override;
77 virtual void read_file(const std::string& file_name) override;
78
79 virtual void copy_points(Array<double>& points) override;
80
81 virtual void copy_point_data(const std::string& data_name, Array<double>& mesh_data) override;
82 virtual void copy_point_data(const std::string& data_name, Vector<double>& mesh_data) override;
83 virtual void copy_point_data(const std::string& data_name, Vector<int>& mesh_data) override;
84
85 virtual void copy_cell_data(const std::string& data_name, Array<double>& mesh_data) override;
86 virtual void copy_cell_data(const std::string& data_name, Vector<double>& mesh_data) override;
87 virtual void copy_cell_data(const std::string& data_name, Vector<int>& mesh_data) override;
88 std::pair<int,int> get_cell_data_dimensions(const std::string& data_name) const;
89
90 virtual Array<double> get_point_data(const std::string& data_name) override;
91 virtual std::vector<std::string> get_point_data_names() override;
92
93 virtual bool has_cell_data(const std::string& data_name) override;
94 virtual bool has_point_data(const std::string& data_name) override;
95
96 virtual void set_connectivity(const int nsd, const Array<int>& conn, const int pid = 0) override;
97
98 virtual void set_element_data(const std::string& data_name, const Array<double>& data) override;
99 virtual void set_element_data(const std::string& data_name, const Array<int>& data) override;
100
101 virtual void set_point_data(const std::string& data_name, const Array<double>& data) override;
102 virtual void set_point_data(const std::string& data_name, const Array<int>& data) override;
103 virtual void set_point_data(const std::string& data_name, const Vector<int>& data) override;
104
105 virtual void set_points(const Array<double>& points) override;
106 virtual void write() override;
107
108 private:
109 class VtkVtpDataImpl;
110 VtkVtpDataImpl* impl;
111};
112
113class VtkVtuData : public VtkData {
114 public:
115 VtkVtuData();
116 VtkVtuData(const std::string& file_name, bool reader=true);
117 ~VtkVtuData();
118
119 virtual Array<int> get_connectivity() const override;
120 virtual int elem_type() const override;
121 virtual int num_elems() const override;
122 virtual int np_elem() const override;
123 virtual int num_points() const override;
124 virtual void read_file(const std::string& file_name) override;
125
126 virtual void copy_points(Array<double>& points) override;
127
128 virtual void copy_point_data(const std::string& data_name, Array<double>& mesh_data) override;
129 virtual void copy_point_data(const std::string& data_name, Vector<double>& mesh_data) override;
130 virtual void copy_point_data(const std::string& data_name, Vector<int>& mesh_data) override;
131
132 virtual void copy_cell_data(const std::string& data_name, Array<double>& mesh_data) override;
133 virtual void copy_cell_data(const std::string& data_name, Vector<double>& mesh_data) override;
134 virtual void copy_cell_data(const std::string& data_name, Vector<int>& mesh_data) override;
135
136 virtual Array<double> get_point_data(const std::string& data_name) override;
137 virtual std::vector<std::string> get_point_data_names() override;
138
139 virtual Array<double> get_points() const override;
140
141 virtual bool has_cell_data(const std::string& data_name) override;
142 virtual bool has_point_data(const std::string& data_name) override;
143
144 virtual void set_connectivity(const int nsd, const Array<int>& conn, const int pid = 0) override;
145
146 virtual void set_element_data(const std::string& data_name, const Array<double>& data) override;
147 virtual void set_element_data(const std::string& data_name, const Array<int>& data) override;
148
149 virtual void set_point_data(const std::string& data_name, const Array<double>& data) override;
150 virtual void set_point_data(const std::string& data_name, const Array<int>& data) override;
151 virtual void set_point_data(const std::string& data_name, const Vector<int>& data) override;
152
153 virtual void set_points(const Array<double>& points) override;
154 virtual void write() override;
155
156 private:
157 class VtkVtuDataImpl;
158 VtkVtuDataImpl* impl;
159};
160
161#endif
The Vector template class is used for storing int and double data.
Definition Vector.h:24
Definition VtkData.h:13
Definition VtkData.cpp:33
Definition VtkData.h:60
virtual void copy_points(Array< double > &points) override
Copy points into the given array.
Definition VtkData.cpp:776
virtual std::vector< std::string > get_point_data_names() override
Get a list of point data names.
Definition VtkData.cpp:822
virtual void copy_point_data(const std::string &data_name, Array< double > &mesh_data) override
Copy an array of point data from an polydata mesh into the given Array.
Definition VtkData.cpp:711
virtual void copy_cell_data(const std::string &data_name, Array< double > &mesh_data) override
Copy an array of cell data from a polydata mesh into the given Array.
Definition VtkData.cpp:634
virtual Array< double > get_point_data(const std::string &data_name) override
Get an array of point data from an unstructured grid.
Definition VtkData.cpp:795
virtual Array< double > get_points() const override
Get an array of point data from an unstructured grid.
Definition VtkData.cpp:837
Definition VtkData.cpp:265
Definition VtkData.h:113
virtual void copy_points(Array< double > &points) override
Copy points into the given array.
Definition VtkData.cpp:1137
virtual Array< double > get_point_data(const std::string &data_name) override
Get an array of point data from an unstructured grid.
Definition VtkData.cpp:1182
virtual std::vector< std::string > get_point_data_names() override
Get a list of point data names.
Definition VtkData.cpp:991
virtual void copy_point_data(const std::string &data_name, Array< double > &mesh_data) override
Copy an array of point data from an unstructured grid into the given Array.
Definition VtkData.cpp:1071