Dune Core Modules (unstable)

Dune::VTK::VTUWriter Class Reference

Dump a .vtu/.vtp files contents to a stream. More...

#include <dune/grid/io/file/vtk/vtuwriter.hh>

Public Member Functions

 VTUWriter (std::ostream &stream_, OutputType outputType, FileType fileType_)
 create a VTUWriter object More...
 
 ~VTUWriter ()
 write footer
 
void beginPointData (const std::string &scalars="", const std::string &vectors="")
 start PointData section More...
 
void endPointData ()
 finish PointData section
 
void beginCellData (const std::string &scalars="", const std::string &vectors="")
 start CellData section More...
 
void endCellData ()
 finish CellData section
 
void beginPoints ()
 start section for the point coordinates More...
 
void endPoints ()
 finish section for the point coordinates
 
void beginCells ()
 start section for the grid cells/PolyData lines More...
 
void endCells ()
 start section for the grid cells/PolyData lines
 
void beginMain (unsigned ncells, unsigned npoints)
 start the main PolyData/UnstructuredGrid section More...
 
void endMain ()
 finish the main PolyData/UnstructuredGrid section
 
bool beginAppended ()
 start the appended data section More...
 
void endAppended ()
 finish the appended data section
 
DataArrayWritermakeArrayWriter (const std::string &name, unsigned ncomps, unsigned nitems, Precision prec)
 acquire a DataArrayWriter More...
 

Detailed Description

Dump a .vtu/.vtp files contents to a stream.

This will help generating a .vtu/.vtp file. Typical use is like this:

{
// create writer, writes begin tag
VTUWriter writer(std::cout, appendedraw, VTUWriter::polyData);
// write the main header
writer.beginMain(ncells, nvertices);
dumpEverything(writer);
writer.endMain();
// write the appended section, if required by the outputtype
if(writer.beginAppended())
dumpEverything(writer);
writer.endAppended();
// end scope so the destructor gets called and the closing tag is written
}
VTUWriter(std::ostream &stream_, OutputType outputType, FileType fileType_)
create a VTUWriter object
Definition: vtuwriter.hh:122

The method dumpEverything() then looks something like this:

void dumpEverything(VTUWriter& writer)
{
// dump cell data (optional)
writer.beginCellData();
for(each cell data field) {
shared_ptr<DataArrayWriter> arraywriter
(writer.makeArrayWriter(field.name, field.ncomps, ncells, precision));
// iterate over the points and write data for each
}
writer.endCellData();
// dump point data (optional)
writer.beginPointData();
for(each point data field) {
shared_ptr<DataArrayWriter> arraywriter
(writer.makeArrayWriter(field.name, field.ncomps, npoints, precision));
// iterate over the points and write data for each
}
writer.endPointData();
// dump point coordinates
writer.beginPoints();
{
shared_ptr<DataArrayWriter> arraywriter
(writer.makeArrayWriter("Coordinates", 3, npoints, precision));
// iterate over the points and write data for each
}
writer.endPoints();
// dump cells
writer.beginCells();
{ // connectivity
shared_ptr<DataArrayWriter> arraywriter
(writer.makeArrayWriter("connectivity", 1, ncorners, precision));
// iterate over the cells and write data for each
}
{ // connectivity
shared_ptr<DataArrayWriter> arraywriter
(writer.makeArrayWriter("offsets", 1, ncells, precision));
// iterate over the cells and write data for each
}
if(fileType == unstructuredGrid) { // types
shared_ptr<DataArrayWriter> arraywriter
(writer.makeArrayWriter("types", 1, ncells, precision));
// iterate over the cells and write data for each
}
writer.endCells();
}

Constructor & Destructor Documentation

◆ VTUWriter()

Dune::VTK::VTUWriter::VTUWriter ( std::ostream &  stream_,
OutputType  outputType,
FileType  fileType_ 
)
inline

create a VTUWriter object

Parameters
stream_Stream to write to.
outputTypeHow to encode data.
fileType_Whether to write PolyData (1D) or UnstructuredGrid (nD) format.

Create object and write header.

References DUNE_THROW, Dune::VTK::getEndiannessString(), Dune::VTK::polyData, and Dune::VTK::unstructuredGrid.

Member Function Documentation

◆ beginAppended()

bool Dune::VTK::VTUWriter::beginAppended ( )
inline

start the appended data section

Returns
A value indicating whether the is an actual appended section required.

If this function returns true, an appended section is actually required. In this case, between the call to this method and to endAppended(), there should be literally the same calls (including the same arguments) as between the calls to beginMain() and endMain(). The only exception is, that if a DataArrayWriter in the main section indicated that the calls to write could be skipped, this is not necessarily true in the appended section also (you will have to ask the DataArrayWriter again).

If this function returns false, no appended section is required and a call to endAppeded() should immediately follow the call to this function.

References Dune::VTK::DataArrayWriterFactory::appendedEncoding(), and Dune::VTK::DataArrayWriterFactory::beginAppended().

◆ beginCellData()

void Dune::VTK::VTUWriter::beginCellData ( const std::string &  scalars = "",
const std::string &  vectors = "" 
)
inline

start CellData section

Parameters
scalarsName of field to which should be marked as default scalars field. If this is the empty string, don't set any default.
vectorsName of field to which should be marked as default vectors field. If this is the empty string, don't set any default.

If there are no CellData fields, the call to this function may be skipped, together with the corresponding call to endCellData().

Referenced by Dune::SubsamplingVTKWriter< GridView >::writeCellData(), and Dune::VTKWriter< GridView >::writeCellData().

◆ beginCells()

void Dune::VTK::VTUWriter::beginCells ( )
inline

start section for the grid cells/PolyData lines

Between the call to this method an the following call to the endCells(), there must be two or three fields written:

  • "connectivity" of type Int32 with 3 components, number of items is the number of corners (that may be different from number of vertices!)
  • "offsets" of type Int32 with one component, number of items is number of cells.
  • for UnstructuredGrid, "types" of type UInt8 with one component, number of items is number of cells.

Referenced by Dune::SubsamplingVTKWriter< GridView >::writeGridCells(), and Dune::VTKWriter< GridView >::writeGridCells().

◆ beginMain()

void Dune::VTK::VTUWriter::beginMain ( unsigned  ncells,
unsigned  npoints 
)
inline

start the main PolyData/UnstructuredGrid section

Parameters
ncellsNumber of cells/lines.
npointsNumber of points.

Between the call to this method and to endMain(), there should be calls to dump the actual data:

◆ beginPointData()

void Dune::VTK::VTUWriter::beginPointData ( const std::string &  scalars = "",
const std::string &  vectors = "" 
)
inline

start PointData section

Parameters
scalarsName of field to which should be marked as default scalars field. If this is the empty string, don't set any default.
vectorsName of field to which should be marked as default vectors field. If this is the empty string, don't set any default.

If there are no PointData fields, the call to this function may be skipped, together with the corresponding call to endPointData().

Referenced by Dune::SubsamplingVTKWriter< GridView >::writeVertexData(), and Dune::VTKWriter< GridView >::writeVertexData().

◆ beginPoints()

void Dune::VTK::VTUWriter::beginPoints ( )
inline

start section for the point coordinates

Between the call to this method an the following call to the endPoints(), there must be a single field written. The name must be "Coordinates", it must have 3 components, and the number of items must be the number of points.

Referenced by Dune::SubsamplingVTKWriter< GridView >::writeGridPoints(), and Dune::VTKWriter< GridView >::writeGridPoints().

◆ makeArrayWriter()

DataArrayWriter* Dune::VTK::VTUWriter::makeArrayWriter ( const std::string &  name,
unsigned  ncomps,
unsigned  nitems,
Precision  prec 
)
inline

The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (Apr 17, 22:29, 2024)