# SIMPLEX_GM_RULE Grundmann-Moeller Quadrature Rules for the Simplex in M dimensions

SIMPLEX_GM_RULE is a C++ library which defines Grundmann-Moeller quadrature rules over the interior of a simplex in M dimensions.

The user can choose the spatial dimension M, thus defining the region to be a triangle (M = 2), tetrahedron (M = 3) or a general M-dimensional simplex.

The user chooses the index S of the rule. Rules are available with index S = 0 on up. A rule of index S will exactly integrate any polynomial of total degree 2*S+1 or less.

The rules are defined on the unit M-dimensional simplex. A simple linear transformation can be used to map the vertices and weights to an arbitrary simplex, while preserving the accuracy of the rule.

### Languages:

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

### Related Data and Programs:

CUBE_FELIPPA_RULE, a FORTRAN77 library which returns the points and weights of a Felippa quadrature rule over the interior of a cube in 3D.

PYRAMID_FELIPPA_RULE, a FORTRAN77 library which returns Felippa's quadratures rules for approximating integrals over the interior of a pyramid in 3D.

PYRAMID_RULE, a FORTRAN77 program which computes a quadrature rule over the interior of the unit pyramid in 3D;

QUADRATURE_RULES_TET, a dataset directory which contains triples of files defining various quadrature rules over the interior of a triangle in 2D.

QUADRATURE_RULES_TRI, a dataset directory which contains triples of files defining various quadrature rules on triangles.

SIMPACK, a FORTRAN77 library which approximate the integral of a function or vector of functions over a M-dimensional simplex, or a region which is the sum of M-dimensional simplexes.

SIMPLEX_COORDINATES, a FORTRAN77 library which computes the Cartesian coordinates of the vertices of a regular simplex in M dimensions.

SIMPLEX_GRID, a FORTRAN77 library which generates a regular grid of points over the interior of an arbitrary simplex in M dimensions.

SQUARE_FELIPPA_RULE, a FORTRAN77 library which returns the points and weights of a Felippa quadrature rule over the interior of a square in 2D.

STROUD, a FORTRAN77 library which defines quadrature rules for a variety of unusual areas, surfaces and volumes in 2D, 3D and M-dimensions.

TETRAHEDRON_FELIPPA_RULE, a FORTRAN77 library which returns Felippa's quadratures rules for approximating integrals over the interior of a tetrahedron in 3D.

TETRAHEDRON_MONTE_CARLO, a FORTRAN77 program which uses the Monte Carlo method to estimate integrals over the interior of a tetrahedron in 3D.

TRIANGLE_FELIPPA_RULE, a FORTRAN77 library which returns Felippa's quadratures rules for approximating integrals over the interior of a triangle in 2D.

TRIANGLE_MONTE_CARLO, a FORTRAN77 program which uses the Monte Carlo method to estimate integrals over the interior of a triangle in 2D.

WEDGE_FELIPPA_RULE, a FORTRAN77 library which returns quadratures rules for approximating integrals over the interior of the unit wedge in 3D.

### Reference:

1. Paul Bratley, Bennett Fox, Linus Schrage,
A Guide to Simulation,
Second Edition,
Springer, 1987,
ISBN: 0387964673,
LC: QA76.9.C65.B73.
2. Bennett Fox,
Algorithm 647: Implementation and Relative Efficiency of Quasirandom Sequence Generators,
ACM Transactions on Mathematical Software,
Volume 12, Number 4, December 1986, pages 362-376.
3. Axel Grundmann, Michael Moeller,
Invariant Integration Formulas for the N-Simplex by Combinatorial Methods,
SIAM Journal on Numerical Analysis,
Volume 15, Number 2, April 1978, pages 282-290.
4. Pierre LEcuyer,
Random Number Generation,
in Handbook of Simulation,
edited by Jerry Banks,
Wiley, 1998,
ISBN: 0471134031,
LC: T57.62.H37.
5. Peter Lewis, Allen Goodman, James Miller,
A Pseudo-Random Number Generator for the System/360,
IBM Systems Journal,
Volume 8, 1969, pages 136-143.
6. Albert Nijenhuis, Herbert Wilf,
Combinatorial Algorithms for Computers and Calculators,
Second Edition,
ISBN: 0-12-519260-6,
LC: QA164.N54.
7. ML Wolfson, HV Wright,
Algorithm 160: Combinatorial of M Things Taken N at a Time,
Communications of the ACM,
Volume 6, Number 4, April 1963, page 161.

### List of Routines:

• COMP_NEXT computes the compositions of the integer N into K parts.
• GET_UNIT returns a free FORTRAN unit number.
• GM_RULE_SET sets a Grundmann-Moeller rule.
• GM_RULE_SET_OLD sets a Grundmann-Moeller rule. (OBSOLETE VERSION)
• GM_RULE_SIZE determines the size of a Grundmann-Moeller rule.
• I4_CHOOSE computes the binomial coefficient C(N,K).
• I4_HUGE returns a "huge" I4.
• MONOMIAL_VALUE evaluates a monomial.
• R8_FACTORIAL computes the factorial.
• R8VEC_UNIFORM_01 returns a unit pseudorandom R8VEC.
• SIMPLEX_UNIT_MONOMIAL_INT integrates a monomial over a simplex.