10#include <dune/common/parallel/mpihelper.hh>
22 template <
class GV,
class DC>
35 using pos_type =
typename std::ostream::pos_type;
69 :
VtkWriterInterface(stackobject_to_shared_ptr(dataCollector), format, datatype, headertype)
92 virtual std::string
write (std::string
const& fn, std::optional<std::string> dir = {})
const override;
105 template <
class Function,
class... Args>
108 pointData_.emplace_back(std::forward<Function>(fct), std::forward<Args>(args)...,
123 template <
class Function,
class... Args>
126 cellData_.emplace_back(std::forward<Function>(fct), std::forward<Args>(args)...,
141 std::cout <<
"Dune is compiled without compression. Falling back to BINARY VTK output!\n";
176 virtual void writeSerialFile (std::ofstream& out)
const = 0;
181 virtual void writeParallelFile (std::ofstream& out, std::string
const& pfilename,
int size)
const = 0;
184 virtual std::string fileExtension ()
const = 0;
187 virtual void writeGridAppended (std::ofstream& out, std::vector<std::uint64_t>& blocks)
const = 0;
194 std::vector<pos_type>& offsets,
197 std::optional<std::size_t> timestep = {})
const;
200 void writeDataAppended (std::ofstream& out, std::vector<std::uint64_t>& blocks)
const;
206 std::vector<pos_type>& offsets,
207 std::optional<std::size_t> timestep = {})
const;
210 void writeAppended (std::ofstream& out, std::vector<pos_type>
const& offsets)
const;
214 template <
class HeaderType,
class FloatType>
215 std::uint64_t
writeValuesAppended (std::ofstream& out, std::vector<FloatType>
const& values)
const;
220 void writeValuesAscii (std::ofstream& out, std::vector<T>
const& values)
const;
223 void writeHeader (std::ofstream& out, std::string
const& type)
const;
226 std::string
getNames (std::vector<VtkFunction>
const& data)
const;
232 return (
reinterpret_cast<char*
>(&i)[1] == 1 ?
"BigEndian" :
"LittleEndian");
238 return fileExtension();
256 return MPIHelper::getCollectiveCommunication();
276 template <
class Writer>
279 template <
class GV,
class DC>
283 static constexpr bool value =
sizeof(
test(std::declval<Writer>())) >
sizeof(std::uint8_t);
#define VTK_ASSERT(cond)
check if condition cond holds; otherwise, throw a VtkError.
Definition: errors.hh:29
FormatTypes
Type used for representing the output format.
Definition: types.hh:21
CompressorTypes
Definition: types.hh:149
DataTypes
Definition: types.hh:52
Definition: filewriter.hh:11
Wrapper class for functions allowing local evaluations.
Definition: function.hh:28
File-Writer for ParaView .pvd files.
Definition: pvdwriter.hh:18
Interface for file writers for the Vtk XML file formats.
Definition: vtkwriterinterface.hh:25
VtkWriterInterface(DataCollector &dataCollector, Vtk::FormatTypes format=Vtk::FormatTypes::BINARY, Vtk::DataTypes datatype=Vtk::DataTypes::FLOAT32, Vtk::DataTypes headertype=Vtk::DataTypes::UINT32)
Constructor, wraps the passed DataCollector in a non-destroying shared_ptr.
Definition: vtkwriterinterface.hh:65
friend class TimeseriesWriter
Definition: vtkwriterinterface.hh:26
std::shared_ptr< DataCollector > dataCollector_
Definition: vtkwriterinterface.hh:260
std::string getFileExtension() const
Definition: vtkwriterinterface.hh:236
Vtk::FormatTypes format_
Definition: vtkwriterinterface.hh:262
int compression_level
Definition: vtkwriterinterface.hh:272
Dune::Vtk::Function< GridView > VtkFunction
Definition: vtkwriterinterface.hh:34
std::vector< VtkFunction > pointData_
Definition: vtkwriterinterface.hh:268
void writeAppended(std::ofstream &out, std::vector< pos_type > const &offsets) const
Definition: vtkwriterinterface.impl.hh:156
std::vector< VtkFunction > cellData_
Definition: vtkwriterinterface.hh:269
void setFormat(Vtk::FormatTypes format)
Definition: vtkwriterinterface.hh:133
Vtk::CompressorTypes compressor_
Definition: vtkwriterinterface.hh:265
void writeValuesAscii(std::ofstream &out, std::vector< T > const &values) const
Definition: vtkwriterinterface.impl.hh:192
void setHeadertype(Vtk::DataTypes datatype)
Sets the integer type used in binary data headers.
Definition: vtkwriterinterface.hh:157
auto comm() const
Definition: vtkwriterinterface.hh:254
Vtk::DataTypes getDatatype() const
Definition: vtkwriterinterface.hh:248
GV GridView
Definition: vtkwriterinterface.hh:30
std::string getNames(std::vector< VtkFunction > const &data) const
Return PointData/CellData attributes for the name of the first scalar/vector/tensor DataArray.
Definition: vtkwriterinterface.impl.hh:353
VtkWriterInterface(std::shared_ptr< DataCollector > dataCollector, Vtk::FormatTypes format=Vtk::FormatTypes::BINARY, Vtk::DataTypes datatype=Vtk::DataTypes::FLOAT32, Vtk::DataTypes headertype=Vtk::DataTypes::UINT32)
Constructor, stores the passed DataCollector.
Definition: vtkwriterinterface.hh:73
VtkWriterInterface & addPointData(Function &&fct, Args &&... args)
Attach point data to the writer.
Definition: vtkwriterinterface.hh:106
Vtk::DataTypes headertype_
Definition: vtkwriterinterface.hh:264
std::string getEndian() const
Definition: vtkwriterinterface.hh:229
Vtk::DataTypes datatype_
Definition: vtkwriterinterface.hh:263
typename std::ostream::pos_type pos_type
Definition: vtkwriterinterface.hh:35
void setCompressor(Vtk::CompressorTypes compressor, int level=-1)
Definition: vtkwriterinterface.hh:164
void writeHeader(std::ofstream &out, std::string const &type) const
Definition: vtkwriterinterface.impl.hh:204
VtkWriterInterface & addCellData(Function &&fct, Args &&... args)
Attach cell data to the writer.
Definition: vtkwriterinterface.hh:124
void writeDataAppended(std::ofstream &out, std::vector< std::uint64_t > &blocks) const
Definition: vtkwriterinterface.impl.hh:132
void setDatatype(Vtk::DataTypes datatype)
Sets the global datatype used for coordinates and other global float values.
Definition: vtkwriterinterface.hh:151
DC DataCollector
Definition: vtkwriterinterface.hh:31
VtkWriterInterface(GridView const &gridView, Vtk::FormatTypes format=Vtk::FormatTypes::BINARY, Vtk::DataTypes datatype=Vtk::DataTypes::FLOAT32, Vtk::DataTypes headertype=Vtk::DataTypes::UINT32)
Constructor, passes the gridView to the DataCollector.
Definition: vtkwriterinterface.hh:57
void writeData(std::ofstream &out, std::vector< pos_type > &offsets, VtkFunction const &fct, PositionTypes type, std::optional< std::size_t > timestep={}) const
Definition: vtkwriterinterface.impl.hh:82
void writePoints(std::ofstream &out, std::vector< pos_type > &offsets, std::optional< std::size_t > timestep={}) const
Definition: vtkwriterinterface.impl.hh:109
virtual std::string write(std::string const &fn, std::optional< std::string > dir={}) const override
Write the attached data to the file.
Definition: vtkwriterinterface.impl.hh:28
Vtk::FormatTypes getFormat() const
Definition: vtkwriterinterface.hh:242
std::size_t const block_size
Definition: vtkwriterinterface.hh:271
std::uint64_t writeValuesAppended(std::ofstream &out, std::vector< FloatType > const &values) const
Definition: vtkwriterinterface.impl.hh:286
PositionTypes
Definition: vtkwriterinterface.hh:37
@ POINT_DATA
Definition: vtkwriterinterface.hh:38
@ CELL_DATA
Definition: vtkwriterinterface.hh:39
Definition: vtkwriterinterface.hh:278
static std::uint8_t test(...)
static std::uint16_t test(VtkWriterInterface< GV, DC > const &)
static constexpr bool value
Definition: vtkwriterinterface.hh:283