TET_MESH_QUALITY
Interactive Program for
Tet Mesh Quality
TET_MESH_QUALITY is an executable C++ program, using
double precision arithmetic, which computes and prints a variety
of quality measures for a given tet mesh of a set of
points in 3D.
The tet mesh is defined by a node file containing
the coordinates of nodes, and a tetra file containing
quadruples of node indices. For more information on this format,
see
the order4 tet mesh format.
The quality measures computed include:
-
Measure 1, the minimum, over all tetrahedrons, of 3 times
the radius of the insphere divided by the radius of the circumsphere.
-
Measure 2, the minimum, over all tetrahedrons, of 2 times
sqrt ( 6 ) times the radius of the insphere divided by the
length of the longest side of the tetrahedron.
-
Measure 3, the minimum, over all tetrahedrons, of
12 * ( 3 * volume )**(2/3) / (sum of squares of edge lengths);
-
Measure 4, the minimum solid angle in any tetrahedron;
-
Measure 5, a uniformity measure, the ratio of the
maximum to minimum tetrahedron volume;
Each quality measure is defined as the minimum of its value
over each tetrahedron. The maximum and best possible value is 1, and
the minimum and worst value is 0.
Usage:
-
tet_mesh_quality node_file tetra_file
-
reads the tet mesh information in node_file and
tetra_file, computes and prints the quality measures.
Related Programs:
CVT_TET_MESH
is a FORTRAN90 library which
uses CVT methods to compute a tet mesh in a region.
GEOMPACK3
is a C++ library which
includes a routine DTRIS3 to compute the tet mesh of a set
of points in 3D.
MATLAB includes a
command delaunay3 for computing the tet mesh of a set of
points in 3D.
TABLE_QUALITY
is a FORTRAN90 program which
computes quality measures for
an arbitrary (untriangulated) pointset in any dimension.
TABLE_TET_MESH
is a FORTRAN90 program which
computes the tet mesh of a set of points in 3D.
TEST_TET_MESH
is a FORTRAN90 library which
defines a few test regions for the generation of a tet mesh.
TET_MESH
is a C++ library of routines for computations with
a tet mesh.
TET_MESH_DISPLAY
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++ program which
reads a tet mesh and displays the nodes and edges using OpenGL.
TET_MESH_L2Q
is a C++ program which
converts a linear to quadratic tet mesh.
TET_MESH_Q2L
is a C++ program which
converts a quadratic to linear tet mesh.
TET_MESH_QUALITY is also available in
a FORTRAN90 version and
a MATLAB version.
TET_MESH_RCM
is a C++ program which
takes a tet mesh and
relabels the nodes to reduce the bandwidth of the
corresponding adjacency matrix.
TET_MESH_REFINE
is a C++ program which
refines a tet mesh.
TET_MESH_TET_NEIGHBORS
is a C++ program which
computes the tetrahedral adjacency information.
TRIANGULATION_QUALITY
is a C++ program which
computes triangle-based quality
measures for a triangulation of a set of points in 2D.
Reference:
-
Herbert Edelsbrunner,
Geometry and Topology for Mesh Generation,
Cambridge, 2001,
ISBN: 0-521-79309-2,
LC: QA377.E36.
-
David Field,
Qualitative Measures for Initial Meshes,
International Journal of Numerical Methods in Engineering,
Volume 47, 2000, pages 887-906.
-
Barry Joe,
GEOMPACK - a software package for the generation of meshes
using geometric algorithms,
Advances in Engineering Software,
Volume 13, 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.
Source Code
Tests and Examples
CUBE is a simple example of 8 nodes in a cube.
Test files you may copy include:
P01_00050 is a 3x1x1 channel, containing 50 nodes.
Files you may copy include:
P01_00400 is a 3x1x1 channel, containing 400 nodes.
Files you may copy include:
P01_03200 is a 3x1x1 channel, containing 3200 nodes.
Files you may copy include:
List of Routines:
-
MAIN is the main program for TET_MESH_QUALITY.
-
CH_CAP capitalizes a single character.
-
CH_EQI is true if two characters are equal, disregarding case.
-
CH_TO_DIGIT returns the integer value of a base 10 digit.
-
DTABLE_DATA_READ reads the data from a real TABLE file.
-
DTABLE_HEADER_READ reads the header from a real TABLE file.
-
FILE_COLUMN_COUNT counts the number of columns in the first line of a file.
-
FILE_ROW_COUNT counts the number of row records in a file.
-
I4MAT_TRANSPOSE_PRINT prints an integer matrix, transposed.
-
I4MAT_TRANSPOSE_PRINT_SOME prints some of an integer matrix, transposed.
-
I4_MAX returns the maximum of two integers.
-
I4_MIN returns the smaller of two integers.
-
I4VEC_HISTOGRAM computes a histogram of the elements of a vector.
-
I4VEC_MAX returns the value of the maximum element in an integer array.
-
I4VEC_PRINT prints an integer vector.
-
I4VEC_ZERO zeroes an integer vector.
-
ITABLE_DATA_READ reads data from an integer TABLE file.
-
ITABLE_HEADER_READ reads the header from an integer TABLE file.
-
R8_HUGE returns a "huge" double precision value.
-
R8_MAX returns the maximum of two double precision values.
-
R8_MIN returns the minimum of two double precision values.
-
R8_SWAP switches two real values.
-
R8MAT_DET_4D computes the determinant of a 4 by 4 matrix.
-
R8MAT_SOLVE uses Gauss-Jordan elimination to solve an N by N linear system.
-
R8MAT_TRANSPOSE_PRINT prints a real matrix, transposed.
-
R8MAT_TRANSPOSE_PRINT_SOME prints some of a real matrix, transposed.
-
R8VEC_CROSS_3D computes the cross product of two vectors in 3D.
-
R8VEC_LENGTH returns the Euclidean length of a vector.
-
R8VEC_MAX returns the value of the maximum element in a double precision array.
-
R8VEC_MEAN returns the mean of a double precision vector.
-
R8VEC_MIN returns the value of the minimum element in a double precision array.
-
R8VEC_VARIANCE returns the variance of a double vector.
-
R8VEC_ZERO zeroes a real vector.
-
S_LEN_TRIM returns the length of a string to the last nonblank.
-
S_TO_I4 reads an integer value from a string.
-
S_TO_I4VEC reads an integer vector from a string.
-
S_TO_R8 reads an R8 from a string.
-
S_TO_R8VEC reads an R8VEC from a string.
-
S_WORD_COUNT counts the number of "words" in a string.
-
TET_MESH_NODE_ORDER: determines the order of nodes.
-
TET_MESH_QUALITY1 returns a tet mesh quality factor.
-
TET_MESH_QUALITY2 returns a tet mesh quality factor.
-
TET_MESH_QUALITY3 returns a tet mesh quality factor.
-
TET_MESH_QUALITY4 returns a tet mesh quality factor.
-
TET_MESH_QUALITY5 returns a tet mesh quality factor.
-
TETRAHEDRON_CIRCUMSPHERE_3D computes the circumsphere of a tetrahedron in 3D.
-
TETRAHEDRON_EDGE_LENGTH_3D returns edge lengths of a tetrahedron in 3D.
-
TETRAHEDRON_INSPHERE_3D finds the insphere of a tetrahedron in 3D.
-
TETRAHEDRON_QUALITY1_3D: "quality" of a tetrahedron in 3D.
-
TETRAHEDRON_QUALITY2_3D: "quality" of a tetrahedron in 3D.
-
TETRAHEDRON_QUALITY3_3D computes the mean ratio of a tetrahedron.
-
TETRAHEDRON_QUALITY4_3D computes the minimum solid angle of a tetrahedron.
-
TETRAHEDRON_VOLUME_3D computes the volume of a tetrahedron in 3D.
-
TIMESTAMP prints the current YMDHMS date as a time stamp.
You can go up one level to
the C++ source codes.
Last revised on 19 March 2008