SGMGA is a MATLAB library which implements a family of sparse grid rules. These rules are "mixed", in that a different 1D quadrature rule can be specified for each dimension. Moreover, each 1D quadrature rule comes in a family of increasing size whose growth rate (typically linear or exponential) is chosen by the user. Finally, the user may also specify different weights for each dimension, resulting in anisotropic rules.
SGMGA calls many routines from the SANDIA_RULES library. Copies of both libraries must be available when a program wishes to use the SGMGA library.
Thanks to Drew Kouri, who pointed out a discrepancy in the computation of the variable level_1d_max which meant that certain sparse grids requested the generation of a 1D rule of a level that was higher than necessary by 1. In particular, if the Gauss-Patterson rule was involved, sparse grids that actually only needed rules of level 7 would ask also for level 8, resulting in the computation being terminated. This problem was corrected on 25 April 2011.
Index | Name | Abbreviation | Default Growth Rule | Interval | Weight function |
---|---|---|---|---|---|
1 | Clenshaw-Curtis | CC | Moderate Exponential | [-1,+1] | 1 |
2 | Fejer Type 2 | F2 | Moderate Exponential | [-1,+1] | 1 |
3 | Gauss Patterson | GP | Moderate Exponential | [-1,+1] | 1 |
4 | Gauss-Legendre | GL | Moderate Linear | [-1,+1] | 1 |
5 | Gauss-Hermite | GH | Moderate Linear | (-oo,+oo) | e^{-x*x} |
6 | Generalized Gauss-Hermite | GGH | Moderate Linear | (-oo,+oo) | |x|^{alpha} e^{-x*x} |
7 | Gauss-Laguerre | LG | Moderate Linear | [0,+oo) | e^{-x} |
8 | Generalized Gauss-Laguerre | GLG | Moderate Linear | [0,+oo) | x^{alpha} e^{-x} |
9 | Gauss-Jacobi | GJ | Moderate Linear | [-1,+1] | (1-x)^{alpha} (1+x)^{beta} |
10 | Hermite Genz-Keister | HGK | Moderate Exponential | (-oo,+oo) | e^{-x*x} |
11 | User Supplied Open | UO | Moderate Linear | ? | ? |
12 | User Supplied Closed | UC | Moderate Linear | ? | ? |
For a given family, a growth rule can be prescribed, which determines the orders O of the sequence of rules selected from the family. The selected rules are indexed by L, which starts at 0. The polynomial precision P of the rule is sometimes used to determine the appropriate order O.
Index | Name | Order Formula |
---|---|---|
0 | Default | "DF", moderate exponential or moderate linear |
1 | "SL", Slow linear | O=L+1 |
2 | "SO", Slow Linear Odd | O=1+2*((L+1)/2) |
3 | "ML", Moderate Linear | O=2L+1 |
4 | "SE", Slow Exponential | select smallest exponential order O so that 2L+1 <= P |
5 | "ME", Moderate Exponential | select smallest exponential order O so that 4L+1 <= P |
6 | "FE", Full Exponential | O=2^L+1 for Clenshaw Curtis, O=2^(L+1)-1 otherwise. |
A version of the sparse grid library is available in http://tasmanian.ornl.gov, the TASMANIAN library, available from Oak Ridge National Laboratory.
The computer code and data files made available on this web page are distributed under the GNU LGPL license.
SGMGA is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version.
GRID_DISPLAY, a MATLAB library which can display a 2D or 3D grid or sparse grid.
NINT_EXACTNESS_MIXED, a MATLAB program which measures the polynomial exactness of a multidimensional quadrature rule based on a mixture of 1D quadrature rule factors.
QUADRULE, a MATLAB library which defines quadrature rules for various intervals and weight functions.
SANDIA_RULES, a MATLAB library which generates Gauss quadrature rules of various orders and types.
SANDIA_SGMGG, a MATLAB library which explores a generalized construction method for sparse grids.
SANDIA_SPARSE, a MATLAB library which computes the points and weights of a Smolyak sparse grid, based on a variety of 1-dimensional quadrature rules.
SGMGA, a dataset directory which contains SGMGA files (Sparse Grid Mixed Growth Anisotropic), that is, multidimensional Smolyak sparse grids based on a mixture of 1D rules, and with a choice of exponential and linear growth rates for the 1D rules and anisotropic weights for the dimensions.
SMOLPACK, a C library which implements Novak and Ritter's method for estimating the integral of a function over a multidimensional hypercube using sparse grids, by Knut Petras.
SPARSE_GRID_CC, a MATLAB library which can define a multidimensional sparse grid based on a 1D Clenshaw Curtis rule.
SPARSE_GRID_GL, a MATLAB library which creates sparse grids based on Gauss-Legendre rules.
SPARSE_GRID_HERMITE, a MATLAB library which creates sparse grids based on Gauss-Hermite rules.
SPARSE_GRID_HW, a MATLAB library which creates sparse grids based on Gauss-Legendre, Gauss-Hermite, Gauss-Patterson, or a nested variation of Gauss-Hermite rules, by Florian Heiss and Viktor Winschel.
SPARSE_GRID_LAGUERRE, a MATLAB library which creates sparse grids based on Gauss-Laguerre rules.
SPARSE_GRID_MIXED, a MATLAB library which creates a sparse grid dataset based on a mixed set of 1D factor rules.
SPINTERP, a MATLAB library which carries out piecewise multilinear hierarchical sparse grid interpolation; an earlier version of this software is ACM TOMS Algorithm 847, by Andreas Klimke;
TOMS847, a MATLAB program which uses sparse grids to carry out multilinear hierarchical interpolation. It is commonly known as SPINTERP, and is by Andreas Klimke.
SGMGA_ANISO_BALANCE_TEST tests SGMGA_ANISO_BALANCE.
SGMGA_ANISO_NORMALIZE_TEST tests b>SGMGA_ANISO_NORMALIZE.
SGMGA_IMPORTANCE_TO_ANISO_TEST tests SGMGA_IMPORTANCE_TO_ANISO.
SGMGA_INDEX_TEST tests SGMGA_INDEX:
SGMGA_POINT_TEST tests SGMGA_POINT:
SGMGA_PRODUCT_WEIGHT_TEST tests SGMGA_PRODUCT_WEIGHT:
SGMGA_SIZE_TEST tests SGMGA_SIZE and SGMGA_SIZE_TOTAL:
SGMGA_SIZE_TABLE tabulates the point counts from SGMGA_SIZE for an isotropic rule over a range of dimensions and levels.
SGMGA_UNIQUE_INDEX_TEST tests SGMGA_UNIQUE_INDEX:
SGMGA_VCN_TEST tests SGMGA_VCN:
SGMGA_VCN_COEF_TEST tests SGMGA_VCN_COEF:
SGMGA_VCN_ORDERED_TEST tests SGMGA_VCN_ORDERED:
SGMGA_VCN_TIMING_TEST times SGMGA_VCN and SGMGA_VCN_NAIVE:
SGMGA_WEIGHT_TEST tests SGMGA_WEIGHT:
SGMGA_WRITE_TEST tests SGMGA_WRITE:
You can go up one level to the MATLAB source codes.