Interactive Program for
Tet Mesh Neighbors

TET_MESH_TET_NEIGHBORS is a C++ program which reads information defining a tet mesh of points in 3D, and determines, for each face of each tetrahedron, the index of the neighboring tetrahedron that shares that face.

The tet mesh is defined by a node file containing the coordinates of nodes, and a tetra file containing sets of 4 or 10 node indices. For this calculation, though, only the tetra file is needed.

If a tetrahedron is on the boundary, then one or more of its faces will not be shared by any tetrahedron. Such cases will be indicated by specifying the corresponding neighbor value as -1.


tet_mesh_tet_neighbors prefix
where prefix is the common file prefix:


The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.


TET_MESH_TET_NEIGHBORS is available in a C++ version and a FORTRAN90 version and a MATLAB version.

Related Programs:

GEOMPACK, a FORTRAN90 library which, contains a routine DTRIS3 that can compute the tet mesh for a set of 3D points, as well as the adjacency information.

NEIGHBORS_TO_METIS_GRAPH, a C++ program which reads a tet mesh neighbor file created by TET_MESH_TET_NEIGHBORS and writes a modified version of the same data suitable for input to the mesh partitioning program METIS.

TABLE_TET_MESH, a FORTRAN90 program which can compute the tet mesh for a set of 3D points.

TEST_TET_MESH, a FORTRAN90 library which defines a few test regions for the generation of a tet mesh.

TET_MESH, a C++ library which is useful for work with tet meshes.

TET_MESH_BOUNDARY, a C++ program which returns the nodes and faces of the boundary of a tetrahedral mesh, which themselves form a 3D triangular mesh or "TRI_SURFACE".

TET_MESH_DISPLAY, a MATLAB program which can read in the node and tetra files defining a tet mesh and display a wireframe image.

TET_MESH_DISPLAY_OPENGL, a C++ program which reads a tet mesh and displays the nodes and edges using OpenGL.

TET_MESH_L2Q, a C++ program which converts a linear to quadratic tet mesh.

TET_MESH_ORDER4, a directory which contains a description and examples of a tet mesh using order 4 elements.

TET_MESH_ORDER10, a directory which contains a description and examples of a tet mesh using order 10 elements.

TET_MESH_Q2L, a C++ program which can convert a quadratic (10-node) tet mesh to a linear (4-node) tet mesh.

TET_MESH_QUALITY, a C++ program which can compute the quality of a tet mesh.

TET_MESH_RCM, a C++ program which takes a tet mesh and relabels the nodes to reduce the bandwidth of the corresponding adjacency matrix.

TET_MESH_REFINE, a C++ program which can refine a tet mesh.

TET_MESH_TET_NEIGHBORS, a data directory which contains a description and examples of the format for storing information about neighboring tetrahedrons in a tetrahedral mesh.

TET_MESH_VOLUMES, a C++ program which computes the volume of each tetrahedron in a tet mesh;


  1. Herbert Edelsbrunner,
    Geometry and Topology for Mesh Generation,
    Cambridge, 2001,
    ISBN: 0-521-79309-2,
    LC: QA377.E36.
  2. Barry Joe,
    GEOMPACK - a software package for the generation of meshes using geometric algorithms,
    Advances in Engineering Software,
    Volume 13, 1991, pages 325-331.
  3. Per-Olof Persson, Gilbert Strang,
    A Simple Mesh Generator in MATLAB,
    SIAM Review,
    Volume 46, Number 2, June 2004, pages 329-345.

Source code

Examples and Tests

CUBE is a simple example of 8 nodes in a cube. Test files you may copy include:

List of Routines

You can go up one level to the C++ source codes.

Last revised on 17 January 2007.