inducer / inducer/grudge

Compute mass matrices accurately for tensor products

Open
#344 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
14
Forks
18
Avg merge
26m
Merged PRs (30d)
1

Description

Legendre-Gauss-Lobatto with $n$ points integrates polynomials up to degree $2n-3$ exactly. (I.e. for $p=1$ aka $n=2$, it's the trapezoidal rule, accurate to degree :drum: 1.) That's what we're currently using to form reference mass matrices, by :facepalm: automatic generalization from simplices. (I.e. I don't think anybody has looked at that code with tensor product goggles on.)

To do even just the reference bilinear form right, we need a degree of exactness of $2(n-1)=2n-2$ (because both polynomials have degree $n-1$). Legendre-Gauss is exact to degree $2n-1$, so that would work.

For Legendre-Gauss points, the 1D nodal mass matrix is just the diagonal matrix with the Gauss weights (because Gaussian quadrature is exact). That's a useful computational shortcut which we should exploit, but out of scope for this issue. I'll file a separate one.

It is common to use diagonal mass matrices also for LGL even though they are not exact in that case, this is called "lumping". (e.g. [ref](https://doi.org/10.1002/fld.3923)) That's mainly helpful for the inverse, cf. #343.

This affects time-stepping solvers via the mass inverse and the surface mass matrices.

This needs to be fixed in two spots:
- [ ] the actual mass matrix, and
- [ ] the face mass matrix.

cc @a-alveyblanc @mtcam @majosm @lukeolson

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.