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_point_data(const std::string& data_name) = 0;
36
37 virtual void copy_points(Array<double>& points) = 0;
38 virtual void copy_point_data(const std::string& data_name, Array<double>& mesh_data) = 0;
39 virtual void copy_point_data(const std::string& data_name, Vector<double>& mesh_data) = 0;
40 virtual void write() = 0;
41
42 static VtkData* create_reader(const std::string& file_name);
43 static VtkData* create_writer(const std::string& file_name);
44
45 std::string file_name;
46};
47
48class VtkVtpData : public VtkData {
49 public:
50 VtkVtpData();
51 VtkVtpData(const std::string& file_name, bool reader=true);
53
54 // Copy constructor
55 VtkVtpData(const VtkVtpData& other);
56 // Copy assignment operator
57 VtkVtpData& operator=(const VtkVtpData& other);
58
59 virtual Array<int> get_connectivity() const override;
60 virtual Array<double> get_points() const override;
61 virtual int elem_type() const override;
62 virtual int num_elems() const override;
63 virtual int np_elem() const override;
64 virtual int num_points() const override;
65 virtual void read_file(const std::string& file_name) override;
66
67 void copy_points(Array<double>& points) override;
68 void copy_point_data(const std::string& data_name, Array<double>& mesh_data) override;
69 void copy_point_data(const std::string& data_name, Vector<double>& mesh_data) override;
70 void copy_point_data(const std::string& data_name, Vector<int>& mesh_data);
71 Array<double> get_point_data(const std::string& data_name);
72 std::vector<std::string> get_point_data_names();
73 bool has_point_data(const std::string& data_name) override;
74 virtual void set_connectivity(const int nsd, const Array<int>& conn, const int pid = 0) override;
75
76 virtual void set_element_data(const std::string& data_name, const Array<double>& data) override;
77 virtual void set_element_data(const std::string& data_name, const Array<int>& data) override;
78
79 virtual void set_point_data(const std::string& data_name, const Array<double>& data) override;
80 virtual void set_point_data(const std::string& data_name, const Array<int>& data) override;
81 virtual void set_point_data(const std::string& data_name, const Vector<int>& data) override;
82
83 virtual void set_points(const Array<double>& points) override;
84 virtual void write() override;
85
86 private:
87 class VtkVtpDataImpl;
88 VtkVtpDataImpl* impl;
89};
90
91class VtkVtuData : public VtkData {
92 public:
93 VtkVtuData();
94 VtkVtuData(const std::string& file_name, bool reader=true);
96
97 virtual Array<int> get_connectivity() const override;
98 virtual int elem_type() const override;
99 virtual int num_elems() const override;
100 virtual int np_elem() const override;
101 virtual int num_points() const override;
102 virtual void read_file(const std::string& file_name) override;
103
104 void copy_points(Array<double>& points) override;
105 void copy_point_data(const std::string& data_name, Array<double>& mesh_data) override;
106 void copy_point_data(const std::string& data_name, Vector<double>& mesh_data) override;
107 void copy_point_data(const std::string& data_name, Vector<int>& mesh_data);
108
109 Array<double> get_point_data(const std::string& data_name);
110 std::vector<std::string> get_point_data_names();
111 virtual Array<double> get_points() const override;
112 bool has_point_data(const std::string& data_name) override;
113 virtual void set_connectivity(const int nsd, const Array<int>& conn, const int pid = 0) override;
114
115 virtual void set_element_data(const std::string& data_name, const Array<double>& data) override;
116 virtual void set_element_data(const std::string& data_name, const Array<int>& data) override;
117
118 virtual void set_point_data(const std::string& data_name, const Array<double>& data) override;
119 virtual void set_point_data(const std::string& data_name, const Array<int>& data) override;
120 virtual void set_point_data(const std::string& data_name, const Vector<int>& data) override;
121
122 virtual void set_points(const Array<double>& points) override;
123 virtual void write() override;
124
125 private:
126 class VtkVtuDataImpl;
127 VtkVtuDataImpl* impl;
128};
129
130#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:48
void copy_points(Array< double > &points) override
Copy points into the given array.
Definition VtkData.cpp:699
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:634
std::vector< std::string > get_point_data_names()
Get a list of point data names.
Definition VtkData.cpp:745
Array< double > get_point_data(const std::string &data_name)
Get an array of point data from an unstructured grid.
Definition VtkData.cpp:718
virtual Array< double > get_points() const override
Get an array of point data from an unstructured grid.
Definition VtkData.cpp:760
Definition VtkData.cpp:265
Definition VtkData.h:91
void copy_points(Array< double > &points) override
Copy points into the given array.
Definition VtkData.cpp:982
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:916
Array< double > get_point_data(const std::string &data_name)
Get an array of point data from an unstructured grid.
Definition VtkData.cpp:1014
std::vector< std::string > get_point_data_names()
Get a list of point data names.
Definition VtkData.cpp:901