TRIANGULATION_RCM
Reverse Cuthill-McKee Node Reordering


TRIANGULATION_RCM is an executable FORTRAN90 program, using double precision arithmetic, which computes the reverse Cuthill-McKee reordering for nodes in a triangulation composed of 3-node or 6-node triangles.

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 adjacency information, carries out the RCM algorithm to get the permutation, applies the permutation to the nodes and triangles, and writes out new node and triangle files that correspond to the RCM permutation.

Note that the node file would normally contain exactly 2 values on each line, namely the X and Y coordinates of the nodes. However, this is not necessary. Extra information can be included on each line, for instance, a "Z" coordinate. Each line should include the same number of items, but all will be permuted correctly together. The program does not actually need to know the coordinates of the nodes, so in fact, ANY data (as long as it is real numeric data) associated with the nodes can be listed in the node file, and will be correctly permuted.

Related Data and Programs:

MESH_BANDWIDTH is an interactive executable FORTRAN90 program which returns the geometric bandwidth associated with a mesh of elements of any order and in a space of arbitrary dimension.

RCM is a FORTRAN90 library of routines for reverse Cuthill-McKee computations.

TABLE_DELAUNAY is an interactive FORTRAN90 program for the triangulation of a set of nodes whose coordinates are stored in a file.

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

TRIANGLE is an executable C program which computes a triangulation of a geometric region.

TRIANGULATION is a FORTRAN90 library of routines for carrying out various operations on order 3 ("linear") or order 6 ("quadratic") triangulations.

TRIANGULATION_BOUNDARY_NODES is an executable FORTRAN90 program that reads data defining a triangulation, determines which nodes lie on the boundary, and writes their coordinates to a file.

TRIANGULATION_DISPLAY_OPEN_GL is an executable C++ program which reads files defining a triangulation and displays an image using Open GL.

TRIANGULATION_L2Q is an executable FORTRAN90 program that reads data defining a 3-node triangulation and generates midside nodes and writes out the corresponding 6-node triangulation.

TRIANGULATION_MASK is an executable FORTRAN90 program, which takes an existing triangulation and deletes triangles and their corresponding nodes as requested by the user.

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

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

TRIANGULATION_ORIENT is an executable FORTRAN90 program that reads data defining a triangulation, makes sure that every triangle has positive orientation, and if not, writes a corrected triangle file.

TRIANGULATION_PLOT is an executable FORTRAN90 program that reads data defining a triangulation and creates a PostScript image of the nodes and triangles.

TRIANGULATION_Q2L is an executable FORTRAN90 program that reads data defining a 6-node triangulation, and subdivides each triangle into 4 3-node triangles, writing the resulting triangulation to a file.

TRIANGULATION_QUALITY is an executable FORTRAN90 program that reads data defining a triangulation and computes a number of quality measures.

TRIANGULATION_RCM is also available in a C++ version and a MATLAB version.

TRIANGULATION_REFINE is an executable FORTRAN90 program which can be used to refine a triangulation.

TRIANGULATION_TRIANGLE_NEIGHBORS is an executable FORTRAN90 program that reads data defining a triangulation, determines the neighboring triangles of each triangle, and writes that information to a file.

Usage:

triangulation_rcm node_file triangle_file
reads the triangulation whose nodal coordinates are given in node_file, and triangle indices in triangle_file, and produces a reordering of the nodes that will reduce the bandwidth.

Reference:

  1. HL Crane, Norman Gibbs, William Poole, Paul Stockmeyer,
    Algorithm 508: Matrix Bandwidth and Profile Reduction,
    ACM Transactions on Mathematical Software,
    Volume 2, Number 4, December 1976, pages 375-377.
  2. Marc deBerg, Marc Krevald, Mark Overmars, Otfried Schwarzkopf,
    Computational Geometry,
    Springer, 2000,
    ISBN: 3-540-65620-0.
  3. Alan George, Joseph Liu,
    Computer Solution of Large Sparse Positive Definite Matrices,
    Prentice Hall, 1981,
    ISBN: 0131652745,
    LC: QA188.G46
  4. Norman Gibbs,
    Algorithm 509: A Hybrid Profile Reduction Algorithm,
    ACM Transactions on Mathematical Software,
    Volume 2, Number 4, December 1976, pages 378-387.
  5. Norman Gibbs, William Poole, Paul Stockmeyer,
    An Algorithm for Reducing the Bandwidth and Profile of a Sparse Matrix,
    SIAM Journal on Numerical Analysis,
    Volume 13, 1976, pages 236-250.
  6. Joseph ORourke,
    Computational Geometry,
    Second Edition,
    Cambridge, 1998,
    ISBN: 0521649765,
    LC: QA448.D38.

Source Code:

Examples and Tests:

Files associated with a 3-node triangulation:

Files associated with a 3 node triangulation, in which the node file contains FOUR items of data per node, not just X and Y. (The X and Y data is the same as for the standard 3 node example)

Files associated with a 6-node triangulation:

List of Routines:

You can go up one level to the FORTRAN90 source codes.


Last revised on 08 January 2007.