You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`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.
10
+
`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.
11
11
12
-
This package provides the underlying `c++` source for `JIGSAW`; defining a basic command-line interface and a `c`-format `API`. Higher-level scripting interfaces, supporting a range of additional facilities for file I/O, mesh visualisation and post-processing operations are also available, including for <ahref="http://www.mathworks.com">`MATLAB`</a> / <ahref="http://www.gnu.org/software/octave">`OCTAVE`</a> <ahref="https://github.com/dengwirda/jigsaw-matlab">here</a> and for <ahref="https://www.python.org/">`PYTHON`</a> <ahref="https://github.com/dengwirda/jigsaw-python">here</a>.
12
+
`JIGSAW` includes refinement-based algorithms for constructing new meshes, optimisation-driven techniques for improving existing grids, as well as routines to assemble (restricted) Delaunay tessellations, Voronoi complexes and Power diagrams.
13
13
14
-
`JIGSAW` is compiled and tested on various `64-bit``Linux`, `Windows` and `MacOS` platforms using the `g++`, `clang++` and `msvc` compilers.
14
+
This package provides the underlying `c++` source for `JIGSAW`; defining a basic command-line interface and a `c`-format `API`. Higher-level scripting interfaces, supporting additional facilities for file I/O, mesh visualisation and post-processing operations are also available, including for <ahref="http://www.mathworks.com">`MATLAB`</a> / <ahref="http://www.gnu.org/software/octave">`OCTAVE`</a> <ahref="https://github.com/dengwirda/jigsaw-matlab">here</a> and for <ahref="https://www.python.org/">`PYTHON`</a> <ahref="https://github.com/dengwirda/jigsaw-python">here</a>.
15
+
16
+
`JIGSAW` has been compiled and tested on various `64-bit``Linux`, `Windows` and `MacOS` platforms using `>=c++17` versions of the `g++`, `clang++` and `msvc` compilers.
15
17
16
18
### `Code Structure`
17
19
18
-
`JIGSAW` is written as a `header-only` library in `c++`. Both a basic command-line interface and a `c`-format `API` are defined:
20
+
`JIGSAW` is a header-only`c++` library. Both a basic command-line interface and a `c`-format `API` are defined:
19
21
20
22
JIGSAW::
21
23
├── src -- JIGSAW src code
@@ -28,80 +30,45 @@ This package provides the underlying `c++` source for `JIGSAW`; defining a basic
28
30
29
31
### `Getting Started`
30
32
31
-
The first step is to compile and configure the code! `JIGSAW` can either be built directly from src, or installed using the <ahref="https://anaconda.org/conda-forge/jigsaw">`conda`</a> package manager.
32
-
33
-
### `Building from src`
34
-
35
-
The full `JIGSAW` src can be found in <ahref="../master/src/">`../jigsaw/src/`</a>. It has been built using various `c++17` conforming versions of the `g++`, `clang++` and `msvc` compilers.
36
-
37
-
`JIGSAW` is a `header-only` package - the single main `jigsaw.cpp` file simply `#include`'s the rest of the library directly. `JIGSAW` does not currently dependent on any external packages or libraries.
38
-
39
-
`JIGSAW` consists of several pieces: `(a)` a set of command-line utilities that read and write mesh data from/to file, and `(b)` a shared library, accessible via a `c`-format `API`.
40
-
41
-
### `Using cmake`
42
-
43
-
`JIGSAW` can be built using the <ahref="https://cmake.org/">`cmake`</a> utility. To build, follow the steps below:
`JIGSAW` can be built using the <ahref="https://cmake.org/">`cmake`</a> utility:
52
34
53
-
This process will build a series of executables and shared libraries: `jigsaw` itself - the main command-line meshing utility, `tripod` - `JIGSAW`'s tessellation infrastructure, `marche` - a fast-marching solver designed to optimise mesh-spacing configurations, as well as `libjigsaw` - `JIGSAW`'s shared `API`.
A set of executables and shared libraries is built: `jigsaw` itself - the main command-line meshing utility, `tripod` - `JIGSAW`'s tessellation infrastructure, `marche` - a fast-marching solver designed to optimise mesh-spacing configurations, as well as `libjigsaw` - `JIGSAW`'s shared `API`.
54
41
55
-
`BUILD_MODE` can be used to select different compiler configurations and should generally either be `Release` or `Debug`. `EXTRAS` can be used to pass additional compile-time arguments, for example `-- -j 4` will build in parallel on supported architectures.
42
+
`BUILD_MODE` can be used to select different compiler configurations (either `Release` or `Debug`). `EXTRAS` can be used to pass additional compile-time arguments, for example `-- -j4` will build in parallel on supported architectures.
56
43
57
-
See `example.jig` for documentation on calling the command-line executables, and the headers in <ahref="../master/inc/">`../jigsaw/inc/`</a> for details on the `API`.
44
+
See `example.jig` for documentation, as well as the headers in <ahref="../master/inc/">`../jigsaw/inc/`</a> for details on the `API`.
58
45
59
-
### `Using conda`
46
+
### `cmd-line Examples`
60
47
61
-
`JIGSAW` is also available as a `conda` environment. To install and use, follow the steps below:
48
+
After compiling the code, try running the following command-line example:
62
49
63
-
* Ensure you have conda installed. If not, consider miniconda as a lightweight option.
64
-
* Add conda-forge as a channel: conda config --add channels conda-forge
65
-
* Create a jigsaw environment: conda create -n jigsaw jigsaw
50
+
/bin/jigsaw{.exe} example.jig
66
51
67
-
Each time you want to use `JIGSAW` simply activate the environment using: `conda activate jigsaw`
68
-
69
-
Once activated, the various `JIGSAW` command-line utilities will be available in your run path, `JIGSAW`'s shared library (`libjigsaw`) will be available in your library path and its include files in your include path.
70
-
71
-
### `CMD-line Examples`
72
-
73
-
After compiling the code, try running the following command-line example to get started:
74
-
````
75
-
On WIN platforms:
76
-
77
-
\bin\jigsaw.exe example.jig
78
-
79
-
On LNX platforms:
80
-
81
-
/bin/jigsaw example.jig
82
-
````
83
-
In this example, a high-quality tetrahedral mesh is generated for the 'stanford-bunny' geometry and the result written to file. The input geometry is specified as a triangulated surface, and is read from `../jigsaw/geo/bunny.msh`. The volume and surface mesh outputs are written to `../jigsaw/out/bunny.msh`. See the `example.jig` text-file for a description of `JIGSAW`'s configuration options.
52
+
In this example, a high-quality tetrahedral mesh is generated for the `stanford-bunny` geometry. The input geometry is specified as a triangulated surface, and is read from `../jigsaw/geo/bunny.msh`. The volume and surface mesh outputs are written to `../jigsaw/out/bunny.msh`. See the `example.jig` text-file for a description of `JIGSAW`'s configuration options.
84
53
85
54
A repository of additional surface models generated using `JIGSAW` can be found <ahref="https://github.com/dengwirda/jigsaw-models">here</a>. A description of the `*.jig` and `*.msh` input file formats can be found in the <ahref="https://github.com/dengwirda/jigsaw/wiki">wiki</a>.
86
55
87
56
### `libJIGSAW Scripts`
88
57
89
58
A set of unit-tests and `libjigsaw` example programs are contained in <ahref="../master/uni/">`../jigsaw/uni/`</a>. The `JIGSAW-API` is documented via the header files in <ahref="../master/inc/">`../jigsaw/inc/`</a>.
90
59
91
-
The unit-tests can be built using the <ahref="https://cmake.org/">`cmake`</a> utility. To build, follow the steps below:
The unit-tests can be built using the <ahref="https://cmake.org/">`cmake`</a> utility:
99
61
100
-
This process will build the unit-tests as a series of executables in <ahref="../master/uni/">`../jigsaw/uni/`</a>. `BUILD_MODE` is a compiler configuration flag: either `Release` or `Debug`. `EXTRAS` can be used to pass additional compile-time arguments.
This process will build the unit-tests as a set of executables in <ahref="../master/uni/">`../jigsaw/uni/`</a>. `BUILD_MODE` is a compiler configuration flag (either `Release` or `Debug`). `EXTRAS` can be used to pass additional compile-time arguments.
101
68
102
69
### `Contributors`
103
70
104
-
1.[@dengwirda](https://github.com/dengwirda) is `JIGSAW`'s developer and maintainer --- this work was originally the focus of my PhD at the University of Sydney.
71
+
1.[@dengwirda](https://github.com/dengwirda) is `JIGSAW`'s developer and maintainer.
105
72
2.[@xylar](https://github.com/xylar) contributed the `cmake` build system and `conda` environment.
106
73
3.[@tunnellm](https://github.com/tunnellm) extended the sequential optimisation algorithms to support thread-parallelism.
107
74
@@ -120,7 +87,7 @@ This program may be freely redistributed under the condition that the copyright
120
87
121
88
### `References`
122
89
123
-
There are a number of publications that describe the algorithms used in `JIGSAW` in detail. If you make use of `JIGSAW` in your work, please consider including a reference to the following:
90
+
There are a number of publications that describe the algorithms used in `JIGSAW` in detail. If you make use of `JIGSAW` in your work, please include references as appropriate:
124
91
125
92
`[1]` - Darren Engwirda: Generalised primal-dual grids for unstructured co-volume schemes, J. Comp. Phys., 375, pp. 155-176, https://doi.org/10.1016/j.jcp.2018.07.025, 2018.
0 commit comments