Skip to content

Latest commit

 

History

History
235 lines (185 loc) · 10.4 KB

triangulation_t3_to_t4.md

File metadata and controls

235 lines (185 loc) · 10.4 KB

TRIANGULATION_T3_TO_T4
Convert T3 Mesh to T4 Mesh {#triangulation_t3_to_t4-convert-t3-mesh-to-t4-mesh align="center"}


TRIANGULATION_T3_TO_T4 is a C++ program which reads information describing a triangulation of a set of points using 3-node "T3" triangles, and creates a 4-node "T4" triangulation.

The same number of triangles are used, but each triangle is given one extra node at the centroid. The coordinates of these nodes are determined by averaging the coordinates of the vertices of the triangles.

The input and output files use the simple TABLE format; comment lines begin with a "#" character. Otherwise, each line of the file contains one set of information, either the coordinates of a node (for a node file), or the indices of nodes that make up a triangle, (for a triangle file).

The input file prefix_nodes.txt contains the node information for the 3-node triangulation. Each data line contains the X and Y coordinates of a single node.

The input file prefix_elements.txt contains the triangle information for the 3-node triangulation. Each line contains the indices of three nodes that form a triangle, in counterclockwise order.

The output file prefix_t4_nodes.txt contains the node information for the 4-node triangulation. It begins with the node information from prefix_nodes.txt, followed by the coordinates of the new nodes.

The output file prefix_t4_triangles.txt contains the triangle information for the 4-node triangulation. There are exactly as many triangles as before, but now each triangle uses four nodes. Each line of the file contains the indices of 4 nodes that form the triangle. The first three indices are the vertices, in counterclockwise order. The fourth index is the centroid node..

Usage: {#usage align="center"}

triangulation_t3_to_t4 prefix

where prefix is the common filename prefix:

  • prefix_nodes.txt contains the node coordinates,
  • prefix_elements.txt contains the element definitions.
  • prefix_t4_nodes.txt is the T4 node coordinates,
  • prefix_t4_elements.txt contains the T4 element definitions.

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

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

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 FORTRAN90 program which computes the triangulation of a set of nodes whose coordinates are stored in a file.

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 adds midside nodes to create a 6-node triangulation.

TRIANGULATION_MASK, a FORTRAN90 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_ORDER4, a directory which contains a description and examples of order 4 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_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.

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"}

EXAMPLE is a simple set of example data:

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

  • MAIN is the main program for TRIANGULATION_T3_TO_T4.
  • 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.
  • I4_MODP returns the nonnegative remainder of integer division.
  • I4_WRAP forces an I4 to lie between given limits by wrapping.
  • I4MAT_DATA_READ reads data from an I4MAT file.
  • I4MAT_HEADER_READ reads the header from an I4MAT file.
  • I4MAT_TRANSPOSE_PRINT prints an I4MAT, transposed.
  • I4MAT_TRANSPOSE_PRINT_SOME prints some of an I4MAT, transposed.
  • I4MAT_WRITE writes an I4MAT file with no header.
  • R8MAT_DATA_READ reads the data from an R8MAT file.
  • R8MAT_HEADER_READ reads the header from an R8MAT file.
  • R8MAT_TRANSPOSE_PRINT prints an R8MAT, transposed.
  • R8MAT_TRANSPOSE_PRINT_SOME prints some of an R8MAT, transposed.
  • R8MAT_WRITE writes an R8MAT file with no header.
  • 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.
  • TIMESTAMP prints the current YMDHMS date as a time stamp.

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


Last revised on 22 August 2009.