tet_mesh_boundary, a C++ code which reads information defining a tetrahedral mesh of points in 3D, and determines the triangular faces that form the boundary of the mesh; it writes out files containing the nodes and elements defining this "TRI_SURFACE".

The tet mesh is defined by a node file containing the coordinates of nodes, and an element file containing sets of 4 or 10 node indices. (The present version of the program will only handle the 4 node case.)

Each tetrahedron has 4 triangular faces. Most of these faces will be shared by a neighbor tetrahedron, but those faces that are not shared by a neighbor constitute the boundary of the mesh.

The program identifies the triangular faces that form the boundary, and writes two files, a "boundary_node" file that lists the coordinates of the nodes, and a "boundary_element" file that lists the indices of the nodes used to form the faces. This pair of files defines a triangulated 3D surface, or TRI_SURFACE.


tet_mesh_boundary 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 MIT license


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

Related Programs:

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


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

TRI_SURFACE_DISPLAY_OPENGL, a C++ code which displays the 3D graphics information in a TRI_SURFACE file using OpenGL.


  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

Last revised on 26 April 2020.