test_tet_mesh
test_tet_mesh,
a FORTRAN90 code which
sets test problems for mesh generation ("tetrahedralization")
in 3D.
As far as possible, a uniform and abstract approach has been used.
For each test region, a number of routines are provided, via which
it is possible for the user to determine many things about the region.
Often, just one or two routines would be needed for a particular
purpose. The names of the routines, and their purposes are:
-
BOUNDARY_NEAREST: returns the nearest point on the boundary
of the region to a given point or set of points;
-
BOUNDARY_PROJECT: projects exterior points onto the boundary.
-
BOUNDARY_SEGMENT: returns a sequence of roughly equally spaced
points that lie on one particular boundary segment;
-
BOUNDARY_SEGMENT_LENGTH: returns the "length" (number of
nodes) of a particular boundary segment. This simply counts
the number of points needed to trace or approximate the
boundary segment;
-
BOUNDARY_SEGMENT_NUM: returns the number of boundary segments.
Simple regions have one boundary segment. A region with one hole
has two, and so on;
-
BOX: returns a bounding box for the region. All points in
the region are within this box;
-
DENSITY: the value of the mesh density function at any
point in the region. If this is not constant, then high values
correspond to places where many more mesh points should be placed;
-
ELEMENT_SIZE: returns a requested typical element size. This
refers to the average size of the triangles formed by a triangulation
of the points;
-
FIXED_NUM: returns the number of points which must be
included as nodes of the mesh (which may be zero);
-
FIXED_POINTS: returns the coordinates of the points which
must be included as nodes of the mesh;
-
HEADER: prints a brief description of the problem;
-
HOLE_NUM: returns the number of "holes" in the region;
-
HOLE_POINT: returns the coordinates of one point in a hole
(useful when TRIANGLE is to be invoked);
-
INSIDE: reports which of a given set of points are
inside the region.
-
SAMPLE: returns a set of sample points from the region,
chosen with uniform probability;
-
SDIST: returns the signed distance to the boundary of
the region for each of a set of input points.
(a positive distance means the point is outside the region,
a negative distance means it is inside);
(Not ready for problems 4, 5, 6, 7, 8, 9 )
-
TITLE: a title for the problem;
The test problems include:
-
The 3x1x1 channel;
-
The vertical cylinder, R = 1, H = 4;
-
The unit cube;
-
The unit sphere;
MATLAB has a command
delaunay3() that can compute the tet mesh for a set of 3D points.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the MIT license
Languages:
test_tet_mesh is available in
a FORTRAN90 version.
Related Data and Programs:
CVT_TET_MESH,
a FORTRAN90 code which
uses CVT methods to compute a tet mesh in a region.
GEOMPACK,
a FORTRAN90 code which
contains a routine
DTRIS3 that can compute the tet mesh for a set of 3D points,
as well as the adjacency information.
KEAST,
a FORTRAN90 code which
defines a number of quadrature rules
for a tetrahedron.
TABLE_TET_MESH,
a FORTRAN90 code which
can compute the tet mesh for a given set of points.
test_tet_mesh_test
TET_MESH,
a FORTRAN90 code which
is useful for tet mesh calculations.
TET_MESH_L2Q,
a FORTRAN90 code which
converts a linear to quadratic tet mesh.
TET_MESH_ORDER4,
a data directory which
contains a description and
examples of a tet mesh using order 4 elements.
TET_MESH_ORDER10,
a data directory which
contains a description and
examples of a tet mesh using order 10 elements.
TET_MESH_Q2L,
a FORTRAN90 code which
converts a quadratic to linear tet mesh.
TET_MESH_QUALITY,
a FORTRAN90 code which
computes the quality of a tet mesh.
TET_MESH_RCM,
a FORTRAN90 code which
takes a tet mesh and
relabels the nodes to reduce the bandwidth of the
corresponding adjacency matrix.
TET_MESH_TET_NEIGHBORS,
a FORTRAN90 code which
computes the tetrahedral adjacency information.
Reference:
-
Per-Olof Persson, Gilbert Strang,
A Simple Mesh Generator in MATLAB,
SIAM Review,
Volume 46, Number 2, June 2004, pages 329-345.
Source Code:
Last revised on 05 September 2020.