Formula reference: turbulence

Generated from the docstrings of vaft.formula.turbulence: 5 public functions. Each entry is what vaft.formula.describe("turbulence.<name>") prints. All formula categories

Overview

The transparent reduced description of turbulence self-regulation by zonal flows (issue #1820): fluctuation intensity $N$ (the prey) grows at an effective linear rate and is sheared apart by the zonal flow; zonal-flow intensity $E$ (the predator) is driven by the turbulence through the Reynolds stress and decays at an effective damping rate. The functions here are the model’s analytic properties only – right-hand side, fixed point, conserved quantity, small-amplitude period and response lag. Integrating orbits, extracting $N$ and $E$ from gyrokinetic fields and fitting the coefficients belong to vaft.process.

The model is a reference against which a gyrokinetic time series can be tested, not a claim that every nonlinear state obeys it: a bursty trace may equally come from tertiary instability, profile relaxation or noise.

SymbolMeaningUnit
Nturbulence (non-zonal fluctuation) intensityarbitrary, > 0
Ezonal-flow intensityarbitrary, > 0
gamma_effeffective turbulence growth rate1/time
gamma_Zeffective zonal-flow damping rate1/time
c1suppression of turbulence by the zonal flow1/(time * E)
c2drive of the zonal flow by the turbulence1/(time * N)
\[\dot N = \gamma_\mathrm{eff} N - c_1 N E, \qquad \dot E = c_2 N E - \gamma_Z E\]

Any consistent time unit is accepted (s, $a/c_s$, …): the rates set it, and every returned time is in the same unit. $N$ and $E$ carry no fixed normalisation. Rescaling $N \to \lambda N$ maps $c_2 \to c_2/\lambda$, and $E \to \mu E$ maps $c_1 \to c_1/\mu$; the rates and the dynamics are unchanged. A fitted $c_1, c_2$ therefore means nothing without the definition of the intensities it was fitted to.

Functions

predator_prey_fixed_pointPositive (coexistence) fixed point of the predator–prey model. Convention
predator_prey_invariantConserved quantity of the classical predator–prey model. Convention
predator_prey_periodSmall-amplitude oscillation period about the positive fixed point. Convention
predator_prey_response_lagSmall-amplitude delay of the zonal-flow peak after the turbulence peak. Convention
predator_prey_rhsTime derivatives of the turbulence–zonal-flow predator–prey model. Convention

predator_prey_fixed_point

Convention-sensitive source
predator_prey_fixed_point(gamma_eff, coupling_suppression, coupling_drive, gamma_zonal)
Show source vaft/formula/turbulence.py, lines 166–227
def predator_prey_fixed_point(gamma_eff, coupling_suppression, coupling_drive, gamma_zonal):
    r"""Positive (coexistence) fixed point of the predator--prey model.

    $$N_* = \frac{\gamma_Z}{c_2}, \qquad E_* = \frac{\gamma_\mathrm{eff}}{c_1}$$

    Parameters
    ----------
    gamma_eff : float or array-like
        Effective turbulence growth rate, positive [1/time].
    coupling_suppression : float or array-like
        Suppression coefficient $c_1$, positive [1/(time E)].
    coupling_drive : float or array-like
        Drive coefficient $c_2$, positive [1/(time N)].
    gamma_zonal : float or array-like
        Effective zonal-flow damping rate, positive [1/time].

    Returns
    -------
    turbulence_star : float or np.ndarray
        $N_*$ [N].
    zonal_star : float or np.ndarray
        $E_*$ [E].

    Raises
    ------
    ValueError
        Non-finite input or a non-positive rate or coupling (the positive
        fixed point does not exist then).

    Convention
    ----------
    The model has two equilibria: the trivial $(0, 0)$ and this positive one.
    Only the positive one is returned.

    Physical interpretation
    -----------------------
    The turbulence level at which zonal-flow drive balances its damping, and
    the zonal-flow level at which shear suppression balances the linear drive.
    It is the time average of $N$ and $E$ over any closed orbit.

    Assumptions
    -----------
    The classical model of :func:`predator_prey_rhs`.

    Validity
    --------
    The positive fixed point of the classical model is a centre: neutrally
    stable, surrounded by closed orbits, and *not* asymptotically stable.  A
    trajectory does not relax to it; damping or saturation terms (not in this
    model) are needed for that.

    References
    ----------
    .. [1] P. H. Diamond, S.-I. Itoh, K. Itoh and T. S. Hahm,
           Plasma Phys. Control. Fusion 47 (2005) R35.
    """
    g = _rate(gamma_eff, "gamma_eff", strict=True)
    c1 = _rate(coupling_suppression, "coupling_suppression", strict=True)
    c2 = _rate(coupling_drive, "coupling_drive", strict=True)
    gz = _rate(gamma_zonal, "gamma_zonal", strict=True)
    g, c1, c2, gz = np.broadcast_arrays(g, c1, c2, gz)
    return _out(gz / c2), _out(g / c1)

Positive (coexistence) fixed point of the predator–prey model.

\[N_* = \frac{\gamma_Z}{c_2}, \qquad E_* = \frac{\gamma_\mathrm{eff}}{c_1}\]
NameTypeUnitDescription
gamma_efffloat or array-like1/time

Effective turbulence growth rate, positive.

coupling_suppressionfloat or array-like1/(time E)

Suppression coefficient $c_1$, positive.

coupling_drivefloat or array-like1/(time N)

Drive coefficient $c_2$, positive.

gamma_zonalfloat or array-like1/time

Effective zonal-flow damping rate, positive.

Returns
turbulence_starfloat or np.ndarrayN

$N_*$.

zonal_starfloat or np.ndarrayE

$E_*$.

Convention

The model has two equilibria: the trivial $(0, 0)$ and this positive one. Only the positive one is returned.

Raises

  • ValueError Non-finite input or a non-positive rate or coupling (the positive fixed point does not exist then).
Physical interpretation · Assumptions · Validity · References

Physical interpretation

The turbulence level at which zonal-flow drive balances its damping, and the zonal-flow level at which shear suppression balances the linear drive. It is the time average of $N$ and $E$ over any closed orbit.

Assumptions

The classical model of predator_prey_rhs.

Validity

The positive fixed point of the classical model is a centre: neutrally stable, surrounded by closed orbits, and not asymptotically stable. A trajectory does not relax to it; damping or saturation terms (not in this model) are needed for that.

References

  1. P. H. Diamond, S.-I. Itoh, K. Itoh and T. S. Hahm, Plasma Phys. Control. Fusion 47 (2005) R35.

predator_prey_invariant

Convention-sensitive source
predator_prey_invariant(turbulence, zonal, gamma_eff, coupling_suppression, coupling_drive, gamma_zonal)
Show source vaft/formula/turbulence.py, lines 230–294
def predator_prey_invariant(turbulence, zonal, gamma_eff, coupling_suppression, coupling_drive, gamma_zonal):
    r"""Conserved quantity of the classical predator--prey model.

    $$H(N, E) = c_2 N - \gamma_Z \ln N + c_1 E - \gamma_\mathrm{eff} \ln E$$

    Parameters
    ----------
    turbulence : float or array-like
        Turbulence intensity $N$, strictly positive [arbitrary].
    zonal : float or array-like
        Zonal-flow intensity $E$, strictly positive [arbitrary].
    gamma_eff : float or array-like
        Effective turbulence growth rate, positive [1/time].
    coupling_suppression : float or array-like
        Suppression coefficient $c_1$, positive [1/(time E)].
    coupling_drive : float or array-like
        Drive coefficient $c_2$, positive [1/(time N)].
    gamma_zonal : float or array-like
        Effective zonal-flow damping rate, positive [1/time].

    Returns
    -------
    float or np.ndarray
        $H$ [1/time].

    Raises
    ------
    ValueError
        Non-finite input, non-positive intensity, or a non-positive rate or
        coupling.

    Convention
    ----------
    The logarithms take $N$ and $E$ in whatever unit they are given, so $H$ is
    defined up to an additive constant; only differences of $H$ along or
    between orbits are meaningful.

    Physical interpretation
    -----------------------
    Each closed orbit is a level set of $H$; its minimum
    $H(N_*, E_*)$ marks the fixed point.  The amount by which a measured
    trajectory changes $H$ measures how far it departs from classical
    predator--prey dynamics.

    Assumptions
    -----------
    The classical model of :func:`predator_prey_rhs`; $dH/dt = 0$ along its
    exact trajectories.

    Validity
    --------
    Conserved only for the undamped two-variable model; any saturation,
    noise or third variable makes $H$ drift.

    References
    ----------
    .. [1] M. Leconte, A. Masson and L. Qi, Phys. Plasmas 29 (2022) 022302.
    """
    n = _intensity(turbulence, "turbulence", strict=True)
    e = _intensity(zonal, "zonal", strict=True)
    g = _rate(gamma_eff, "gamma_eff", strict=True)
    c1 = _rate(coupling_suppression, "coupling_suppression", strict=True)
    c2 = _rate(coupling_drive, "coupling_drive", strict=True)
    gz = _rate(gamma_zonal, "gamma_zonal", strict=True)
    return _out(c2 * n - gz * np.log(n) + c1 * e - g * np.log(e))

Conserved quantity of the classical predator–prey model.

\[H(N, E) = c_2 N - \gamma_Z \ln N + c_1 E - \gamma_\mathrm{eff} \ln E\]
NameTypeUnitDescription
turbulencefloat or array-likearbitrary

Turbulence intensity $N$, strictly positive.

zonalfloat or array-likearbitrary

Zonal-flow intensity $E$, strictly positive.

gamma_efffloat or array-like1/time

Effective turbulence growth rate, positive.

coupling_suppressionfloat or array-like1/(time E)

Suppression coefficient $c_1$, positive.

coupling_drivefloat or array-like1/(time N)

Drive coefficient $c_2$, positive.

gamma_zonalfloat or array-like1/time

Effective zonal-flow damping rate, positive.

Returns
—float or np.ndarray1/time

$H$.

Convention

The logarithms take $N$ and $E$ in whatever unit they are given, so $H$ is defined up to an additive constant; only differences of $H$ along or between orbits are meaningful.

Raises

  • ValueError Non-finite input, non-positive intensity, or a non-positive rate or coupling.
Physical interpretation · Assumptions · Validity · References

Physical interpretation

Each closed orbit is a level set of $H$; its minimum $H(N_, E_)$ marks the fixed point. The amount by which a measured trajectory changes $H$ measures how far it departs from classical predator–prey dynamics.

Assumptions

The classical model of predator_prey_rhs; $dH/dt = 0$ along its exact trajectories.

Validity

Conserved only for the undamped two-variable model; any saturation, noise or third variable makes $H$ drift.

References

  1. M. Leconte, A. Masson and L. Qi, Phys. Plasmas 29 (2022) 022302.

predator_prey_period

Convention-sensitive source
predator_prey_period(gamma_eff, gamma_zonal, *, approximation='linearized')
Show source vaft/formula/turbulence.py, lines 297–350
def predator_prey_period(gamma_eff, gamma_zonal, *, approximation="linearized"):
    r"""Small-amplitude oscillation period about the positive fixed point.

    $$\omega_\mathrm{PP} = \sqrt{\gamma_\mathrm{eff}\gamma_Z}, \qquad
      T_\mathrm{lin} = \frac{2\pi}{\sqrt{\gamma_\mathrm{eff}\gamma_Z}}$$

    Parameters
    ----------
    gamma_eff : float or array-like
        Effective turbulence growth rate, positive [1/time].
    gamma_zonal : float or array-like
        Effective zonal-flow damping rate, positive [1/time].
    approximation : {"linearized"}, optional
        Only the linearized period is implemented [-].

    Returns
    -------
    float or np.ndarray
        $T_\mathrm{lin}$ [time].

    Raises
    ------
    ValueError
        Non-finite input, a non-positive rate, or an unknown approximation.

    Convention
    ----------
    The same time unit as the rates.  The couplings $c_1, c_2$ drop out of the
    linearized period.

    Physical interpretation
    -----------------------
    The time for one turbulence burst -- zonal-flow growth -- turbulence
    quench -- zonal-flow decay cycle for a small excursion about the fixed
    point.

    Assumptions
    -----------
    Linearization of :func:`predator_prey_rhs` about $(N_*, E_*)$.

    Validity
    --------
    Exact only in the small-amplitude limit.  Finite-amplitude
    Lotka--Volterra orbits have amplitude-dependent periods that grow with
    the orbit size; this is not the period of a general orbit.

    References
    ----------
    .. [1] M. Leconte, A. Masson and L. Qi, Phys. Plasmas 29 (2022) 022302.
    """
    _approximation(approximation)
    g = _rate(gamma_eff, "gamma_eff", strict=True)
    gz = _rate(gamma_zonal, "gamma_zonal", strict=True)
    return _out(2.0 * np.pi / np.sqrt(g * gz))

Small-amplitude oscillation period about the positive fixed point.

\[\omega_\mathrm{PP} = \sqrt{\gamma_\mathrm{eff}\gamma_Z}, \qquad T_\mathrm{lin} = \frac{2\pi}{\sqrt{\gamma_\mathrm{eff}\gamma_Z}}\]
NameTypeUnitDescription
gamma_efffloat or array-like1/time

Effective turbulence growth rate, positive.

gamma_zonalfloat or array-like1/time

Effective zonal-flow damping rate, positive.

approximation{"linearized"}, optional-

Only the linearized period is implemented.

Returns
—float or np.ndarraytime

$T_\mathrm{lin}$.

Convention

The same time unit as the rates. The couplings $c_1, c_2$ drop out of the linearized period.

Raises

  • ValueError Non-finite input, a non-positive rate, or an unknown approximation.
Physical interpretation · Assumptions · Validity · References

Physical interpretation

The time for one turbulence burst – zonal-flow growth – turbulence quench – zonal-flow decay cycle for a small excursion about the fixed point.

Assumptions

Linearization of predator_prey_rhs about $(N_, E_)$.

Validity

Exact only in the small-amplitude limit. Finite-amplitude Lotka–Volterra orbits have amplitude-dependent periods that grow with the orbit size; this is not the period of a general orbit.

References

  1. M. Leconte, A. Masson and L. Qi, Phys. Plasmas 29 (2022) 022302.

predator_prey_response_lag

Convention-sensitive source
predator_prey_response_lag(gamma_eff, gamma_zonal, *, approximation='linearized')
Show source vaft/formula/turbulence.py, lines 353–405
def predator_prey_response_lag(gamma_eff, gamma_zonal, *, approximation="linearized"):
    r"""Small-amplitude delay of the zonal-flow peak after the turbulence peak.

    $$\tau_\mathrm{lag} = \frac{\pi}{2\sqrt{\gamma_\mathrm{eff}\gamma_Z}} = \frac{T_\mathrm{lin}}{4}$$

    Parameters
    ----------
    gamma_eff : float or array-like
        Effective turbulence growth rate, positive [1/time].
    gamma_zonal : float or array-like
        Effective zonal-flow damping rate, positive [1/time].
    approximation : {"linearized"}, optional
        Only the linearized lag is implemented [-].

    Returns
    -------
    float or np.ndarray
        $\tau_\mathrm{lag}$ [time].

    Raises
    ------
    ValueError
        Non-finite input, a non-positive rate, or an unknown approximation.

    Convention
    ----------
    Positive when the zonal flow (predator) peaks after the turbulence (prey);
    the same time unit as the rates.

    Physical interpretation
    -----------------------
    Linearizing about the fixed point gives $\delta\dot N = -c_1N_*\delta E$
    and $\delta\dot E = c_2E_*\delta N$, so $\delta E$ is $\delta N$ shifted by
    a quarter period: the zonal flow builds up while the turbulence is high
    and peaks when the turbulence, already falling, crosses its mean level
    and is collapsing fastest.

    Assumptions
    -----------
    Linearization of :func:`predator_prey_rhs` about $(N_*, E_*)$.

    Validity
    --------
    $T/4$ holds in the small-amplitude limit only; finite-amplitude orbits
    have a different, amplitude-dependent delay.  A delay measured from data
    belongs in :mod:`vaft.process`.

    References
    ----------
    .. [1] M. Leconte, A. Masson and L. Qi, Phys. Plasmas 29 (2022) 022302.
    """
    _approximation(approximation)
    return _out(0.25 * np.asarray(predator_prey_period(gamma_eff, gamma_zonal), dtype=float))

Small-amplitude delay of the zonal-flow peak after the turbulence peak.

\[\tau_\mathrm{lag} = \frac{\pi}{2\sqrt{\gamma_\mathrm{eff}\gamma_Z}} = \frac{T_\mathrm{lin}}{4}\]
NameTypeUnitDescription
gamma_efffloat or array-like1/time

Effective turbulence growth rate, positive.

gamma_zonalfloat or array-like1/time

Effective zonal-flow damping rate, positive.

approximation{"linearized"}, optional-

Only the linearized lag is implemented.

Returns
—float or np.ndarraytime

$\tau_\mathrm{lag}$.

Convention

Positive when the zonal flow (predator) peaks after the turbulence (prey); the same time unit as the rates.

Raises

  • ValueError Non-finite input, a non-positive rate, or an unknown approximation.
Physical interpretation · Assumptions · Validity · References

Physical interpretation

Linearizing about the fixed point gives $\delta\dot N = -c_1N_\delta E$ and $\delta\dot E = c_2E_\delta N$, so $\delta E$ is $\delta N$ shifted by a quarter period: the zonal flow builds up while the turbulence is high and peaks when the turbulence, already falling, crosses its mean level and is collapsing fastest.

Assumptions

Linearization of predator_prey_rhs about $(N_, E_)$.

Validity

$T/4$ holds in the small-amplitude limit only; finite-amplitude orbits have a different, amplitude-dependent delay. A delay measured from data belongs in vaft.process.

References

  1. M. Leconte, A. Masson and L. Qi, Phys. Plasmas 29 (2022) 022302.

predator_prey_rhs

Convention-sensitive source
predator_prey_rhs(turbulence, zonal, gamma_eff, coupling_suppression, coupling_drive, gamma_zonal)
Show source vaft/formula/turbulence.py, lines 94–163
def predator_prey_rhs(turbulence, zonal, gamma_eff, coupling_suppression, coupling_drive, gamma_zonal):
    r"""Time derivatives of the turbulence--zonal-flow predator--prey model.

    $$\dot N = \gamma_\mathrm{eff}N - c_1 N E, \qquad \dot E = c_2 N E - \gamma_Z E$$

    Parameters
    ----------
    turbulence : float or array-like
        Turbulence intensity $N$, non-negative [arbitrary].
    zonal : float or array-like
        Zonal-flow intensity $E$, non-negative [arbitrary].
    gamma_eff : float or array-like
        Effective turbulence growth rate $\gamma_\mathrm{eff}$, non-negative [1/time].
    coupling_suppression : float or array-like
        Suppression coefficient $c_1$, non-negative [1/(time E)].
    coupling_drive : float or array-like
        Drive coefficient $c_2$, non-negative [1/(time N)].
    gamma_zonal : float or array-like
        Effective zonal-flow damping rate $\gamma_Z$, non-negative [1/time].

    Returns
    -------
    d_turbulence_dt : float or np.ndarray
        $\dot N$ [N/time].
    d_zonal_dt : float or np.ndarray
        $\dot E$ [E/time].

    Raises
    ------
    ValueError
        Non-finite input, negative intensity, or a negative rate or coupling.

    Convention
    ----------
    Arguments broadcast with NumPy rules; the time unit is the one the rates
    are given in.

    Physical interpretation
    -----------------------
    $\gamma_\mathrm{eff}N$ is linear drive; $-c_1NE$ is shear decorrelation of
    the turbulence by the zonal flow; $c_2NE$ is Reynolds-stress drive of the
    zonal flow; $-\gamma_ZE$ is its collisional (or other) damping.

    Assumptions
    -----------
    Two scalar intensities stand for the whole spectrum; the couplings are
    constants; no saturation of $N$ in the absence of zonal flow and no
    zonal-flow self-interaction.

    Validity
    --------
    A reduced model for weakly to moderately driven turbulence near marginal
    stability, where zonal flows dominate saturation.  Away from that regime
    (strong drive, tertiary instability, profile relaxation) it is a
    reference, not a prediction.

    References
    ----------
    .. [1] P. H. Diamond, Y.-M. Liang, B. A. Carreras and P. W. Terry,
           Phys. Rev. Lett. 72 (1994) 2565.
    .. [2] S. Kobayashi, O. D. Gurcan and P. H. Diamond, Phys. Plasmas 22 (2015) 090702.
    """
    n = _intensity(turbulence, "turbulence", strict=False)
    e = _intensity(zonal, "zonal", strict=False)
    g = _rate(gamma_eff, "gamma_eff", strict=False)
    c1 = _rate(coupling_suppression, "coupling_suppression", strict=False)
    c2 = _rate(coupling_drive, "coupling_drive", strict=False)
    gz = _rate(gamma_zonal, "gamma_zonal", strict=False)
    n, e, g, c1, c2, gz = np.broadcast_arrays(n, e, g, c1, c2, gz)
    return _out(g * n - c1 * n * e), _out(c2 * n * e - gz * e)

Time derivatives of the turbulence–zonal-flow predator–prey model.

\[\dot N = \gamma_\mathrm{eff}N - c_1 N E, \qquad \dot E = c_2 N E - \gamma_Z E\]
NameTypeUnitDescription
turbulencefloat or array-likearbitrary

Turbulence intensity $N$, non-negative.

zonalfloat or array-likearbitrary

Zonal-flow intensity $E$, non-negative.

gamma_efffloat or array-like1/time

Effective turbulence growth rate $\gamma_\mathrm{eff}$, non-negative.

coupling_suppressionfloat or array-like1/(time E)

Suppression coefficient $c_1$, non-negative.

coupling_drivefloat or array-like1/(time N)

Drive coefficient $c_2$, non-negative.

gamma_zonalfloat or array-like1/time

Effective zonal-flow damping rate $\gamma_Z$, non-negative.

Returns
d_turbulence_dtfloat or np.ndarrayN/time

$\dot N$.

d_zonal_dtfloat or np.ndarrayE/time

$\dot E$.

Convention

Arguments broadcast with NumPy rules; the time unit is the one the rates are given in.

Raises

  • ValueError Non-finite input, negative intensity, or a negative rate or coupling.
Physical interpretation · Assumptions · Validity · References

Physical interpretation

$\gamma_\mathrm{eff}N$ is linear drive; $-c_1NE$ is shear decorrelation of the turbulence by the zonal flow; $c_2NE$ is Reynolds-stress drive of the zonal flow; $-\gamma_ZE$ is its collisional (or other) damping.

Assumptions

Two scalar intensities stand for the whole spectrum; the couplings are constants; no saturation of $N$ in the absence of zonal flow and no zonal-flow self-interaction.

Validity

A reduced model for weakly to moderately driven turbulence near marginal stability, where zonal flows dominate saturation. Away from that regime (strong drive, tertiary instability, profile relaxation) it is a reference, not a prediction.

References

  1. P. H. Diamond, Y.-M. Liang, B. A. Carreras and P. W. Terry, Phys. Rev. Lett. 72 (1994) 2565.
  2. S. Kobayashi, O. D. Gurcan and P. H. Diamond, Phys. Plasmas 22 (2015) 090702.

results matching ""

    No results matching ""