13 ::writeTimestep (
double time, std::string
const& fn, std::optional<std::string> dir,
bool writeCollection)
const
23 std::string pvd_fn = fn_dir.
string() +
'/' + name.string();
24 std::string seq_fn = data_dir.
string() +
'/' + name.string() +
"_t" +
std::to_string(timesteps_.size());
25 std::string rel_fn = rel_dir.
string() +
'/' + name.string() +
"_t" +
std::to_string(timesteps_.size());
27 std::string ext =
"." + vtkWriter_.getFileExtension();
29 int commRank = vtkWriter_.comm().rank();
30 int commSize = vtkWriter_.comm().size();
32 ext =
".p" + vtkWriter_.getFileExtension();
34 timesteps_.emplace_back(time, rel_fn + ext);
35 vtkWriter_.write(seq_fn + ext);
37 if (commRank == 0 && writeCollection) {
38 std::ofstream out(pvd_fn +
".pvd", std::ios_base::ate | std::ios::binary);
39 assert(out.is_open());
41 out.imbue(std::locale::classic());
43 ? std::numeric_limits<float>::max_digits10
44 : std::numeric_limits<double>::max_digits10);
53 ::write (std::string
const& fn, std::optional<std::string> )
const
60 std::string outputFilename;
62 int commRank = vtkWriter_.comm().rank();
64 outputFilename = p.string() +
".pvd";
65 std::ofstream out(outputFilename, std::ios_base::ate | std::ios::binary);
66 assert(out.is_open());
68 out.imbue(std::locale::classic());
70 ? std::numeric_limits<float>::max_digits10
71 : std::numeric_limits<double>::max_digits10);
76 return outputFilename;
84 out <<
"<?xml version=\"1.0\"?>\n";
86 <<
" type=\"Collection\""
89 << (format_ ==
Vtk::COMPRESSED ?
" compressor=\"vtkZLibDataCompressor\"" :
"")
92 out <<
"<Collection>\n";
95 for (
auto const& timestep : timesteps_) {
97 <<
" timestep=\"" << timestep.first <<
"\""
99 <<
" file=\"" << timestep.second <<
"\""
103 out <<
"</Collection>\n";
Definition: datacollectorinterface.hh:9
std::string to_string(Vtk::FormatTypes type)
Definition: types.cc:12
Path relative(Path const &a, Path const &b)
Find the path of a relative to directory of b
Definition: filesystem.cc:173
@ COMPRESSED
Definition: types.hh:24
@ ASCII
Definition: types.hh:22
@ FLOAT32
Definition: types.hh:56
void writeTimestep(double time, std::string const &fn, std::optional< std::string > dir={}, bool writeCollection=true) const
Write the attached data to the file.
Definition: pvdwriter.impl.hh:13
virtual std::string write(std::string const &fn, std::optional< std::string > dir={}) const override
Writes collection of timesteps to .pvd file.
Definition: pvdwriter.impl.hh:53
void writeFile(std::ofstream &out) const
Write a series of vtk files in a .pvd ParaView Data file.
Definition: pvdwriter.impl.hh:82
Definition: filesystem.hh:15
std::string string() const
Return the path as string.
Definition: filesystem.cc:27