TET_MESH_ORDER4
Pairs of Files Defining a 4-Node Tet Mesh
TET_MESH_ORDER4 contains examples of the organization of a
scattered set of points in 3D into a set of nonintersecting
tetrahedrons, with each tetrahedron defined by 4 points.
A 4-node tet mesh is called linear since it easily allows
for piecewise linear interpolation of data values defined
at the nodes.
The definition of an order 4 tet mesh requires two files:
-
the node file lists the coordinates of
a set of points.
-
the tetra file lists quadruples of node indices, each
of which forms a tetrahedron.
Related Data and Programs:
FEM is a format used
to store a finite element model. It includes a node and element
file, as well as a node data file. The node and triangle files
described here are an example of the first two of these files.
MESH_BANDWIDTH is an interactive executable program
which returns the geometric bandwidth associated with a mesh of
elements of any order and in a space of arbitrary dimension.
It is available in
a C++ version and
a FORTRAN90 version and
a MATLAB version.
TABLE is a format used
for both the node and triangle files.
TET_MESH_ORDER10 describes a format to be used for tetrahedral
meshes of order 10.
Example of a node file:
As a very simple example, suppose we had the eight points
that form the vertices of a unit cube. The node file might look
like this:
# Node file for the vertices of a cube.
#
0.0 0.0 0.0
0.0 0.0 1.0
0.0 1.0 0.0
0.0 1.0 1.0
1.0 0.0 0.0
1.0 0.0 1.0
1.0 1.0 0.0
1.0 1.0 1.0
Example of a tet mesh file:
A possible tet mesh of these nodes would be described
by the following tetra file:
# Tetra file for the vertices of a cube.
#
4 3 5 1
4 2 5 1
4 7 3 5
4 7 8 5
4 6 2 5
4 6 8 5
Reference:
-
Herbert Edelsbrunner,
Geometry and Topology for Mesh Generation,
Cambridge, 2001,
ISBN: 0-521-79309-2,
LC: QA377.E36.
-
Barry Joe,
GEOMPACK - a software package for the generation of meshes
using geometric algorithms,
Advances in Engineering Software,
Volume 13, Number 5, 1991, pages 325-331.
-
Per-Olof Persson, Gilbert Strang,
A Simple Mesh Generator in MATLAB,
SIAM Review,
Volume 46, Number 2, June 2004, pages 329-345.
Programs to create a set of nodes to fill a given region:
A node file can come from anywhere. In most cases, you generate
this data by observation or the characteristics of a particular
problem or set of data you are working on. In a very interesting
case, you specify the boundary of a region, and ask a program
to fill the interior with points:
-
DISTMESH can take a description of a 3D region, and fill it
with grid points that are well distributed, and include the boundary.
-
DISTMESH_3D is a subset of DISTMESH that is just for 3D
problems.
Programs to generate a set of nodes:
If you just need some artificial set of sample node data, there are
programs available to generate it:
-
CVT_DATASET, available in
a C++ version,
a FORTRAN90 version, and
a MATLAB version,
produces a TABLE file of N points in M dimensions, as a centroidal
Voronoi tessellation.
-
CVT_MOD_DATASET
produces a TABLE file of N points in M dimensions, as a centroidal
Voronoi tessellation on a unit hypercube with modular arithmetic.
-
FAURE_DATASET
produces a TABLE file of N points in M dimensions,
from a Faure sequence.
-
GRID_DATASET
produces a TABLE file of N points in M dimensions, as a regular grid.
-
HALTON_DATASET, available in
a C++ version and
a FORTRAN90 version, and
a MATLAB version,
produces a TABLE file of N points in M dimensions,
from a Halton sequence.
-
HAMMERSLEY_DATASET, available in
a C++ version and
a FORTRAN90 version, and
a MATLAB version,
produces a TABLE file of N points in M dimensions,
from a Hammersley sequence.
-
IHS_DATASET
produces a TABLE file of N points in M dimensions,
from an Improved Hypercube Sampling pointset.
-
LATIN_CENTER_DATASET
produces a TABLE file of N points in M dimensions,
from a Latin hypercube pointset with centering.
-
LATIN_EDGE_DATASET
produces a TABLE file of N points in M dimensions,
from a Latin hypercube pointset with edge "centering".
-
LATIN_RANDOM_DATASET
produces a TABLE file of N points in M dimensions,
from a Latin hypercube pointset with random "centering".
-
LCVT_DATASET
produces a TABLE file of N points in M dimensions, containing
a Latin hypercube dataset derived from a centroidal
Voronoi tessellation.
-
NIEDERREITER2_DATASET
produces a TABLE file of N points in M dimensions,
from a Niederreiter sequence base 2.
-
RANDOM_DATA
can produce a set of points that are randomly sampled from a
given 2D or 3D geometric shape.
-
RBOX
will produce a random sample of points according to a given
distribution, and over a given geometric shape. The resulting
output file is ALMOST a TABLE file (you just need to delete the
two initial records that list the spatial dimension and number
of points.)
-
RSITES
will produce a set of N points in M dimensional space,
with the user allowed to specify the SEED to be passed to the
C++ RAND routine. Point coordinates are integers between 0
and 999999.
-
SOBOL_DATASET
produces a TABLE file of N points in M dimensions,
from a Sobol sequence.
-
UNIFORM_DATASET, available in
a C++ version or
a FORTRAN90 version, or
a MATLAB version,
produces a TABLE file of N points in M dimensions,
containing a uniform pseudorandom sequence.
Programs to view a node file:
Once you have generated a node file, it is possible to try to
view it in 3D. Programs to visualize a set of points in 3D include:
-
MATLAB includes a function scatter3 which
can display a set of points, allowing the user to turn or
zoom in on the image.
Programs to create a tet mesh from a set of nodes:
Once you have generated a node file, it is possible to generate
a tet mesh of those nodes. Programs and routines to create a
tet mesh include:
-
DISTMESH generates a tet mesh as part of its work,
if the dataset is 3D.
-
DISTMESH_3D generates a tet mesh as part of its work.
-
The
GEOMPACK3
includes the routine DTRIS3 which can generate a tet mesh
of a set of points.
-
MATLAB includes a function delaunay3 which
can return the tet mesh of a set of points by the command
tet = delaunay3 ( x, y, z );
Programs to manipulate an order 4 mesh:
-
TET_MESH_L2Q generates a 10-node tet mesh from a 4-node
tet mesh.
-
TET_MESH_NEIGHBORS determines, for each tetrahedron in a tet
mesh, the indices of its four tetrahedral neighbors.
Programs to view a tet mesh:
Once you have generated a node file and a tetrahedron file, it is
possible (although somewhat difficult!) to try to view it in 3D.
Programs to visualize a tet mesh in 3D:
-
DISTMESH_3D includes a routine called simp_plot_3d
which is specially designed to display all or part of a
tet mesh.
-
TET_MESH_DISPLAY_MATLAB is a MATLAB program which can read in the
node and tetra files defining a tet mesh and display a wireframe
image.
-
TET_MESH_DISPLAY_OPEN_GL
is a C++ executable program which reads a tet mesh and displays the
nodes and edges using OpenGL.
Sample Tet Mesh Datasets:
CUBE_ORDER4 is the 8 vertices of a cube, defining 6
tetrahedrons.
P01_00584 is the 3x1x1 channel defined by 584 nodes.
P02_00588 is the vertical cylinder defined by 588 nodes.
P03_00008 is the unit cube defined by 8 nodes.
P03_00224 is the unit cube defined by 224 nodes.
P04_00587 is the unit sphere defined by 587 nodes.
P05_01084 is the cylinder with a spherical hole defined
by 1084 nodes.
TETRA_RHOMBIC_ORDER4 is the 4 vertices of a tetrahedron,
plus the 10 midside points, making a mesh of 8 tetrahedron of order 4.
This tetrahedron has some nice properties under a subdivision algorithm.
TWENTY_ORDER4 is 20 random nodes, defining 70
tetrahedrons.
You can go up one level to
the DATA page.
Last revised on 18 January 2007.