Skip to content

Latest commit

 

History

History
295 lines (233 loc) · 13.1 KB

triangulation_triangle_neighbors.md

File metadata and controls

295 lines (233 loc) · 13.1 KB

TRIANGULATION_TRIANGLE_NEIGHBORS
Triangle Neighbors
in a Triangulation {#triangulation_triangle_neighbors-triangle-neighbors-in-a-triangulation align="center"}


TRIANGULATION_TRIANGLE_NEIGHBORS is a C++ program which computes the three neighboring triangles of each triangle in a triangulation.

The user supplies a node file and a triangle file, containing the coordinates of the nodes, and the indices of the nodes that make up each triangle. Either 3-node or 6-node triangles may be used.

The program reads the data, computes the triangle neighbor information, and writes out the information to a file. In cases where one side of a triangle has no triangle neighbor, a value of -1 is assigned.

The triangle neighbor array is useful if the triangulation has to be searched to find the triangle containing a given point. It is also useful when analyzing the bandwidth of the adjacency matrix, or of a finite element matrix derived from the triangulation.

Usage: {#usage align="center"}

triangulation_triangle_neighbors prefix

where prefix is the common filename prefix:

  • prefix_nodes.txt contains the node coordinates,
  • prefix_elements.txt contains the element definitions.
  • prefix_element_neighbors.txt will contain the triangle neighbors.

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_TRIANGLE_NEIGHBORS is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version.

Related Data and Programs: {#related-data-and-programs align="center"}

MESH_BANDWIDTH, is a C++ program which returns the geometric bandwidth associated with a mesh of elements of any order and in a space of arbitrary dimension.

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.

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

RCM, a C++ library which carries out reverse Cuthill-McKee computations.

TABLE_DELAUNAY, a C++ program which triangulates a set of nodes whose coordinates are stored in a file.

TET_MESH_RCM, a FORTRAN90 library which applies the reverse Cuthill-McKee reordering to a tetrahedral mesh of nodes in 3D.

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

TRIANGULATION, a C++ library which carries out various operations on order 3 ("linear") or order 6 ("quadratic") triangulations.

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 can reorder the nodes of a triangulation so that the bandwidth of the associated adjacency matrix is reduced.

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.

TRIG_TO_NEIB, a C program which reads "NODE" and "ELE" files (a format prescribed by triangle) describing a triangulation, and produces a file defining the neighbor triangles of each element; the program can also produce information about the Voronoi diagram. The program is by Lili Ju.

Reference: {#reference align="center"}

  1. Marc deBerg, Marc Krevald, Mark Overmars, Otfried Schwarzkopf,
    Computational Geometry,
    Springer, 2000,
    ISBN: 3-540-65620-0.
  2. Joseph ORourke,
    Computational Geometry,
    Second Edition,
    Cambridge, 1998,
    ISBN: 0521649765,
    LC: QA448.D38.

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

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

BIG_CAVITY is a triangulation using 8,195 nodes and 4,000 elements.

BOX3 is a triangulation of order 3, using 20 nodes and 24 elements:

BOX6 is a triangulation of order 6:

GREENLAND is a triangulation using 33,343 nodes and 64,125 elements.

LAKE_COARSE is an irregular lake with an island.
There are 621 nodes and 974 elements and 1 hole.

LAKE3 is an irregular lake with an island.
The smallest angle is 23.46 degrees.
There are 1552 nodes and 2820 elements and 1 hole.

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

  • MAIN is the main program for TRIANGULATION_TRIANGLE_NEIGHBORS.
  • 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.
  • FILE_COLUMN_COUNT counts the columns in the first line of a file.
  • FILE_EXIST reports whether a file exists.
  • FILE_ROW_COUNT counts the number of row records in a file.
  • I4_MAX returns the maximum of two I4's.
  • I4_MIN returns the minimum of two I4's.
  • I4MAT_DATA_READ reads data from an I4MAT file.
  • I4MAT_HEADER_READ reads the header from an I4MAT file.
  • I4MAT_TRANSPOSE_PRINT_SOME prints some of an I4MAT, transposed.
  • I4MAT_WRITE writes an I4MAT file with no header.
  • I4ROW_COMPARE compares two rows of a integer array.
  • I4ROW_SORT_A ascending sorts the rows of an I4ROW.
  • I4ROW_SWAP swaps two rows of an I4ROW.
  • R8MAT_DATA_READ reads the data from an R8MAT file.
  • R8MAT_HEADER_READ reads the header from an R8MAT file.
  • R8MAT_TRANSPOSE_PRINT_SOME prints some of an R8MAT, transposed.
  • S_LEN_TRIM returns the length of a string to the last nonblank.
  • S_TO_I4 reads an I4 from a string.
  • S_TO_I4VEC reads an I4VEC 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.
  • SORT_HEAP_EXTERNAL externally sorts a list of items into ascending order.
  • TIMESTAMP prints the current YMDHMS date as a time stamp.
  • TRIANGULATION_ORDER3_NEIGHBOR_TRIANGLES determines triangle neighbors.
  • TRIANGULATION_ORDER6_NEIGHBOR_TRIANGLES determines triangle neighbors.

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


Last revised on 22 August 2009.