Derivatives

Pydro provides both midpoint-to-node and midpoint-and-node-to-node [1] finite-difference schemes with up to tenth-order accuracy. Additionally, variable-order methods are provided where the order of the difference scheme used is adjusted locally at each grid point according to an input array of orders to use at each grid point.

class Derivative.Scheme

An enum of the various different differentiation routines that are supported.

MD = 1

Second-order finite-difference derivative [1]

\[\frac{\partial q_i}{\partial x}\approx \frac{q_{i+1/2}-q_{i-1/2}}{\Delta x}\]
MD10 = 5

Tenth-order finite-difference derivative using only face values [1]

\[\begin{split}\begin{align} \frac{\partial q_i}{\partial x}&\approx \frac{1}{\Delta x}\left[ \frac{19845}{16384}(q_{i+1/2}-q_{i-1/2})- \frac{735}{8192}(q_{i+3/2}-q_{i-3/2})\right. \\ &\left.+\frac{567}{40960}(q_{i+5/2}-q_{i-5/2})- \frac{405}{229376}(q_{i+7/2}-q_{i-7/2})\right. \\ &\left.+\frac{35}{294912}(q_{i+9/2}-q_{i-9/2})\right] \end{align}\end{split}\]
MD4 = 2

Fourth-order finite-difference derivative using only face values [1]

\[\frac{\partial q_i}{\partial x}\approx \frac{1}{\Delta x}\left[\frac{9}{8}(q_{i+1/2}-q_{i-1/2})- \frac{1}{24}(q_{i+3/2}-q_{i-3/2})\right]\]
MD6 = 3

Sixth-order finite-difference derivative using only face values [1]

\[\begin{split}\begin{align} \frac{\partial q_i}{\partial x}&\approx \frac{1}{\Delta x}\left[ \frac{75}{64}(q_{i+1/2}-q_{i-1/2})- \frac{25}{384}(q_{i+3/2}-q_{i-3/2})\right. \\ &\left.+\frac{3}{640}(q_{i+5/2}-q_{i-5/2})\right] \end{align}\end{split}\]
MD8 = 4

Eighth-order finite-difference derivative using only face values [1]

\[\begin{split}\begin{align} \frac{\partial q_i}{\partial x}&\approx \frac{1}{\Delta x}\left[ \frac{1225}{1024}(q_{i+1/2}-q_{i-1/2})- \frac{245}{3072}(q_{i+3/2}-q_{i-3/2})\right. \\ &\left.+\frac{49}{5120}(q_{i+5/2}-q_{i-5/2})- \frac{5}{7168}(q_{i+7/2}-q_{i-7/2})\right] \end{align}\end{split}\]
MDV = 6

Variable-order finite-difference derivative using only face values.

The order is adjusted according to the order_used argument passed to Derivative.differentiate_flux()

MND10 = 10

Tenth-order finite-difference derivative using face and node values (MND) [1]

\[\begin{split}\frac{\partial q_i}{\partial x}&\approx \frac{1}{\Delta x}\left[\frac{5}{3}(q_{i+1/2}-q_{i-1/2})- \frac{10}{21}(q_{i+1}-q_{i-1})\right. \\ &\left.+\frac{5}{42}(q_{i+3/2}-q_{i-3/2})- \frac{5}{252}(q_{i+2}-q_{i-2})\right. \\ &\left.+\frac{1}{630}(q_{i+5/2}-q_{i-5/2})\right]\end{split}\]
MND4 = 7

Fourth-order finite-difference derivative using face and node values (MND) [1]

\[\frac{\partial q_i}{\partial x}\approx \frac{1}{\Delta x}\left[\frac{4}{3}(q_{i+1/2}-q_{i-1/2})- \frac{1}{6}(q_{i+1}-q_{i-1})\right]\]
MND6 = 8

Sixth-order finite-difference derivative using face and node values (MND) [1]

\[\begin{split}\frac{\partial q_i}{\partial x}&\approx \frac{1}{\Delta x}\left[\frac{3}{2}(q_{i+1/2}-q_{i-1/2})- \frac{3}{10}(q_{i+1}-q_{i-1})\right. \\ &\left.+\frac{1}{30}(q_{i+3/2}-q_{i-3/2})\right]\end{split}\]
MND8 = 9

Eigth-order finite-difference derivative using face and node values (MND) [1]

\[\begin{split}\frac{\partial q_i}{\partial x}&\approx \frac{1}{\Delta x}\left[\frac{8}{5}(q_{i+1/2}-q_{i-1/2})- \frac{2}{5}(q_{i+1}-q_{i-1})\right. \\ &\left.+\frac{8}{105}(q_{i+3/2}-q_{i-3/2})- \frac{1}{140}(q_{i+2}-q_{i-2})\right]\end{split}\]
MNDV = 11

Variable-order finite-difference derivative using face and node values (MND).

The order is adjusted according to the order_used argument passed to Derivative.differentiate_flux()

Derivative.differentiate_flux(scheme, dx, numerical_fluxes, center_flux=None, order_used=None)

Compute the derivatives using the scheme and spacing dx.

Applies the finite-difference scheme given by the scheme argument to all variables in the numerical_fluxes.

Parameters
  • scheme (Derivative.Scheme) – The finite-difference scheme to use.

  • dx (double) – The grid spacing

  • numerical_fluxes (list) – The numerical fluxes at the cell faces.

  • center_flux (list) – The flux at the cell centers. Only needed for MND schemes.

  • order_used (list) – A list of int at each cell indicating the finite-difference order to use at the cell. Normally this order is determined by the reconstruction scheme.