Select Git revision
instabilities.py
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
instabilities.py 1.22 KiB
# -*- coding: utf-8 -*-
"""
General calculations about instabilities
@author: Alexis Gamelin
@date: 15/01/2020
"""
from scipy.constants import c, m_e, e, pi, epsilon_0
def MBI_threshold(ring, sigma, R, b):
"""
Compute the microbunching instability (MBI) threshold for a bunched beam
considering the steady-state parallel plate model [1][2].
Parameters
----------
ring : Synchrotron object
sigma : float
RMS bunch length in [s]
R : float
dipole bending radius in [m]
b : float
vertical distance between the conducting parallel plates in [m]
Returns
-------
I : float
MBI current threshold
[1] : Y. Cai, "Theory of microwave instability and coherent synchrotron
radiation in electron storage rings", SLAC-PUB-14561
[2] : D. Zhou, "Coherent synchrotron radiation and microwave instability in
electron storage rings", PhD thesis, p112
"""
Ia = 4*pi*epsilon_0*m_e*c**3/e # Alfven current
chi = sigma*(R/b**3)**(1/2) # Shielding paramter
xi = 0.5 + 0.34*chi
N = (ring.L0 * Ia * ring.ac * ring.gamma * ring.sigma_delta**2 * xi *
sigma**(1/3) / ( c * e * R**(1/3) ))
I = N*e/ring.T0
return I