EBGeometry
Compact, header-only C++ library for fast evaluation of signed distance functions
Loading...
Searching...
No Matches
EBGeometry_VTK.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Robert Marskar <robert.marskar@sintef.no>
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
11#ifndef EBGEOMETRY_VTK_HPP
12#define EBGEOMETRY_VTK_HPP
13
14// Std includes
15#include <cstddef>
16#include <map>
17#include <memory>
18#include <string>
19#include <type_traits>
20#include <vector>
21
22// Our includes
23#include "EBGeometry_DCEL.hpp"
24#include "EBGeometry_Vec.hpp"
25
26namespace EBGeometry {
27
32template <typename T>
33class VTK
34{
35 static_assert(std::is_floating_point_v<T>, "VTK<T>: T must be a floating-point type");
36
37public:
42
47 VTK(const std::string& a_id) noexcept;
48
54
60
66 VTK&
68
74 VTK&
76
81
86 [[nodiscard]] std::string&
88
93 [[nodiscard]] const std::string&
95
100 [[nodiscard]] std::vector<Vec3T<T>>&
102
107 [[nodiscard]] const std::vector<Vec3T<T>>&
109
114 [[nodiscard]] std::vector<std::vector<size_t>>&
116
121 [[nodiscard]] const std::vector<std::vector<size_t>>&
123
130 [[nodiscard]] std::vector<T>&
132
139 [[nodiscard]] const std::vector<T>&
141
148 [[nodiscard]] std::vector<T>&
150
157 [[nodiscard]] const std::vector<T>&
159
165 void
166 setPointDataScalars(const std::string a_name, std::vector<T> a_data);
167
173 void
174 setCellDataScalars(const std::string a_name, std::vector<T> a_data);
175
184 [[nodiscard]] std::shared_ptr<EBGeometry::DCEL::MeshT<T, Meta>>
186
191 std::string m_id;
192
196 std::vector<Vec3T<T>> m_vertexCoordinates;
197
201 std::vector<std::vector<size_t>> m_facets;
202
206 std::map<std::string, std::vector<T>> m_pointDataScalars;
207
211 std::map<std::string, std::vector<T>> m_cellDataScalars;
212};
213
214} // namespace EBGeometry
215
216#include "EBGeometry_VTKImplem.hpp"
217
218#endif
Namespace documentation.
Declaration of 2D and 3D point/vector classes with templated precision. Used with DCEL tools.
Class for storing VTK Polydata meshes.
Definition EBGeometry_VTK.hpp:34
std::map< std::string, std::vector< T > > m_cellDataScalars
Cell data scalar arrays.
Definition EBGeometry_VTK.hpp:211
std::string m_id
VTK object ID.
Definition EBGeometry_VTK.hpp:191
std::string & getID() noexcept
Get the identifier for this object.
std::vector< T > & getPointDataScalars(const std::string a_name)
Get the point data scalars.
VTK() noexcept=default
Default constructor. Initializes empty member data holder.
std::vector< std::vector< size_t > > & getFacets() noexcept
Get the face indices.
std::shared_ptr< EBGeometry::DCEL::MeshT< T, Meta > > convertToDCEL() const noexcept
Turn the VTK mesh into a DCEL mesh.
void setPointDataScalars(const std::string a_name, std::vector< T > a_data)
Set point data scalars.
std::map< std::string, std::vector< T > > m_pointDataScalars
Point data scalar arrays.
Definition EBGeometry_VTK.hpp:206
std::vector< Vec3T< T > > m_vertexCoordinates
Vertex coordinates.
Definition EBGeometry_VTK.hpp:196
std::vector< std::vector< size_t > > m_facets
Faces – each entry in the outer vector contains the indices defining one face.
Definition EBGeometry_VTK.hpp:201
std::vector< Vec3T< T > > & getVertexCoordinates() noexcept
Get the vertex coordinates.
void setCellDataScalars(const std::string a_name, std::vector< T > a_data)
Set cell data scalars.
std::vector< T > & getCellDataScalars(const std::string a_name)
Get the cell data scalars.
Three-dimensional vector class with arithmetic operators.
Definition EBGeometry_Vec.hpp:225
Namespace containing all of EBGeometry's functionality.
Definition EBGeometry_AnalyticDistanceFunctions.hpp:31