mbtrack2.instability.ions module

Various calculations about ion trapping and instabilities in electron storage rings.

ion_cross_section(ring: Synchrotron, ion: str) float[source]

Compute the collisional ionization cross section.

Compute the inelastic collision cross section between a molecule or an atom by a relativistic electron using the relativistic Bethe asymptotic formula [1].

Values of M02 and C02 from [2-4] (values of constants are independent of beam energy).

Parameters

ring : Synchrotron object ion : str

Ion type.

Returns

sigmafloat

Cross section in [m**2].

References

[1] : M. Inokuti, “Inelastic collisions of fast charged particles with atoms and molecules-the bethe theory revisited”, Reviews of modern physics 43 (1971). [2] : P. F. Tavares, “Bremsstrahlung detection of ions trapped in the EPA electron beam”, Part. Accel. 43 (1993). [3] : A. G. Mathewson, S. Zhang, “Beam-gas ionisation cross sections at 7.0 TEV”, CERN Tech. rep. Vacuum-Technical-Note-96-01. https://cds.cern.ch/record/1489148/ [4] : F. Rieke and W. Prepejchal, “Ionization Cross Sections of Gaseous Atoms and Molecules for High-Energy Electrons and Positrons”, Phys. Rev. A 6, 1507 (1972).

ion_frequency(N: float, Lsep: float, sigmax: ndarray[tuple[int, ...], dtype[_ScalarType_co]], sigmay: ndarray[tuple[int, ...], dtype[_ScalarType_co]], ion: str = 'CO', dim: str = 'y', express: str = 'coupling') ndarray[tuple[int, ...], dtype[_ScalarType_co]][source]

Compute the ion oscillation frequnecy.

Parameters

Nfloat

Number of electrons per bunch.

Lsepfloat

Bunch spacing in [m].

sigmaxfloat or array

Horizontal beam size in [m].

sigmayfloat or array

Vertical beam size in [m].

ionstr, optional

Ion type. The default is “CO”.

dim“y” o “x”, optional

Dimension to consider. The default is “y”.

expressstr, optional

Expression to use to compute the ion oscillation frequency. The default is “coupling” corresponding to Gaussian electron and ion distributions with coupling [1]. Also possible is “no_coupling” corresponding to Gaussian electron and ion distributions without coupling [2].

Returns

ffloat or array

Ion oscillation frequencies in [Hz].

References

[1] : T. O. Raubenheimer and F. Zimmermann, “Fast beam-ion instability. I. linear theory and simulations”, Physical Review E 52 (1995). [2] : G. V. Stupakov, T. O. Raubenheimer, and F. Zimmermann, “Fast beam-ion instability. II. effect of ion decoherence”, Physical Review E 52 (1995).

fast_beam_ion(ring: Synchrotron, Nb: float, nb: float, Lsep: float, sigmax: float, sigmay: float, P: float, T: float, beta: float, model: str = 'linear', delta_omega: str = 0, ion: str = 'CO', dim: str = 'y') float[source]

Compute fast beam ion instability rise time [1].

Warning ! If model=”linear”, the rise time is an assymptotic grow time (i.e. y ~ exp(sqrt(t/tau))) [1]. If model=”decoherence”, the rise time is an e-folding time (i.e. y ~ exp(t/tau)) [2]. If model=”non-linear”, the rise time is a linear growth time (i.e. y ~ t/tau) [3].

The linear model assumes that [1]:

x,y << sigmax,sigmay

The decoherence model assumes that [2]:

Lsep << c / (2 * pi * ion_frequency) Lsep << c / (2 * pi * betatron_frequency)

The non-linear model assumes that [3]:

x,y >> sigmax,sigmay

Parameters

ring : Synchrotron object Nb : float

Number of electron per bunch.

nbfloat

Number of bunches.

Lsepfloat

Bunch spacing in [m].

sigmaxfloat

Horizontal beam size in [m].

sigmayfloat

Vertical beam size in [m].

Pfloat

Partial pressure of the molecular ion in [Pa].

Tfloat

Tempertature in [K].

betafloat

Average betatron function around the ring in [m].

modelstr, optional

If “linear”, use [1]. If “decoherence”, use [2]. If “non-linear”, use [3].

delta_omegafloat, optional

RMS variation of the ion oscillation angular frequnecy around the ring in [Hz].

ionstr, optional

Ion type. The default is “CO”.

dim“y” o “x”, optional

Dimension to consider. The default is “y”.

Returns

taufloat

Instability rise time in [s].

References

[1] : T. O. Raubenheimer and F. Zimmermann, “Fast beam-ion instability. I. linear theory and simulations”, Physical Review E 52 (1995). [2] : G. V. Stupakov, T. O. Raubenheimer, and F. Zimmermann, “Fast beam-ion instability. II. effect of ion decoherence”, Physical Review E 52 (1995). [3] : Chao, A. W., & Mess, K. H. (Eds.). (2013). Handbook of accelerator physics and engineering. World scientific. 3rd Printing. p417.

plot_critical_mass(ring: Synchrotron, bunch_charge: float, bunch_spacing: float, n_points: int | float = 10000.0, ax: Axes | None = None) Axes[source]

Plot ion critical mass, using Eq. (7.70) p147 of [1]

Parameters

ring : Synchrotron object bunch_charge : float

Bunch charge in [C].

bunch_spacingfloat

Time in between two adjacent bunches in [s].

n_pointsfloat or int, optional

Number of point used in the plot. The default is 1e4.

axAxes, optional

Axes where the plot is displayed. If None, a new figure is created.

Returns

ax : Axes

References

[1] : Gamelin, A. (2018). Collective effects in a transient microbunching regime and ion cloud mitigation in ThomX (Doctoral dissertation, Université Paris-Saclay).

get_tavares_ion_distribution(x: ndarray[tuple[int, ...], dtype[_ScalarType_co]], sigma_x: float) ndarray[tuple[int, ...], dtype[_ScalarType_co]][source]

Get tranvserse ion distribution

Parameters

x: float, numpy array

an array defining the range of values in which to compute the distribution.

sigma_x: float

rms beam size of an electron bunch (assumed to have a Gaussian distribution) that focuses the ions.

Returns

Transverse ion distribution density.

References

[1] Tavares, P. F. (1992). Transverse Distribution of Ions Trapped in an Electron Beam.