SPARSE_GRID_CC_DATASET
Create ClenshawCurtis Sparse Grid Dataset
SPARSE_GRID_CC_DATASET
is a FORTRAN77 program which
creates a ClenshawCurtis sparse grid dataset.
Usage:
sparse_grid_cc_dataset dim_num level_max
where

dim_num is the spatial dimension, typically between 2 and 10;

level_max is the sparse grid level, typically between 0 and 6,
which controls the number of points
in the grid. The 1D rules used will have order 2^(level_max)+1.
Each sparse grid is stored using the "quadrature rule" format,
that is, as three files:

an "R" or "region" file, which lists two points that bound the region;

a "W" or "weight" file, which lists the weight for each abscissa;

an "X" or "abscissa" file, which lists the abscissas of the rule.
The abscissas are ordered to respect the natural nesting of the
sparse grids by level. That is, the file of level 3 points begins by
listing the points in the level 2 grid.
Licensing:
The code described and made available on this web page is distributed
under the
GNU LGPL license.
Languages:
SPARSE_GRID_CC_DATASET is available in
a C version and
a C++ version and
a FORTRAN77 version and
a FORTRAN90 version and
a MATLAB version.
Related Data and Programs:
MONTE_CARLO_RULE,
a FORTRAN90 program which
generates a dataset of N random Mdimensional points,
regards it as a quadrature rule for the unit hypercube,
and writes out three files of information.
SGMGA,
a FORTRAN90 library which
creates sparse grids based on a mixture of 1D quadrature rules,
allowing anisotropic weights for each dimension.
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.
SPARSE_GRID_CC,
a FORTRAN77 library which
creates a ClenshawCurtis sparse grid.
SPARSE_GRID_CC,
a dataset directory which
contains examples of ClenshawCurtis sparse grids.
SPARSE_GRID_GL_DATASET,
a FORTRAN90 program which
creates a GaussLegendre sparse grid and write the data to three files.
SPARSE_GRID_HW,
a FORTRAN77 library which
creates sparse grids based on GaussLegendre, GaussHermite,
GaussPatterson, or a nested variation of GaussHermite rules,
by Florian Heiss and Viktor Winschel.
SPARSE_GRID_LAGUERRE_DATASET,
a FORTRAN90 program which
creates a GaussLaguerre sparse grid and write the data to three files.
SPARSE_GRID_MIXED_DATASET,
a FORTRAN90 program which
creates a sparse grid dataset based on a mixture of 1D rules.
SPARSE_GRID_OPEN_DATASET,
a FORTRAN90 program which
creates a sparse grid dataset based on
open rules (Fejer 2, GaussPatterson, NewtonCotesOpen).
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.
Reference:

Volker Barthelmann, Erich Novak, Klaus Ritter,
High Dimensional Polynomial Interpolation on Sparse Grids,
Advances in Computational Mathematics,
Volume 12, Number 4, 2000, pages 273288.

Thomas Gerstner, Michael Griebel,
Numerical Integration Using Sparse Grids,
Numerical Algorithms,
Volume 18, Number 34, 1998, pages 209232.

Albert Nijenhuis, Herbert Wilf,
Combinatorial Algorithms for Computers and Calculators,
Second Edition,
Academic Press, 1978,
ISBN: 0125192606,
LC: QA164.N54.

Fabio Nobile, Raul Tempone, Clayton Webster,
A Sparse Grid Stochastic Collocation Method for Partial Differential
Equations with Random Input Data,
SIAM Journal on Numerical Analysis,
Volume 46, Number 5, 2008, pages 23092345.

Sergey Smolyak,
Quadrature and Interpolation Formulas for Tensor Products of
Certain Classes of Functions,
Doklady Akademii Nauk SSSR,
Volume 4, 1963, pages 240243.

Dennis Stanton, Dennis White,
Constructive Combinatorics,
Springer, 1986,
ISBN: 0387963472,
LC: QA164.S79.
Source Code:
Examples and Tests:
Here are the three quadrature files created by the command
sparse_grid_cc_dataset 2 3
List of Routines:

MAIN is the main program for SPARSE_GRID_CC_DATASET.

MAIN_SUB allocates memory for the main program.

ABSCISSA_LEVEL_CLOSED_ND: first level at which given abscissa is generated.

CC_ABSCISSA returns the Ith abscissa for the Clenshaw Curtis rule.

CC_WEIGHTS computes Clenshaw Curtis weights.

COMP_NEXT computes the compositions of the integer N into K parts.

GET_UNIT returns a free FORTRAN unit number.

I4_CHOOSE computes the binomial coefficient C(N,K).

I4_MODP returns the nonnegative remainder of integer division.

I4_MOP returns the Ith power of 1 as an I4 value.

I4VEC_EQ is true if every pair of entries in two I4VECs is equal.

I4VEC_PRODUCT returns the product of the entries of an I4VEC.

INDEX_TO_LEVEL_CLOSED determines the level of a point given its index.

LEVEL_TO_ORDER_CCS: level to order for CCS rule.

LEVEL_TO_ORDER_CLOSED converts a level to an order for closed rules.

LEVELS_CLOSED_INDEX computes closed grids with 0 .le. LEVEL .le. LEVEL_MAX.

MULTIGRID_INDEX0 returns an indexed multidimensional grid.

MULTIGRID_SCALE_CLOSED renumbers a grid as a subgrid on a higher level.

PRODUCT_WEIGHTS_CC: Clenshaw Curtis product rule weights.

R8_HUGE returns a "huge" R8.

R8MAT_TRANSPOSE_PRINT_SOME prints some of an R8MAT transposed.

R8MAT_WRITE writes a R8MAT file.

R8VEC_DIRECT_PRODUCT2 creates a direct product of R8VEC's.

R8VEC_DOT_PRODUCT finds the dot product of a pair of R8VEC's.

R8VEC_PRINT_SOME prints "some" of an R8VEC.

S_TO_I4 reads an I4 from a string.

R8VEC_SUM sums the entries of an R8VEC.

S_BLANK_DELETE removes blanks from a string, left justifying the remainder.

S_LEN_TRIM returns the length of a string to the last nonblank.

SPARSE_GRID_CC computes a sparse grid of Clenshaw Curtis points.

SPARSE_GRID_CC_INDEX indexes the points forming a sparse grid.

SPARSE_GRID_CC_WEIGHTS gathers the weights.

SPARSE_GRID_CCS_SIZE sizes a sparse grid using Clenshaw Curtis Slow rules.

SPARSE_GRID_CC_SIZE sizes a sparse grid using Closed Fully Nested rules.

TIMESTAMP prints out the current YMDHMS date as a timestamp.

VEC_COLEX_NEXT2 generates vectors in colex order.
You can go up one level to
the FORTRAN77 source codes.
Last revised on 16 March 2013.