Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
VTK
VTK
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 582
    • Issues 582
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 160
    • Merge Requests 160
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • VTK
  • VTKVTK
  • Issues
  • #17039

Closed
Open
Opened May 10, 2017 by Nico Schlömer@nschloeContributor

XDMF2Writer: Source and Target Spaces specify different sizes for path: /Block_0_t000000/Topology

When writing an XDMF2 file with enough cells to trigger a heavy data file, e.g.,

import meshzoo
import numpy
import vtk
from vtk.util import numpy_support


points, cells = meshzoo.rectangle(
    xmin=0.0, xmax=1.0,
    ymin=0.0, ymax=1.0,
    nx=6, ny=6
    )

# Generate VTK mesh
mesh = vtk.vtkUnstructuredGrid()

# set points
vtk_points = vtk.vtkPoints()
# Not using a deep copy here results in a segfault.
vtk_array = numpy_support.numpy_to_vtk(points, deep=True)
vtk_points.SetData(vtk_array)
mesh.SetPoints(vtk_points)

# create cell_array. It's a one-dimensional vector with
# (num_points2, p0, p1, ... ,pk, numpoints1, p10, p11, ..., p1k, ...
numcells, num_local_nodes = cells.shape
# add cell types
cell_types = numpy.full(numcells, vtk.VTK_TRIANGLE, dtype=numpy.ubyte)
# add cell offsets
cell_offsets = numpy.arange(
    0,
    numcells * (num_local_nodes + 1),
    num_local_nodes + 1,
    dtype=numpy.int64
    )
cell_connectivity = numpy.c_[
        num_local_nodes * numpy.ones(numcells, dtype=cells.dtype),
        cells
    ].flatten()
connectivity = vtk.util.numpy_support.numpy_to_vtkIdTypeArray(
    cell_connectivity.astype(numpy.int64),
    deep=1
    )

# wrap the data into a vtkCellArray
cell_array = vtk.vtkCellArray()
cell_array.SetCells(len(cell_types), connectivity)

# Add cell data to the mesh
mesh.SetCells(
    numpy_support.numpy_to_vtk(
        cell_types,
        deep=1,
        array_type=vtk.vtkUnsignedCharArray().GetDataType()
        ),
    numpy_support.numpy_to_vtk(
        cell_offsets,
        deep=1,
        array_type=vtk.vtkIdTypeArray().GetDataType()
        ),
    cell_array
    )

writer = vtk.vtkXdmfWriter()
writer.SetFileName('test2.xdmf')
writer.SetInputData(mesh)
writer.Write()

the writer will error out with the message

XDMF Error in /build/vtk7-mPdZCv/vtk7-7.1.1-3cf5df73/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfHDF.cxx line 606 (Source and Target Spaces specify different sizes for path: /Block_0_t000000/Topology)
XDMF Error in /build/vtk7-mPdZCv/vtk7-7.1.1-3cf5df73/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfHDF.cxx line 607 (Source = 60000 items)
XDMF Error in /build/vtk7-mPdZCv/vtk7-7.1.1-3cf5df73/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfHDF.cxx line 608 (Target = 150 items)
XDMF Error in /build/vtk7-mPdZCv/vtk7-7.1.1-3cf5df73/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfValuesHDF.cxx line 178 (Error Writing test2.h5:/Block_0_t000000/Topology)
XDMF Error in /build/vtk7-mPdZCv/vtk7-7.1.1-3cf5df73/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfDataItem.cxx line 793 (Writing Values Failed)
XDMF Error in /build/vtk7-mPdZCv/vtk7-7.1.1-3cf5df73/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfHDF.cxx line 606 (Source and Target Spaces specify different sizes for path: /Block_0_t000000/Geometry/Points)
XDMF Error in /build/vtk7-mPdZCv/vtk7-7.1.1-3cf5df73/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfHDF.cxx line 607 (Source = 30000 items)
XDMF Error in /build/vtk7-mPdZCv/vtk7-7.1.1-3cf5df73/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfHDF.cxx line 608 (Target = 108 items)
XDMF Error in /build/vtk7-mPdZCv/vtk7-7.1.1-3cf5df73/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfValuesHDF.cxx line 178 (Error Writing test2.h5:/Block_0_t000000/Geometry/Points)
XDMF Error in /build/vtk7-mPdZCv/vtk7-7.1.1-3cf5df73/ThirdParty/xdmf2/vtkxdmf2/libsrc/XdmfDataItem.cxx line 793 (Writing Values Failed)

There are no problems with any other output file format I've tested (in particular XDMF3).

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: vtk/vtk#17039