Nodal Discontinuous Galerkin Methods: Algorithms, Analysis, and Applications