pydune.physics.dune.bedinstability_2D.temporal_pulsation#

temporal_pulsation(k, alpha, Ax, Ay, Bx, By, r, mu, delta)[source]#

Temporal pulsation \(\omega\) of sinusoidal periodic dunes of wavenumber \(k\) and orientation \(\alpha\) induced by a unidirectional constant wind through the linear dune instability. It is calculated elementwise.

Parameters:
  • k (scalar, numpy array) – Non dimensional wavenumber \(k\).

  • alpha (scalar, numpy array) – direction \(alpha\) in degree of the wavevector \(\boldsymbol{k}\). It is also the dune orientation measured with respect to the perpendicular to the wind direction .

  • Ax (function) – hydrodynamic coefficient in the \(x\)-direction \(\mathcal{A}_{x}\) (in-phase). A vectorized function taking k as first argument and alpha as second one.

  • Ay (function) – hydrodynamic coefficient in the \(y\)-direction \(\mathcal{A}_{y}\) (in-phase). A vectorized function taking k as first argument and alpha as second one.

  • Bx (function) – hydrodynamic coefficient in the \(x\)-direction \(\mathcal{B}_{x}\) (in-qudrature). A vectorized function taking k as first argument and alpha as second one.

  • By (function) – hydrodynamic coefficient in the \(y\)-direction \(\mathcal{B}_{y}\) (in-qudrature). A vectorized function taking k as first argument and alpha as second one.

  • r (scalar, numpy array) – velocity ratio \(u_{*}/u_{\rm d} = \sqrt{\theta/\theta_{d}}\)

  • mu (scalar, numpy array) – friction coefficient \(\mu\).

  • delta (scalar, numpy array) – cross-stream diffusion coefficient. Set to 0 if you want to recover the exact results of Andreotti et al. 2012, Gadal et al. 2019. See the PhD thesis “Dune emergence in multidirectional wind regimes” by Cyril Gadal, section 3.5.1, for additonal details.

Returns:

omega – temporal dune growth pulsation \(\omega\) calculated elementwise.

Return type:

scalar, numpy array

Notes

All quantities are made non dimensional:

  • length scales by the saturation length \(L_{\rm sat}\).

  • time scales by \(L_{\rm sat}^{2}/Q_{*}\).

Examples

>>> import numpy as np
>>> # Range of parameter exploration
>>> k, alpha = np.linspace(0.001, 1, 300), np.linspace(0, 360, 300)
>>> K, ALPHA = np.meshgrid(k, alpha)
>>> # Defining all parameters
>>> A0, B0 = 3.5, 2
>>> r, mu, delta = 1.5, 0.6, 0
>>> # Chosing a form for the hydrodynamic coefficients
>>> Ax = lambda k, alpha: A0*np.cos(2*np.pi*alpha/180)**2
>>> Bx = lambda k, alpha: B0*np.cos(2*np.pi*alpha/180)**2
>>> Ay = lambda k, alpha: 0.5*A0*np.cos(2*np.pi*alpha/180)*np.sin(2*np.pi*alpha/180)
>>> By = lambda k, alpha: 0.5*B0*np.cos(2*np.pi*alpha/180)*np.sin(2*np.pi*alpha/180)
>>> # Calculating growth function
>>> OMEGA = temporal_pulsation(K, ALPHA, Ax, Ay, Bx, By, r, mu, delta)

References

[1] Gadal, C., Narteau, C., Du Pont, S. C., Rozier, O., & Claudin, P. (2019). Incipient bedforms in a bidirectional wind regime. Journal of Fluid Mechanics, 862, 490-516. [2] Andreotti, B., Claudin, P., Devauchelle, O., Durán, O., & Fourrière, A. (2012). Bedforms in a turbulent stream: ripples, chevrons and antidunes. Journal of Fluid Mechanics, 690, 94-128.