General syntax
The syntax for writing VTK files typically looks like the following:
saved_files = vtk_grid(filename, points..., [cells]; kws...) do vtk
# add datasets here...
end
Grid coordinates are passed via one or more
points
arguments, as detailed in Structured grid formats and Unstructured grid formats.The
cells
argument is only relevant for unstructured grids, as detailed in Unstructured grid formats.Data may be added to the
vtk
handler at the interior of the do-block. See Writing datasets for more details.The returned variable
saved_files
is aVector{String}
containing the paths of the actual VTK files that were saved after the operation. When writing VTK dataset files (e.g. structured or unstructured grids), this contains just a single path, but this changes when one is working with metadata files such as multiblock or parallel files.
Note that the above syntax, which uses Julia's do-block syntax is equivalent to:
vtk = vtk_grid(filename, points..., [cells]; kws...)
# add datasets here...
saved_files = close(vtk)
Data formatting options
By default, numerical data is written to the XML files as compressed raw binary data. This can be changed using the optional keyword arguments of vtk_grid
.
For instance, to disable both compressing and appending raw data in the case of unstructured meshes:
vtk_grid(filename, points, cells; compress = false, append = false, ascii = false)
More generally:
If
append
istrue
(default), data is written appended at the end of the XML file as raw binary data. Note that this violates the XML specification, but is allowed by VTK formats.Otherwise, if
append
isfalse
, data is written inline. By default, inline data is written base-64 encoded, but may also be written in ASCII format (see below). Writing inline data is usually slower than writing raw binary data, and also results in larger files, but is valid according to the XML specification.If
ascii
istrue
, then appended data is written in ASCII format instead of base64-encoded. This is not the default. This option is ignored ifappend
istrue
.If
compress
istrue
(default), data is first compressed using the CodecZlib package. Its value may also be a compression level between 1 (fast compression) and 9 (best compression). This option is ignored when writing inline data in ASCII format.
Setting the VTK file version
The vtk_grid
function also allows setting the VTK file version using the optional vtkversion
keyword argument. This refers to the version of the VTK XML file format that is to be written, and which appears in the VTKFile
element of the XML file. Different versions may be interpreted differently by ParaView. Note that this is a somewhat advanced option that may be used to solve potential issues.
As a real-life example, say that you want to write an unstructured dataset made of Lagrange hexahedron cells. Defining each cell requires defining (1) a set of space coordinates, and (2) determining the way these coordinates connect to form the cell. The order of the points in the connectivity arrays must follow the specific node numbering expected by the VTK libraries. But the node numbering can change from one VTK version to the other. So, if one constructs the cells following the latest VTK specification, one should set the VTK file version to the newest one. See this discussion for more details.
The vtkversion
option is used as follows:
vtk_grid(filename, points, [cells]; vtkversion = :default, etc...)
The vtkversion
argument can take the following values:
:default
(equivalent tov"1.0"
);:latest
(currently equivalent tov"2.2"
);- some other version number of the form
v"X.Y"
.
VTK file version 1.0
is used by default for backwards compatibility and to make sure that the generated files can be read by old versions of the VTK libraries and of ParaView.