Skip to main content

pymesh2D is a Python-based unstructured mesh-generator for two-dimensional polygonal geometries, providing a range of relatively simple, yet effective two-dimensional meshing algorithms.

Project description

pymesh2D logo

pymesh2D: Delaunay-based mesh generation in Python

pymesh2D is a Python-based unstructured mesh-generator for two-dimensional polygonal geometries, providing a range of relatively simple, yet effective two-dimensional meshing algorithms. pymesh2D includes variations on the "classical" Delaunay refinement technique, a new "Frontal"-Delaunay refinement scheme, a non-linear mesh optimisation method, and auxiliary mesh and geometry pre- and post-processing facilities.

This code is a translation of MESH2D, a MATLAB / OCTAVE-based tool developed by Darren Engwirda.

Algorithms implemented in pymesh2D are "probably-good" - ensuring convergence, geometrical and topological correctness, and providing guarantees on algorithm termination and worst-case element quality bounds. Support for user-defined "mesh-spacing" functions and "multi-part" geometry definitions is also provided, allowing pymesh2D to handle a wide range of complex domain types and user-defined constraints. pymesh2D typically generates very high-quality output, appropriate for a variety of finite-volume/element type applications.

pymesh2D is a simplified version of my JIGSAW mesh-generation algorithm (a C++ code). pymesh2D aims to provide a straightforward Python implementation of these Delaunay-based triangulation and mesh optimisation techniques.

Code Structure

pymesh2D is a pure Python package, consisting of a core library + associated utilities:

pymesh2D::
├── pymesh2d              -- core pymesh2D library functions. See refine, smooth, tridemo etc.
├── pymesh2d/aabb_tree    -- support for fast spatial indexing, via tree-based data-structures.
├── pymesh2d/geom_util    -- geometry processing, repair, etc.
├── pymesh2d/geomesh_util -- mesh gestion, export interpolation, etc.
├── pymesh2d/hfun_util    -- mesh-spacing definitions, limiters, etc.
├── pymesh2d/hjac_util    -- solver for Hamilton-Jacobi eqn's.
├── pymesh2d/mesh_ball    -- circumscribing balls, orthogonal balls etc.
├── pymesh2d/mesh_cost    -- mesh cost/quality functions, etc.
├── pymesh2d/mesh_file    -- mesh i/o via ASCII serialisation.
├── pymesh2d/mesh_util    -- meshing/triangulation utility functions.
├── pymesh2d/poly_data    -- polygon definitions for demo problems, etc.
└── pymesh2d/poly_test    -- fast inclusion test for polygons.

Quickstart

Installation

You can install pymesh2d using pip:

pip install -e .

Examples

python -m pymesh2d.tridemo  0; % a very simple example to get everything started.
python -m pymesh2d.tridemo  1; % investigate the impact of the "radius-edge" threshold.
python -m pymesh2d.tridemo  2; % Frontal-Delaunay vs. Delaunay-refinement refinement.
python -m pymesh2d.tridemo  3; % explore impact of user-defined mesh-size constraints.
python -m pymesh2d.tridemo  4; % explore impact of "hill-climbing" mesh optimisations.
python -m pymesh2d.tridemo  5; % assemble triangulations for "multi-part" geometries.
python -m pymesh2d.tridemo  6; % assemble triangulations with "internal" constraints.
python -m pymesh2d.tridemo  7; % investigate the use of "quadtree"-type refinement.
python -m pymesh2d.tridemo  8; % explore use of custom, user-defined mesh-size functions.
python -m pymesh2d.tridemo  9; % larger-scale problem, mesh refinement + optimisation. 
python -m pymesh2d.tridemo 10; % medium-scale problem, mesh refinement + optimisation. 

More examples available in BlueMath.

References

If you make use of pymesh2D please include a reference to the following! pymesh2D is a translation of MESH2D, designed to provide a simple and easy-to-understand implementation of Delaunay-based mesh-generation techniques. For a much more advanced and fully three-dimensional mesh-generation library, see the JIGSAW package. MESH2D makes use of the AABBTREE and FINDTRIA packages to compute efficient spatial queries and intersection tests.

[1] - Darren Engwirda, Locally-optimal Delaunay-refinement and optimisation-based mesh generation, Ph.D. Thesis, School of Mathematics and Statistics, The University of Sydney, September 2014.

[2] - Darren Engwirda, Unstructured mesh methods for the Navier-Stokes equations, Honours Thesis, School of Aerospace, Mechanical and Mechatronic Engineering, The University of Sydney, November 2005.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymesh2d-0.1.6.dev0.tar.gz (272.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymesh2d-0.1.6.dev0-py3-none-any.whl (293.7 kB view details)

Uploaded Python 3

File details

Details for the file pymesh2d-0.1.6.dev0.tar.gz.

File metadata

  • Download URL: pymesh2d-0.1.6.dev0.tar.gz
  • Upload date:
  • Size: 272.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for pymesh2d-0.1.6.dev0.tar.gz
Algorithm Hash digest
SHA256 74c31a6ea9703654abdd707fdf7a7be1d216a0bd93e04853c145a07d03259805
MD5 a4fdea3980277d63211ddc0d68ae0c98
BLAKE2b-256 b9cd373f279cad8f215cc9db5ce09ebb5717e02c503afe356122851440bd57ee

See more details on using hashes here.

File details

Details for the file pymesh2d-0.1.6.dev0-py3-none-any.whl.

File metadata

  • Download URL: pymesh2d-0.1.6.dev0-py3-none-any.whl
  • Upload date:
  • Size: 293.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for pymesh2d-0.1.6.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 d65dc814ebe6d0eeca6c5a6a093b5b24ba166cb13941325916b39714ca57f9db
MD5 c54921ab421640304dc51e616b4d7368
BLAKE2b-256 ad3fb33f15b87ced9e39c6309786be488b63c8fe3d09f3755c14e4456fbff33e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page