pydune.physics.dune.bedinstability_2D.temporal_growth_rate_multi#

temporal_growth_rate_multi(k, alpha, Ax, Ay, Bx, By, r, mu, delta, theta, N, axis=-1)[source]#

Temporal growth rate \(\sigma\) of sinusoidal periodic dunes of wavenumber \(k\) and orientation \(\alpha\) induced by succesion of winds of various orientations and strengths. It is calculated elementwise, and then averaged along axis, which should correspond to the time axis.

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}}\). Here, it is the same for both winds.

  • 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.

  • theta (numpy array) – wind directions in degrees.

  • N (numpy array) – mass transport ratios between the two wind directions.

  • axis (int) – axis along which the sum is performed (the default is -1).

Returns:

sigma – temporal growth rate.

Return type:

scalar, numpy array

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
>>> theta, N = 360*np.random.random((100, )), np.random.random((100, ))
>>> # 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
>>> SIGMA = temporal_growth_rate_multi(K[..., None], ALPHA[..., None], Ax, Ay, Bx, By, r, mu, delta, theta[None, None, :], N[None, None, :])

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.