SANDIA_CUBATURE
Numerical Integration
in M Dimensions
SANDIA_CUBATURE
is a FORTRAN90 library which
implements quadrature rules for certain multidimensional regions and weight functions.
We consider the following integration regions:
-
CN_GEG, the N dimensional hypercube [-1,+1]^N, with the Gegenbauer
weight function:
w(alpha;x) = product ( 1 <= i <= n ) ( 1 - x(i)^2 )^alpha;
-
CN_JAC, the N dimensional hypercube [-1,+1]^N, with the Beta or
Jacobi weight function:
w(alpha,beta;x) = product ( 1 <= i <= n ) ( 1 - x(i) )^alpha * ( 1 + x(i) )^beta;
-
CN_LEG, the N dimensional hypercube [-1,+1]^N, with the Legendre
weight function:
w(x) = 1;
-
EN_HER, the N-dimensional product space (-oo,+oo)^N,
with the Hermite weight function:
w(x) = product ( 1 <= i <= n ) exp ( - x(i)^2 );
-
EPN_GLG, the positive product space [0,+oo)^N, with the generalized
Laguerre weight function:
w(alpha;x) = product ( 1 <= i <= n ) x(i)^alpha exp ( - x(i) );
-
EPN_LAG, the positive product space [0,+oo)^N, with the exponential or
Laguerre weight function:
w(x) = product ( 1 <= i <= n ) exp ( - x(i) );
The available rules for region EN_HER all have odd precision, ranging
from 1 to 11. Some of these rules are valid for any spatial dimension N.
However, many of these rules are restricted to a limited range, such as
2 <= N < 6. Some of the rules have two forms; in that case,
the particular form is selectable by setting an input argument OPTION
to 1 or 2. Finally, note that in multidimensional integration, the dependence
of the order O (number of abscissas) on the spatial dimension N
is critical. Rules for which the order is a multiple of 2^N are not
practical for large values of N. The source code for each rule lists its
formula for the order as a function of N.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
SANDIA_CUBATURE is available in
a C++ version and
a FORTRAN90 version and
a MATLAB version.
Related Data and Programs:
SANDIA_RULES,
a FORTRAN90 library which
produces 1D quadrature rules of
Chebyshev, Clenshaw Curtis, Fejer 2, Gegenbauer, generalized Hermite,
generalized Laguerre, Hermite, Jacobi, Laguerre, Legendre and Patterson types.
STROUD,
a FORTRAN90 library which
defines quadrature rules for a variety of multidimensional reqions.
Reference:
-
Arthur Stroud,
Approximate Calculation of Multiple Integrals,
Prentice Hall, 1971,
ISBN: 0130438936,
LC: QA311.S85.
-
Arthur Stroud, Don Secrest,
Gaussian Quadrature Formulas,
Prentice Hall, 1966,
LC: QA299.4G3S7.
-
Dongbin Xiu,
Numerical integration formulas of degree two,
Applied Numerical Mathematics,
Volume 58, 2008, pages 1515-1520.
Source Code:
Examples and Tests:
List of Routines:
-
C1_GEG_MONOMIAL_INTEGRAL: integral of monomial with Gegenbauer weight on C1.
-
C1_JAC_MONOMIAL_INTEGRAL: integral of a monomial with Jacobi weight over C1.
-
C1_LEG_MONOMIAL_INTEGRAL: integral of monomial with Legendre weight on C1.
-
CN_GEG_00_1 implements the midpoint rule for region CN_GEG.
-
CN_GEG_00_1_SIZE sizes the midpoint rule for region CN_GEG.
-
CN_GEG_01_1 implements a precision 1 rule for region CN_GEG.
-
CN_GEG_01_1_SIZE sizes a precision 1 rule for region CN_GEG.
-
CN_GEG_02_XIU implements the Xiu precision 2 rule for region CN_GEG.
-
CN_GEG_02_XIU_SIZE sizes the Xiu precision 2 rule for region CN_GEG.
-
CN_GEG_03_XIU implements the Xiu precision 3 rule for region CN_GEG.
-
CN_GEG_03_XIU_SIZE sizes the Xiu precision 3 rule for region CN_GEG.
-
CN_GEG_MONOMIAL_INTEGRAL: integral of monomial with Gegenbauer weight on CN.
-
CN_JAC_00_1 implements the midpoint rule for region CN_JAC.
-
CN_JAC_00_1_SIZE sizes the midpoint rule for region CN_JAC.
-
CN_JAC_01_1 implements a precision 1 rule for region CN_JAC.
-
CN_JAC_01_1_SIZE sizes a precision 1 rule for region CN_JAC.
-
CN_JAC_02_XIU implements the Xiu precision 2 rule for region CN_JAC.
-
CN_JAC_02_XIU_SIZE sizes the Xiu precision 2 rule for region CN_JAC.
-
CN_JAC_MONOMIAL_INTEGRAL: integral of a monomial with Jacobi weight over CN.
-
CN_LEG_01_1 implements the midpoint rule for region CN_LEG.
-
CN_LEG_01_1_SIZE sizes the midpoint rule for region CN_LEG.
-
CN_LEG_02_XIU implements the Xiu precision 2 rule for region CN_LEG.
-
CN_LEG_02_XIU_SIZE sizes the Xiu precision 2 rule for region CN_LEG.
-
CN_LEG_03_1 implements the Stroud rule CN:3-1 for region CN_LEG.
-
CN_LEG_03_1_SIZE sizes the Stroud rule CN:3-1 for region CN_LEG.
-
CN_LEG_03_XIU implements the Xiu precision 3 rule for region CN_LEG.
-
CN_LEG_03_XIU_SIZE sizes the Xiu precision 3 rule for region CN_LEG.
-
CN_LEG_05_1 implements the Stroud rule CN:5-1 for region CN_LEG.
-
CN_LEG_05_1_SIZE sizes the Stroud rule CN:5-1 for region CN_LEG.
-
CN_LEG_05_2 implements the Stroud rule CN:5-2 for region CN_LEG.
-
CN_LEG_05_2_SIZE sizes the Stroud rule CN:5-2 for region CN_LEG.
-
CN_LEG_MONOMIAL_INTEGRAL: integral of monomial with Legendre weight on CN.
-
EN_HER_01_1 implements the Stroud rule 1.1 for region EN_HER.
-
EN_HER_01_1_SIZE sizes the Stroud rule 1.1 for region EN_HER.
-
EN_HER_02_XIU implements the Xiu precision 2 rule for region EN_HER.
-
EN_HER_02_XIU_SIZE sizes the Xiu precision 2 rule for region EN_HER.
-
EN_HER_03_1 implements the Stroud rule 3.1 for region EN_HER.
-
EN_HER_03_1_SIZE sizes the Stroud rule 3.1 for region EN_HER.
-
EN_HER_03_2 implements the Stroud rule 3.2 for region EN_HER.
-
EN_HER_03_2_SIZE sizes the Stroud rule 3.2 for region EN_HER.
-
EN_HER_03_XIU implements the Xiu precision 3 rule for region EN_HER.
-
EN_HER_03_XIU_SIZE sizes the Xiu precision 3 rule for region EN_HER.
-
EN_HER_05_1 implements the Stroud rule 5.1 for region EN_HER.
-
EN_HER_05_1_SIZE sizes the Stroud rule 5.1 for region EN_HER.
-
EN_HER_05_2 implements the Stroud rule 5.2 for region EN_HER.
-
EN_HER_05_2_SIZE sizes the Stroud rule 5.2 for region EN_HER.
-
EN_HER_05_3 implements the Stroud rule 5.3 for region EN_HER.
-
EN_HER_05_3_SIZE sizes the Stroud rule 5.3 for region EN_HER.
-
EN_HER_05_4 implements the Stroud rule 5.4 for region EN_HER.
-
EN_HER_05_4_SIZE sizes the Stroud rule 5.4 for region EN_HER.
-
EN_HER_05_5 implements the Stroud rule 5.5 for region EN_HER.
-
EN_HER_05_5_SIZE sizes the Stroud rule 5.5 for region EN_HER.
-
EN_HER_05_6 implements the Stroud rule 5.6 for region EN_HER.
-
EN_HER_05_6_SIZE sizes the Stroud rule 5.6 for region EN_HER.
-
EN_HER_07_1 implements the Stroud rule 7.1 for region EN_HER.
-
EN_HER_07_1_SIZE sizes the Stroud rule 7.1 for region EN_HER.
-
EN_HER_07_2 implements the Stroud rule 7.2 for region EN_HER.
-
EN_HER_07_2_SIZE sizes the Stroud rule 7.2 for region EN_HER.
-
EN_HER_07_3 implements the Stroud rule 7.3 for region EN_HER.
-
EN_HER_07_3_SIZE sizes the Stroud rule 7.3 for region EN_HER.
-
EN_HER_09_1 implements the Stroud rule 9.1 for region EN_HER.
-
EN_HER_09_1_SIZE sizes the Stroud rule 9.1 for region EN_HER.
-
EN_HER_11_1 implements the Stroud rule 11.1 for region EN_HER.
-
EN_HER_11_1_SIZE sizes the Stroud rule 11.1 for region EN_HER.
-
EN_HER_MONOMIAL_INTEGRAL evaluates monomial integrals in EN_HER.
-
EP1_GLG_MONOMIAL_INTEGRAL: integral of monomial with GLG weight on EP1.
-
EP1_LAG_MONOMIAL_INTEGRAL: integral of monomial with Laguerre weight on EP1.
-
EPN_GLG_00_1 implements the "midpoint rule" for region EPN_GLG.
-
EPN_GLG_00_1_SIZE sizes the midpoint rule for region EPN_GLG.
-
EPN_GLG_01_1 implements a precision 1 rule for region EPN_GLG.
-
EPN_GLG_01_1_SIZE sizes a precision 1 rule for region EPN_GLG.
-
EPN_GLG_02_XIU implements the Xiu precision 2 rule for region EPN_GLG.
-
EPN_GLG_02_XIU_SIZE sizes the Xiu precision 2 rule for region EPN_GLG.
-
EPN_GLG_MONOMIAL_INTEGRAL: integral of monomial with GLG weight on EPN.
-
EPN_LAG_00_1 implements the "midpoint rule" for region EPN_LAG.
-
EPN_LAG_00_1_SIZE sizes the midpoint rule for region EPN_LAG.
-
EPN_LAG_01_1 implements a precision 1 rule for region EPN_LAG.
-
EPN_LAG_01_1_SIZE sizes a precision 1 rule for region EPN_LAG.
-
EPN_LAG_02_XIU implements the Xiu precision 2 rule for region EPN_LAG.
-
EPN_LAG_02_XIU_SIZE sizes the Xiu precision 2 rule for region EPN_LAG.
-
EPN_LAG_MONOMIAL_INTEGRAL: integral of monomial with Laguerre weight on EPN.
-
GW_02_XIU implements the Golub-Welsch version of the Xiu rule.
-
GW_02_XIU_SIZE sizes the Golub Welsch version of the Xiu rule.
-
MONOMIAL_VALUE evaluates a monomial.
-
R8_FACTORIAL computes the factorial of N.
-
R8_GAMMA evaluates Gamma(X) for a real argument.
-
R8_HYPER_2F1 evaluates the hypergeometric function F(A,B,C,X).
-
R8_MOP returns the I-th power of -1 as an R8 value.
-
R8_PSI evaluates the function Psi(X).
-
TIMESTAMP prints the current YMDHMS date as a time stamp.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 03 March 2010.