JIGSAW
JIGSAW is an unstructured mesh generator and tessellation library; designed to generate high-quality triangulations and polyhedral decompositions of general planar, surface and volumetric domains. JIGSAW includes refinement-based algorithms for the construction of new meshes, optimisation-driven techniques for the improvement of existing grids, as well as routines to assemble (restricted) Delaunay tessellations, Voronoi complexes and Power diagrams.
This package provides a Python based scripting interface to the underlying JIGSAW mesh generator, including a range of additional facilities for file I/O, mesh visualisation and post-processing operations.
JIGSAW has been compiled and tested on various 64-bit Linux , Windows and Mac based platforms.
Quickstart
Ensure you have a c++ compiler and the cmake utility installed.
Clone/download + unpack this repository.
python3 setup.py build_external
python3 setup.py install
python3 example.py --IDnumber=0
Note: installation of JIGSAW
requires a c++
compiler and the cmake
utility. JIGSAW
may also be installed as a conda
package. See here for details.
Function Listing
See jigsawpy
for a description of the various functions available.
setup.py - compile and install JIGSAW's c++ backend using cmake.
example.py - a list of demo programs.
jigsaw.py - cmd-line interface to JIGSAW's backend
libsaw.py - api-lib. interface to JIGSAW's backend
loadmsh.py - load *.msh files.
savemsh.py - save *.msh files.
loadjig.py - load *.jig files.
savejig.py - save *.jig files.
project.py - apply cartographic projection operators to mesh obj.
bisect.py - refine a mesh obj. via bisection.
extrude.py - create a mesh obj. via extrusion.
Example Problems
The following set of example problems are available in example.py
:
example: 0; # simple 2-dim. examples to get started
example: 1; # simple 3-dim. examples to get started
example: 2; # frontal-delaunay methods in the plane
example: 3; # frontal-delaunay methods for surfaces
example: 4; # frontal-delaunay methods for volumes
example: 5; # user-defined mesh-spacing constraints
example: 6; # dealing with sharp-features in piecewise smooth domains
example: 7; # dealing with sharp-features in piecewise smooth domains
example: 8; # (re)mesh marching-cubes style outputs
example: 9; # creating prismatic volumes via extrusion
Run python3 example.py --IDnumber=N
to call the N-th
example. *.vtk
output is saved to ../cache
and can be visualised with, for example, Paraview.