4#ifndef DUNE_GRID_IO_FILE_VTK_COMMON_HH
5#define DUNE_GRID_IO_FILE_VTK_COMMON_HH
12#include <dune/common/exceptions.hh>
13#include <dune/geometry/type.hh>
14#include <dune/common/typetraits.hh>
110 typedef std::conditional<std::numeric_limits<char>::is_signed,
151 if (t.isVertex())
return vertex;
152 if (t.isLine())
return line;
153 if (t.isTriangle())
return triangle;
156 if (t.isPyramid())
return pyramid;
157 if (t.isPrism())
return prism;
162 if( t.dim() == 2 )
return polygon;
166 DUNE_THROW(IOError,
"VTKWriter: unsupported GeometryType " << t);
184 inline int renumber(
const Dune::GeometryType &t,
int i)
186 static const int quadRenumbering[4] = {0,1,3,2};
187 static const int cubeRenumbering[8] = {0,1,3,2,4,5,7,6};
188 static const int prismRenumbering[6] = {0,2,1,3,5,4};
189 static const int pyramidRenumbering[5] = {0,1,3,2,4};
191 if (t.isQuadrilateral())
return quadRenumbering[i];
192 if (t.isPyramid())
return pyramidRenumbering[i];
193 if (t.isPrism())
return prismRenumbering[i];
194 if (t.isHexahedron())
return cubeRenumbering[i];
233 if (
reinterpret_cast<char*
>(&i)[1] == 1)
236 return "LittleEndian";
293 DUNE_THROW(Dune::NotImplemented,
"Unknown precision type");
303 return sizeof(float);
305 return sizeof(double);
307 return sizeof(std::uint32_t);
309 return sizeof(std::uint8_t);
311 return sizeof(std::int32_t);
313 DUNE_THROW(Dune::NotImplemented,
"Unknown precision type");
Include standard header files.
Definition: agrid.hh:58
Precision
which precision to use when writing out data to vtk files
Definition: common.hh:269
OutputType
How the bulk data should be stored in the file.
Definition: common.hh:41
@ ascii
Output to the file is in ascii.
Definition: common.hh:43
@ appendedraw
Output is to the file is appended raw binary.
Definition: common.hh:47
@ appendedbase64
Output is to the file is appended base64 binary.
Definition: common.hh:49
@ base64
Output to the file is inline base64 binary.
Definition: common.hh:45
int renumber(const Dune::GeometryType &t, int i)
renumber VTK <-> Dune
Definition: common.hh:184
FileType
which type of VTK file to write
Definition: common.hh:250
@ polyData
for .vtp files (PolyData)
Definition: common.hh:252
@ unstructuredGrid
for .vtu files (UnstructuredGrid)
Definition: common.hh:254
std::string toString(Precision p)
map precision to VTK type name
Definition: common.hh:278
DataMode
Whether to produce conforming or non-conforming output.
Definition: common.hh:65
@ conforming
Output conforming data.
Definition: common.hh:71
@ nonconforming
Output non-conforming data.
Definition: common.hh:79
std::size_t typeSize(Precision p)
map precision to byte size
Definition: common.hh:298
GeometryType geometryType(const Dune::GeometryType &t)
mapping from GeometryType to VTKGeometryType
Definition: common.hh:149
std::string getEndiannessString()
determine endianness of this C++ implementation
Definition: common.hh:230
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:130
@ line
Definition: common.hh:132
@ pyramid
Definition: common.hh:139
@ polyhedron
Definition: common.hh:140
@ quadrilateral
Definition: common.hh:135
@ vertex
Definition: common.hh:131
@ tetrahedron
Definition: common.hh:136
@ prism
Definition: common.hh:138
@ hexahedron
Definition: common.hh:137
@ triangle
Definition: common.hh:133
@ polygon
Definition: common.hh:134
determine a type to safely put another type into a stream
Definition: common.hh:93
T Type
type to convert T to before putting it into a stream with <<
Definition: common.hh:95
unsigned Type
Definition: common.hh:100
int Type
Definition: common.hh:105
std::conditional< std::numeric_limits< char >::is_signed, int, unsigned >::type Type
Definition: common.hh:112
Descriptor struct for VTK fields.
Definition: common.hh:326
std::size_t size() const
The number of components in the data field.
Definition: common.hh:362
Precision precision() const
The precision used for the output of the data field.
Definition: common.hh:368
Type
VTK data type.
Definition: common.hh:331
@ tensor
tensor field (always 3x3)
@ vector
vector-valued field (always 3D, will be padded if necessary)
FieldInfo(std::string name, Type type, std::size_t size, Precision prec=Precision::float32)
Create a FieldInfo instance with the given name, type and size.
Definition: common.hh:342
Type type() const
The type of the data field.
Definition: common.hh:356
std::string name() const
The name of the data field.
Definition: common.hh:350