Usage Reference for pyvisfile.vtk

Constants

Vector formats

pyvisfile.vtk.VF_LIST_OF_COMPONENTS

[[x0, y0, z0], [x1, y1, z1]]

pyvisfile.vtk.VF_LIST_OF_VECTORS

[[x0, x1], [y0, y1], [z0, z1]]

Element types

pyvisfile.vtk.VTK_VERTEX
pyvisfile.vtk.VTK_POLY_VERTEX
pyvisfile.vtk.VTK_LINE
pyvisfile.vtk.VTK_POLY_LINE
pyvisfile.vtk.VTK_TRIANGLE
pyvisfile.vtk.VTK_TRIANGLE_STRIP
pyvisfile.vtk.VTK_POLYGON
pyvisfile.vtk.VTK_PIXEL
pyvisfile.vtk.VTK_QUAD
pyvisfile.vtk.VTK_TETRA
pyvisfile.vtk.VTK_VOXEL
pyvisfile.vtk.VTK_HEXAHEDRON
pyvisfile.vtk.VTK_WEDGE
pyvisfile.vtk.VTK_PYRAMID
pyvisfile.vtk.VTK_LAGRANGE_CURVE
pyvisfile.vtk.VTK_LAGRANGE_TRIANGLE
pyvisfile.vtk.VTK_LAGRANGE_QUADRILATERAL
pyvisfile.vtk.VTK_LAGRANGE_TETRAHEDRON
pyvisfile.vtk.VTK_LAGRANGE_HEXAHEDRON
pyvisfile.vtk.VTK_LAGRANGE_WEDGE

Building blocks

class pyvisfile.vtk.DataArray(name, container, vector_padding=3, vector_format=0, components=None)[source]
class pyvisfile.vtk.UnstructuredGrid(points, cells, cell_types)[source]
add_pointdata(data_array)[source]
add_celldata(data_array)[source]
class pyvisfile.vtk.StructuredGrid(mesh)[source]
add_pointdata(data_array)[source]
add_celldata(data_array)[source]

XML elements

class pyvisfile.vtk.XMLElement(tag, **attributes)[source]
write(file)[source]

XML generators

class pyvisfile.vtk.InlineXMLGenerator(compressor=None, vtk_file_version=None)[source]
__init__(compressor=None, vtk_file_version=None)[source]
Parameters

vtk_file_version

a string "x.y" with the desired VTK XML file format version. Relevant versions are as follows:

  • "0.1" is the original version.

  • "1.0" added support for 64-bit indices and offsets, as described here.

  • "2.0" added support for ghost array data, as described here.

  • "2.1": added support for writing additional information attached to a DataArray using information keys.

  • "2.2": changed the node numbering of the hexahedron, as described here.

__call__(vtkobj)[source]

Return an XMLElement.

class pyvisfile.vtk.AppendedDataXMLGenerator(compressor=None, vtk_file_version=None)[source]
__call__(vtkobj)[source]

Return an XMLElement.

class pyvisfile.vtk.ParallelXMLGenerator(pathnames)[source]
__call__(vtkobj)[source]

Return an XMLElement.

Convenience functions

pyvisfile.vtk.write_structured_grid(file_name, mesh, cell_data=None, point_data=None)[source]

Examples

Writing a structured mesh

# contributed by Luke Olson

import numpy as np

n = 50
x, y = np.meshgrid(np.linspace(-1, 1, n),
np.linspace(-1, 1, n))

u = np.exp(-50 * (x**2 + y**2))

from pyvisfile.vtk import write_structured_grid
mesh = np.rollaxis(np.dstack((x, y)), 2)
write_structured_grid("test.vts", mesh,
        point_data=[("u", u[np.newaxis, :, :])])

(You can find this example as examples/vtk-structured-2d-plain.py in the PyVisfile source distribution.)

Writing an unstructured mesh

import numpy as np
from pyvisfile.vtk import (
    UnstructuredGrid, DataArray,
    AppendedDataXMLGenerator,
    VTK_VERTEX, VF_LIST_OF_VECTORS, VF_LIST_OF_COMPONENTS)

n = 5000
points = np.random.randn(n, 3)

data = [
        ("p", np.random.randn(n)),
        ("vel", np.random.randn(3, n)),
]
file_name = "points.vtu"
compressor = None

grid = UnstructuredGrid(
        (n, DataArray("points", points, vector_format=VF_LIST_OF_VECTORS)),
        cells=np.arange(n, dtype=np.uint32),
        cell_types=np.asarray([VTK_VERTEX] * n, dtype=np.uint8))

for name, field in data:
    grid.add_pointdata(DataArray(name, field,
        vector_format=VF_LIST_OF_COMPONENTS))

from os.path import exists
if exists(file_name):
    raise RuntimeError("output file '%s' already exists"
        % file_name)

outf = open(file_name, "w")
AppendedDataXMLGenerator(compressor)(grid).write(outf)
outf.close()

(You can find this example as examples/vtk-unstructured-points.py in the PyVisfile source distribution.)