# Modal basis functions¶

Gkyl uses *orthonormal modal basis functions*. The basis functions are
defined on a d-dimensional hypercube \(I_d = [-1,1]^d\). Let
\(\psi_k(\mathbf{x})\), \(k=1,\ldots,N\), with \(\psi_1\)
a constant, be the basis. Then the basis satisfy

where the angle brackets indicate integration over the hypercube \(I_d\). In this note I describe some common operations that are needed while working with these basis sets. (All of this relatively straightforward stuff, but it is good to write it down somewhere).

Contents

## Pre-computed basis functions¶

Precomputed modal basis sets on phase-space for 1x1v, 1x2v, 1x3v, 2x2v, 2x3v, 3x2v, and 3x3v phase-space are stored as Lisp files in gkyl/cas-scripts/basis-precalc directory. Both maximal-order and serendipity basis sets are computed for polynomial orders 1, 2, 3 and 4. Computing orthonormal basis set in higher dimensions is time-consuming and so these pre-computed lisp files should be used. For example:

```
load("basis-precalc/basisSer2x3v")
```

will load the serendipity basis sets in 2x3v phase-space.

NOTE: please read Maxima notes to get this command to work.

The files define the following Maxima variables:

```
varsC, varsP, basisC, basisP
```

The varsC are the configuration-space independent variables (\(x,y\) in 2X) and varsP are the phase-space independent variables (\(x,y,vx,vy,vz\) in 2X3V). The i-th entry in the list basisC and basisP contain the basis sets of polynomial order \(i\). Hence, to access the phase-space basis for \(p=2\) do something like:

```
basisP2 : basisP[2].
```

## Computing cell averages¶

Consider some function that is expanded in the basis:

where \(\boldsymbol{\eta}(\mathbf{x})\) maps the physical space to logical space. Then, the cell-average is defined as

where \(\psi_1\) is constant. By orthonormality we have \(\langle \psi_1^2 \rangle = 1\) which indicates that

This means that the cell-average is given by

## Convolution of two functions¶

Now consider two functions, \(f\) and \(g\) that are both expanded in the basis. The inner product of the two functions is:

Note the the bar on the LHS, i.e. this expression gives the *average*
of the inner product on a single cell. Now, as the basis functions are
orthonormal, this leads to the particularly simple expression

This makes it very easy to compute things like electromagnetic energy, and other quadratic quantities.