An introduction to the analysis and
(MATLAB) implementation of Sparse Grid Finite Element Methods
(arXiv:1511.07193).

by Stephen Russell and Niall Madden

This page contains links to MATLAB source code that computes solutions to the partial differential equations: \[ -\Delta u +bu=f(x,y) \quad \text{in }\Omega :=(0,1)^2, \] \[ u=0 \quad \text{on } \partial \Omega. \]

Three related schemes are used:

  1. A classical Galerkin finite element method with bilinear elements;
  2. A two-scale sparse grid finite element method;
  3. A multi-scale spare grid finite element method.

All the code is written in MATLAB, and uses the Chebfun toolbox to simplify some calculations. With some minor adjustments, the calls to Chebfun may be by-passed, and so resulting in code that will run on both MATLAB and Octave.

For more information, see

Russell, Stephen and Niall Madden. "An Introduction to the Analysis and Implementation of Sparse Grid Finite Element Methods" Computational Methods in Applied Mathematics, 17(2). (2017): 299-322. doi:10.1515/cmam-2016-0042 .

MATLAB Source Code

DOI

Cite this code as

Stephen Russell and Niall Madden. (2016). niallmadden/SparseGrids: Sparse Grid FEM. Zenodo. http://doi.org/10.5281/zenodo.154427.

Abstract

The goal of this article is to present elementary approaches to the analysis and programming of sparse grid finite element methods. This family of schemes can compute accurate solutions to partial differential equations, but using far fewer degrees of freedom than their classical counterparts. After a brief discussion of the classical Galerkin finite element method with bilinear elements, we give a short analysis of what is probably the simplest sparse grid method: the two-scale technique of Lin et al. (2001). We then demonstrate how to extend this to a multiscale sparse grid method. This method is equivalent to the hierarchical basis approach, as described in, e.g., by Bungartz and Griebel (2004). However, by presenting it as an extension of the two-scale method, we can give an elementary treatment of its analysis and implementation. For each method considered, we provide MATLAB code for the implementation, and a comparison of accuracy and computational costs.