# -*- 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.L * 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