SANDIA_SGMGG is a FORTRAN90 library 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.
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.
You can go up one level to the FORTRAN90 source codes.