There are various mesh formats available for representing unstructured meshes.meshio can read and write all of the following and smoothly converts between them:
- Abaqus
- ANSYS msh
- DOLFIN XML
- Exodus
- H5M
- Kratos/MDPA
- Medit
- MED/Salome
- Gmsh (versions 2 and 4)
- OFF
- PERMAS
- STL
- SVG (2D only, output only)
- VTK
- VTU
- XDMF
Simply call
meshio-convert input.msh output.vtu
with any of the supported formats.
In Python, simply call
import meshiomesh = meshio.read(filename)# mesh.points, mesh.cells, ...
to read a mesh. To write, do
points = numpy.array([ [0.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0], ])cells = { "triangle": numpy.array([ [0, 1, 2] ]) }meshio.write_points_cells( "foo.vtk", points, cells, # Optionally provide extra data on points, cells, etc. # point_data=point_data, # cell_data=cell_data, # field_data=field_data )
or explicitly create a mesh object for writing
mesh = meshio.Mesh(points, cells)meshio.write("foo.vtk", mesh)
For both input and output, you can optionally specify the exact file_format
(in case you would like to enforce binary over ASCII VTK, for example).
Time series
The XDMF format supports timeseries with a shared mesh. You can write times series data using meshio with
writer = meshio.XdmfTimeSeriesWriter(filename)writer.write_points_cells(points, cells)for t in [0.0, 0.1, 0.21]: writer.write_point_data({"phi": data}, t)
and read it with
reader = meshio.XdmfTimeSeriesReader(filename)points, cells = reader.read_points_cells()for k in range(reader.num_steps): t, point_data, cell_data = reader.read_data(k)
Installation
meshio is available from the Python PackageIndex, so simply type
pip install -U meshio
to install or upgrade.
Testing
To run the meshio unit tests, check out this repository and type
pytest
Distribution
To create a new release
bump the
__version__
number,tag and upload to PyPi:
make publish
License
meshio is published under the MIT license.