Skip to main content
pygmsh
======

|CircleCI| |codecov| |Documentation Status| |PyPi Version| |GitHub
stars|

.. raw:: html

<p align="center">

.. raw:: html

</p>

`Gmsh <https://gmsh.info/>`__ is a powerful mesh generation tool with a
scripting language that is notoriously hard to write.

The goal of pygmsh is to combine the power of Gmsh with the versatility
of Python and to provide useful abstractions from the Gmsh scripting
language so you can create complex geometries more easily.

Built-in
^^^^^^^^

.. figure:: https://nschloe.github.io/pygmsh/screw.png
:alt:

To create the above mesh, simply do

.. code:: python

import pygmsh
import numpy as np

geom = pygmsh.built_in.Geometry()

# Draw a cross.
poly = geom.add_polygon([
[0.0, 0.5, 0.0],
[-0.1, 0.1, 0.0],
[-0.5, 0.0, 0.0],
[-0.1, -0.1, 0.0],
[0.0, -0.5, 0.0],
[0.1, -0.1, 0.0],
[0.5, 0.0, 0.0],
[0.1, 0.1, 0.0]
],
lcar=0.05
)

axis = [0, 0, 1]

geom.extrude(
poly,
translation_axis=axis,
rotation_axis=axis,
point_on_axis=[0, 0, 0],
angle=2.0 / 6.0 * np.pi
)

points, cells, point_data, cell_data, field_data = pygmsh.generate_mesh(geom)

to retrieve all points and cells of the mesh for the specified geometry.
To store the mesh, you can use
`meshio <https://pypi.python.org/pypi/meshio>`__; for example

.. code:: python

import meshio
meshio.write('test.vtu', points, cells, cell_data=cell_data)

The output file can be visualized with various tools, e.g.,
`ParaView <https://www.paraview.org/>`__.

You will find the above mesh in the directory
```test/`` <https://github.com/nschloe/pygmsh/tree/master/test/>`__
along with other small examples.

OpenCASCADE
^^^^^^^^^^^

.. figure:: https://nschloe.github.io/pygmsh/puzzle.png
:alt:

As of version 3.0, Gmsh supports OpenCASCADE, allowing for a CAD-style
geometry specification.

Example:

.. code:: python

import pygmsh

geom = pygmsh.opencascade.Geometry(
characteristic_length_min=0.1,
characteristic_length_max=0.1,
)

rectangle = geom.add_rectangle([-1.0, -1.0, 0.0], 2.0, 2.0)
disk1 = geom.add_disk([-1.2, 0.0, 0.0], 0.5)
disk2 = geom.add_disk([+1.2, 0.0, 0.0], 0.5)
union = geom.boolean_union([rectangle, disk1, disk2])

disk3 = geom.add_disk([0.0, -0.9, 0.0], 0.5)
disk4 = geom.add_disk([0.0, +0.9, 0.0], 0.5)
flat = geom.boolean_difference([union], [disk3, disk4])

geom.extrude(flat, [0, 0, 0.3])

points, cells, point_data, cell_data, field_data = pygmsh.generate_mesh(geom)

Installation
~~~~~~~~~~~~

pygmsh is `available from the Python Package
Index <https://pypi.python.org/pypi/pygmsh/>`__, so simply type

::

pip install -U pygmsh

to install or upgrade.

Usage
~~~~~

Just

::

import pygmsh as pg

and make use of all the goodies the module provides. The
`documentation <https://pygmsh.readthedocs.org/>`__ and the examples
under
```test/`` <https://github.com/nschloe/pygmsh/tree/master/test/>`__
might inspire you.

Testing
~~~~~~~

To run the pygmsh unit tests, check out this repository and type

::

pytest

Building Documentation
~~~~~~~~~~~~~~~~~~~~~~

Docs are built using `Sphinx <http://www.sphinx-doc.org/en/stable/>`__.

To build run

::

sphinx-build -b html doc doc/_build

Distribution
~~~~~~~~~~~~

To create a new release

1. bump the ``__version__`` number,

2. publish to PyPi and GitHub:

::

$ make publish

License
~~~~~~~

pygmsh is published under the `MIT
license <https://en.wikipedia.org/wiki/MIT_License>`__.

.. |CircleCI| image:: https://img.shields.io/circleci/project/github/nschloe/pygmsh/master.svg
:target: https://circleci.com/gh/nschloe/pygmsh
.. |codecov| image:: https://codecov.io/gh/nschloe/pygmsh/branch/master/graph/badge.svg
:target: https://codecov.io/gh/nschloe/pygmsh
.. |Documentation Status| image:: https://readthedocs.org/projects/pygmsh/badge/?version=latest
:target: https://pygmsh.readthedocs.org/en/latest/?badge=latest
.. |PyPi Version| image:: https://img.shields.io/pypi/v/pygmsh.svg
:target: https://pypi.python.org/pypi/pygmsh
.. |GitHub stars| image:: https://img.shields.io/github/stars/nschloe/pygmsh.svg?style=social&label=Stars&maxAge=2592000
:target: https://github.com/nschloe/pygmsh


Metadata

Release files for pygmsh 4.0.5

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

Built distribution (wheel)

Table of built distributions (wheels) for pygmsh 4.0.5
File Interpreter ABI Platform
pygmsh-4.0.5-py2.py3-none-any.whl Python 3, Python 2 none any Details

Release files / pygmsh-4.0.5-py2.py3-none-any.whl

Download URL pygmsh-4.0.5-py2.py3-none-any.whl
Size 30.3 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
e5a09ca986e8a16f46725c7f75db7dac09aed9f74b37ec59363e37d0eb5f928a
BLAKE2b-256 checksum
How to use checksums
c71d9e5f1fcd0df00bface0debb0bdb4de1caae4bc53f3bf7dc6db1c387e2ef7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

7.1.17

2 release files

7.1.16

2 release files

7.1.15

2 release files

7.1.13

2 release files

7.1.12

2 release files

7.1.11

2 release files

7.1.10

2 release files

7.1.9

2 release files

7.1.8

2 release files

7.1.7

2 release files

7.1.6

2 release files

7.1.5

2 release files

7.1.4

2 release files

7.1.3

2 release files

7.1.2

2 release files

7.1.1

2 release files

7.1.0

2 release files

7.0.4

2 release files

7.0.3

2 release files

7.0.2

2 release files

7.0.1

2 release files

7.0.0

2 release files

6.1.1

2 release files

6.1.0

2 release files

6.0.9

2 release files

6.0.8

2 release files

6.0.6

2 release files

6.0.5

2 release files

6.0.4

2 release files

6.0.3

2 release files

6.0.2

2 release files

5.0.2

2 release files

5.0.1

2 release files

5.0.0

2 release files

4.4.2

2 release files

4.4.1

2 release files

4.4.0

2 release files

4.3.6

2 release files

4.3.5

2 release files

4.3.4

2 release files

4.3.3

2 release files

4.3.2

2 release files

4.3.1

2 release files

4.3.0

2 release files

4.2.0

2 release files

4.1.7

2 release files

4.1.6

2 release files

4.1.5

2 release files

4.1.4

2 release files

4.1.3

2 release files

4.1.2

1 release file

4.1.1

1 release file

4.1.0

1 release file

4.0.8

1 release file

4.0.7

1 release file

4.0.6

1 release file

This release

4.0.5 This release

1 release file

4.0.4

1 release file

4.0.3

1 release file

4.0.2

1 release file

4.0.1

1 release file

4.0.0

1 release file

3.2.2

1 release file

3.2.1

1 release file

3.2.0

1 release file

3.1.0

1 release file

3.0.18

1 release file

3.0.17

1 release file

3.0.16

1 release file

3.0.15

1 release file

3.0.14

1 release file

3.0.13

1 release file

3.0.12

1 release file

3.0.11

1 release file

3.0.10

1 release file

3.0.9

1 release file

3.0.8

1 release file

3.0.7

1 release file

3.0.6

1 release file

3.0.5

1 release file

3.0.4

1 release file

3.0.3

1 release file

3.0.2

1 release file

3.0.1

1 release file

3.0.0

1 release file

2.7.0

1 release file

2.6.0

1 release file

2.5.1

1 release file

2.5.0

1 release file

2.4.2

1 release file

2.4.1

1 release file

2.4.0

1 release file

2.3.0

1 release file

2.2.0

1 release file

2.1.3

1 release file

2.1.2

1 release file

2.1.1

1 release file

2.1.0

1 release file

2.0.1

1 release file

2.0.0

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.0

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