FEMPACK
Finite Element Routines


FEMPACK is a FORTRAN90 library, using double precision arithmetic, which can help in implementing the finite element method.

The emphasis is on simplicity and clarity. Primarily, the 2D planar case is handled, with a choice of low order triangular ("T") and quadrilateral ("Q") elements.

A few routines are included for computing a "sphere grid", that is, a finite element mesh on the surface of a sphere.

Related Data and Programs:

DUNAVANT is a MATLAB library which defines Dunavant rules for quadrature on a triangle.

FEKETE is a FORTRAN90 library of routines for defining a Fekete rule for quadrature or interpolation over a triangle.

FEM is a data directory which contains a description of the data files that can be used to describe a finite element model.

FEM_50 is a MATLAB finite element program in just 50 lines of code.

FEM_50_HEAT is a modified version of FEM_50 suitable for solving the heat equation.

FEM_BASIS_T3_DISPLAY is a MATLAB program which displays a basis function associated with a linear triangle ("T3") mesh.

FEM_BASIS_T6_DISPLAY is a MATLAB program which reads a quadratic triangle mesh and displays any associated basis function.

FEM_IO is a library of MATLAB routines for reading or writing the node, element and data files that define a finite element model.

FEM_SAMPLE is a FORTRAN90 library of routines for evaluating a finite element function defined on an order 3 or order 6 triangulation.

FEM_TO_TEC is a MATLAB program that can convert an FEM model into a TEC graphics file.

FEM1D, is an executable FORTRAN90 program which applies the finite element method, with piecewise linear basis functions, to a linear two point boundary value problem;

FEM1D_ADAPTIVE is a FORTRAN90 program that applies the finite element method to a linear two point boundary value problem in a 1D region, using adaptive refinement to improve the solution.

FEM1D_NONLINEAR is a FORTRAN90 program that applies the finite element method to a nonlinear two point boundary value problem in a 1D region.

FEM1D_PMETHOD is a FORTRAN90 program that applies the p-method version of the finite element method to a linear two point boundary value problem in a 1D region.

FEM2D_HEAT is a FORTRAN90 program that solves the time dependent heat equation in the unit square.

FEM2D_POISSON is a FORTRAN90 program for solving Poisson's equation on a square, using the finite element method.

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

FREE_FEM_HEAT is a FORTRAN90 program which uses the finite element method and the backward Euler method to solve the time-dependent heat equation on an arbitrary triangulated region in 2D. (The user supplies some information in some problem-dependent subroutines.)

FREE_FEM_POISSON is a FORTRAN90 program for solving Poisson's equation on a triangulated region, using the finite element method.

FREE_FEM_STOKES is a FORTRAN90 program for solving the Stokes equations on a triangulated region, using the finite element method.

HOT_PIPE is a sample problem that can be run with the FEM_50_HEAT MATLAB script.

HOT_POINT is a sample problem that can be run with the FEM_50_HEAT MATLAB script.

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.

PLTMG_SINGLE is a FORTRAN77 library of routines for solving elliptic partial differential equations using the finite element method with piecewise linear triangles and the multigrid approach.

POLYGONAL_SURFACE is a data directory which contains a description of the data files that can be used to describe a polygonal surface. FEMPACK includes routines for creating a polygonal surface grid of a sphere.

TRIANGULATION_ORDER3 is a directory which contains a description and examples of how an order 3 (linear) triangulation is defined by a node and element file.

TRIANGULATION_ORDER6 is a directory which contains a description and examples of how an order 6 (quadratic) triangulation is defined by a node and element file.

TRIANGULATION_ORDER6_CONTOUR is a MATLAB script which can make contours of a scalar quantity defined on the nodes of an order 6 triangulation.

WANDZURA is a FORTRAN90 library of routines for defining Dunavant rules for quadrature on a triangle.

Reference:

  1. Milton Abramowitz, Irene Stegun,
    Handbook of Mathematical Functions,
    National Bureau of Standards, 1964,
    ISBN: 0-486-61272-4,
    LC: QA47.A34.
  2. Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
    LINPACK User's Guide,
    SIAM, 1979,
    ISBN13: 978-0-898711-72-1.
  3. Vladimir Krylov,
    Approximate Calculation of Integrals,
    Dover, 2006,
    ISBN: 0486445798.
  4. Hans Rudolf Schwarz,
    Methode der Finiten Elemente,
    Teubner Studienbuecher, 1980,
    ISBN: 3-519-02349-0.
  5. Gilbert Strang, George Fix,
    An Analysis of the Finite Element Method,
    Cambridge, 1973,
    ISBN: 096140888X,
    LC: TA335.S77.
  6. Arthur Stroud,
    Approximate Calculation of Multiple Integrals,
    Prentice Hall, 1971,
    ISBN: 0130438936,
    LC: QA311.S85.
  7. Arthur Stroud, Don Secrest,
    Gaussian Quadrature Formulas,
    Prentice Hall, 1966,
    LC: QA299.4G3S7.
  8. Olgierd Zienkiewicz,
    The Finite Element Method,
    Sixth Edition,
    Butterworth-Heinemann, 2005,
    ISBN: 0750663200,
    TA640.2.Z54
  9. Daniel Zwillinger, editor,
    CRC Standard Mathematical Tables and Formulae,
    30th Edition,
    CRC Press, 1996,
    ISBN: 0-8493-2479-3.

Source Code:

Examples and Tests:

List of Routines:

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


Last revised on 22 April 2008.