1#ifndef CSV_MESH_WRITER_H
2#define CSV_MESH_WRITER_H
4#include "kernel/base/types.h"
5#include "kernel/discretization/mesh_predicates.h"
6#include "kernel/discretization/node_mesh_iterator.h"
7#include "kernel/utilities/csv_file_writer.h"
9#include <initializer_list>
18template <
int dim>
class LineMesh;
37 char delim = kernel::utilities::CSVWriter::default_delimiter(),
38 bool open_file =
false,
const std::ios_base::openmode mode = std::ios_base::out);
43 void write_column_names(
const std::vector<std::string> &col_names,
bool write_header =
true);
49 bool write_header =
true);
55 bool write_header =
true);
60 template <
typename T>
void write_row(
const std::vector<T> &vals);
65 template <
typename T>
void write_row(
const DynVec<T> &vals);
70 template <
typename... T>
void write_row(
const std::tuple<T...> &row);
75 void set_delimiter(
char delim)
noexcept { writer_.set_delimiter(delim); }
85 bool is_open()
const {
return writer_.is_open(); }
101 kernel::utilities::CSVWriter writer_;
108 writer_.write_column_names(col_names, write_header);
115 writer_.write_column_names(col_names, write_header);
123 std::vector<std::string_view> names(col_names);
129 writer_.write_row(vals);
135 writer_.write_row(vals);
144 throw std::logic_error(
"File " + writer_.get_filename() +
" is not open");
147 numerics::ConstNodeMeshIterator<numerics::Active, MeshTp> filter(mesh);
148 auto &file_stream = writer_.get_file_stream();
150 auto begin = filter.begin();
151 auto end = filter.end();
153 for (; begin != end; ++begin)
157 for (uint_t d = 0; d < MeshTp::dimension; ++d)
160 file_stream << (*node)[d];
162 if (d == MeshTp::dimension - 1)
164 file_stream << std::endl;
179 writer_.write_row(row);
The CSVWriter class. Handles writing into CSV file format.
Definition csv_mesh_writer.h:25
void write_mesh_nodes(const MeshTp &mesh)
Write the nodes of the given Mesh.
Definition csv_mesh_writer.h:138
void write_row(const std::vector< T > &vals)
Write a row of the file.
Definition csv_mesh_writer.h:127
void set_delimiter(char delim) noexcept
Set the delimiter.
Definition csv_mesh_writer.h:75
void write_column_names(const std::vector< std::string > &col_names, bool write_header=true)
Write the column names.
Definition csv_mesh_writer.h:104
static char default_delimiter()
The default column delimiter.
Definition csv_mesh_writer.h:31
char get_delimiter() const noexcept
Returns the column delimiter.
Definition csv_mesh_writer.h:80
void write_mesh(const numerics::LineMesh< 2 > &mesh)
Write the given LineMesh into csv format.
Definition csv_mesh_writer.cpp:16
bool is_open() const
Returns true if the file is open.
Definition csv_mesh_writer.h:85
Definition line_mesh_utils.h:17
Definition line_mesh_utils.cpp:13