{"id":32178193,"url":"https://github.com/meshpro/meshzoo","last_synced_at":"2026-02-19T20:32:16.223Z","repository":{"id":42988357,"uuid":"57124427","full_name":"meshpro/meshzoo","owner":"meshpro","description":"A collection of meshes for canonical domains","archived":false,"fork":false,"pushed_at":"2024-01-19T10:19:50.000Z","size":2581,"stargazers_count":334,"open_issues_count":1,"forks_count":42,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-12-13T04:23:16.289Z","etag":null,"topics":["mesh-generators","python"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meshpro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-04-26T11:57:19.000Z","updated_at":"2025-11-07T12:19:51.000Z","dependencies_parsed_at":"2024-01-08T16:03:25.063Z","dependency_job_id":"2b840633-2613-4cf1-9bc0-93838a588f8a","html_url":"https://github.com/meshpro/meshzoo","commit_stats":{"total_commits":1,"total_committers":1,"mean_commits":1.0,"dds":0.0,"last_synced_commit":"5c2deb3ab3a3362826221e7a53f97fcea796a423"},"previous_names":["nschloe/meshzoo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/meshpro/meshzoo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshpro%2Fmeshzoo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshpro%2Fmeshzoo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshpro%2Fmeshzoo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshpro%2Fmeshzoo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meshpro","download_url":"https://codeload.github.com/meshpro/meshzoo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshpro%2Fmeshzoo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29630829,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T18:02:07.722Z","status":"ssl_error","status_checked_at":"2026-02-19T18:01:46.144Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mesh-generators","python"],"created_at":"2025-10-21T20:50:44.263Z","updated_at":"2026-02-19T20:32:16.205Z","avatar_url":"https://github.com/meshpro.png","language":null,"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/nschloe/meshzoo\"\u003e\u003cimg alt=\"meshzoo\" src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/meshzoo-logo.svg\" width=\"60%\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n[![PyPi Version](https://img.shields.io/pypi/v/meshzoo.svg?style=flat-square)](https://pypi.org/project/meshzoo/)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/meshzoo.svg?style=flat-square)](https://pypi.org/project/meshzoo/)\n[![GitHub stars](https://img.shields.io/github/stars/nschloe/meshzoo.svg?style=flat-square\u0026logo=github\u0026label=Stars\u0026logoColor=white)](https://github.com/nschloe/meshzoo)\n[![Downloads](https://pepy.tech/badge/meshzoo/month?style=flat-square)](https://pepy.tech/project/meshzoo)\n\n\u003c!--[![PyPi downloads](https://img.shields.io/pypi/dm/meshzoo.svg?style=flat-square)](https://pypistats.org/packages/meshzoo)--\u003e\n\n[![Discord](https://img.shields.io/static/v1?logo=discord\u0026logoColor=white\u0026label=chat\u0026message=on%20discord\u0026color=7289da\u0026style=flat-square)](https://discord.gg/PBCCvwHqpv)\n\nWhen generating meshes for FEM/FVM computations, sometimes your geometry is so simple\nthat you don't need a complex mesh generator (like\n[pygmsh](https://github.com/meshpro/pygmsh/),\n[MeshPy](https://github.com/inducer/meshpy),\n[mshr](https://bitbucket.org/fenics-project/mshr),\n[pygalmesh](https://github.com/meshpro/pygalmesh/),\n[dmsh](https://github.com/meshpro/dmsh/)),\nbut something simple and fast that makes use of the structure of the domain. Enter\nmeshzoo.\n\n### Installation\n\nInstall meshzoo [from PyPI](https://pypi.org/project/meshzoo/) with\n\n```\npip install meshzoo\n```\n\n### How to get a license\n\nLicenses for personal and academic use can be purchased\n[here](https://buy.stripe.com/5kA3eV8t8af83iE9AE).\nYou'll receive a confirmation email with a license key.\nInstall the key with\n\n```\nplm add \u003cyour-license-key\u003e\n```\n\non your machine and you're good to go.\n\nFor commercial use, please contact support@mondaytech.com.\n\n### Examples\n\n#### Triangle\n\n\u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/triangle.svg\" width=\"20%\"\u003e\n\n```python\nimport meshzoo\n\nbary, cells = meshzoo.triangle(8)\n\n# corners = np.array(\n#     [\n#         [0.0, -0.5 * numpy.sqrt(3.0), +0.5 * numpy.sqrt(3.0)],\n#         [1.0, -0.5, -0.5],\n#     ]\n# )\n# points = np.dot(corners, bary).T\n\n# Process the mesh, e.g., write it to a file using meshio\n# meshio.write_points_cells(\"triangle.vtk\", points, {\"triangle\": cells})\n```\n\n#### Rectangle\n\n\u003ctable width=\"100%\"\u003e\n  \u003ctr width=\"100%\"\u003e\n  \u003ctd width=\"50%\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/rectangle.svg\"/\u003e\u003c/td\u003e\n  \u003ctd width=\"50%\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/rectangle-quad.svg\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n```python\nimport meshzoo\nimport numpy as np\n\npoints, cells = meshzoo.rectangle_tri(\n    np.linspace(0.0, 1.0, 11),\n    np.linspace(0.0, 1.0, 11),\n    variant=\"zigzag\",  # or \"up\", \"down\", \"center\"\n)\n\npoints, cells = meshzoo.rectangle_quad(\n    np.linspace(0.0, 1.0, 11),\n    np.linspace(0.0, 1.0, 11),\n    cell_type=\"quad4\",  # or \"quad8\", \"quad9\"\n)\n```\n\n#### Regular polygon\n\n| \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/4gon.svg\" width=\"70%\"\u003e | \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/6gon.svg\" width=\"70%\"\u003e | \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/9gon.svg\" width=\"70%\"\u003e |\n| :---------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------: |\n|                                   `meshzoo.ngon(4, 8)`                                    |                                   `meshzoo.ngon(6, 8)`                                    |                                   `meshzoo.ngon(9, 8)`                                    |\n\n```python\nimport meshzoo\n\npoints, cells = meshzoo.ngon(5, 11)\n```\n\n#### Disk\n\n| \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets//4gon_disk.svg\" width=\"70%\"\u003e | \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/6gon_disk.svg\" width=\"70%\"\u003e | \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/9gon_disk.svg\" width=\"70%\"\u003e |\n| :---------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------: |\n|                                      `meshzoo.disk(4, 8)`                                       |                                      `meshzoo.disk(6, 8)`                                      |                                      `meshzoo.disk(9, 8)`                                      |\n\nThe disk meshes are inflations of regular polygons.\n\n```python\nimport meshzoo\n\npoints, cells = meshzoo.disk(6, 11)\n\npoints, cells = meshzoo.disk_quad(10, cell_type=\"quad4\")  # or \"quad8\", \"quad9\"\n```\n\n#### Möbius strip\n\n\u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/moebius.png\" width=\"20%\"\u003e\n\n```python\nimport meshzoo\n\npoints, cells = meshzoo.moebius(num_twists=1, nl=60, nw=11)\n```\n\n#### Sphere (surface)\n\n| \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/uv_sphere.png\" width=\"80%\"\u003e | \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/geo-sphere.png\" width=\"60%\"\u003e |\n| :--------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------: |\n\n```python\nimport meshzoo\n\npoints, cells = meshzoo.uv_sphere(num_points_per_circle=20, num_circles=10, radius=1.0)\npoints, tri, quad = meshzoo.geo_sphere(\n    num_points_per_circle=20, num_circles=10, radius=1.0\n)\n```\n\nSpheres can also be generated by refining the faces of [platonic\nsolids](https://en.wikipedia.org/wiki/Platonic_solid) and then \"inflating\" them. meshzoo\nimplements a few of them. The sphere generated from the icosahedron has the\nhighest-quality (most equilateral) triangles.\n\nAll cells are oriented such that its normals point outwards.\n\n| \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/tetra-sphere.png\" width=\"70%\"\u003e | \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/octa-sphere.png\" width=\"70%\"\u003e | \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/icosa-sphere.png\" width=\"70%\"\u003e |\n| :-----------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------: |\n|                                    `meshzoo.tetra_sphere(10)`                                     |                                    `meshzoo.octa_sphere(10)`                                     |                                    `meshzoo.icosa_sphere(10)`                                     |\n\n#### Ball (solid)\n\n| \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/ball-tetra.png\" width=\"70%\"\u003e | \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/ball-hexa.png\" width=\"70%\"\u003e |\n| :---------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------: |\n\n```python\nimport meshzoo\n\npoints, cells = meshzoo.ball_tetra(10)\npoints, cells = meshzoo.ball_hexa(10)\n```\n\n#### Tube\n\n\u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/tube.png\" width=\"20%\"\u003e\n\n```python\nimport meshzoo\n\npoints, cells = meshzoo.tube(length=1.0, radius=1.0, n=30)\n```\n\n#### Cube\n\n| \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/cube.png\" width=\"70%\"\u003e | \u003cimg src=\"https://raw.githubusercontent.com/meshpro/meshzoo/assets/cube-hexa.png\" width=\"50%\"\u003e |\n| :---------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------: |\n\n```python\nimport meshzoo\nimport numpy as np\n\npoints, cells = meshzoo.cube_tetra(\n    np.linspace(0.0, 1.0, 11), np.linspace(0.0, 1.0, 11), np.linspace(0.0, 1.0, 11)\n)\npoints, cells = meshzoo.cube_hexa(\n    np.linspace(0.0, 1.0, 11), np.linspace(0.0, 1.0, 11), np.linspace(0.0, 1.0, 11)\n)\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeshpro%2Fmeshzoo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeshpro%2Fmeshzoo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeshpro%2Fmeshzoo/lists"}