Skip to main content

meshzoo

PyPi Version PyPI pyversions GitHub stars Downloads

When generating meshes for FEM/FVM computations, sometimes your geometry is so simple that you don't need a complex mesh generator (like pygmsh, MeshPy, mshr, pygalmesh, dmsh), but something simple and fast that makes use of the structure of the domain. Enter meshzoo.

Installation

Install meshzoo from PyPI with

pip install meshzoo

on your machine and you're good to go.

Examples

All generators return the points as a (num_points, dim) float64 array and the cells as a (num_cells, nodes_per_cell) int64 array.

Triangle

import meshzoo

bary, cells = meshzoo.triangle(8)

# corners = np.array(
#     [
#         [0.0, -0.5 * numpy.sqrt(3.0), +0.5 * numpy.sqrt(3.0)],
#         [1.0, -0.5, -0.5],
#     ]
# )
# points = np.dot(corners, bary).T

# Process the mesh, e.g., write it to a file using meshio
# meshio.write_points_cells("triangle.vtk", points, {"triangle": cells})

Rectangle

import meshzoo
import numpy as np

points, cells = meshzoo.rectangle_tri(
    np.linspace(0.0, 1.0, 11),
    np.linspace(0.0, 1.0, 11),
    variant="zigzag",  # or "up", "down", "center"
)

points, cells = meshzoo.rectangle_quad(
    np.linspace(0.0, 1.0, 11),
    np.linspace(0.0, 1.0, 11),
    cell_type="quad4",  # or "quad8", "quad9"
)

Regular polygon

meshzoo.ngon(4, 8) meshzoo.ngon(6, 8) meshzoo.ngon(9, 8)
import meshzoo

points, cells = meshzoo.ngon(5, 11)

Disk

meshzoo.disk(4, 8) meshzoo.disk(6, 8) meshzoo.disk(9, 8)

The disk meshes are inflations of regular polygons.

import meshzoo

points, cells = meshzoo.disk(6, 11)

points, cells = meshzoo.disk_quad(10, cell_type="quad4")  # or "quad8", "quad9"

Annulus

import meshzoo
import numpy as np

points, cells = meshzoo.annulus_tri(
    np.linspace(0.5, 1.0, 6),  # radii of the circles of points
    40,  # points per circle
    variant="zigzag",  # or "up", "down"
)

points, cells = meshzoo.annulus_quad(
    np.linspace(0.5, 1.0, 6), 40, cell_type="quad4"  # or "quad8", "quad9"
)

L-shape

The domain [-1, 1]^2 without the quadrant (0, 1]^2, with the re-entrant corner at the origin.

import meshzoo

points, cells = meshzoo.lshape_tri(10, variant="zigzag")  # or "up", "down", "center"
points, cells = meshzoo.lshape_quad(10, cell_type="quad4")  # or "quad8", "quad9"

Möbius strip

import meshzoo

points, cells = meshzoo.moebius(num_twists=1, nl=60, nw=11)

Sphere (surface)

import meshzoo

points, cells = meshzoo.uv_sphere(num_points_per_circle=20, num_circles=10, radius=1.0)
points, tri, quad = meshzoo.geo_sphere(
    num_points_per_circle=20, num_circles=10, radius=1.0
)

Spheres can also be generated by refining the faces of platonic solids and then "inflating" them. meshzoo implements a few of them. The sphere generated from the icosahedron has the highest-quality (most equilateral) triangles.

All cells are oriented such that their normals point outwards.

meshzoo.tetra_sphere(10) meshzoo.octa_sphere(10) meshzoo.icosa_sphere(10)

Ball (solid)

import meshzoo

points, cells = meshzoo.ball_tetra(10)
points, cells = meshzoo.ball_hexa(10)

Tube

import meshzoo

points, cells = meshzoo.tube(length=1.0, radius=1.0, n=30)

Torus

import meshzoo

points, cells = meshzoo.torus(
    num_points_major=60, num_points_minor=20, major_radius=1.0, minor_radius=0.3
)

Cube

import meshzoo
import numpy as np

points, cells = meshzoo.cube_tetra(
    np.linspace(0.0, 1.0, 11), np.linspace(0.0, 1.0, 11), np.linspace(0.0, 1.0, 11)
)
points, cells = meshzoo.cube_hexa(
    np.linspace(0.0, 1.0, 11), np.linspace(0.0, 1.0, 11), np.linspace(0.0, 1.0, 11)
)

Extrusion

Any planar mesh can be extruded along the z-axis: triangles become wedges or tetrahedra, quadrilaterals become hexahedra. This gives, e.g., cylinders and pipes.

import meshzoo
import numpy as np

z = np.linspace(0.0, 2.0, 11)

points, tri = meshzoo.disk(6, 10)
points, wedges = meshzoo.extrude(points, tri, z)  # cylinder
points, tets = meshzoo.extrude(points, tri, z, cell_type="tetra")

points, quads = meshzoo.annulus_quad(np.linspace(0.5, 1.0, 6), 40)
points, hexa = meshzoo.extrude(points, quads, z)  # pipe

Metadata

Release files for meshzoo 0.13.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for meshzoo 0.13.0
File
meshzoo-0.13.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
meshzoo-0.13.0-cp310-abi3-manylinux_2_28_aarch64.whl CPython 3.10 abi3 Linux glibc 2.28+ ARM64 Details
meshzoo-0.13.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
meshzoo-0.13.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
meshzoo-0.13.0-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 1.8 MB

Release files / meshzoo-0.13.0-cp310-abi3-win_amd64.whl

Download URL meshzoo-0.13.0-cp310-abi3-win_amd64.whl
Size 253.0 kB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
a85489149011058bc285d615dd6a6b1b3caa2a4221b951c8f3359f5f984843d9
BLAKE2b-256 checksum
How to use checksums
5ef793e433d295c530f468fa52af2047f40fff07c879b9525e2d85545bb5399a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / meshzoo-0.13.0-cp310-abi3-manylinux_2_28_aarch64.whl

Download URL meshzoo-0.13.0-cp310-abi3-manylinux_2_28_aarch64.whl
Size 392.2 kB
Tags CPython 3.10 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
db2198bbbe99643c795632807b9eb560b47961de584f82da1795b712506ef8e1
BLAKE2b-256 checksum
How to use checksums
4d1aac9bbee0f4c71c9f035e017b36063b8bd55d8eb41f60abb47e33112e7df7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / meshzoo-0.13.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL meshzoo-0.13.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 410.7 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
d64edd4b5209cf421845fbec776a1e0862260dda7ec116c042e213ee5a2ede36
BLAKE2b-256 checksum
How to use checksums
eec51442a1803f0f47974732d477c348023461dbe0710932718257377d6f44c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / meshzoo-0.13.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL meshzoo-0.13.0-cp310-abi3-macosx_11_0_arm64.whl
Size 357.0 kB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c61bc6f4c03126ff792708b7ce629eaad91ce75f870576117af96210e65d9d91
BLAKE2b-256 checksum
How to use checksums
42bf46dd60b905f0f3d75faeeb7c53169fcfa916a131bb4fa526c649f6840695
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / meshzoo-0.13.0-cp310-abi3-macosx_10_12_x86_64.whl

Download URL meshzoo-0.13.0-cp310-abi3-macosx_10_12_x86_64.whl
Size 363.1 kB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
9aafa8f1e87cf1c0517db4d23f496225754ccbdfdd4b370a863ff2cd5a6dbc66
BLAKE2b-256 checksum
How to use checksums
c86395cf23cebaf2d30e8505a1b958caa429b1c6abbbc97fe97e1f249ac2647f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release history Release notifications | RSS feed

0.13.1

5 release files

This release

0.13.0 This release

5 release files

0.12.2

5 release files

0.12.0

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page