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.