Skip to content

Latest commit

 

History

History
160 lines (121 loc) · 6.46 KB

mesh_bandwidth.md

File metadata and controls

160 lines (121 loc) · 6.46 KB

MESH_BANDWIDTH
Geometric Bandwidth of a Mesh {#mesh_bandwidth-geometric-bandwidth-of-a-mesh align="center"}


MESH_BANDWIDTH is a C++ program which computes the geometric bandwidth of a mesh.

The user specifies an element file, containing the indices of the nodes that make up each element. Examples of such a file include the order 3 and order 6 triangulation files, but any order of element may be used.

Not only may any element type be used, but the geometric region may be of any spatial dimension.

The program reads the element information and computes the geometric bandwidth M as

M = ML + 1 + MU

where ML is the lower bandwidth, namely, the maximum value over all nodes I of the difference (I-J), taken over all nodes J that share an element with node I. The upper bandwidth is the maximum value of (J-I) under the same conditions.

The geometric bandwidth M is the linear algebraic bandwidth of the adjacency matrix of the mesh, where I and J are considered to be adjacent if there is some element that includes both nodes.

The geometric bandwidth is of interest since it is the bandwidth of the finite element matrix associated with the mesh, when a scalar quantity is being approximated and there is a single unknown for every node, and the unknowns have the same numbering as the nodes.

Usage: {#usage align="center"}

mesh_bandwidth element_file

where

  • element_file contains a list of the node indices that form each triangle of the triangulation,

computes and prints the geometric bandwidth.

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

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

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

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

TET_MESH_RCM, a C++ program 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_DISPLAY_OPENGL, a C++ program which reads files defining a triangulation and displays an image using Open GL.

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_PLOT, a C++ program which reads data defining a triangulation and creates a PostScript image of the nodes and triangles.

Reference: {#reference align="center"}

  1. Alan George, Joseph Liu,
    Computer Solution of Large Sparse Positive Definite Matrices,
    Prentice Hall, 1981,
    QA 188.G46
  2. 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, pages 236-250, 1976.
  3. Norman Gibbs,
    Algorithm 509: A Hybrid Profile Reduction Algorithm,
    ACM Transactions on Mathematical Software,
    Volume 2, Issue 4, pages 378-387, 1976.
  4. Joseph ORourke,
    Computational Geometry,
    Cambridge University Press,
    Second Edition, 1998.

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

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

Some sample mesh files include:

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

  • MAIN is the main program for MESH_BANDWIDTH.
  • BANDWIDTH_MESH determines the bandwidth of the coefficient matrix.
  • FILE_COLUMN_COUNT counts the columns in the first line of a file.
  • 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.
  • 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_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 12 September 2012.