13 Commits

Author SHA1 Message Date
sihang0592
894bf6f1f0 Merge pull request 'Update README: mention "headed by Hang Si" + WIAS collaboration' (#4) from jf/update-README02 into main
Reviewed-on: https://codeberg.org/TetGen/TetGen/pulls/4
2025-07-16 11:41:43 +02:00
Jürgen Fuhrmann
99bdc3352e Update README: mention "headed by Hang Si" + WIAS collaboration 2025-07-16 11:26:43 +02:00
Jürgen Fuhrmann
de574f0c50 Merge pull request 'Reflect move to codeberg in readme' (#2) from doc/codebergmirror into main
Reviewed-on: https://codeberg.org/TetGen/TetGen/pulls/2
2025-07-11 22:42:08 +02:00
Jürgen Fuhrmann
f4ac74fe5f fix release urls 2025-07-11 22:40:08 +02:00
Jürgen Fuhrmann
a47324183d Reflect move to codeberg in readme 2025-07-11 22:34:40 +02:00
Jürgen Fuhrmann
6bbb6e1b15 Merge pull request #1 from TetGen/jf/update-README
update README.
2025-05-29 15:08:38 +02:00
Jürgen Fuhrmann
f2b3fd216a Update README text:
instead of writing "uncertain" -> details will be announced later.
2025-05-29 15:05:28 +02:00
Jürgen Fuhrmann
38047844c1 update wording in README 2025-05-16 10:51:40 +02:00
Jürgen Fuhrmann
95546ba14c update README. license 2025-05-16 00:35:19 +02:00
Hang Si
535f9c41f4 Update changelog for v1.6.0 2025-05-15 22:37:16 +02:00
Hang Si
70f58eb910 TetGen v1.6.0
- Version obtained from www.wias-berlin.de / tetgen.org
2025-05-15 22:35:38 +02:00
Hang Si
e0e173bad4 Record license switch in CHANGELOG 2025-05-15 22:17:37 +02:00
Hang Si
c19a85f138 Tetgen 1.5.1
- Version from www.wias-berlin.de / tetgen.org
- Identical with source code on https://github.com/ufz/tetgen
2025-05-15 22:04:16 +02:00
9 changed files with 14083 additions and 8471 deletions

View File

@@ -1,7 +1,28 @@
# TetGen: Release Notes # TetGen: Release Notes
## Version 1.6.0 (August 31, 2020)
- Improved the speed of the Bowyer-Watson point insertion algorithm
for creating Delaunay tetrahedralization.
- Improved the robustness of the boundary recovery algorithm (-p -Y
options) for creating constrained tetrahedralizations. Now the
default algorithm for the \`\`-p\" option (boundary recobvery) is
the constrained tetrahedralization algorithm. It is robust and it
uses less Steiner points than the constrained Delaunay
tetrahedralization (CDT) algorothm uses. The option to use the CDT
algorithm is \`\`-p -D\".
- A new implementation of the constrained Delaunay refinement
algorithm (-q option). It uses new Steiner points insertion schemes
to remove badly-shaped elements.
- Implemented a new set of mesh smoothing and mesh improvement
operations (-O -o) for optimizing the quality of the meshes. The
overall mesh quality has been improved.
- (Change of the -d option) To detect self-intersection in the input
surface mesh is now directly done in the constrained
tetrahedralization algorithm (the -p option).
## Version 1.5.0 (November 4, 2013) ## Version 1.5.0 (November 4, 2013)
- License switched to AGPLv3
- Improved the efficiency of the mesh data structure - Improved the efficiency of the mesh data structure
(tetrahedron-based). (tetrahedron-based).
- Implemented a new edge flip algorithm that does recursive - Implemented a new edge flip algorithm that does recursive

20
LICENSE
View File

@@ -1,23 +1,3 @@
TetGen License
--------------
TetGen is distributed under a dual licensing scheme. You can
redistribute it and/or modify it under the terms of the GNU Affero
General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later
version. A copy of the GNU Affero General Public License is reproduced
below.
If the terms and conditions of the AGPL v.3. would prevent you from
using TetGen, please consider the option to obtain a commercial
license for a fee. These licenses are offered by the Weierstrass
Institute for Applied Analysis and Stochastics (WIAS). As a rule,
licenses are provided "as-is", unlimited in time for a one time
fee. Please send corresponding requests to:
tetgen@wias-berlin.de. Please do not forget to include some
description of your company and the realm of its activities.
=====================================================================
GNU AFFERO GENERAL PUBLIC LICENSE GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007 Version 3, 19 November 2007

25
README
View File

@@ -1,25 +0,0 @@
This is TetGen version 1.5 (released on November 4, 2013)
Please see the documentation of TetGen for compiling and using TetGen.
It is available at the following link:
http://www.tetgen.org
For more information on this product, contact :
Hang Si
Research Group of Numerical Mathematics and Scientific Computing
Weierstrass Institute for Applied Analysis and Stochastics
Mohrenstr. 39
10117 Berlin, Germany
Phone: +49 (0) 30-20372-446 Fax: +49 (0) 30-2044975
EMail: <si@wias-berlin.de>
Web Site: http://www.wias-berlin.de/~si
------------------- IMPORTANCE NOTICE -----------------------------
BEFORE INTALLING OR USING TetGen(R) READ the
GENERAL LICENSE TERMS AND CONDITIONS
-------------------------------------------------------------------

30
README.md Normal file
View File

@@ -0,0 +1,30 @@
TetGen
======
TetGen is a program to generate tetrahedral meshes of any 3D polyhedral domains. TetGen generates exact constrained Delaunay tetrahedralizations, boundary conforming Delaunay meshes, and Voronoi partitions.
TetGen versions up to v1.6.0 have been developed headed by [Hang Si](https://github.com/sihang0592) during his affiliation with [Weierstrass Institute for Applied Analysis and Stochastics, (WIAS) Berlin](https://www.wias-berlin.de/software/tetgen).
The primary development repository is [https://codeberg.org/TetGen/TetGen](https://codeberg.org/TetGen/TetGen). Please
open any issues in this repository. The github repository [https://github.com/TetGen/Tetgen](https://github.com/TetGen/Tetgen)
is a mirror of the codeberg repository.
This repository provides the source code of the most recent versions of TetGen.
The following releases are provided:
- [v1.4.3, 2011](https://codeberg.org/TetGen/TetGen/archive/v1.4.3.tar.gz): [MIT license with noncommercial clause](https://raw.githubusercontent.com/TetGen/TetGen/refs/tags/v1.4.3/LICENSE).
- [v1.5.0, 2013](https://codeberg.org/TetGen/TetGen/archive/v1.5.0.tar.gz): [AGPLv3 license](https://www.gnu.org/licenses/agpl-3.0.html).
- [v1.5.1, 2018](https://codeberg.org/TetGen/TetGen/archive/v1.5.1.tar.gz): [AGPLv3 license](https://www.gnu.org/licenses/agpl-3.0.html), recommended as most stable version.
- [v1.6.0, 2020](https://codeberg.org/TetGen/TetGen/archive/v1.6.0.tar.gz): [AGPLv3 license](https://www.gnu.org/licenses/agpl-3.0.html), most recent version with some rough edges.
It is planned to resume active development of TetGen in cooperation between the main developer Hang Si and the Weierstrass Institute. Future versions of TetGen will be published via this repository.
## Documentation
- Manuals are available in https://codeberg.org/TetGen/Manuals.
- A technical paper about TetGen is available at [Hang Si, "TetGen, a Delaunay-Based Quality Tetrahedral Mesh Generator". ACM Trans. on Mathematical Software. 41 (2), 2015](http://doi.acm.org/10.1145/2629697)
## Commercial licensing
TetGen versions developed at WIAS are distributed under a dual licensing scheme. As an alternative to the use of TetGen under the AGPLv3 license, consider the option to obtain a commercial license for a fee. These licenses are offered by the Weierstrass Institute for Applied Analysis and Stochastics (WIAS). As a rule, licenses are provided "as-is", unlimited in time for a one time fee. Please send corresponding requests to: `tetgen at wias-berlin.de`. Please do not forget to include some description of your company and the realm of its activities.
Due to the change of affiliation of Hang Si, details about the continuation of this dual licensing scheme for future versions of TetGen will be announced in the future. Please feel free to contact us if you have any questions.

0
example.poly Normal file → Executable file
View File

0
makefile Normal file → Executable file
View File

View File

@@ -399,7 +399,7 @@ static REAL ispstaticfilter;
// http://www.math.utah.edu/~beebe/software/ieee/ // http://www.math.utah.edu/~beebe/software/ieee/
// The original program was "fpinfo2.c". // The original program was "fpinfo2.c".
double fppow2(int n) static double fppow2(int n)
{ {
double x, power; double x, power;
x = (n < 0) ? ((double)1.0/(double)2.0) : (double)2.0; x = (n < 0) ? ((double)1.0/(double)2.0) : (double)2.0;
@@ -412,12 +412,12 @@ double fppow2(int n)
#ifdef SINGLE #ifdef SINGLE
float fstore(float x) static float fstore(float x)
{ {
return (x); return (x);
} }
int test_float(int verbose) static int test_float(int verbose)
{ {
float x; float x;
int pass = 1; int pass = 1;
@@ -467,12 +467,12 @@ int test_float(int verbose)
# else # else
double dstore(double x) static double dstore(double x)
{ {
return (x); return (x);
} }
int test_double(int verbose) static int test_double(int verbose)
{ {
double x; double x;
int pass = 1; int pass = 1;
@@ -629,10 +629,6 @@ void exactinit(int verbose, int noexact, int nofilter, REAL maxx, REAL maxy,
// Added by H. Si, 2012-08-23. // Added by H. Si, 2012-08-23.
// Sort maxx < maxy < maxz. Re-use 'half' for swapping. // Sort maxx < maxy < maxz. Re-use 'half' for swapping.
assert(maxx > 0);
assert(maxy > 0);
assert(maxz > 0);
if (maxx > maxz) { if (maxx > maxz) {
half = maxx; maxx = maxz; maxz = half; half = maxx; maxx = maxz; maxz = half;
} }
@@ -885,7 +881,7 @@ int expansion_sum_zeroelim2(int elen, REAL *e, int flen, REAL *f, REAL *h)
/* */ /* */
/*****************************************************************************/ /*****************************************************************************/
int fast_expansion_sum(int elen, REAL *e, int flen, REAL *f, REAL *h) static int fast_expansion_sum(int elen, REAL *e, int flen, REAL *f, REAL *h)
/* h cannot be e or f. */ /* h cannot be e or f. */
{ {
REAL Q; REAL Q;
@@ -957,7 +953,7 @@ int fast_expansion_sum(int elen, REAL *e, int flen, REAL *f, REAL *h)
/* properties. */ /* properties. */
/* */ /* */
/*****************************************************************************/ /*****************************************************************************/
static
int fast_expansion_sum_zeroelim(int elen, REAL *e, int flen, REAL *f, REAL *h) int fast_expansion_sum_zeroelim(int elen, REAL *e, int flen, REAL *f, REAL *h)
/* h cannot be e or f. */ /* h cannot be e or f. */
{ {
@@ -1169,7 +1165,7 @@ int linear_expansion_sum_zeroelim(int elen, REAL *e, int flen, REAL *f,
/* will h.) */ /* will h.) */
/* */ /* */
/*****************************************************************************/ /*****************************************************************************/
static
int scale_expansion(int elen, REAL *e, REAL b, REAL *h) int scale_expansion(int elen, REAL *e, REAL b, REAL *h)
/* e and h cannot be the same. */ /* e and h cannot be the same. */
{ {
@@ -1215,7 +1211,7 @@ int scale_expansion(int elen, REAL *e, REAL b, REAL *h)
/* will h.) */ /* will h.) */
/* */ /* */
/*****************************************************************************/ /*****************************************************************************/
static
int scale_expansion_zeroelim(int elen, REAL *e, REAL b, REAL *h) int scale_expansion_zeroelim(int elen, REAL *e, REAL b, REAL *h)
/* e and h cannot be the same. */ /* e and h cannot be the same. */
{ {
@@ -1267,7 +1263,7 @@ int scale_expansion_zeroelim(int elen, REAL *e, REAL b, REAL *h)
/* nonadjacent expansion. */ /* nonadjacent expansion. */
/* */ /* */
/*****************************************************************************/ /*****************************************************************************/
static
int compress(int elen, REAL *e, REAL *h) int compress(int elen, REAL *e, REAL *h)
/* e and h may be the same. */ /* e and h may be the same. */
{ {
@@ -1310,7 +1306,7 @@ int compress(int elen, REAL *e, REAL *h)
/* See either version of my paper for details. */ /* See either version of my paper for details. */
/* */ /* */
/*****************************************************************************/ /*****************************************************************************/
static
REAL estimate(int elen, REAL *e) REAL estimate(int elen, REAL *e)
{ {
REAL Q; REAL Q;
@@ -1348,7 +1344,7 @@ REAL estimate(int elen, REAL *e)
/* nearly so. */ /* nearly so. */
/* */ /* */
/*****************************************************************************/ /*****************************************************************************/
static
REAL orient2dfast(REAL *pa, REAL *pb, REAL *pc) REAL orient2dfast(REAL *pa, REAL *pb, REAL *pc)
{ {
REAL acx, bcx, acy, bcy; REAL acx, bcx, acy, bcy;
@@ -1360,6 +1356,7 @@ REAL orient2dfast(REAL *pa, REAL *pb, REAL *pc)
return acx * bcy - acy * bcx; return acx * bcy - acy * bcx;
} }
//static
REAL orient2dexact(REAL *pa, REAL *pb, REAL *pc) REAL orient2dexact(REAL *pa, REAL *pb, REAL *pc)
{ {
INEXACT REAL axby1, axcy1, bxcy1, bxay1, cxay1, cxby1; INEXACT REAL axby1, axcy1, bxcy1, bxay1, cxay1, cxby1;
@@ -4185,7 +4182,7 @@ REAL insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
/* See my Robust Predicates paper for details. */ /* See my Robust Predicates paper for details. */
/* */ /* */
/*****************************************************************************/ /*****************************************************************************/
//static
REAL orient4dexact(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe, REAL orient4dexact(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
REAL aheight, REAL bheight, REAL cheight, REAL dheight, REAL aheight, REAL bheight, REAL cheight, REAL dheight,
REAL eheight) REAL eheight)
@@ -4401,6 +4398,7 @@ REAL orient4dexact(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
return deter[deterlen - 1]; return deter[deterlen - 1];
} }
static
REAL orient4dadapt(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe, REAL orient4dadapt(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
REAL aheight, REAL bheight, REAL cheight, REAL dheight, REAL aheight, REAL bheight, REAL cheight, REAL dheight,
REAL eheight, REAL permanent) REAL eheight, REAL permanent)
@@ -4704,3 +4702,9 @@ REAL orient4d(REAL* pa, REAL* pb, REAL* pc, REAL* pd, REAL* pe,
//==============================================================================

16631
tetgen.cxx

File diff suppressed because it is too large Load Diff

1229
tetgen.h

File diff suppressed because it is too large Load Diff