25 const Eigen::VectorXd &
z_vec) {
28 inline void init_VTKDomainExport(
const Eigen::VectorXd &
x_vec,
29 const Eigen::VectorXd &
y_vec,
30 const Eigen::VectorXd &
z_vec) {
34 x_num = x_vec_.rows() - 1;
35 y_num = y_vec_.rows() - 1;
36 z_num = z_vec_.rows() - 1;
37 max_size_ = x_vec_.rows() * y_vec_.rows() * z_vec_.rows();
45 inline void addDataSet(
const std::string &
name,
46 std::function<
double(
const Eigen::Vector3d &)>
fun) {
47 Eigen::MatrixXd
data(max_size_, 1);
59 inline void addDataSet(
60 const std::string &
name,
61 std::function<Eigen::Vector3d(
const Eigen::Vector3d &)>
fun) {
62 Eigen::MatrixXd
data(max_size_, 3);
75 inline void writeToFile(
const std::string &
filename) {
78 output <<
"<VTKFile type=\"StructuredGrid\" version=\"0.1\" "
79 "byte_order=\"LittleEndian\">\n"
80 "<StructuredGrid WholeExtent=\""
81 <<
"0 " << x_num <<
" 0 " << y_num <<
" 0 " << z_num
84 <<
"0 " << x_num <<
" 0 " << y_num <<
" 0 " << z_num
87 "<DataArray type=\"Float32\" NumberOfComponents=\"3\" "
88 "format=\"ascii\">\n";
94 << z_vec_(
z_idx) <<
"\n";
98 for (
auto d : additionalData)
output <<
d;
101 "</StructuredGrid>\n"
107 inline void clearData() {
109 additionalData.shrink_to_fit();
115 inline void addDataSet_(
const std::string &
name,
const Eigen::MatrixXd &
mat) {
118 const int cols =
mat.cols();
119 std::string
data_ascii =
"<DataArray type=\"Float32\" Name=\"" +
name +
120 "\" NumberOfComponents=\"" +
121 std::to_string(
mat.cols()) +
122 "\" format=\"ascii\">\n";
123 std::ostringstream
out;
125 for (
int i = 0;
i <
mat.rows(); ++
i) {
126 for (
int j = 0;
j < cols; ++
j) {
127 out << std::scientific <<
mat(
i,
j);
141 Eigen::VectorXd x_vec_;
142 Eigen::VectorXd y_vec_;
143 Eigen::VectorXd z_vec_;
144 std::vector<std::string> additionalData;