40,790 research outputs found
An entropy stable discontinuous Galerkin method for the shallow water equations on curvilinear meshes with wet/dry fronts accelerated by GPUs
We extend the entropy stable high order nodal discontinuous Galerkin spectral
element approximation for the non-linear two dimensional shallow water
equations presented by Wintermeyer et al. [N. Wintermeyer, A. R. Winters, G. J.
Gassner, and D. A. Kopriva. An entropy stable nodal discontinuous Galerkin
method for the two dimensional shallow water equations on unstructured
curvilinear meshes with discontinuous bathymetry. Journal of Computational
Physics, 340:200-242, 2017] with a shock capturing technique and a positivity
preservation capability to handle dry areas. The scheme preserves the entropy
inequality, is well-balanced and works on unstructured, possibly curved,
quadrilateral meshes. For the shock capturing, we introduce an artificial
viscosity to the equations and prove that the numerical scheme remains entropy
stable. We add a positivity preserving limiter to guarantee non-negative water
heights as long as the mean water height is non-negative. We prove that
non-negative mean water heights are guaranteed under a certain additional time
step restriction for the entropy stable numerical interface flux. We implement
the method on GPU architectures using the abstract language OCCA, a unified
approach to multi-threading languages. We show that the entropy stable scheme
is well suited to GPUs as the necessary extra calculations do not negatively
impact the runtime up to reasonably high polynomial degrees (around ). We
provide numerical examples that challenge the shock capturing and positivity
properties of our scheme to verify our theoretical findings
Hardware-aware block size tailoring on adaptive spacetree grids for shallow water waves.
Spacetrees are a popular formalism to describe dynamically adaptive Cartesian grids. Though they directly yield an
adaptive spatial discretisation, i.e. a mesh, it is often more efficient to augment them by regular Cartesian blocks embedded into the spacetree leaves. This facilitates stencil kernels working efficiently on homogeneous data chunks. The choice of a proper block size, however, is delicate. While large block sizes foster simple loop parallelism, vectorisation, and lead to branch-free compute kernels, they bring along disadvantages. Large blocks restrict the granularity of adaptivity and hence increase the memory footprint and lower the numerical-accuracy-per-byte efficiency. Large block sizes also reduce the block-level concurrency that can be used for dynamic load balancing. In the present paper, we therefore propose a spacetree-block coupling that can dynamically tailor
the block size to the compute characteristics. For that purpose, we allow different block sizes per spacetree node. Groups of blocks of the same size are identied automatically
throughout the simulation iterations, and a predictor function triggers the replacement of these blocks by one huge, regularly rened block. This predictor can pick up hardware characteristics while the dynamic adaptivity of the fine grid mesh is not constrained. We study such characteristics with a state-of-the-art shallow water solver and examine proper block size choices on AMD Bulldozer and Intel Sandy Bridge processors
- …