DUNAVANT
Quadrature Rules for the Triangle
DUNAVANT is a C++ library,
using double precision arithmetic,
which defines the weights and abscisass for a sequence of
20 quadrature rules on a triangle, which are exact for polynomials
up to degree 20.
These rules are almost optimal, in the sense that, for each polynomial
degree, the number of points used in the rule is close to, or equal to,
the theoretical minimum possible value.
A few of the rules include one or two points which are "slightly"
outside the triangle; a few of the rules include weights which
are negative. Both of these occurrences are generally undesirable.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Related Data and Programs:
CLENSHAW_CURTIS
is a C++ library which
sets up a Clenshaw Curtis quadrature grid in multiple dimensions.
DUNAVANT is also available in
a FORTRAN90 version and
a MATLAB version
FEKETE
is a C++ library which
defines Fekete rules for quadrature or interpolation on a triangle.
FELIPPA
is a MATHEMATICA library which
defines quadrature rules for lines, triangles, quadrilaterals,
pyramids, wedges, tetrahedrons and hexahedrons.
FEM_SAMPLE
is a C++ library of routines
for evaluating a finite element function defined on an order 3
or order 6 triangulation.
FEMPACK
is a C++ library of routines
for finite element calculations.
GM_RULES
is a C++ library of routines for defining a Grundmann-Moeller
rule for quadrature over a triangle, tetrahedron, or general
M-dimensional simplex.
KEAST
is a C++ library which defines a number of quadrature rules
for a tetrahedron.
NCC_TRIANGLE
is a C++ library defining Newton-Cotes closed quadrature
rules on a triangle.
NCO_TRIANGLE
is a C++ library defining Newton-Cotes open quadrature
rules on a triangle.
NINT_EXACTNESS_TRI
is a C++ program which investigates the polynomial
exactness of a quadrature rule for the triangle.
NINTLIB
is a FORTRAN90 library containing a variety
of routines for numerical estimation of integrals in multiple dimensions.
QUADRULE
is a C++ library which
defines quadrature rules on a
variety of intervals with different weight functions.
STROUD
is a C++ library containing quadrature
rules for a variety of unusual areas, surfaces and volumes in 2D,
3D and N-dimensions.
TEST_TRI_INT
is a FORTRAN90 library which
can be used to test algorithms for quadrature over a triangle.
TOMS612
is a FORTRAN77 library which
estimates the integral of a function over a triangle.
TOMS706
is a FORTRAN77 library which
estimates the integral of a function over a triangulated region.
WANDZURA
is a C++ library of routines
for defining Wandzura rules for quadrature
on a triangle.
Reference:
-
David Dunavant,
High Degree Efficient Symmetrical Gaussian Quadrature Rules
for the Triangle,
International Journal for Numerical Methods in Engineering,
Volume 21, 1985, pages 1129-1148.
-
James Lyness, Dennis Jespersen,
Moderate Degree Symmetric Quadrature Rules for the Triangle,
Journal of the Institute of Mathematics and its Applications,
Volume 15, Number 1, February 1975, pages 19-32.
Source Code:
Examples and Tests:
One of the tests in the sample calling program creates
EPS files of
the Dunavant points in the unit triangle. These have been converted
to PNG files for
display here.
-
dunavant_rule_01.png,
a plot of rule 1.
-
dunavant_rule_02.png,
a plot of rule 2.
-
dunavant_rule_03.png,
a plot of rule 3.
-
dunavant_rule_04.png,
a plot of rule 4.
-
dunavant_rule_05.png,
a plot of rule 5.
-
dunavant_rule_06.png,
a plot of rule 6.
-
dunavant_rule_07.png,
a plot of rule 7.
-
dunavant_rule_08.png,
a plot of rule 8.
-
dunavant_rule_09.png,
a plot of rule 9.
-
dunavant_rule_10.png,
a plot of rule 10.
List of Routines:
-
DUNAVANT_DEGREE returns the degree of a Dunavant rule for the triangle.
-
DUNAVANT_ORDER_NUM returns the order of a Dunavant rule for the triangle.
-
DUNAVANT_RULE returns the points and weights of a Dunavant rule.
-
DUNAVANT_RULE_NUM returns the number of Dunavant rules available.
-
DUNAVANT_SUBORDER returns the suborders for a Dunavant rule.
-
DUNAVANT_SUBORDER_NUM returns the number of suborders for a Dunavant rule.
-
DUNAVANT_SUBRULE returns a compressed Dunavant rule.
-
DUNAVANT_SUBRULE_01 returns a compressed Dunavant rule 1.
-
DUNAVANT_SUBRULE_02 returns a compressed Dunavant rule 2.
-
DUNAVANT_SUBRULE_03 returns a compressed Dunavant rule 3.
-
DUNAVANT_SUBRULE_04 returns a compressed Dunavant rule 4.
-
DUNAVANT_SUBRULE_05 returns a compressed Dunavant rule 5.
-
DUNAVANT_SUBRULE_06 returns a compressed Dunavant rule 6.
-
DUNAVANT_SUBRULE_07 returns a compressed Dunavant rule 7.
-
DUNAVANT_SUBRULE_08 returns a compressed Dunavant rule 8.
-
DUNAVANT_SUBRULE_09 returns a compressed Dunavant rule 9.
-
DUNAVANT_SUBRULE_10 returns a compressed Dunavant rule 10.
-
DUNAVANT_SUBRULE_11 returns a compressed Dunavant rule 11.
-
DUNAVANT_SUBRULE_12 returns a compressed Dunavant rule 12.
-
DUNAVANT_SUBRULE_13 returns a compressed Dunavant rule 13.
-
DUNAVANT_SUBRULE_14 returns a compressed Dunavant rule 14.
-
DUNAVANT_SUBRULE_15 returns a compressed Dunavant rule 15.
-
DUNAVANT_SUBRULE_16 returns a compressed Dunavant rule 16.
-
DUNAVANT_SUBRULE_17 returns a compressed Dunavant rule 17.
-
DUNAVANT_SUBRULE_18 returns a compressed Dunavant rule 18.
-
DUNAVANT_SUBRULE_19 returns a compressed Dunavant rule 19.
-
DUNAVANT_SUBRULE_20 returns a compressed Dunavant rule 20.
-
FILE_NAME_INC increments a partially numeric file name.
-
I4_MAX returns the maximum of two integers.
-
I4_MIN returns the smaller of two integers.
-
I4_MODP returns the nonnegative remainder of integer division.
-
I4_WRAP forces an integer to lie between given limits by wrapping.
-
R8_HUGE returns a "huge" R8.
-
R8_NINT returns the nearest integer to an R8.
-
REFERENCE_TO_PHYSICAL_T3 maps T3 reference points to physical points.
-
S_LEN_TRIM returns the length of a string to the last nonblank.
-
TIMESTAMP prints the current YMDHMS date as a time stamp.
-
TIMESTRING returns the current YMDHMS date as a string.
-
TRIANGLE_AREA computes the area of a triangle.
-
TRIANGLE_POINTS_PLOT plots a triangle and some points.
You can go up one level to
the C++ source codes.
Last revised on 12 December 2006.