\[\newcommand{\half}{\frac{1}{2}} \newcommand{\nph}{{n + \half}} \newcommand{\nmh}{{n - \frac{1}{2}}} \newcommand{\iphj}{{i+\frac{1}{2},j,k}} \newcommand{\ijph}{{i,j+\frac{1}{2}},k} \newcommand{\imhj}{{i-\frac{1}{2},j,k}} \newcommand{\ijmh}{{i,j-\frac{1}{2}},k} \newcommand{\ijkmh}{{i,j,k-\frac{1}{2}}} \newcommand{\ijkph}{{i,j,k+\frac{1}{2}}} \newcommand{\grad}{\nabla} \newcommand{\del}{\nabla} \newcommand{\AN}{[(U \cdot \nabla)U]^{n+\frac{1}{2}}} \newcommand{\npk}{{n + \frac{p+\half}{R}}} \newcommand{\nak}{{n + \frac{p}{R}}} \newcommand{\nmk}{{n + \frac{p-\half}{R}}} \newcommand{\iph}{i+\half} \newcommand{\imh}{i-\half} \newcommand{\ipmh}{i\pm\half} \newcommand{\jph}{j+\half} \newcommand{\jmh}{j-\half} \newcommand{\jpmh}{j\pm\half} \newcommand{\kph}{k+\half} \newcommand{\kmh}{k-\half} \newcommand{\GMAC}{C \rightarrow E} \newcommand{\DMAC}{E \rightarrow C} \newcommand{\U}{\boldsymbol{U}} \newcommand{\F}{\boldsymbol{F}} \newcommand{\dt}{\Delta t} \newcommand{\shalf}{\sfrac{1}{2}} \newcommand\hathat[1]{\widehat{\widehat{#1}}} \newcommand\hairbow[1]{\overset{\bowtie}{#1}} \newcommand\widebreve[1]{\overset{\smile}{#1}} \newcommand{\vol}{\mathcal{V}} \newcommand{\area}{\mathcal{A}}\]

BDS Algorithm

The Bell-Dawson-Shubin (BDS) algorithm is a higher order Godunov method for scalar conservation laws in multiple dimensions. Satisfying the maximum principal for constant coefficient linear advection, the BDS routine provides accurate resolution for smooth problems while avoiding undershoot and overshoot for non-smooth profiles. Additional details and comparisons to other schemes can be found in [Nonaka et al., 2011] and references therein.

This implementation of BDS closely follows the Godunov approach and leverages some of the same code. The difference appears in the computation of edge states given face-centered velocities, i.e. the Post-MAC computation. Currently, periodic, Dirichlet, and outflow (extrapolation) boundary conditions are supported. Embedded boundaries are not supported within BDS at this time. If additional functionality is desired, or if questions remain after reading this guide, further help is available by submitting an issue through Github

Pre-MAC

The BDS routine follows the Godunov PLM method to extrapolate velocities to cell faces, see Godunov Methods: Pre-MAC.

Post-MAC

In the notation below, \(s\) is a scalar field of the form \(s=s(x,y,z,t)\) and \({\U}=(u,v,w)\) represents a known face-centered velocity field, typically the projected velocity field from the Pre-MAC step (\(\U^{MAC}\)). \(s^n_{ijk}\) represents the average value of \(s\) over the cell with index \((ijk)\) at time \(t^n\). At each face the normal velocity (e.g., \(u_{i+1/2,j,k}\)) is assumed constant over the time step.

Obtaining the edge states is a two step process:

  • Step 1: Construct a limited piecewise trilinear (bilinear in 2D) representation of the solution in each grid cell of the form,

\[\begin{split}\begin{eqnarray} s_{ijk}(x,y,z) &=& s_{ijk} + s_{x,ijk}\cdot(x-x_i) + s_{y,ijk}\cdot(y-y_j) + s_{z,ijk}\cdot(z-z_k) \nonumber \\ && + s_{xy,ijk}\cdot(x-x_i)(y-y_j) + s_{xz,ijk}\cdot(x-x_i)(z-z_k) \nonumber \\ && + s_{yz,ijk}\cdot(y-y_j)(z-z_k) + s_{xyz,ijk}\cdot(x-x_i)(y-y_j)(z-z_k). \end{eqnarray}\end{split}\]
  • Step 2: Construct edge states \(s_{i+1/2,j,k}\), etc. by integrating the limited piecewise trilinear (bilinear in 2D) profiles over the space-time region determined by the characteristic domain of dependence of the face. We enforce no inflow at an outflow face as described in the post-MAC Boundary Conditions Section.