jburkardt

TRIANGULATION\ Triangulation of 2D data {#triangulation-triangulation-of-2d-data align=”center”} ========================


TRIANGULATION is a C++ library which computes a triangulation of a set of points in 2D, and carries out various other related operations on triangulations of order 3 or 6.

The mesh is the collection of triangles. Each triangle is termed an “element”. The points used to define the shape of the triangle (the corners, and sometimes a few more points) are called the “nodes”.

Routines are available to:

Since triangulations are often used to define a finite element mesh, which in turn defines a sparse matrix, there are routines available which can define the sparse compressed column arrays needed for a sparse matrix associated with a mesh of order 3 or 6. The special case of the Taylor-Hood mixed element is also handled, which is essentially an order 6 grid counted twice and an order 3 grid that only uses the vertices of the order 6 grid.

Licensing: {#licensing align=”center”}

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

Languages: {#languages align=”center”}

TRIANGULATION is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version.

MESH_TO_XML, a C++ program which reads information defining a 1D, 2D or 3D mesh, namely a file of node coordinates and a file of elements defined by node indices, and creates a corresponding XML file for input to DOLFIN or FENICS.

TABLE_DELAUNAY, a C++ program which reads a file of 2d point coordinates and computes the Delaunay triangulation.

TRIANGLE, a C program which computes a triangulation of a geometric region.

TRIANGULATION_BOUNDARY_NODES, a C++ program which reads data defining a triangulation, determines which nodes lie on the boundary, and writes their coordinates to a file.

TRIANGULATION_CORNER, a C++ program which patches triangulations so that no triangle has two sides on the boundary.

TRIANGULATION_DELAUNAY_DISCREPANCY, a C++ program which measures the amount by which a triangulation fails the local Delaunay test;

TRIANGULATION_DISPLAY_OPENGL, a C++ program which reads files defining a triangulation and displays an image using Open GL.

TRIANGULATION_HISTOGRAM, a C++ program which computes histograms of data over a triangulation.

TRIANGULATION_L2Q, a C++ program which reads data defining a 3-node triangulation and generates midside nodes and writes out the corresponding 6-node triangulation.

TRIANGULATION_MASK, a C++ program, which takes an existing triangulation and deletes triangles and their corresponding nodes as requested by the user.

TRIANGULATION_NODE_TO_ELEMENT, a C++ program which reads files describing a set of nodes, their triangulation, and the value of one or more quantities at each node, and outputs a file that averages the quantities for each element. This operation in effect creates an “order1” finite element model of the data.

TRIANGULATION_ORDER3, a directory which contains a description and examples of order 3 triangulations.

TRIANGULATION_ORDER6, a directory which contains a description and examples of order 6 triangulations.

TRIANGULATION_ORIENT, a C++ program which reads data defining a triangulation, makes sure that every triangle has positive orientation, and if not, writes a corrected triangle file.

TRIANGULATION_PLOT, a C++ program which reads data defining a triangulation and creates a PostScript image of the nodes and triangles.

TRIANGULATION_Q2L, a C++ program which reads data defining a 6-node triangulation, and subdivides each triangle into 4 3-node triangles, writing the resulting triangulation to a file.

TRIANGULATION_QUAD, a C++ program which estimates the integral of a function over a triangulated region.

TRIANGULATION_QUALITY, a C++ program which reads data defining a triangulation and computes a number of quality measures.

TRIANGULATION_RCM, a C++ program which reads data defining a triangulation, determines an ordering of the nodes that will reduce the bandwidth of the adjacency matrix, and writes the new triangulation information to a file.

TRIANGULATION_REFINE, a C++ program which reads data defining a triangulation, replaces each triangle by four congruent smaller ones, and writes the new triangulation information to a file.

TRIANGULATION_TRIANGLE_NEIGHBORS, a C++ program which reads data defining a triangulation, determines the neighboring triangles of each triangle, and writes that information to a file.

References: {#references align=”center”}

  1. Franz Aurenhammer,\ Voronoi diagrams - a study of a fundamental geometric data structure,\ ACM Computing Surveys,\ Volume 23, Number 3, September 1991, pages 345-405.
  2. Paul Bratley, Bennett Fox, Linus Schrage,\ A Guide to Simulation,\ Second Edition,\ Springer, 1987,\ ISBN: 0387964673.
  3. Marc deBerg, Marc Krevald, Mark Overmars, Otfried Schwarzkopf,\ Computational Geometry,\ Springer, 2000,\ ISBN: 3-540-65620-0.
  4. Barry Joe,\ GEOMPACK - a software package for the generation of meshes using geometric algorithms,\ Advances in Engineering Software,\ Volume 13, 1991, pages 325-331.
  5. Albert Nijenhuis, Herbert Wilf,\ Combinatorial Algorithms for Computers and Calculators,\ Second Edition,\ Academic Press, 1978,\ ISBN: 0-12-519260-6,\ LC: QA164.N54.
  6. Atsuyuki Okabe, Barry Boots, Kokichi Sugihara, Sung Nok Chiu,\ Spatial Tessellations: Concepts and Applications of Voronoi Diagrams,\ Second Edition,\ Wiley, 2000,\ ISBN: 0-471-98635-6,\ LC: QA278.2.O36.
  7. Joseph ORourke,\ Computational Geometry,\ Second Edition,\ Cambridge, 1998,\ ISBN: 0521649765,\ LC: QA448.D38.
  8. Per-Olof Persson, Gilbert Strang,\ A Simple Mesh Generator in MATLAB,\ SIAM Review,\ Volume 46, Number 2, June 2004, pages 329-345.

Source Code: {#source-code align=”center”}

Examples and Tests: {#examples-and-tests align=”center”}

List of Routines: {#list-of-routines align=”center”}

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


Last revised 11 September 2009.