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 <string>
11
12class VtkData {
13 public:
14 VtkData();
15 virtual ~VtkData();
16
17 virtual Array<int> get_connectivity() const = 0;
18 virtual Array<double> get_points() const = 0;
19 virtual int num_elems() const = 0;
20 virtual int elem_type() const = 0;
21 virtual int np_elem() const = 0;
22 virtual int num_points() const = 0;
23 virtual void read_file(const std::string& file_name) = 0;
24
25 virtual void set_element_data(const std::string& data_name, const Array<double>& data) = 0;
26 virtual void set_element_data(const std::string& data_name, const Array<int>& data) = 0;
27
28 virtual void set_point_data(const std::string& data_name, const Array<double>& data) = 0;
29 virtual void set_point_data(const std::string& data_name, const Array<int>& data) = 0;
30 virtual void set_point_data(const std::string& data_name, const Vector<int>& data) = 0;
31
32 virtual void set_points(const Array<double>& points) = 0;
33 virtual void set_connectivity(const int nsd, const Array<int>& conn, const int pid = 0) = 0;
34
35 virtual bool has_cell_data(const std::string& data_name) = 0;
36 virtual bool has_point_data(const std::string& data_name) = 0;
37
38 virtual void copy_points(Array<double>& points) = 0;
39
40 virtual void copy_point_data(const std::string& data_name, Array<double>& mesh_data) = 0;
41 virtual void copy_point_data(const std::string& data_name, Vector<double>& mesh_data) = 0;
42 virtual void copy_point_data(const std::string& data_name, Vector<int>& mesh_data) = 0;
43
44 virtual void copy_cell_data(const std::string& data_name, Vector<int>& mesh_data) = 0;
45
46 virtual Array<double> get_point_data(const std::string& data_name) = 0;
47 virtual std::vector<std::string> get_point_data_names() = 0;
48
49 virtual void write() = 0;
50
51 static VtkData* create_reader(const std::string& file_name);
52 static VtkData* create_writer(const std::string& file_name);
53
54 std::string file_name;
55};
56
57class VtkVtpData : public VtkData {
58 public:
59 VtkVtpData();
60 VtkVtpData(const std::string& file_name, bool reader=true);
62
63 // Copy constructor
64 VtkVtpData(const VtkVtpData& other);
65 // Copy assignment operator
66 VtkVtpData& operator=(const VtkVtpData& other);
67
68 virtual Array<int> get_connectivity() const override;
69 virtual Array<double> get_points() const override;
70 virtual int elem_type() const override;
71 virtual int num_elems() const override;
72 virtual int np_elem() const override;
73 virtual int num_points() const override;
74 virtual void read_file(const std::string& file_name) override;
75
76 virtual void copy_points(Array<double>& points) override;
77
78 virtual void copy_point_data(const std::string& data_name, Array<double>& mesh_data) override;
79 virtual void copy_point_data(const std::string& data_name, Vector<double>& mesh_data) override;
80 virtual void copy_point_data(const std::string& data_name, Vector<int>& mesh_data) override;
81
82 virtual void copy_cell_data(const std::string& data_name, Vector<int>& mesh_data) override;
83
84 virtual Array<double> get_point_data(const std::string& data_name) override;
85 virtual std::vector<std::string> get_point_data_names() override;
86
87 virtual bool has_cell_data(const std::string& data_name) override;
88 virtual bool has_point_data(const std::string& data_name) override;
89
90 virtual void set_connectivity(const int nsd, const Array<int>& conn, const int pid = 0) override;
91
92 virtual void set_element_data(const std::string& data_name, const Array<double>& data) override;
93 virtual void set_element_data(const std::string& data_name, const Array<int>& data) override;
94
95 virtual void set_point_data(const std::string& data_name, const Array<double>& data) override;
96 virtual void set_point_data(const std::string& data_name, const Array<int>& data) override;
97 virtual void set_point_data(const std::string& data_name, const Vector<int>& data) override;
98
99 virtual void set_points(const Array<double>& points) override;
100 virtual void write() override;
101
102 private:
103 class VtkVtpDataImpl;
104 VtkVtpDataImpl* impl;
105};
106
107class VtkVtuData : public VtkData {
108 public:
109 VtkVtuData();
110 VtkVtuData(const std::string& file_name, bool reader=true);
111 ~VtkVtuData();
112
113 virtual Array<int> get_connectivity() const override;
114 virtual int elem_type() const override;
115 virtual int num_elems() const override;
116 virtual int np_elem() const override;
117 virtual int num_points() const override;
118 virtual void read_file(const std::string& file_name) override;
119
120 virtual void copy_points(Array<double>& points) override;
121
122 virtual void copy_point_data(const std::string& data_name, Array<double>& mesh_data) override;
123 virtual void copy_point_data(const std::string& data_name, Vector<double>& mesh_data) override;
124 virtual void copy_point_data(const std::string& data_name, Vector<int>& mesh_data) override;
125
126 virtual void copy_cell_data(const std::string& data_name, Vector<int>& mesh_data) override;
127
128 virtual Array<double> get_point_data(const std::string& data_name) override;
129 virtual std::vector<std::string> get_point_data_names() override;
130
131 virtual Array<double> get_points() const override;
132
133 virtual bool has_cell_data(const std::string& data_name) override;
134 virtual bool has_point_data(const std::string& data_name) override;
135
136 virtual void set_connectivity(const int nsd, const Array<int>& conn, const int pid = 0) override;
137
138 virtual void set_element_data(const std::string& data_name, const Array<double>& data) override;
139 virtual void set_element_data(const std::string& data_name, const Array<int>& data) override;
140
141 virtual void set_point_data(const std::string& data_name, const Array<double>& data) override;
142 virtual void set_point_data(const std::string& data_name, const Array<int>& data) override;
143 virtual void set_point_data(const std::string& data_name, const Vector<int>& data) override;
144
145 virtual void set_points(const Array<double>& points) override;
146 virtual void write() override;
147
148 private:
149 class VtkVtuDataImpl;
150 VtkVtuDataImpl* impl;
151};
152
153#endif
The Vector template class is used for storing int and double data.
Definition Vector.h:23
Definition VtkData.h:12
Definition VtkData.cpp:33
Definition VtkData.h:57
virtual void copy_points(Array< double > &points) override
Copy points into the given array.
Definition VtkData.cpp:723
virtual std::vector< std::string > get_point_data_names() override
Get a list of point data names.
Definition VtkData.cpp:769
virtual void copy_cell_data(const std::string &data_name, Vector< int > &mesh_data) override
Copy an array of cell data from an polydata mesh into the given Vector.
Definition VtkData.cpp:634
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:658
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:742
virtual Array< double > get_points() const override
Get an array of point data from an unstructured grid.
Definition VtkData.cpp:784
Definition VtkData.cpp:265
Definition VtkData.h:107
virtual void copy_points(Array< double > &points) override
Copy points into the given array.
Definition VtkData.cpp:1043
virtual void copy_cell_data(const std::string &data_name, Vector< int > &mesh_data) override
Copy an array of cell data from an unstructured mesh into the given Vector.
Definition VtkData.cpp:953
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:1088
virtual std::vector< std::string > get_point_data_names() override
Get a list of point data names.
Definition VtkData.cpp:938
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:977