MESH2D: Delaunay-based unstructured mesh-generation

Generate unstructured meshes for general two-dimensional geometries.
25.2K Downloads
Updated 2 Mar 2024
MESH2D is an unstructured mesh-generator for two-dimensional polygonal geometries, providing a range of relatively simple, yet effective two-dimensional meshing algorithms. MESH2D 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.
Algorithms implemented in MESH2D are "provably-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-par" geometry definitions is also provided, allowing MESH2D to handle a wide range of complex domain types and user-defined constraints. MESH2D typically generates very high-quality output, appropriate for a variety of finite-volume/element type applications.
MESH2D is a simplified version of my JIGSAW mesh-generation algorithm (a C++ code). MESH2D aims to provide a straightforward implementation of these Delaunay-based triangulation and mesh optimisation techniques.
See MESH2D on GitHub for additional information and references.
See TRIDEMO to get started with a set of example problems:
tridemo( 0); % a very simple example to get everything started.
tridemo( 1); % investigate the impact of the "radius-edge" threshold.
tridemo( 2); % Frontal-Delaunay vs. Delaunay-refinement refinement.
tridemo( 3); % explore impact of user-defined mesh-size constraints.
tridemo( 4); % explore impact of "hill-climbing" mesh optimisations.
tridemo( 5); % assemble triangulations for "multi-part" geometries.
tridemo( 6); % assemble triangulations with "internal" constraints.
tridemo( 7); % investigate the use of "quadtree"-type refinement.
tridemo( 8); % explore use of custom, user-defined mesh-size functions.
tridemo( 9); % larger-scale problem, mesh refinement + optimisation.
tridemo(10); % medium-scale problem, mesh refinement + optimisation.
A call to initmsh() should be included in MESH2D scripts to ensure the path variable includes all MESH2D sub-directories.

Cite As

D. Engwirda, Locally-optimal Delaunay-refinement and optimisation-based mesh generation, Ph.D. Thesis, School of Mathematics and Statistics, The University of Sydney, http://hdl.handle.net/2123/13148, 2014.

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

MATLAB Release Compatibility
Created with R2018b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Versions that use the GitHub default branch cannot be downloaded

Version Published Release Notes
3.1.0.2

Improve support + bugfixes for R2025

3.1.0.1

Website updates.

3.1.0.0

Updates to description/references.
Improved support for OCTAVE.

3.0.3.0

Updates to the underlying AABB-Tree package.

3.0.2.0

Updates to 3.0.2: added TRIDIV2, improved REFINE2 / SMOOTH2, new examples in TRIDEMO.

3.0.1.0

Update project title.

3.0.0.0

Major updates all-round for MESH2D - 3.0.0.

1.0.0.0

To view or report issues in this GitHub add-on, visit the GitHub Repository.
To view or report issues in this GitHub add-on, visit the GitHub Repository.