SPARSE_GRID_HERMITE_DATASET
Create GaussHermite Sparse Grid Dataset
SPARSE_GRID_HERMITE_DATASET
is a FORTRAN90 program which
creates a GaussHermite sparse grid dataset.
Usage:
sparse_grid_hermite_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_HERMITE_DATASET is available in
a C++ 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.
QUADRATURE_RULES,
a dataset directory which
define quadrature rules;
a number of examples of sparse grid quadrature rules are included.
QUADRULE,
a FORTRAN90 library which
defines quadrature rules for
various intervals and weight functions.
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 dataset directory which
contains the abscissas of sparse
grids based on a Clenshaw Curtis rule.
SPARSE_GRID_CC_DATASET,
a FORTRAN90 program which
creates a sparse grid dataset based on ClenshawCurtis rules.
SPARSE_GRID_F2,
a dataset directory which
contains the abscissas of sparse
grids based on a Fejer Type 2 rule.
SPARSE_GRID_GL_DATASET,
a FORTRAN90 program which
creates a sparse grid dataset based on GaussLegendre rules.
SPARSE_GRID_GP,
a dataset directory which
contains the abscissas of sparse
grids based on a Gauss Patterson rule.
SPARSE_GRID_HERMITE_DATASET,
a FORTRAN90 program which
creates a sparse grid dataset based on GaussHermite rules.
SPARSE_GRID_HERMITE,
a dataset directory which
contains GaussHermite sparse grids.
SPARSE_GRID_HW,
a FORTRAN90 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_MIXED_DATASET,
a FORTRAN90 program which
creates a sparse grid dataset based on a mixture of 1D rules.
SPARSE_GRID_NCC,
a dataset directory which
contains the abscissas of sparse
grids based on a Newton Cotes closed rule.
SPARSE_GRID_NCO,
a dataset directory which
contains the abscissas of sparse
grids based on a Newton Cotes open rule.
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_hermite_dataset 2 3
List of Routines:

MAIN is the main program for SPARSE_GRID_HERMITE_DATASET.

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

GET_UNIT returns a free FORTRAN unit number.

HERMITE_COMPUTE computes a GaussHermite quadrature rule.

HERMITE_COMPUTE_POINTS computes points of a Hermite quadrature rule.

HERMITE_COMPUTE_WEIGHTS computes weights of a Hermite quadrature rule.

IMTQLX diagonalizes a symmetric tridiagonal matrix.

LEVEL_TO_ORDER_HERMITE: default growth for Hermite sparse grids.

MONOMIAL_INTEGRAL_HERMITE integrates a Hermite monomial.

MONOMIAL_QUADRATURE_HERMITE applies a quadrature rule to a monomial.

MONOMIAL_VALUE evaluates a monomial.

PRODUCT_HERMITE_WEIGHT computes the weights of a Hermite product rule.

R8_CHOOSE computes the binomial coefficient C(N,K) as an R8.

R8_FACTORIAL2 computes the double factorial function.

R8_GAMMA evaluates Gamma(X) for a real argument.

R8_HUGE returns a very large R8.

R8_MOP returns the Ith power of 1 as an R8.

R8COL_COMPARE compares columns in an R8COL.

R8COL_SORT_HEAP_A ascending heapsorts an R8COL.

R8COL_SORT_HEAP_INDEX_A does an indexed heap ascending sort of an R8COL.

R8COL_SORTED_UNIQUE_COUNT counts unique elements in a sorted R8COL.

R8COL_SWAP swaps columns I and J of an R8COL.

R8COL_TOL_UNIQUE_COUNT counts tolerably unique entries in an R8COL.

R8COL_UNDEX returns unique sorted indexes for an R8COL.

R8MAT_PRINT prints an R8MAT.

R8MAT_PRINT_SOME prints some of an R8MAT.

R8MAT_TRANSPOSE_PRINT prints an R8MAT, transposed.

R8MAT_TRANSPOSE_PRINT_SOME prints some of an R8MAT, transposed.

R8MAT_WRITE writes an R8MAT file.

R8VEC_COMPARE compares two R8VEC's.

R8VEC_DIRECT_PRODUCT2 creates a direct product of R8VEC's.

R8VEC_PRINT_SOME prints "some" of an R8VEC.

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

S_TO_I4 reads an integer value from a string.

SORT_HEAP_EXTERNAL externally sorts a list of items into ascending order.

SPARSE_GRID_HERMITE computes a Hermite sparse grid.

SPARSE_GRID_HERMITE_INDEX indexes a Hermite sparse grid.

SPARSE_GRID_HERMITE_POINT computes the points of a Hermite sparse grid.

SPARSE_GRID_HERMITE_SIZE sizes a Hermite sparse grid, discounting duplicates.

SPARSE_GRID_HERMITE_SIZE_TOTAL Hermite sparse grid size counting duplicates.

SPARSE_GRID_HERMITE_UNIQUE_INDEX maps nonunique points to unique points.

SPARSE_GRID_HERMITE_WEIGHT computes Hermite sparse grid weights.

SPARSE_GRID_HERMITE_WRITE writes a Hermite sparse grid rule to files.

TIMESTAMP prints the current YMDHMS date as a time stamp.

VEC_COLEX_NEXT3 generates vectors in colex order.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 16 May 2012.