sandia_sgmgg, a FORTRAN90 code which contains some experimental code for the investigation of sparse grids constructed in a generalized fashion, in which the set of indices corresponding to a sparse grid is chosen in a generalized way, rather than being defined by a linear constraint.
The sparse grid is associated with a data structure, whose management is a significant part of the computation.
We assume we are working in a space of dimension ND. An index vector is a list of ND nonnegative integers, which represent the level of quadrature in each dimension. A single index vector can be used to construct a product rule.
A sparse grid can be thought of as a weighted summation of product rules; our represention of a sparse grid will then consist of a list of NI index vectors, which we can regard as an ND by NI array.
Not every collection of index vectors will be admissible. For our purposes, a collection of index vectors is admissible if each vector in the set is admissible. An index vector that is part of a collection is admissible if it is the 0 vector, or every vector formed by decrementing exactly one entry by 1 is an admissible vector in the set.
Here is an example of an admissible collection of index vectors in 2D:
(0,3) (0,2) (1,2) (0,1) (1,1) (0,0) (1,0) (2,0) (3,0) (4,0)For the 2D case, an index is admissible if every possible index below or to the left of it is also in the set.
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
sandia_sgmgg is available in a C++ version and a Fortran90 version and a MATLAB version.
sgmga, a FORTRAN90 library which creates sparse grids based on a mixture of 1D quadrature rules, allowing anisotropic weights for each dimension.