Overview
This package contains routines to initialize reference element operators, physical mesh arrays, and connectivity arrays for nodal DG methods. The codes are roughly based on Nodal Discontinuous Galerkin Methods by Hesthaven and Warburton (2007).
StartUpDG.jl is intended mainly to aid in the implementation of rhs! functions for DG discretizations of time-dependent partial differential equations, which can then be used with the OrdinaryDiffEq.jl library to evolve a solution in time. For example, it has been used in most publications since 2020 by the authors Jesse Chan and Yimin Lin, as well as in the following external publications:
- Efficient entropy-stable discontinuous spectral-element methods using tensor-product summation-by-parts operators on triangles and tetrahedra by Montoya and Zingg (2024).
- Injected Dirichlet boundary conditions for general diagonal-norm SBP operators by Gjesteland, Del Rey Fernández, and Svärd (2023).
It is also used in the Trixi.jl library.
A short example
using StartUpDG
# polynomial degree and mesh size
N = 3
K1D = 8
# init ref element and mesh
rd = RefElemData(Tri(), N)
VXY, EToV = uniform_mesh(Tri(), K1D)
md = MeshData(VXY, EToV, rd)
# Define a function by interpolation
(; x, y ) = md
u = @. exp(-10 * (x^2 + y^2))
# Compute derivatives using geometric mapping + chain rule
(; Dr, Ds ) = rd
(; rxJ, sxJ, J ) = md
dudx = (rxJ .* (Dr * u) + sxJ .* (Ds * u)) ./ JReferencing
If you use StartUpDG.jl for your research, please cite it using the DOI . A corresponding bibtex entry is
@misc{chan2026startupdg,
title={{StartUpDG.jl{}: Initializes and sets up reference elements and physical meshes for {DG}},
author={Chan, Jesse and Knapp, David and McCallum, Mason and
Ranocha, Hendrik and Taylor, Christina G. and Baasch, Philipp
and Doehring, Daniel and Markert, Johannes and Lampert, Joshua
and Montoya, Tristan and Wang, Vincent X.},
year={2026},
howpublished={\url{https://github.com/jlchan/StartUpDG.jl}},
doi={10.5281/zenodo.19906078}
}