Something went wrong on our end
-
GUBAIDULIN authored
Implementation of IBS effect in mbtrack2 tracking. A new class was added, mbtrack2.tracking.ibs. It implements a simple IBS kick based on an analytical model. Four analytical models are available: Piwinski Standard, Piwinski Modified, Completely Integrated Piwinski model, and Bane high-energy approximation.
GUBAIDULIN authoredImplementation of IBS effect in mbtrack2 tracking. A new class was added, mbtrack2.tracking.ibs. It implements a simple IBS kick based on an analytical model. Four analytical models are available: Piwinski Standard, Piwinski Modified, Completely Integrated Piwinski model, and Bane high-energy approximation.
conftest.py 2.77 KiB
import numpy as np
import pytest
from mbtrack2 import Bunch, Electron, Optics, Synchrotron
@pytest.fixture
def model_ring():
h = 416 # Harmonic number of the accelerator.
L = 353.97 # Ring circumference in [m].
E0 = 2.75e9 # Nominal (total) energy of the ring in [eV].
particle = Electron() # Particle considered.
ac = 1.0695e-5 #1.0695e-4
U0 = 452.6e3 # Energy loss per turn in [eV].
tau = np.array([
7.68e-3, 14.14e-3, 12.18e-3
]) #horizontal, vertical and longitudinal damping times in [s].
tune = np.array([54.2, 18.3])
emit = np.array([84.4e-12, 84.4e-13])
sigma_0 = 9e-12
sigma_delta = 9.07649e-4
chro = np.array([1.8, 1.3])
beta = np.array([3.288, 4.003])
alpha = np.array([0.004, 0.02])
dispersion = np.array([0.008, 0.01, 0.003, 0.001])
optics = Optics(local_beta=beta,
local_alpha=alpha,
local_dispersion=dispersion)
ring = Synchrotron(h=h,
optics=optics,
particle=particle,
L=L,
E0=E0,
ac=ac,
U0=U0,
tau=tau,
emit=emit,
tune=tune,
sigma_delta=sigma_delta,
sigma_0=sigma_0,
chro=chro)
return ring
@pytest.fixture
def local_optics():
beta = np.array([1, 1])
alpha = np.array([0, 0])
dispersion = np.array([0, 0, 0, 0])
local_optics = Optics(local_beta=beta,
local_alpha=alpha,
local_dispersion=dispersion)
return local_optics
@pytest.fixture
def demo_ring(local_optics):
h = 20
L = 100
E0 = 1e9
particle = Electron()
ac = 1e-3
U0 = 250e3
tau = np.array([10e-3, 10e-3, 5e-3])
tune = np.array([18.2, 10.3])
emit = np.array([50e-9, 50e-9 * 0.01])
sigma_0 = 30e-12
sigma_delta = 1e-3
chro = [1.0, 1.0]
ring = Synchrotron(h,
local_optics,
particle,
L=L,
E0=E0,
ac=ac,
U0=U0,
tau=tau,
emit=emit,
tune=tune,
sigma_delta=sigma_delta,
sigma_0=sigma_0,
chro=chro)
return ring
@pytest.fixture
def mybunch(demo_ring):
mp_number = 10
mybunch = Bunch(demo_ring, mp_number=mp_number, track_alive=True)
return mybunch
@pytest.fixture
def large_bunch(demo_ring):
mp_number = 1e5
large_bunch = Bunch(demo_ring, mp_number=mp_number, track_alive=True)
large_bunch.init_gaussian()
return large_bunch